44 GtkTreeSelection * sel = gtk_tree_view_get_selection (tree);
52 if (gtk_tree_selection_get_selected (sel, & model, & iter))
58 static void do_enable (GtkCellRendererToggle * cell,
const char * path_str,
61 GtkTreePath * path = gtk_tree_path_new_from_string (path_str);
63 gtk_tree_model_get_iter (model, & iter, path);
64 gtk_tree_path_free (path);
70 g_return_if_fail (n !=
NULL);
78 gtk_tree_model_get_iter (n->
model, & iter, n->
path);
89 gtk_list_store_append ((GtkListStore *) model, & iter);
90 gtk_list_store_set ((GtkListStore *) model, & iter,
PVIEW_COL_NODE, n,
96 n->
path = gtk_tree_model_get_path (model, & iter);
105 GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new (
PVIEW_COLS,
106 G_TYPE_POINTER, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING);
107 gtk_tree_view_set_model (tree, model);
109 GtkTreeViewColumn * col = gtk_tree_view_column_new ();
110 gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
111 gtk_tree_view_column_set_resizable (col,
FALSE);
112 gtk_tree_view_append_column (tree, col);
114 GtkCellRenderer * rend = gtk_cell_renderer_toggle_new ();
115 g_signal_connect (rend,
"toggled", (GCallback)
do_enable, model);
116 gtk_tree_view_column_pack_start (col, rend,
FALSE);
122 col = gtk_tree_view_column_new ();
123 gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
124 gtk_tree_view_column_set_resizable (col,
FALSE);
125 gtk_tree_view_append_column (tree, col);
127 rend = gtk_cell_renderer_text_new ();
128 gtk_tree_view_column_pack_start (col, rend,
FALSE);
129 gtk_tree_view_column_set_attributes (col, rend,
"text", i,
NULL);
137 GtkTreeModel * model = gtk_tree_view_get_model (tree);
142 if (gtk_tree_model_get_iter_first (model, & iter))
148 g_return_if_fail (n !=
NULL);
151 gtk_tree_path_free (n->
path);
152 g_slice_free (
Node, n);
154 while (gtk_tree_model_iter_next (model, & iter));
157 g_object_unref ((GObject *) model);
177 ((GObject *)
b,
"watcher");
178 g_return_if_fail (watcher !=
NULL);
180 PluginHandle * p = g_object_steal_data ((GObject *) b,
"plugin");
187 g_object_set_data ((GObject *) b,
"plugin", p);
192 gtk_widget_set_sensitive (b,
FALSE);
198 g_return_if_fail (plugin !=
NULL);
205 g_return_if_fail (plugin !=
NULL);
212 ((GObject *)
b,
"watcher");
213 g_return_if_fail (watcher !=
NULL);
215 PluginHandle * p = g_object_steal_data ((GObject *) b,
"plugin");
222 GtkWidget * vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
223 gtk_container_set_border_width ((GtkContainer *) vbox, 6);
225 GtkWidget * scrolled = gtk_scrolled_window_new (
NULL,
NULL);
226 gtk_box_pack_start ((GtkBox *) vbox, scrolled,
TRUE,
TRUE, 0);
227 gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scrolled,
228 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
229 gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scrolled,
232 GtkWidget * tree = gtk_tree_view_new ();
233 gtk_container_add ((GtkContainer *) scrolled, tree);
234 gtk_tree_view_set_headers_visible ((GtkTreeView *) tree,
FALSE);
235 g_signal_connect (tree,
"realize", (GCallback)
list_fill, GINT_TO_POINTER
239 GtkWidget * hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
240 gtk_box_pack_start ((GtkBox *) vbox, hbox,
FALSE,
FALSE, 0);
242 GtkWidget * config = gtk_button_new_from_stock (GTK_STOCK_PREFERENCES);
243 gtk_box_pack_start ((GtkBox *) hbox, config,
FALSE,
FALSE, 0);
244 gtk_widget_set_sensitive (config,
FALSE);
245 g_object_set_data ((GObject *) config,
"watcher", (
void *)
config_watcher);
246 g_signal_connect (tree,
"cursor-changed", (GCallback)
button_update, config);
247 g_signal_connect_swapped (config,
"clicked", (GCallback)
251 GtkWidget * about = gtk_button_new_from_stock (GTK_STOCK_ABOUT);
252 gtk_box_pack_start ((GtkBox *) hbox, about,
FALSE,
FALSE, 0);
253 gtk_widget_set_sensitive (about,
FALSE);
254 g_object_set_data ((GObject *) about,
"watcher", (
void *)
about_watcher);
255 g_signal_connect (tree,
"cursor-changed", (GCallback) button_update, about);
256 g_signal_connect_swapped (about,
"clicked", (GCallback)
do_about, tree);
257 g_signal_connect (about,
"destroy", (GCallback) button_destroy,
NULL);