* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
/*
GdkWindow *child,
gint level)
{
- static const GdkColor colors[] = {
- { 0, 0x4444, 0x4444, 0xffff },
- { 0, 0x8888, 0x8888, 0xffff },
- { 0, 0xaaaa, 0xaaaa, 0xffff }
+ static GdkRGBA colors[] = {
+ { 0.27, 0.27, 1.0, 1.0 },
+ { 0.53, 0.53, 1.0, 1.0},
+ { 0.67, 0.67, 1.0, 1.0 }
};
gdk_window_set_user_data (child, widget);
- gdk_window_set_background (child, &colors[level]);
+ gdk_window_set_background_rgba (child, &colors[level]);
}
static void
gtk_widget_destroy (window);
}
-static GtkActionEntry make_toolbar_items[] = {
- { NULL, NULL, "Horizontal", NULL, "Horizontal toolbar layout",
- G_CALLBACK (set_toolbar_horizontal) },
- { NULL, NULL, "Vertical", NULL, "Vertical toolbar layout",
- G_CALLBACK (set_toolbar_vertical) },
- { NULL },
- { NULL, NULL, "Icons", NULL, "Only show toolbar icons",
- G_CALLBACK (set_toolbar_icons) },
- { NULL, NULL, "Text", NULL, "Only show toolbar text",
- G_CALLBACK (set_toolbar_text) },
- { NULL, NULL, "Both", NULL, "Show toolbar icons and text",
- G_CALLBACK (set_toolbar_both) },
- { NULL },
- { NULL, NULL, "Woot", NULL, "Woot woot woot",
- NULL },
- { NULL, NULL, "Blah", NULL, "Blah blah blah",
- NULL },
- { NULL },
- { NULL, NULL, "Enable", NULL, "Enable tooltips",
- G_CALLBACK (set_toolbar_enable) },
- { NULL, NULL, "Disable", NULL, "Disable tooltips",
- G_CALLBACK (set_toolbar_disable) },
- { NULL },
- { NULL, NULL, "Hoo", NULL, "Hoo tooltip",
- NULL },
- { NULL, NULL, "Woo", NULL, "Woo tooltip",
- NULL }
-};
-
-static GtkWidget*
-make_toolbar (GtkWidget *window)
-{
- GtkWidget *toolbar;
- guint i;
-
- if (!gtk_widget_get_realized (window))
- gtk_widget_realize (window);
-
- toolbar = gtk_toolbar_new ();
- for (i = 0; i < G_N_ELEMENTS (make_toolbar_items); i++)
- {
- GtkWidget *icon;
- GtkToolItem *toolitem;
-
- if (make_toolbar_items[i].label == NULL)
- {
- toolitem = gtk_separator_tool_item_new ();
- }
- else
- {
- icon = new_pixbuf ("test.xpm", gtk_widget_get_window (window));
- toolitem = gtk_tool_button_new (icon, make_toolbar_items[i].label);
- gtk_tool_item_set_tooltip_text (toolitem, make_toolbar_items[i].tooltip);
- if (make_toolbar_items[i].callback != NULL)
- g_signal_connect (toolitem, "clicked", make_toolbar_items[i].callback, toolbar);
- }
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), toolitem, -1);
- }
-
- return toolbar;
-}
-
/*
* GtkStatusBar
*/
gtk_widget_destroy (window);
}
-/*
- * GtkHandleBox
- */
-
-static void
-handle_box_child_signal (GtkHandleBox *hb,
- GtkWidget *child,
- const gchar *action)
-{
- printf ("%s: child <%s> %sed\n",
- g_type_name (G_OBJECT_TYPE (hb)),
- g_type_name (G_OBJECT_TYPE (child)),
- action);
-}
-
-static void
-create_handle_box (GtkWidget *widget)
-{
- static GtkWidget* window = NULL;
- GtkWidget *handle_box;
- GtkWidget *handle_box2;
- GtkWidget *vbox;
- GtkWidget *hbox;
- GtkWidget *toolbar;
- GtkWidget *label;
- GtkWidget *separator;
-
- if (!window)
- {
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
- gtk_window_set_screen (GTK_WINDOW (window),
- gtk_widget_get_screen (widget));
- gtk_window_set_modal (GTK_WINDOW (window), FALSE);
- gtk_window_set_title (GTK_WINDOW (window),
- "Handle Box Test");
- gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
-
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_widget_destroyed),
- &window);
-
- gtk_container_set_border_width (GTK_CONTAINER (window), 20);
-
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add (GTK_CONTAINER (window), vbox);
- gtk_widget_show (vbox);
-
- label = gtk_label_new ("Above");
- gtk_container_add (GTK_CONTAINER (vbox), label);
- gtk_widget_show (label);
-
- separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_container_add (GTK_CONTAINER (vbox), separator);
- gtk_widget_show (separator);
-
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
- gtk_container_add (GTK_CONTAINER (vbox), hbox);
- gtk_widget_show (hbox);
-
- separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_container_add (GTK_CONTAINER (vbox), separator);
- gtk_widget_show (separator);
-
- label = gtk_label_new ("Below");
- gtk_container_add (GTK_CONTAINER (vbox), label);
- gtk_widget_show (label);
-
- handle_box = gtk_handle_box_new ();
- gtk_box_pack_start (GTK_BOX (hbox), handle_box, FALSE, FALSE, 0);
- g_signal_connect (handle_box,
- "child_attached",
- G_CALLBACK (handle_box_child_signal),
- "attached");
- g_signal_connect (handle_box,
- "child_detached",
- G_CALLBACK (handle_box_child_signal),
- "detached");
- gtk_widget_show (handle_box);
-
- toolbar = make_toolbar (window);
-
- gtk_container_add (GTK_CONTAINER (handle_box), toolbar);
- gtk_widget_show (toolbar);
-
- handle_box = gtk_handle_box_new ();
- gtk_box_pack_start (GTK_BOX (hbox), handle_box, FALSE, FALSE, 0);
- g_signal_connect (handle_box,
- "child_attached",
- G_CALLBACK (handle_box_child_signal),
- "attached");
- g_signal_connect (handle_box,
- "child_detached",
- G_CALLBACK (handle_box_child_signal),
- "detached");
- gtk_widget_show (handle_box);
-
- handle_box2 = gtk_handle_box_new ();
- gtk_container_add (GTK_CONTAINER (handle_box), handle_box2);
- g_signal_connect (handle_box2,
- "child_attached",
- G_CALLBACK (handle_box_child_signal),
- "attached");
- g_signal_connect (handle_box2,
- "child_detached",
- G_CALLBACK (handle_box_child_signal),
- "detached");
- gtk_widget_show (handle_box2);
-
- hbox = g_object_new (GTK_TYPE_BOX, "visible", 1, "parent", handle_box2, NULL);
- label = gtk_label_new ("Fooo!");
- gtk_container_add (GTK_CONTAINER (hbox), label);
- gtk_widget_show (label);
- g_object_new (GTK_TYPE_ARROW, "visible", 1, "parent", hbox, NULL);
- }
-
- if (!gtk_widget_get_visible (window))
- gtk_widget_show (window);
- else
- gtk_widget_destroy (window);
-}
-
/*
* Label Demo
*/
{
if (event->type == GDK_BUTTON_PRESS)
{
- if (event->button == 1)
+ if (event->button == GDK_BUTTON_PRIMARY)
gtk_window_begin_resize_drag (GTK_WINDOW (gtk_widget_get_toplevel (area)), edge,
event->button, event->x_root, event->y_root,
event->time);
- else if (event->button == 2)
+ else if (event->button == GDK_BUTTON_MIDDLE)
gtk_window_begin_move_drag (GTK_WINDOW (gtk_widget_get_toplevel (area)),
event->button, event->x_root, event->y_root,
event->time);
*/
static GtkWidget*
-create_menu (GdkScreen *screen, gint depth, gint length, gboolean tearoff)
+create_menu (GdkScreen *screen, gint depth, gint length)
{
GtkWidget *menu;
GtkWidget *menuitem;
group = NULL;
- if (tearoff)
- {
- menuitem = gtk_tearoff_menu_item_new ();
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
- gtk_widget_show (menuitem);
- }
-
image = gtk_image_new_from_stock (GTK_STOCK_OPEN,
GTK_ICON_SIZE_MENU);
gtk_widget_show (image);
if (i < 5)
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem),
- create_menu (screen, depth - 1, 5, TRUE));
+ create_menu (screen, depth - 1, 5));
}
return menu;
}
static GtkWidget*
-create_table_menu (GdkScreen *screen, gint cols, gint rows, gboolean tearoff)
+create_table_menu (GdkScreen *screen, gint cols, gint rows)
{
GtkWidget *menu;
GtkWidget *menuitem;
gtk_menu_set_screen (GTK_MENU (menu), screen);
j = 0;
- if (tearoff)
- {
- menuitem = gtk_tearoff_menu_item_new ();
- gtk_menu_attach (GTK_MENU (menu), menuitem, 0, cols, j, j + 1);
- gtk_widget_show (menuitem);
- j++;
- }
menuitem = gtk_menu_item_new_with_label ("items");
gtk_menu_attach (GTK_MENU (menu), menuitem, 0, cols, j, j + 1);
gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE, 0);
gtk_widget_show (menubar);
- menu = create_menu (screen, 2, 50, TRUE);
+ menu = create_menu (screen, 2, 50);
menuitem = gtk_menu_item_new_with_label ("test\nline2");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
gtk_widget_show (menuitem);
- menu = create_table_menu (screen, 2, 50, TRUE);
+ menu = create_table_menu (screen, 2, 50);
menuitem = gtk_menu_item_new_with_label ("table");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
gtk_widget_show (menuitem);
menuitem = gtk_menu_item_new_with_label ("foo");
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (screen, 3, 5, TRUE));
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (screen, 3, 5));
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
gtk_widget_show (menuitem);
gtk_widget_show (image);
menuitem = gtk_image_menu_item_new_with_label ("Help");
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image);
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (screen, 4, 5, TRUE));
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), create_menu (screen, 4, 5));
gtk_widget_set_hexpand (menuitem, TRUE);
gtk_widget_set_halign (menuitem, GTK_ALIGN_END);
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem);
gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE, 0);
gtk_widget_show (menubar);
- menu = create_menu (screen, 2, 10, TRUE);
+ menu = create_menu (screen, 2, 10);
menuitem = gtk_menu_item_new_with_label ("Second menu bar");
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), menu);
gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
- menu = create_menu (screen, 1, 5, FALSE);
+ menu = create_menu (screen, 1, 5);
gtk_menu_set_accel_group (GTK_MENU (menu), accel_group);
menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_NEW, accel_group);
cmw_color (GtkWidget *widget, GtkWidget *parent)
{
GtkWidget *csd;
- GtkWidget *colorsel;
- GtkWidget *ok_button, *cancel_button;
-
- csd = gtk_color_selection_dialog_new ("This is a modal color selection dialog");
- gtk_window_set_screen (GTK_WINDOW (csd), gtk_widget_get_screen (parent));
+ csd = gtk_color_chooser_dialog_new ("This is a modal color selection dialog", GTK_WINDOW (parent));
- colorsel = gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (csd));
- gtk_color_selection_set_has_palette (GTK_COLOR_SELECTION (colorsel),
- TRUE);
-
/* Set as modal */
gtk_window_set_modal (GTK_WINDOW(csd),TRUE);
- /* And mark it as a transient dialog */
- gtk_window_set_transient_for (GTK_WINDOW (csd), GTK_WINDOW (parent));
-
g_signal_connect (csd, "destroy",
G_CALLBACK (cmw_destroy_cb), NULL);
-
- g_object_get (csd,
- "ok-button", &ok_button,
- "cancel-button", &cancel_button,
- NULL);
-
- g_signal_connect_swapped (ok_button,
- "clicked", G_CALLBACK (gtk_widget_destroy), csd);
- g_signal_connect_swapped (cancel_button,
- "clicked", G_CALLBACK (gtk_widget_destroy), csd);
+ g_signal_connect (csd, "response",
+ G_CALLBACK (gtk_widget_destroy), NULL);
/* wait until destroy calls gtk_main_quit */
gtk_widget_show (csd);
gtk_entry_set_progress_fraction (GTK_ENTRY (data), fraction);
}
- return TRUE;
+ return G_SOURCE_CONTINUE;
}
static void
GtkSpinButton *spinner)
{
if ((event->type == GDK_BUTTON_PRESS) &&
- ((event->button.button == 1) ||
- (event->button.button == 3)))
+ ((event->button.button == GDK_BUTTON_PRIMARY) ||
+ (event->button.button == GDK_BUTTON_SECONDARY)))
{
- gtk_spin_button_spin (spinner, event->button.button == 1 ?
+ gtk_spin_button_spin (spinner, event->button.button == GDK_BUTTON_PRIMARY ?
GTK_SPIN_STEP_FORWARD : GTK_SPIN_STEP_BACKWARD, 0);
return TRUE;
}
* GtkColorSelection
*/
-void
-color_selection_ok (GtkWidget *w,
- GtkColorSelectionDialog *cs)
-{
- GtkWidget *colorsel;
- GdkColor color;
-
- colorsel = gtk_color_selection_dialog_get_color_selection (cs);
-
- gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (colorsel), &color);
- gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (colorsel), &color);
-}
-
-void
-color_selection_changed (GtkWidget *w,
- GtkColorSelectionDialog *cs)
-{
- GtkWidget *colorsel;
- GdkColor color;
-
- colorsel = gtk_color_selection_dialog_get_color_selection (cs);
- gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (colorsel), &color);
- gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (colorsel), &color);
-}
-
-#if 0 /* unused */
-static void
-opacity_toggled_cb (GtkWidget *w,
- GtkColorSelectionDialog *cs)
-{
- GtkColorSelection *colorsel;
-
- colorsel = GTK_COLOR_SELECTION (cs->colorsel);
- gtk_color_selection_set_has_opacity_control (colorsel,
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)));
-}
-
-static void
-palette_toggled_cb (GtkWidget *w,
- GtkColorSelectionDialog *cs)
-{
- GtkColorSelection *colorsel;
-
- colorsel = GTK_COLOR_SELECTION (cs->colorsel);
- gtk_color_selection_set_has_palette (colorsel,
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)));
-}
-#endif
-
void
create_color_selection (GtkWidget *widget)
{
gtk_container_add (GTK_CONTAINER (hbox), label);
picker = gtk_color_button_new ();
- gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (picker), TRUE);
+ gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER (picker), TRUE);
gtk_container_add (GTK_CONTAINER (hbox), picker);
button = gtk_button_new_with_mnemonic ("_Props");
gtk_widget_destroy (window);
}
+void
+create_settings (GtkWidget *widget)
+{
+ static GtkWidget *window = NULL;
+
+ if (!window)
+ {
+ window = create_prop_editor (G_OBJECT (gtk_settings_get_default ()), GTK_TYPE_SETTINGS);
+ gtk_window_set_screen (GTK_WINDOW (window),
+ gtk_widget_get_screen (widget));
+
+ gtk_widget_hide (window);
+ gtk_window_set_title (GTK_WINDOW (window), "GTK+ Settings");
+
+ g_signal_connect (window, "destroy",
+ G_CALLBACK (gtk_widget_destroyed),
+ &window);
+ }
+
+ if (!gtk_widget_get_visible (window))
+ gtk_widget_show (window);
+ else
+ gtk_widget_destroy (window);
+}
+
/*
* GtkPanes
*/
toggle_resize (GtkWidget *widget, GtkWidget *child)
{
GtkContainer *container = GTK_CONTAINER (gtk_widget_get_parent (child));
- GValue value = { 0, };
+ GValue value = G_VALUE_INIT;
g_value_init (&value, G_TYPE_BOOLEAN);
gtk_container_child_get_property (container, child, "resize", &value);
g_value_set_boolean (&value, !g_value_get_boolean (&value));
toggle_shrink (GtkWidget *widget, GtkWidget *child)
{
GtkContainer *container = GTK_CONTAINER (gtk_widget_get_parent (child));
- GValue value = { 0, };
+ GValue value = G_VALUE_INIT;
g_value_init (&value, G_TYPE_BOOLEAN);
gtk_container_child_get_property (container, child, "shrink", &value);
g_value_set_boolean (&value, !g_value_get_boolean (&value));
{
GtkWidget *child1, *child2;
GtkWidget *frame;
- GtkWidget *table;
+ GtkWidget *grid;
GtkWidget *label;
GtkWidget *button;
GtkWidget *check_button;
frame = gtk_frame_new (frame_label);
gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
- table = gtk_table_new (4, 2, 4);
- gtk_container_add (GTK_CONTAINER (frame), table);
+ grid = gtk_grid_new ();
+ gtk_container_add (GTK_CONTAINER (frame), grid);
label = gtk_label_new (label1);
- gtk_table_attach_defaults (GTK_TABLE (table), label,
- 0, 1, 0, 1);
+ gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);
check_button = gtk_check_button_new_with_label ("Resize");
- gtk_table_attach_defaults (GTK_TABLE (table), check_button,
- 0, 1, 1, 2);
+ gtk_grid_attach (GTK_GRID (grid), check_button, 0, 1, 1, 1);
g_signal_connect (check_button, "toggled",
G_CALLBACK (toggle_resize),
child1);
check_button = gtk_check_button_new_with_label ("Shrink");
- gtk_table_attach_defaults (GTK_TABLE (table), check_button,
- 0, 1, 2, 3);
+ gtk_grid_attach (GTK_GRID (grid), check_button, 0, 2, 1, 1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
child1);
label = gtk_label_new (label2);
- gtk_table_attach_defaults (GTK_TABLE (table), label,
- 1, 2, 0, 1);
+ gtk_grid_attach (GTK_GRID (grid), label, 1, 0, 1, 1);
check_button = gtk_check_button_new_with_label ("Resize");
- gtk_table_attach_defaults (GTK_TABLE (table), check_button,
- 1, 2, 1, 2);
+ gtk_grid_attach (GTK_GRID (grid), check_button, 1, 1, 1, 1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
child2);
check_button = gtk_check_button_new_with_label ("Shrink");
- gtk_table_attach_defaults (GTK_TABLE (table), check_button,
- 1, 2, 2, 3);
+ gtk_grid_attach (GTK_GRID (grid), check_button, 1, 2, 1, 1);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
TRUE);
g_signal_connect (check_button, "toggled",
child2);
button = gtk_button_new_with_mnemonic ("_Properties");
- gtk_table_attach_defaults (GTK_TABLE (table), button,
- 0, 2, 3, 4);
+ gtk_grid_attach (GTK_GRID (grid), button, 0, 3, 2, 1);
g_signal_connect (button, "clicked",
G_CALLBACK (paned_props_clicked),
paned);
{
gint xp, yp;
CursorOffset * p;
- GdkModifierType mask;
p = g_object_get_data (G_OBJECT (widget), "cursor_offset");
* Can't use event->x / event->y here
* because I need absolute coordinates.
*/
- gdk_window_get_pointer (NULL, &xp, &yp, &mask);
+ gdk_window_get_device_position (gdk_screen_get_root_window (gtk_widget_get_screen (widget)),
+ gdk_event_get_device ((GdkEvent *) event),
+ &xp, &yp, NULL);
gtk_window_move (GTK_WINDOW (widget), xp - p->x, yp - p->y);
}
if (widget)
{
- gdk_window_get_pointer (gtk_widget_get_window (widget),
- &x, &y, NULL);
+ gdk_window_get_device_position (gtk_widget_get_window (widget),
+ device,
+ &x, &y, NULL);
data.x = x;
data.y = y;
sprintf (buffer, "count: %d", ++count);
gtk_label_set_text (GTK_LABEL (label), buffer);
- return TRUE;
+ return G_SOURCE_CONTINUE;
}
static void
{ "flipping", create_flipping },
{ "focus", create_focus },
{ "font selection", create_font_selection },
- { "handle box", create_handle_box },
{ "image", create_image },
{ "key lookup", create_key_lookup },
{ "labels", create_labels },
{ "rotated text", create_rotated_text },
{ "saved position", create_saved_position },
{ "scrolled windows", create_scrolled_windows },
+ { "settings", create_settings },
{ "shapes", create_shapes },
{ "size groups", create_size_groups },
{ "snapshot", create_snapshot },