3 #include "parser/parse.h"
7 #include <gdk-pixbuf/gdk-pixbuf.h>
9 #define OB_ICON "openbox-icon"
11 static GtkWidget
*mainwin
;
12 static GtkWidget
*mainlist
;
13 static GtkListStore
*mainstore
;
14 static GtkWidget
*mainworkarea
;
15 static GdkPixbuf
*ob_icon
;
22 gboolean
on_mainwindow_delete_event(GtkWidget
*w
, GdkEvent
*e
, gpointer d
);
23 void on_quit_activate(GtkMenuItem
*item
, gpointer d
);
24 void on_applybutton_clicked(GtkButton
*but
, gpointer d
);
25 void on_revertbutton_clicked(GtkButton
*but
, gpointer d
);
26 void on_helpbutton_clicked(GtkButton
*but
, gpointer d
);
27 void on_selection_changed(GtkTreeSelection
*selection
, gpointer data
);
29 static void obconf_error(GError
*e
)
33 d
= gtk_message_dialog_new(mainwin
? GTK_WINDOW(mainwin
) : NULL
,
34 GTK_DIALOG_DESTROY_WITH_PARENT
,
38 g_signal_connect_swapped(GTK_OBJECT(d
), "response",
39 G_CALLBACK(gtk_widget_destroy
),
44 static void load_stock ()
46 GtkIconFactory
*factory
;
49 gtk_icon_factory_add_default (factory
= gtk_icon_factory_new ());
51 ob_icon
= gdk_pixbuf_new_from_file (PIXMAPDIR G_DIR_SEPARATOR_S
54 gchar
*msg
= g_strdup_printf
55 (_("Failed to load the Openbox icon, Openbox is probably not "
56 "installed correctly. The error given was '%s'."),
64 set
= gtk_icon_set_new_from_pixbuf (ob_icon
);
65 gtk_icon_factory_add (factory
, OB_ICON
, set
);
66 gtk_icon_set_unref (set
);
70 GtkWidget
* build_menu(GtkAccelGroup
*accel
)
76 menu
= gtk_menu_bar_new();
80 submenu
= gtk_menu_new();
81 gtk_menu_set_accel_group(GTK_MENU(submenu
), accel
);
83 item
= gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT
, accel
);
84 g_signal_connect(item
, "activate", G_CALLBACK(on_quit_activate
), NULL
);
85 gtk_menu_append(GTK_MENU(submenu
), item
);
87 item
= gtk_menu_item_new_with_mnemonic("_File");
88 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item
), submenu
);
89 gtk_menu_bar_append(GTK_MENU_BAR(menu
), item
);
93 submenu
= gtk_menu_new();
94 gtk_menu_set_accel_group(GTK_MENU(submenu
), accel
);
96 item
= gtk_menu_item_new_with_mnemonic("_About");
97 gtk_menu_append(GTK_MENU(submenu
), item
);
99 item
= gtk_menu_item_new_with_mnemonic("_Help");
100 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item
), submenu
);
101 gtk_menu_bar_append(GTK_MENU_BAR(menu
), item
);
103 gtk_widget_show_all(menu
);
108 GtkWidget
* build_list(GtkListStore
**model
)
112 GtkCellRenderer
*ren
;
113 GtkTreeViewColumn
*col
;
114 GtkTreeSelection
*sel
;
116 store
= gtk_list_store_new(N_COLUMNS
,
119 list
= gtk_tree_view_new_with_model(GTK_TREE_MODEL(store
));
120 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(list
), FALSE
);
122 sel
= gtk_tree_view_get_selection(GTK_TREE_VIEW(list
));
123 gtk_tree_selection_set_mode(sel
, GTK_SELECTION_SINGLE
);
124 g_signal_connect(sel
, "changed", G_CALLBACK(on_selection_changed
), NULL
);
126 ren
= gtk_cell_renderer_text_new();
127 col
= gtk_tree_view_column_new_with_attributes("Name",
132 gtk_tree_view_append_column(GTK_TREE_VIEW(list
), col
);
138 int main(int argc
, char **argv
)
143 GtkAccelGroup
*accel
;
146 gtk_init(&argc
, &argv
);
148 mainwin
= gtk_window_new(GTK_WINDOW_TOPLEVEL
);
149 gtk_window_set_title(GTK_WINDOW(mainwin
), "Obconf");
150 gtk_window_set_wmclass(GTK_WINDOW(mainwin
), "obconf", "Obconf");
151 gtk_window_set_role(GTK_WINDOW(mainwin
), "main window");
153 g_signal_connect(mainwin
, "delete-event",
154 G_CALLBACK(on_mainwindow_delete_event
), NULL
);
156 accel
= gtk_accel_group_new();
157 gtk_window_add_accel_group(GTK_WINDOW(mainwin
), accel
);
159 vbox
= gtk_vbox_new(FALSE
, 3);
160 gtk_container_add(GTK_CONTAINER(mainwin
), vbox
);
164 menu
= build_menu(accel
);
165 gtk_box_pack_start(GTK_BOX(vbox
), menu
, FALSE
, FALSE
, 0);
167 hpane
= gtk_hpaned_new();
168 gtk_box_pack_start(GTK_BOX(vbox
), hpane
, TRUE
, TRUE
, 0);
172 mainlist
= build_list(&mainstore
);
173 gtk_container_add(GTK_CONTAINER(hpane
), mainlist
);
177 mainworkarea
= gtk_vbox_new(FALSE
, 1);
178 gtk_container_add(GTK_CONTAINER(hpane
), mainworkarea
);
180 gtk_widget_show_all(mainwin
);
183 if (ob_icon
) gtk_window_set_icon(GTK_WINDOW(mainwin
), ob_icon
);
189 gboolean
on_mainwindow_delete_event(GtkWidget
*w
, GdkEvent
*e
, gpointer d
)
195 void on_quit_activate(GtkMenuItem
*item
, gpointer d
)
200 void on_applybutton_clicked(GtkButton
*but
, gpointer d
)
205 void on_revertbutton_clicked(GtkButton
*but
, gpointer d
)
210 void on_helpbutton_clicked(GtkButton
*but
, gpointer d
)
215 void on_selection_changed(GtkTreeSelection
*sel
, gpointer data
)
220 if (gtk_tree_selection_get_selected(sel
, &model
, &iter
)) {
221 g_message("activated");
223 g_message("none activated");