File: | cafe-panel/panel-test-applets.c |
Warning: | line 369, column 3 This statement is never executed |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* |
2 | * panel-test-applets.c: |
3 | * |
4 | * Authors: |
5 | * Mark McLoughlin <mark@skynet.ie> |
6 | * Stefano Karapetsas <stefano@karapetsas.com> |
7 | * |
8 | * Copyright 2002 Sun Microsystems, Inc. |
9 | * 2012 Stefano Karapetsas |
10 | */ |
11 | |
12 | #include <config.h> |
13 | #include <glib/gi18n.h> |
14 | #include <ctk/ctk.h> |
15 | #include <gio/gio.h> |
16 | |
17 | #include <libpanel-util/panel-cleanup.h> |
18 | #include <libcafe-desktop/cafe-dconf.h> |
19 | |
20 | #include <libcafe-panel-applet-private/panel-applet-container.h> |
21 | #include <libcafe-panel-applet-private/panel-applets-manager-dbus.h> |
22 | |
23 | #include "panel-modules.h" |
24 | |
25 | G_GNUC_UNUSED__attribute__ ((__unused__)) void on_execute_button_clicked (CtkButton *button, gpointer dummy); |
26 | |
27 | static CtkWidget *win = NULL((void*)0); |
28 | static CtkWidget *applet_combo = NULL((void*)0); |
29 | static CtkWidget *prefs_path_entry = NULL((void*)0); |
30 | static CtkWidget *orient_combo = NULL((void*)0); |
31 | static CtkWidget *size_combo = NULL((void*)0); |
32 | |
33 | static char *cli_iid = NULL((void*)0); |
34 | static char *cli_prefs_path = NULL((void*)0); |
35 | static char *cli_size = NULL((void*)0); |
36 | static char *cli_orient = NULL((void*)0); |
37 | |
38 | static const GOptionEntry options [] = { |
39 | { "iid", 0, 0, G_OPTION_ARG_STRING, &cli_iid, N_("Specify an applet IID to load")("Specify an applet IID to load"), NULL((void*)0)}, |
40 | { "prefs-path", 0, 0, G_OPTION_ARG_STRING, &cli_prefs_path, N_("Specify a gsettings path in which the applet preferences should be stored")("Specify a gsettings path in which the applet preferences should be stored" ), NULL((void*)0)}, |
41 | { "size", 0, 0, G_OPTION_ARG_STRING, &cli_size, N_("Specify the initial size of the applet (xx-small, medium, large etc.)")("Specify the initial size of the applet (xx-small, medium, large etc.)" ), NULL((void*)0)}, |
42 | { "orient", 0, 0, G_OPTION_ARG_STRING, &cli_orient, N_("Specify the initial orientation of the applet (top, bottom, left or right)")("Specify the initial orientation of the applet (top, bottom, left or right)" ), NULL((void*)0)}, |
43 | { NULL((void*)0)} |
44 | }; |
45 | |
46 | enum { |
47 | COLUMN_TEXT, |
48 | COLUMN_ITEM, |
49 | NUMBER_COLUMNS |
50 | }; |
51 | |
52 | typedef struct { |
53 | const char *name; |
54 | guint value; |
55 | } ComboItem; |
56 | |
57 | static ComboItem orient_items [] = { |
58 | { NC_("Orientation", "Top")("Top"), PANEL_ORIENTATION_TOP }, |
59 | { NC_("Orientation", "Bottom")("Bottom"), PANEL_ORIENTATION_BOTTOM }, |
60 | { NC_("Orientation", "Left")("Left"), PANEL_ORIENTATION_LEFT }, |
61 | { NC_("Orientation", "Right")("Right"), PANEL_ORIENTATION_RIGHT } |
62 | }; |
63 | |
64 | |
65 | static ComboItem size_items [] = { |
66 | { NC_("Size", "XX Small")("XX Small"), 12 }, |
67 | { NC_("Size", "X Small")("X Small"), 24 }, |
68 | { NC_("Size", "Small")("Small"), 36 }, |
69 | { NC_("Size", "Medium")("Medium"), 48 }, |
70 | { NC_("Size", "Large")("Large"), 64 }, |
71 | { NC_("Size", "X Large")("X Large"), 80 }, |
72 | { NC_("Size", "XX Large")("XX Large"), 128 } |
73 | }; |
74 | |
75 | static guint |
76 | get_combo_value (CtkWidget *combo_box) |
77 | { |
78 | CtkTreeIter iter; |
79 | CtkTreeModel *model; |
80 | guint value; |
81 | |
82 | if (!ctk_combo_box_get_active_iter (CTK_COMBO_BOX (combo_box)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_combo_box_get_type ())))))), &iter)) |
83 | return 0; |
84 | |
85 | model = ctk_combo_box_get_model (CTK_COMBO_BOX (combo_box)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_combo_box_get_type ()))))))); |
86 | ctk_tree_model_get (model, &iter, COLUMN_ITEM, &value, -1); |
87 | |
88 | return value; |
89 | } |
90 | |
91 | static gchar * |
92 | get_combo_applet_id (CtkWidget *combo_box) |
93 | { |
94 | CtkTreeIter iter; |
95 | CtkTreeModel *model; |
96 | char *value; |
97 | |
98 | if (!ctk_combo_box_get_active_iter (CTK_COMBO_BOX (combo_box)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_combo_box_get_type ())))))), &iter)) |
99 | return NULL((void*)0); |
100 | |
101 | model = ctk_combo_box_get_model (CTK_COMBO_BOX (combo_box)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_combo_box_get_type ()))))))); |
102 | ctk_tree_model_get (model, &iter, COLUMN_ITEM, &value, -1); |
103 | |
104 | return value; |
105 | } |
106 | |
107 | static void |
108 | applet_broken_cb (CtkWidget *container, |
109 | CtkWidget *window) |
110 | { |
111 | ctk_widget_destroy (window); |
112 | } |
113 | |
114 | static void |
115 | applet_activated_cb (GObject *source_object, |
116 | GAsyncResult *res, |
117 | CtkWidget *applet_window) |
118 | { |
119 | GError *error = NULL((void*)0); |
120 | |
121 | if (!cafe_panel_applet_container_add_finish (CAFE_PANEL_APPLET_CONTAINER (source_object)((((CafePanelAppletContainer*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((source_object)), ((cafe_panel_applet_container_get_type ())))))), |
122 | res, &error)) { |
123 | CtkWidget *dialog; |
124 | |
125 | dialog = ctk_message_dialog_new (CTK_WINDOW (applet_window)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((applet_window)), ((ctk_window_get_type ())))))), |
126 | CTK_DIALOG_MODAL| |
127 | CTK_DIALOG_DESTROY_WITH_PARENT, |
128 | CTK_MESSAGE_ERROR, |
129 | CTK_BUTTONS_CLOSE, |
130 | _("Failed to load applet %s")gettext ("Failed to load applet %s"), |
131 | error->message); // FIXME |
132 | ctk_dialog_run (CTK_DIALOG (dialog)((((CtkDialog*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((dialog)), ((ctk_dialog_get_type ()))))))); |
133 | ctk_widget_destroy (dialog); |
134 | return; |
135 | } |
136 | |
137 | ctk_widget_show (applet_window); |
138 | } |
139 | |
140 | static void |
141 | load_applet_into_window (const char *title, |
142 | const char *prefs_path, |
143 | guint size, |
144 | guint orientation) |
145 | { |
146 | CtkWidget *container; |
147 | CtkWidget *applet_window; |
148 | GVariantBuilder builder; |
149 | |
150 | container = cafe_panel_applet_container_new (); |
151 | |
152 | applet_window = ctk_window_new (CTK_WINDOW_TOPLEVEL); |
153 | //FIXME: we could set the window icon with the applet icon |
154 | ctk_window_set_title (CTK_WINDOW (applet_window)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((applet_window)), ((ctk_window_get_type ())))))), title); |
155 | ctk_container_add (CTK_CONTAINER (applet_window)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((applet_window)), ((ctk_container_get_type ())))))), container); |
156 | ctk_widget_show (container); |
157 | |
158 | g_signal_connect (container, "applet-broken",g_signal_connect_data ((container), ("applet-broken"), (((GCallback ) (applet_broken_cb))), (applet_window), ((void*)0), (GConnectFlags ) 0) |
159 | G_CALLBACK (applet_broken_cb),g_signal_connect_data ((container), ("applet-broken"), (((GCallback ) (applet_broken_cb))), (applet_window), ((void*)0), (GConnectFlags ) 0) |
160 | applet_window)g_signal_connect_data ((container), ("applet-broken"), (((GCallback ) (applet_broken_cb))), (applet_window), ((void*)0), (GConnectFlags ) 0); |
161 | |
162 | g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")(g_variant_type_checked_ (("a{sv}")))); |
163 | g_variant_builder_add (&builder, "{sv}", |
164 | "prefs-path", g_variant_new_string (prefs_path)); |
165 | g_variant_builder_add (&builder, "{sv}", |
166 | "size", g_variant_new_uint32 (size)); |
167 | g_variant_builder_add (&builder, "{sv}", |
168 | "orient", g_variant_new_uint32 (orientation)); |
169 | cafe_panel_applet_container_add (CAFE_PANEL_APPLET_CONTAINER (container)((((CafePanelAppletContainer*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((container)), ((cafe_panel_applet_container_get_type ())))))), |
170 | ctk_widget_get_screen (applet_window), |
171 | title, NULL((void*)0), |
172 | (GAsyncReadyCallback)applet_activated_cb, |
173 | applet_window, |
174 | g_variant_builder_end (&builder)); |
175 | } |
176 | |
177 | static void |
178 | load_applet_from_command_line (void) |
179 | { |
180 | guint size = 24, orient = PANEL_ORIENTATION_TOP; |
181 | gint i; |
182 | |
183 | g_assert (cli_iid != NULL)do { if (cli_iid != ((void*)0)) ; else g_assertion_message_expr (((gchar*) 0), "panel-test-applets.c", 183, ((const char*) ( __func__)), "cli_iid != NULL"); } while (0); |
184 | |
185 | if (cli_size || cli_orient) { |
186 | if (cli_size) { |
187 | for (i = 0; i < G_N_ELEMENTS (size_items)(sizeof (size_items) / sizeof ((size_items)[0])); i++) { |
188 | if (strcmp (g_dpgettext2 (NULL((void*)0), "Size", size_items[i].name), cli_size) == 0) { |
189 | size = size_items[i].value; |
190 | break; |
191 | } |
192 | } |
193 | } |
194 | |
195 | if (cli_orient) { |
196 | for (i = 0; i < G_N_ELEMENTS (orient_items)(sizeof (orient_items) / sizeof ((orient_items)[0])); i++) { |
197 | if (strcmp (g_dpgettext2 (NULL((void*)0), "Orientation", orient_items[i].name), cli_orient) == 0) { |
198 | orient = orient_items[i].value; |
199 | break; |
200 | } |
201 | } |
202 | } |
203 | } |
204 | |
205 | g_print ("Loading %s\n", cli_iid); |
206 | |
207 | load_applet_into_window (cli_iid, cli_prefs_path, size, orient); |
208 | } |
209 | |
210 | G_GNUC_UNUSED__attribute__ ((__unused__)) void |
211 | on_execute_button_clicked (CtkButton *button, |
212 | gpointer dummy) |
213 | { |
214 | char *title; |
215 | |
216 | title = get_combo_applet_id (applet_combo); |
217 | |
218 | load_applet_into_window (title, |
219 | ctk_entry_get_text (CTK_ENTRY (prefs_path_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((prefs_path_entry)), ((ctk_entry_get_type ()))))))), |
220 | get_combo_value (size_combo), |
221 | get_combo_value (orient_combo)); |
222 | g_free (title); |
223 | } |
224 | |
225 | static void |
226 | setup_combo (CtkWidget *combo_box, |
227 | ComboItem *items, |
228 | const char *context, |
229 | int nb_items) |
230 | { |
231 | CtkListStore *model; |
232 | CtkTreeIter iter; |
233 | CtkCellRenderer *renderer; |
234 | int i; |
235 | |
236 | model = ctk_list_store_new (NUMBER_COLUMNS, |
237 | G_TYPE_STRING((GType) ((16) << (2))), |
238 | G_TYPE_INT((GType) ((6) << (2)))); |
239 | |
240 | ctk_combo_box_set_model (CTK_COMBO_BOX (combo_box)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_combo_box_get_type ())))))), |
241 | CTK_TREE_MODEL (model)((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((model)), ((ctk_tree_model_get_type ()))))))); |
242 | |
243 | |
244 | for (i = 0; i < nb_items; i++) { |
245 | ctk_list_store_append (model, &iter); |
246 | ctk_list_store_set (model, &iter, |
247 | COLUMN_TEXT, g_dpgettext2 (NULL((void*)0), context, items [i].name), |
248 | COLUMN_ITEM, items [i].value, |
249 | -1); |
250 | } |
251 | |
252 | renderer = ctk_cell_renderer_text_new (); |
253 | ctk_cell_layout_pack_start (CTK_CELL_LAYOUT (combo_box)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_cell_layout_get_type ())))))), |
254 | renderer, TRUE(!(0))); |
255 | ctk_cell_layout_set_attributes (CTK_CELL_LAYOUT (combo_box)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_cell_layout_get_type ())))))), |
256 | renderer, "text", COLUMN_TEXT, NULL((void*)0)); |
257 | |
258 | ctk_combo_box_set_active (CTK_COMBO_BOX (combo_box)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((combo_box)), ((ctk_combo_box_get_type ())))))), 0); |
259 | } |
260 | |
261 | static void |
262 | setup_options (void) |
263 | { |
264 | CafePanelAppletsManager *manager; |
265 | GList *applet_list, *l; |
266 | int i; |
267 | int j; |
268 | char *prefs_path = NULL((void*)0); |
269 | char *unique_key = NULL((void*)0); |
270 | gboolean unique_key_found = FALSE(0); |
271 | gchar **dconf_paths; |
272 | CtkListStore *model; |
273 | CtkTreeIter iter; |
274 | CtkCellRenderer *renderer; |
275 | |
276 | model = ctk_list_store_new (NUMBER_COLUMNS, |
277 | G_TYPE_STRING((GType) ((16) << (2))), |
278 | G_TYPE_STRING((GType) ((16) << (2)))); |
279 | |
280 | ctk_combo_box_set_model (CTK_COMBO_BOX (applet_combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((applet_combo)), ((ctk_combo_box_get_type ())))))), |
281 | CTK_TREE_MODEL (model)((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((model)), ((ctk_tree_model_get_type ()))))))); |
282 | |
283 | manager = g_object_new (PANEL_TYPE_APPLETS_MANAGER_DBUS(cafe_panel_applets_manager_dbus_get_type ()), NULL((void*)0)); |
284 | applet_list = CAFE_PANEL_APPLETS_MANAGER_GET_CLASS (manager)((((CafePanelAppletsManagerClass*) (((GTypeInstance*) ((manager )))->g_class))))->get_applets (manager); |
285 | for (l = applet_list, i = 1; l; l = g_list_next (l)((l) ? (((GList *)(l))->next) : ((void*)0)), i++) { |
286 | CafePanelAppletInfo *info = (CafePanelAppletInfo *)l->data; |
287 | |
288 | ctk_list_store_append (model, &iter); |
289 | ctk_list_store_set (model, &iter, |
290 | COLUMN_TEXT, g_strdup (cafe_panel_applet_info_get_name (info))g_strdup_inline (cafe_panel_applet_info_get_name (info)), |
291 | COLUMN_ITEM, g_strdup (cafe_panel_applet_info_get_iid (info))g_strdup_inline (cafe_panel_applet_info_get_iid (info)), |
292 | -1); |
293 | } |
294 | g_list_free (applet_list); |
295 | g_object_unref (manager); |
296 | |
297 | renderer = ctk_cell_renderer_text_new (); |
298 | ctk_cell_layout_pack_start (CTK_CELL_LAYOUT (applet_combo)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((applet_combo)), ((ctk_cell_layout_get_type ())))))), |
299 | renderer, TRUE(!(0))); |
300 | ctk_cell_layout_set_attributes (CTK_CELL_LAYOUT (applet_combo)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((applet_combo)), ((ctk_cell_layout_get_type ())))))), |
301 | renderer, "text", COLUMN_TEXT, NULL((void*)0)); |
302 | |
303 | ctk_combo_box_set_active (CTK_COMBO_BOX (applet_combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((applet_combo)), ((ctk_combo_box_get_type ())))))), 0); |
304 | |
305 | setup_combo (size_combo, size_items, "Size", |
306 | G_N_ELEMENTS (size_items)(sizeof (size_items) / sizeof ((size_items)[0]))); |
307 | setup_combo (orient_combo, orient_items, "Orientation", |
308 | G_N_ELEMENTS (orient_items)(sizeof (orient_items) / sizeof ((orient_items)[0]))); |
309 | |
310 | for (i = 0; !unique_key_found; i++) |
311 | { |
312 | g_free (unique_key); |
313 | unique_key = g_strdup_printf ("cafe-panel-test-applet-%d", i); |
314 | unique_key_found = TRUE(!(0)); |
315 | dconf_paths = cafe_dconf_list_subdirs ("/tmp/", TRUE(!(0))); |
316 | for (j = 0; dconf_paths[j] != NULL((void*)0); j++) |
317 | { |
318 | if (g_strcmp0(unique_key, dconf_paths[j]) == 0) { |
319 | unique_key_found = FALSE(0); |
320 | break; |
321 | } |
322 | } |
323 | if (dconf_paths) |
324 | g_strfreev (dconf_paths); |
325 | } |
326 | |
327 | prefs_path = g_strdup_printf ("/tmp/%s/", unique_key); |
328 | if (unique_key) |
329 | g_free (unique_key); |
330 | ctk_entry_set_text (CTK_ENTRY (prefs_path_entry)((((CtkEntry*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((prefs_path_entry)), ((ctk_entry_get_type ())))))), prefs_path); |
331 | g_free (prefs_path); |
332 | } |
333 | |
334 | int |
335 | main (int argc, char **argv) |
336 | { |
337 | CtkBuilder *builder; |
338 | char *applets_dir; |
339 | GError *error; |
340 | |
341 | bindtextdomain (GETTEXT_PACKAGE"cafe-panel", CAFELOCALEDIR"/usr/share/locale"); |
342 | bind_textdomain_codeset (GETTEXT_PACKAGE"cafe-panel", "UTF-8"); |
343 | textdomain (GETTEXT_PACKAGE"cafe-panel"); |
344 | |
345 | error = NULL((void*)0); |
346 | if (!ctk_init_with_args (&argc, &argv, |
347 | "", (GOptionEntry *) options, GETTEXT_PACKAGE"cafe-panel", |
348 | &error)) { |
349 | if (error) { |
350 | g_printerr ("%s\n", error->message); |
351 | g_error_free (error); |
352 | } else |
353 | g_printerr ("Cannot initialize CTK+.\n"); |
354 | |
355 | return 1; |
356 | } |
357 | |
358 | panel_modules_ensure_loaded (); |
359 | |
360 | if (g_file_test ("../libcafe-panel-applet", G_FILE_TEST_IS_DIR)) { |
361 | applets_dir = g_strdup_printf ("%s:../libcafe-panel-applet", CAFE_PANEL_APPLETS_DIR"/usr/share/cafe-panel/applets"); |
362 | g_setenv ("CAFE_PANEL_APPLETS_DIR", applets_dir, FALSE(0)); |
363 | g_free (applets_dir); |
364 | } |
365 | |
366 | g_object_set (ctk_settings_get_default (), "ctk-button-images", TRUE(!(0)), NULL((void*)0)); |
367 | |
368 | if (cli_iid) { |
369 | load_applet_from_command_line (); |
This statement is never executed | |
370 | ctk_main (); |
371 | panel_cleanup_do (); |
372 | |
373 | return 0; |
374 | } |
375 | |
376 | builder = ctk_builder_new (); |
377 | ctk_builder_set_translation_domain (builder, GETTEXT_PACKAGE"cafe-panel"); |
378 | ctk_builder_add_from_resource (builder, "/org/cafe/panel/test/panel-test-applets.ui", NULL((void*)0)); |
379 | |
380 | ctk_builder_connect_signals (builder, NULL((void*)0)); |
381 | |
382 | win = CTK_WIDGET (ctk_builder_get_object (builder,((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "toplevel"))), ((ctk_widget_get_type ())))))) |
383 | "toplevel"))((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "toplevel"))), ((ctk_widget_get_type ())))))); |
384 | applet_combo = CTK_WIDGET (ctk_builder_get_object (builder,((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "applet-combo"))), ((ctk_widget_get_type ())))))) |
385 | "applet-combo"))((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "applet-combo"))), ((ctk_widget_get_type ())))))); |
386 | prefs_path_entry = CTK_WIDGET (ctk_builder_get_object (builder,((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "prefs-path-entry"))), ( (ctk_widget_get_type ())))))) |
387 | "prefs-path-entry"))((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "prefs-path-entry"))), ( (ctk_widget_get_type ())))))); |
388 | orient_combo = CTK_WIDGET (ctk_builder_get_object (builder,((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "orient-combo"))), ((ctk_widget_get_type ())))))) |
389 | "orient-combo"))((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "orient-combo"))), ((ctk_widget_get_type ())))))); |
390 | size_combo = CTK_WIDGET (ctk_builder_get_object (builder,((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "size-combo"))), ((ctk_widget_get_type ())))))) |
391 | "size-combo"))((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance *) ((ctk_builder_get_object (builder, "size-combo"))), ((ctk_widget_get_type ())))))); |
392 | g_object_unref (builder); |
393 | |
394 | setup_options (); |
395 | |
396 | ctk_widget_show (win); |
397 | |
398 | ctk_main (); |
399 | |
400 | panel_cleanup_do (); |
401 | |
402 | return 0; |
403 | } |