46 GtkTreeSelection * sel = gtk_tree_view_get_selection (tree);
54 if (gtk_tree_selection_get_selected (sel, & model, & iter))
63 g_return_val_if_fail (p !=
NULL,
NULL);
68 static void do_enable (GtkCellRendererToggle * cell,
const char * path_str,
71 GtkTreePath * path = gtk_tree_path_new_from_string (path_str);
73 gtk_tree_model_get_iter (model, & iter, path);
74 gtk_tree_path_free (path);
80 g_return_if_fail (n !=
NULL);
88 gtk_tree_model_get_iter (n->
model, & iter, n->
path);
99 gtk_list_store_append ((GtkListStore *) model, & iter);
100 gtk_list_store_set ((GtkListStore *) model, & iter,
PVIEW_COL_NODE, n,
106 n->
path = gtk_tree_model_get_path (model, & iter);
115 GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new (
PVIEW_COLS,
116 G_TYPE_POINTER, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING);
117 gtk_tree_view_set_model (tree, model);
119 GtkTreeViewColumn * col = gtk_tree_view_column_new ();
120 gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
121 gtk_tree_view_column_set_resizable (col,
FALSE);
122 gtk_tree_view_append_column (tree, col);
124 GtkCellRenderer * rend = gtk_cell_renderer_toggle_new ();
125 g_signal_connect (rend,
"toggled", (GCallback)
do_enable, model);
126 gtk_tree_view_column_pack_start (col, rend,
FALSE);
132 col = gtk_tree_view_column_new ();
133 gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
134 gtk_tree_view_column_set_resizable (col,
FALSE);
135 gtk_tree_view_append_column (tree, col);
137 rend = gtk_cell_renderer_text_new ();
138 gtk_tree_view_column_pack_start (col, rend,
FALSE);
139 gtk_tree_view_column_set_attributes (col, rend,
"text", i,
NULL);
147 GtkTreeModel * model = gtk_tree_view_get_model (tree);
152 if (gtk_tree_model_get_iter_first (model, & iter))
158 g_return_if_fail (n !=
NULL);
161 gtk_tree_path_free (n->
path);
162 g_slice_free (
Node, n);
164 while (gtk_tree_model_iter_next (model, & iter));
167 g_object_unref ((GObject *) model);
187 ((GObject *)
b,
"watcher");
188 g_return_if_fail (watcher !=
NULL);
190 PluginHandle * p = g_object_steal_data ((GObject *) b,
"plugin");
197 g_object_set_data ((GObject *) b,
"plugin", p);
202 gtk_widget_set_sensitive (b,
FALSE);
208 g_return_if_fail (header !=
NULL);
210 if (header->configure !=
NULL)
211 header->configure ();
212 else if (header->settings !=
NULL)
219 g_return_if_fail (header !=
NULL);
221 if (header->about !=
NULL)
228 ((GObject *)
b,
"watcher");
229 g_return_if_fail (watcher !=
NULL);
231 PluginHandle * p = g_object_steal_data ((GObject *) b,
"plugin");
238 GtkWidget * vbox = gtk_vbox_new (
FALSE, 6);
239 gtk_container_set_border_width ((GtkContainer *) vbox, 6);
241 GtkWidget * scrolled = gtk_scrolled_window_new (
NULL,
NULL);
242 gtk_box_pack_start ((GtkBox *) vbox, scrolled,
TRUE,
TRUE, 0);
243 gtk_scrolled_window_set_policy ((GtkScrolledWindow *) scrolled,
244 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
245 gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) scrolled,
248 GtkWidget * tree = gtk_tree_view_new ();
249 gtk_container_add ((GtkContainer *) scrolled, tree);
250 gtk_tree_view_set_headers_visible ((GtkTreeView *) tree,
FALSE);
251 g_signal_connect (tree,
"realize", (GCallback)
list_fill, GINT_TO_POINTER
255 GtkWidget * hbox = gtk_hbox_new (
FALSE, 6);
256 gtk_box_pack_start ((GtkBox *) vbox, hbox,
FALSE,
FALSE, 0);
258 GtkWidget * config = gtk_button_new_from_stock (GTK_STOCK_PREFERENCES);
259 gtk_box_pack_start ((GtkBox *) hbox, config,
FALSE,
FALSE, 0);
260 gtk_widget_set_sensitive (config,
FALSE);
261 g_object_set_data ((GObject *) config,
"watcher", (
void *)
config_watcher);
262 g_signal_connect (tree,
"cursor-changed", (GCallback)
button_update, config);
263 g_signal_connect_swapped (config,
"clicked", (GCallback)
267 GtkWidget * about = gtk_button_new_from_stock (GTK_STOCK_ABOUT);
268 gtk_box_pack_start ((GtkBox *) hbox, about,
FALSE,
FALSE, 0);
269 gtk_widget_set_sensitive (about,
FALSE);
270 g_object_set_data ((GObject *) about,
"watcher", (
void *)
about_watcher);
271 g_signal_connect (tree,
"cursor-changed", (GCallback) button_update, about);
272 g_signal_connect_swapped (about,
"clicked", (GCallback)
do_about, tree);
273 g_signal_connect (about,
"destroy", (GCallback) button_destroy,
NULL);