GtkScrolledWindow Constructor

GtkScrolledWindow Constructor

GtkScrolledWindow ([ GtkAdjustment hadjustment = NULL , [ GtkAdjustment vadjustment = NULL ]]);

The GtkScrolledWindow widget is derived from GtkBin, and is designed to only have one direct child. One way around this is to add the children to a parent container, make that parent the only child of the window, and bind the container's focus to align with the scrollbars. Alternatively, you could use GtkLayout, which has no such restriction.

You do not need to explicitly add a child widget to a GtkViewport if you are using the add_with_viewport() method. You may, however, find that the scrollbars are unresponsive anyway unless you add the child to a box container first.

Example 37. Setting up a GtkScrolledWindow

<?php

dl('php_gtk.'.(strstr(PHP_OS, 'WIN') ? 'dll' : 'so'));

/* set up a window */
$window = &new GtkWindow();
$window->set_position(GTK_WIN_POS_CENTER);
$window->connect_object('destroy', array('gtk', 'main_quit'));

/* set up the main scrolled window and add it to the main window,
   sizing it if necessary. */
$scrolledwindow = &new GtkScrolledWindow();
$scrolledwindow->set_usize(300, 300);
$scrolledwindow->set_policy(GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
$window->add($scrolledwindow);

/* create a box container and add child widgets to it */
$box = &new GtkVBox();
$calendar = &new GtkCalendar();
/* let's add a scrollable to an internal scrolled window */
$scrolledwindow2 = &new GtkScrolledWindow();
$scrolledwindow2->set_usize(280, 100);
$scrolledwindow2->set_policy(GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
$text = &new GtkText();
$text->set_editable(true);
$scrolledwindow2->add($text);
$box->pack_start($calendar, false, false, 5);
$box->pack_start($scrolledwindow2);

/* add the box container to the main scrolled window and link its focus so
   that the cursor position is reflected in the scrollbar's adjustment value. 
   You do not need to do this when adding a scrollable widget directly */
$scrolledwindow->add_with_viewport($box);
$box->set_focus_vadjustment($scrolledwindow->get_vadjustment());

$scrolledwindow2->show_all();
$box->show_all();
$window->show_all();

gtk::main();

?>

© Copyright 2003-2023 www.php-editors.com. The ultimate PHP Editor and PHP IDE site.