1
2
3 #include "gconf.h"
4 #include "panel.h"
5
6 //#define DEBUGPRN
7 #include "dbg.h"
8
9 enum
10 {
11 TYPE_COL,
12 NAME_COL,
13 N_COLUMNS
14 };
15
16 GtkTreeStore *store;
17 GtkWidget *tree;
18 GtkWidget *bbox;
19
20 static void
mk_model(xconf * xc)21 mk_model(xconf *xc)
22 {
23 GtkTreeIter iter;
24 xconf *pxc;
25 int i;
26 gchar *type;
27
28 store = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
29 for (i = 0; (pxc = xconf_find(xc, "plugin", i)); i++)
30 {
31 XCG(pxc, "type", &type, str);
32 gtk_tree_store_append(store, &iter, NULL);
33 gtk_tree_store_set (store, &iter,
34 TYPE_COL, type,
35 NAME_COL, "Martin Heidegger",
36 -1);
37 }
38 }
39
40 static void
tree_selection_changed_cb(GtkTreeSelection * selection,gpointer data)41 tree_selection_changed_cb(GtkTreeSelection *selection, gpointer data)
42 {
43 GtkTreeIter iter;
44 GtkTreeModel *model;
45 gchar *type;
46 gboolean sel;
47
48 sel = gtk_tree_selection_get_selected(selection, &model, &iter);
49 if (sel)
50 {
51 gtk_tree_model_get(model, &iter, TYPE_COL, &type, -1);
52 g_print("%s\n", type);
53 g_free(type);
54 }
55 gtk_widget_set_sensitive(bbox, sel);
56 }
57
58 static GtkWidget *
mk_view()59 mk_view()
60 {
61 GtkCellRenderer *renderer;
62 GtkTreeViewColumn *column;
63 GtkTreeSelection *select;
64
65 tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
66 renderer = gtk_cell_renderer_text_new();
67 column = gtk_tree_view_column_new_with_attributes("Type",
68 renderer, "text", TYPE_COL, NULL);
69 gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
70
71 select = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
72 gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
73 g_signal_connect(G_OBJECT(select), "changed",
74 G_CALLBACK(tree_selection_changed_cb), NULL);
75 return tree;
76 }
77
78 GtkWidget *
mk_buttons()79 mk_buttons()
80 {
81 GtkWidget *bm, *b, *w;
82
83 bm = gtk_hbox_new(FALSE, 3);
84
85 w = gtk_button_new_from_stock(GTK_STOCK_ADD);
86 gtk_box_pack_start(GTK_BOX(bm), w, FALSE, TRUE, 0);
87
88 b = gtk_hbox_new(FALSE, 3);
89 gtk_box_pack_start(GTK_BOX(bm), b, FALSE, TRUE, 0);
90 bbox = b;
91 gtk_widget_set_sensitive(bbox, FALSE);
92
93 w = gtk_button_new_from_stock(GTK_STOCK_EDIT);
94 gtk_box_pack_start(GTK_BOX(b), w, FALSE, TRUE, 0);
95 w = gtk_button_new_from_stock(GTK_STOCK_DELETE);
96 gtk_box_pack_start(GTK_BOX(b), w, FALSE, TRUE, 0);
97 w = gtk_button_new_from_stock(GTK_STOCK_GO_DOWN);
98 gtk_box_pack_start(GTK_BOX(b), w, FALSE, TRUE, 0);
99 w = gtk_button_new_from_stock(GTK_STOCK_GO_UP);
100 gtk_box_pack_start(GTK_BOX(b), w, FALSE, TRUE, 0);
101
102 return bm;
103 }
104
105 GtkWidget *
mk_tab_plugins(xconf * xc)106 mk_tab_plugins(xconf *xc)
107 {
108 GtkWidget *page, *w;
109
110 ENTER;
111 page = gtk_vbox_new(FALSE, 1);
112 gtk_container_set_border_width(GTK_CONTAINER(page), 10);
113
114 mk_model(xc);
115
116 w = mk_view();
117 gtk_box_pack_start(GTK_BOX(page), w, TRUE, TRUE, 0);
118 w = mk_buttons();
119 gtk_box_pack_start(GTK_BOX(page), w, FALSE, TRUE, 0);
120
121 gtk_widget_show_all(page);
122 RET(page);
123 }
124