3 #include "eggtreeviewstate.h"
4 #include "eggcellrendererkeys.h"
7 #include "eggnodestate.h"
10 typedef GtkWidget
*(* CreateWindowFunc
) (void);
12 const char state_string
[] = ""
14 " <treeview headers_visible=\"true\" search_column=\"0\">"
15 " <column title=\"Test first\" fixed_width=\"150\" resizable=\"true\" sizing=\"fixed\">"
16 " <cell text=\"Sliff sloff\" type=\"GtkCellRendererText\" />"
18 " <column title=\"Test\" reorderable=\"true\" sizing=\"autosize\">"
19 " <cell type=\"GtkCellRendererToggle\" expand=\"false\" active=\"model:1\"/>"
20 " <cell type=\"GtkCellRendererText\" text=\"model:0\"/>"
28 GtkWidget
*window
, *sw
, *view
;
33 egg_tree_view_state_add_cell_renderer_type (GTK_TYPE_CELL_RENDERER_TOGGLE
);
35 window
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
37 store
= gtk_list_store_new (2, G_TYPE_STRING
, G_TYPE_BOOLEAN
);
39 gtk_list_store_append (store
, &iter
);
40 gtk_list_store_set (store
, &iter
,
44 gtk_list_store_append (store
, &iter
);
45 gtk_list_store_set (store
, &iter
,
50 sw
= gtk_scrolled_window_new (NULL
, NULL
);
51 gtk_container_add (GTK_CONTAINER (window
), sw
);
52 view
= gtk_tree_view_new_with_model (GTK_TREE_MODEL (store
));
54 if (!egg_tree_view_state_apply_from_string (GTK_TREE_VIEW (view
), state_string
, &error
))
56 g_print ("error: %s\n", error
->message
);
59 gtk_container_add (GTK_CONTAINER (sw
), view
);
65 progress_bar_test (void)
69 window
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
76 node_state_save (GtkWidget
*button
, GtkTreeView
*tree_view
)
80 ret
= egg_node_state_save_to_file (tree_view
, "treeviewnodestate.xml");
84 node_state_restore (GtkWidget
*button
, GtkTreeView
*tree_view
)
88 ret
= egg_node_state_restore_from_file (tree_view
,
89 "treeviewnodestate.xml");
93 node_state_test (void)
95 GtkWidget
*window
, *sw
, *tv
, *hbox
, *vbox
, *button
;
97 GtkTreeViewColumn
*column
;
98 GtkCellRenderer
*rend
;
102 window
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
104 vbox
= gtk_vbox_new (FALSE
, 3);
105 gtk_container_add (GTK_CONTAINER (window
), vbox
);
107 sw
= gtk_scrolled_window_new (NULL
, NULL
);
108 gtk_box_pack_start (GTK_BOX (vbox
), sw
, TRUE
, TRUE
, 0);
110 store
= gtk_tree_store_new (1, G_TYPE_STRING
);
111 tv
= gtk_tree_view_new_with_model (GTK_TREE_MODEL (store
));
113 column
= gtk_tree_view_column_new ();
114 rend
= gtk_cell_renderer_text_new ();
115 gtk_tree_view_column_pack_start (column
, rend
,
117 gtk_tree_view_column_set_attributes (column
, rend
,
120 gtk_tree_view_append_column (GTK_TREE_VIEW (tv
), column
);
122 gtk_container_add (GTK_CONTAINER (sw
), tv
);
124 hbox
= gtk_hbox_new (TRUE
, 2);
125 gtk_box_pack_start (GTK_BOX (vbox
), hbox
, FALSE
, FALSE
, 0);
127 button
= gtk_button_new_with_label ("Save");
128 g_signal_connect (button
, "clicked", G_CALLBACK (node_state_save
), tv
);
129 gtk_box_pack_start (GTK_BOX (hbox
), button
, TRUE
, TRUE
, 0);
131 button
= gtk_button_new_with_label ("Restore");
132 g_signal_connect (button
, "clicked", G_CALLBACK (node_state_restore
),
134 gtk_box_pack_start (GTK_BOX (hbox
), button
, TRUE
, TRUE
, 0);
137 for (i
= 0; i
< 6; i
++) {
142 sprintf (text
, "%d", i
);
144 gtk_tree_store_append (store
, &iter
, NULL
);
145 gtk_tree_store_set (store
, &iter
, 0, text
, -1);
147 for (j
= 0; j
< 3; j
++) {
151 sprintf (text
, "%d:%d", i
, j
);
153 gtk_tree_store_append (store
, &iter2
, &iter
);
154 gtk_tree_store_set (store
, &iter2
, 0, text
, -1);
156 for (k
= 0; k
< 2; k
++) {
159 sprintf (text
, "%d:%d:%d", i
, j
, k
);
161 gtk_tree_store_append (store
, &iter3
, &iter2
);
162 gtk_tree_store_set (store
, &iter3
,
177 accel_edited_callback (GtkCellRendererText
*cell
,
178 const char *path_string
,
180 GdkModifierType mask
,
181 guint hardware_keycode
,
184 GtkTreeModel
*model
= (GtkTreeModel
*)data
;
185 GtkTreePath
*path
= gtk_tree_path_new_from_string (path_string
);
188 gtk_tree_model_get_iter (model
, &iter
, path
);
190 g_print ("%u %d %u\n", keyval
, mask
, hardware_keycode
);
192 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
,
196 gtk_tree_path_free (path
);
202 GtkWidget
*window
, *sw
, *tv
;
204 GtkTreeViewColumn
*column
;
205 GtkCellRenderer
*rend
;
209 window
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
212 sw
= gtk_scrolled_window_new (NULL
, NULL
);
213 gtk_container_add (GTK_CONTAINER (window
), sw
);
215 store
= gtk_list_store_new (2, G_TYPE_INT
, G_TYPE_UINT
);
216 tv
= gtk_tree_view_new_with_model (GTK_TREE_MODEL (store
));
217 gtk_container_add (GTK_CONTAINER (sw
), tv
);
218 column
= gtk_tree_view_column_new ();
219 rend
= egg_cell_renderer_keys_new ();
220 g_object_set (G_OBJECT (rend
), "accel_mode", EGG_CELL_RENDERER_KEYS_MODE_X
, NULL
);
221 g_signal_connect (G_OBJECT (rend
),
223 G_CALLBACK (accel_edited_callback
),
226 g_object_set (G_OBJECT (rend
), "editable", TRUE
, NULL
);
227 gtk_tree_view_column_pack_start (column
, rend
,
229 gtk_tree_view_column_set_attributes (column
, rend
,
233 gtk_tree_view_append_column (GTK_TREE_VIEW (tv
), column
);
235 for (i
= 0; i
< 10; i
++) {
238 gtk_list_store_append (store
, &iter
);
249 CreateWindowFunc create_func
;
252 { "EggCellRendererKeys", key_test
},
254 { "EggNodeState", node_state_test
},
256 { "Progress Bar Cell", progress_bar_test
},
257 { "Tree View State", state_test
},
262 row_activated (GtkTreeView
*tree_view
, GtkTreePath
*path
, GtkTreeViewColumn
*column
)
266 CreateWindowFunc func
;
270 model
= gtk_tree_view_get_model (tree_view
);
272 gtk_tree_model_get_iter (model
, &iter
, path
);
274 gtk_tree_model_get (model
, &iter
,
281 gtk_window_set_title (GTK_WINDOW (window
), str
);
282 gtk_window_set_default_size (GTK_WINDOW (window
), 400, 300);
285 g_signal_connect (window
, "delete_event",
286 G_CALLBACK (gtk_widget_destroy
), NULL
);
287 gtk_widget_show_all (window
);
291 main (gint argc
, gchar
**argv
)
293 GtkWidget
*dialog
, *sw
, *tree_view
;
298 gtk_init (&argc
, &argv
);
300 dialog
= gtk_dialog_new_with_buttons ("Egg test",
303 GTK_STOCK_CLOSE
, GTK_RESPONSE_OK
,
305 gtk_window_set_default_size (GTK_WINDOW (dialog
), 200, 200);
306 g_signal_connect (dialog
, "response",
307 G_CALLBACK (gtk_main_quit
), NULL
);
308 sw
= gtk_scrolled_window_new (NULL
, NULL
);
309 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw
), GTK_SHADOW_IN
);
310 gtk_container_set_border_width (GTK_CONTAINER (sw
), 8);
311 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw
),
312 GTK_POLICY_AUTOMATIC
,
313 GTK_POLICY_AUTOMATIC
);
314 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog
)->vbox
), sw
, TRUE
, TRUE
, 0);
316 model
= gtk_list_store_new (2, G_TYPE_STRING
, G_TYPE_POINTER
);
318 for (i
= 0; i
< G_N_ELEMENTS (entries
); i
++)
320 gtk_list_store_append (model
,
322 gtk_list_store_set (model
,
325 1, entries
[i
].create_func
,
329 tree_view
= gtk_tree_view_new_with_model (GTK_TREE_MODEL (model
));
330 g_signal_connect (tree_view
, "row_activated",
331 G_CALLBACK (row_activated
), NULL
);
332 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view
), -1,
333 "Tests", gtk_cell_renderer_text_new (),
336 gtk_container_add (GTK_CONTAINER (sw
), tree_view
);
338 gtk_widget_show_all (dialog
);