Some cleanups for the toolpalette demo

This commit is contained in:
Matthias Clasen
2009-11-26 19:41:38 -05:00
parent 7aa1d6fcaf
commit 7f9b55710a

View File

@ -4,8 +4,10 @@
* or a list of names. * or a list of names.
*/ */
#include <string.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <glib/gi18n.h> #include "config.h"
#include "demo-common.h"
static GtkWidget *window = NULL; static GtkWidget *window = NULL;
@ -167,9 +169,9 @@ palette_drag_data_received (GtkWidget *widget,
gint x, gint x,
gint y, gint y,
GtkSelectionData *selection, GtkSelectionData *selection,
guint info G_GNUC_UNUSED, guint info,
guint time G_GNUC_UNUSED, guint time,
gpointer data G_GNUC_UNUSED) gpointer data)
{ {
GtkWidget *drag_palette = gtk_drag_get_source_widget (context); GtkWidget *drag_palette = gtk_drag_get_source_widget (context);
GtkWidget *drag_item = NULL, *drop_group = NULL; GtkWidget *drag_item = NULL, *drop_group = NULL;
@ -179,8 +181,10 @@ palette_drag_data_received (GtkWidget *widget,
if (drag_palette) if (drag_palette)
{ {
drag_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (drag_palette), selection); drag_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (drag_palette),
drop_group = gtk_tool_palette_get_drop_group (GTK_TOOL_PALETTE (widget), x, y); selection);
drop_group = gtk_tool_palette_get_drop_group (GTK_TOOL_PALETTE (widget),
x, y);
} }
if (GTK_IS_TOOL_ITEM_GROUP (drag_item)) if (GTK_IS_TOOL_ITEM_GROUP (drag_item))
@ -202,9 +206,9 @@ passive_canvas_drag_data_received (GtkWidget *widget,
gint x, gint x,
gint y, gint y,
GtkSelectionData *selection, GtkSelectionData *selection,
guint info G_GNUC_UNUSED, guint info,
guint time G_GNUC_UNUSED, guint time,
gpointer data G_GNUC_UNUSED) gpointer data)
{ {
/* find the tool button, which is the source of this DnD operation */ /* find the tool button, which is the source of this DnD operation */
@ -216,7 +220,8 @@ passive_canvas_drag_data_received (GtkWidget *widget,
palette = gtk_widget_get_parent (palette); palette = gtk_widget_get_parent (palette);
if (palette) if (palette)
tool_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette), selection); tool_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette),
selection);
g_assert (NULL == drop_item); g_assert (NULL == drop_item);
@ -242,7 +247,7 @@ interactive_canvas_drag_motion (GtkWidget *widget,
gint x, gint x,
gint y, gint y,
guint time, guint time,
gpointer data G_GNUC_UNUSED) gpointer data)
{ {
if (drop_item) if (drop_item)
{ {
@ -275,12 +280,12 @@ interactive_canvas_drag_data_received (GtkWidget *widget,
gint x, gint x,
gint y, gint y,
GtkSelectionData *selection, GtkSelectionData *selection,
guint info G_GNUC_UNUSED, guint info,
guint time G_GNUC_UNUSED, guint time,
gpointer data G_GNUC_UNUSED) gpointer data)
{ {
/* find the tool button, which is the source of this DnD operation */ /* find the tool button which is the source of this DnD operation */
GtkWidget *palette = gtk_drag_get_source_widget (context); GtkWidget *palette = gtk_drag_get_source_widget (context);
GtkWidget *tool_item = NULL; GtkWidget *tool_item = NULL;
@ -289,7 +294,8 @@ interactive_canvas_drag_data_received (GtkWidget *widget,
palette = gtk_widget_get_parent (palette); palette = gtk_widget_get_parent (palette);
if (palette) if (palette)
tool_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette), selection); tool_item = gtk_tool_palette_get_drag_item (GTK_TOOL_PALETTE (palette),
selection);
/* create a drop indicator when a tool button was found */ /* create a drop indicator when a tool button was found */
@ -305,11 +311,11 @@ interactive_canvas_drag_data_received (GtkWidget *widget,
static gboolean static gboolean
interactive_canvas_drag_drop (GtkWidget *widget, interactive_canvas_drag_drop (GtkWidget *widget,
GdkDragContext *context G_GNUC_UNUSED, GdkDragContext *context,
gint x, gint x,
gint y, gint y,
guint time, guint time,
gpointer data G_GNUC_UNUSED) gpointer data)
{ {
if (drop_item) if (drop_item)
{ {
@ -350,25 +356,27 @@ interactive_canvas_real_drag_leave (gpointer data)
static void static void
interactive_canvas_drag_leave (GtkWidget *widget, interactive_canvas_drag_leave (GtkWidget *widget,
GdkDragContext *context G_GNUC_UNUSED, GdkDragContext *context,
guint time G_GNUC_UNUSED, guint time,
gpointer data G_GNUC_UNUSED) gpointer data)
{ {
/* defer cleanup until a potential "drag-drop" signal was received */ /* defer cleanup until a potential "drag-drop" signal was received */
g_idle_add (interactive_canvas_real_drag_leave, widget); g_idle_add (interactive_canvas_real_drag_leave, widget);
} }
static void on_combo_orientation_changed(GtkComboBox *combo_box, gpointer user_data) static void
on_combo_orientation_changed (GtkComboBox *combo_box,
gpointer user_data)
{ {
GtkToolPalette *palette = GTK_TOOL_PALETTE (user_data); GtkToolPalette *palette = GTK_TOOL_PALETTE (user_data);
GtkScrolledWindow *sw = GTK_SCROLLED_WINDOW (GTK_WIDGET (palette)->parent); GtkScrolledWindow *sw = GTK_SCROLLED_WINDOW (GTK_WIDGET (palette)->parent);
GtkTreeModel *model = gtk_combo_box_get_model (combo_box); GtkTreeModel *model = gtk_combo_box_get_model (combo_box);
GtkTreeIter iter; GtkTreeIter iter;
if(!gtk_combo_box_get_active_iter(combo_box, &iter)) gint val = 0;
if (!gtk_combo_box_get_active_iter (combo_box, &iter))
return; return;
gint val = 0;
gtk_tree_model_get (model, &iter, 1, &val, -1); gtk_tree_model_get (model, &iter, 1, &val, -1);
gtk_orientable_set_orientation (GTK_ORIENTABLE (palette), val); gtk_orientable_set_orientation (GTK_ORIENTABLE (palette), val);
@ -379,16 +387,18 @@ static void on_combo_orientation_changed(GtkComboBox *combo_box, gpointer user_d
gtk_scrolled_window_set_policy (sw, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_policy (sw, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
} }
static void on_combo_style_changed(GtkComboBox *combo_box, gpointer user_data) static void
on_combo_style_changed (GtkComboBox *combo_box,
gpointer user_data)
{ {
GtkToolPalette *palette = GTK_TOOL_PALETTE (user_data); GtkToolPalette *palette = GTK_TOOL_PALETTE (user_data);
GtkTreeModel *model = gtk_combo_box_get_model (combo_box); GtkTreeModel *model = gtk_combo_box_get_model (combo_box);
GtkTreeIter iter; GtkTreeIter iter;
if(!gtk_combo_box_get_active_iter(combo_box, &iter)) gint val = 0;
if (!gtk_combo_box_get_active_iter (combo_box, &iter))
return; return;
gint val = 0;
gtk_tree_model_get (model, &iter, 1, &val, -1); gtk_tree_model_get (model, &iter, 1, &val, -1);
if (val == -1) if (val == -1)
@ -403,9 +413,9 @@ do_toolpalette (GtkWidget *do_widget)
GtkWidget *box = NULL; GtkWidget *box = NULL;
GtkWidget *hbox = NULL; GtkWidget *hbox = NULL;
GtkWidget *combo_orientation = NULL; GtkWidget *combo_orientation = NULL;
GtkListStore *combo_orientation_model = NULL; GtkListStore *orientation_model = NULL;
GtkWidget *combo_style = NULL; GtkWidget *combo_style = NULL;
GtkListStore *combo_style_model = NULL; GtkListStore *style_model = NULL;
GtkCellRenderer *cell_renderer = NULL; GtkCellRenderer *cell_renderer = NULL;
GtkTreeIter iter; GtkTreeIter iter;
GtkWidget *palette = NULL; GtkWidget *palette = NULL;
@ -422,7 +432,8 @@ do_toolpalette (GtkWidget *do_widget)
gtk_window_set_title (GTK_WINDOW (window), "Tool Palette"); gtk_window_set_title (GTK_WINDOW (window), "Tool Palette");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 600); gtk_window_set_default_size (GTK_WINDOW (window), 200, 600);
g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window); g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed), &window);
gtk_container_set_border_width (GTK_CONTAINER (window), 8); gtk_container_set_border_width (GTK_CONTAINER (window), 8);
/* Add widgets to control the ToolPalette appearance: */ /* Add widgets to control the ToolPalette appearance: */
@ -430,52 +441,68 @@ do_toolpalette (GtkWidget *do_widget)
gtk_container_add (GTK_CONTAINER (window), box); gtk_container_add (GTK_CONTAINER (window), box);
/* Orientation combo box: */ /* Orientation combo box: */
combo_orientation_model = gtk_list_store_new (2, orientation_model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
G_TYPE_STRING, G_TYPE_INT); gtk_list_store_append (orientation_model, &iter);
gtk_list_store_append (combo_orientation_model, &iter); gtk_list_store_set (orientation_model, &iter,
gtk_list_store_set (combo_orientation_model, &iter, 0, "Horizontal",
0, "Horizontal", 1, GTK_ORIENTATION_HORIZONTAL, -1); 1, GTK_ORIENTATION_HORIZONTAL,
gtk_list_store_append (combo_orientation_model, &iter); -1);
gtk_list_store_set (combo_orientation_model, &iter, gtk_list_store_append (orientation_model, &iter);
0, "Vertical", 1, GTK_ORIENTATION_VERTICAL, -1); gtk_list_store_set (orientation_model, &iter,
combo_orientation = gtk_combo_box_new_with_model ( 0, "Vertical",
GTK_TREE_MODEL (combo_orientation_model)); 1, GTK_ORIENTATION_VERTICAL,
-1);
combo_orientation =
gtk_combo_box_new_with_model (GTK_TREE_MODEL (orientation_model));
cell_renderer = gtk_cell_renderer_text_new (); cell_renderer = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_orientation), gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_orientation),
cell_renderer, TRUE); cell_renderer,
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_orientation), TRUE);
cell_renderer, "text", 0, NULL); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_orientation),
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_orientation), cell_renderer,
&iter); "text", 0,
NULL);
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_orientation), &iter);
gtk_box_pack_start (GTK_BOX (box), combo_orientation, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box), combo_orientation, FALSE, FALSE, 0);
/* Style combo box: */ /* Style combo box: */
combo_style_model = gtk_list_store_new (2, style_model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
G_TYPE_STRING, G_TYPE_INT); gtk_list_store_append (style_model, &iter);
gtk_list_store_append (combo_style_model, &iter); gtk_list_store_set (style_model, &iter,
gtk_list_store_set (combo_style_model, &iter, 0, "Text",
0, "Text", 1, GTK_TOOLBAR_TEXT, -1); 1, GTK_TOOLBAR_TEXT,
gtk_list_store_append (combo_style_model, &iter); -1);
gtk_list_store_set (combo_style_model, &iter, gtk_list_store_append (style_model, &iter);
0, "Both", 1, GTK_TOOLBAR_BOTH, -1); gtk_list_store_set (style_model, &iter,
gtk_list_store_append (combo_style_model, &iter); 0, "Both",
gtk_list_store_set (combo_style_model, &iter, 1, GTK_TOOLBAR_BOTH,
0, "Both: Horizontal", 1, GTK_TOOLBAR_BOTH_HORIZ, -1); -1);
gtk_list_store_append (combo_style_model, &iter); gtk_list_store_append (style_model, &iter);
gtk_list_store_set (combo_style_model, &iter, gtk_list_store_set (style_model, &iter,
0, "Icons", 1, GTK_TOOLBAR_ICONS, -1); 0, "Both: Horizontal",
gtk_list_store_append (combo_style_model, &iter); 1, GTK_TOOLBAR_BOTH_HORIZ,
gtk_list_store_set (combo_style_model, &iter, -1);
0, "Default", 1, -1 /* A custom meaning for this demo. */, -1); gtk_list_store_append (style_model, &iter);
combo_style = gtk_combo_box_new_with_model ( gtk_list_store_set (style_model, &iter,
GTK_TREE_MODEL (combo_style_model)); 0, "Icons",
1, GTK_TOOLBAR_ICONS,
-1);
gtk_list_store_append (style_model, &iter);
gtk_list_store_set (style_model, &iter,
0, "Default",
1, -1, /* A custom meaning for this demo. */
-1);
combo_style = gtk_combo_box_new_with_model (GTK_TREE_MODEL (style_model));
cell_renderer = gtk_cell_renderer_text_new (); cell_renderer = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_style), gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_style),
cell_renderer, TRUE); cell_renderer,
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_style), TRUE);
cell_renderer, "text", 0, NULL); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_style),
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_style), cell_renderer,
&iter); "text", 0,
NULL);
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_style), &iter);
gtk_box_pack_start (GTK_BOX (box), combo_style, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box), combo_style, FALSE, FALSE, 0);
/* Add hbox */ /* Add hbox */
@ -491,10 +518,11 @@ do_toolpalette (GtkWidget *do_widget)
palette_scroller = gtk_scrolled_window_new (NULL, NULL); palette_scroller = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (palette_scroller), gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (palette_scroller),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); GTK_POLICY_NEVER,
GTK_POLICY_AUTOMATIC);
gtk_container_set_border_width (GTK_CONTAINER (palette_scroller), 6); gtk_container_set_border_width (GTK_CONTAINER (palette_scroller), 6);
gtk_container_add (GTK_CONTAINER (palette_scroller), palette);
gtk_container_add (GTK_CONTAINER (palette_scroller), palette);
gtk_container_add (GTK_CONTAINER (hbox), palette_scroller); gtk_container_add (GTK_CONTAINER (hbox), palette_scroller);
gtk_widget_show_all (box); gtk_widget_show_all (box);
@ -517,11 +545,11 @@ do_toolpalette (GtkWidget *do_widget)
/* ===== DnD for tool items ===== */ /* ===== DnD for tool items ===== */
g_signal_connect (palette, "drag-data-received", g_signal_connect (palette, "drag-data-received",
G_CALLBACK (palette_drag_data_received), G_CALLBACK (palette_drag_data_received), NULL);
NULL);
gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette), gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette),
palette, GTK_DEST_DEFAULT_ALL, palette,
GTK_DEST_DEFAULT_ALL,
GTK_TOOL_PALETTE_DRAG_ITEMS | GTK_TOOL_PALETTE_DRAG_ITEMS |
GTK_TOOL_PALETTE_DRAG_GROUPS, GTK_TOOL_PALETTE_DRAG_GROUPS,
GDK_ACTION_MOVE); GDK_ACTION_MOVE);
@ -537,17 +565,21 @@ do_toolpalette (GtkWidget *do_widget)
NULL); NULL);
gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette), gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette),
contents, GTK_DEST_DEFAULT_ALL, contents,
GTK_DEST_DEFAULT_ALL,
GTK_TOOL_PALETTE_DRAG_ITEMS, GTK_TOOL_PALETTE_DRAG_ITEMS,
GDK_ACTION_COPY); GDK_ACTION_COPY);
contents_scroller = gtk_scrolled_window_new (NULL, NULL); contents_scroller = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (contents_scroller), gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (contents_scroller),
GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); GTK_POLICY_AUTOMATIC,
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (contents_scroller), contents); GTK_POLICY_ALWAYS);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (contents_scroller),
contents);
gtk_container_set_border_width (GTK_CONTAINER (contents_scroller), 6); gtk_container_set_border_width (GTK_CONTAINER (contents_scroller), 6);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), contents_scroller, gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
contents_scroller,
gtk_label_new ("Passive DnD Mode")); gtk_label_new ("Passive DnD Mode"));
/* ===== interactive DnD dest ===== */ /* ===== interactive DnD dest ===== */
@ -564,19 +596,21 @@ do_toolpalette (GtkWidget *do_widget)
NULL); NULL);
gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette), gtk_tool_palette_add_drag_dest (GTK_TOOL_PALETTE (palette),
contents, GTK_DEST_DEFAULT_HIGHLIGHT, contents,
GTK_DEST_DEFAULT_HIGHLIGHT,
GTK_TOOL_PALETTE_DRAG_ITEMS, GTK_TOOL_PALETTE_DRAG_ITEMS,
GDK_ACTION_COPY); GDK_ACTION_COPY);
contents_scroller = gtk_scrolled_window_new (NULL, NULL); contents_scroller = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (contents_scroller), gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (contents_scroller),
GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); GTK_POLICY_AUTOMATIC,
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (contents_scroller), contents); GTK_POLICY_ALWAYS);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (contents_scroller),
contents);
gtk_container_set_border_width (GTK_CONTAINER (contents_scroller), 6); gtk_container_set_border_width (GTK_CONTAINER (contents_scroller), 6);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), contents_scroller, gtk_notebook_append_page (GTK_NOTEBOOK (notebook), contents_scroller,
gtk_label_new ("Interactive DnD Mode")); gtk_label_new ("Interactive DnD Mode"));
} }
if (!GTK_WIDGET_VISIBLE (window)) if (!GTK_WIDGET_VISIBLE (window))
@ -596,10 +630,10 @@ do_toolpalette (GtkWidget *do_widget)
static void static void
load_stock_items (GtkToolPalette *palette) load_stock_items (GtkToolPalette *palette)
{ {
GtkWidget *group_af = gtk_tool_item_group_new (_("Stock Icons (A-F)")); GtkWidget *group_af = gtk_tool_item_group_new ("Stock Icons (A-F)");
GtkWidget *group_gn = gtk_tool_item_group_new (_("Stock Icons (G-N)")); GtkWidget *group_gn = gtk_tool_item_group_new ("Stock Icons (G-N)");
GtkWidget *group_or = gtk_tool_item_group_new (_("Stock Icons (O-R)")); GtkWidget *group_or = gtk_tool_item_group_new ("Stock Icons (O-R)");
GtkWidget *group_sz = gtk_tool_item_group_new (_("Stock Icons (S-Z)")); GtkWidget *group_sz = gtk_tool_item_group_new ("Stock Icons (S-Z)");
GtkWidget *group = NULL; GtkWidget *group = NULL;
GtkToolItem *item; GtkToolItem *item;
@ -661,7 +695,7 @@ load_toggle_items (GtkToolPalette *palette)
char *label; char *label;
int i; int i;
group = gtk_tool_item_group_new (_("Radio Item")); group = gtk_tool_item_group_new ("Radio Item");
gtk_container_add (GTK_CONTAINER (palette), group); gtk_container_add (GTK_CONTAINER (palette), group);
for (i = 1; i <= 10; ++i) for (i = 1; i <= 10; ++i)
@ -700,7 +734,7 @@ load_special_items (GtkToolPalette *palette)
GtkWidget *label_button; GtkWidget *label_button;
group = gtk_tool_item_group_new (NULL); group = gtk_tool_item_group_new (NULL);
label_button = gtk_button_new_with_label (_("Advanced Features")); label_button = gtk_button_new_with_label ("Advanced Features");
gtk_widget_show (label_button); gtk_widget_show (label_button);
gtk_tool_item_group_set_label_widget (GTK_TOOL_ITEM_GROUP (group), gtk_tool_item_group_set_label_widget (GTK_TOOL_ITEM_GROUP (group),
label_button); label_button);