Bug Summary

File:cafe-panel/panel-properties-dialog.c
Warning:line 934, column 2
Value stored to 'dialog' is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name panel-properties-dialog.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/rootdir/cafe-panel -fcoverage-compilation-dir=/rootdir/cafe-panel -resource-dir /usr/lib/llvm-19/lib/clang/19 -D HAVE_CONFIG_H -I . -I .. -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/gdk-pixbuf-2.0 -I /usr/include/libpng16 -I /usr/include/x86_64-linux-gnu -I /usr/include/webp -I /usr/include/libmount -I /usr/include/blkid -I /usr/include/pango-1.0 -I /usr/include/harfbuzz -I /usr/include/freetype2 -I /usr/include/fribidi -I /usr/include/cairo -I /usr/include/pixman-1 -I /usr/include/ctk-3.0 -I /usr/include/gio-unix-2.0 -I /usr/include/atk-1.0 -I /usr/include/at-spi2-atk/2.0 -I /usr/include/at-spi-2.0 -I /usr/include/dbus-1.0 -I /usr/lib/x86_64-linux-gnu/dbus-1.0/include -I /usr/include/cafe-desktop-2.0 -I /usr/include/startup-notification-1.0 -I /usr/include/dconf -I /usr/include/cafe-menus -I /usr/include/dconf -I /usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -I /usr/include/sysprof-6 -I /usr/include/libmount -I /usr/include/blkid -I . -I . -I ../cafe-panel -I ../cafe-panel/libpanel-util -D CAFELOCALEDIR="/usr/share/locale" -D PANELDATADIR="/usr/share/cafe-panel" -D PANEL_MODULES_DIR="/usr/lib/cafe-panel/modules" -D CAFEMENU_I_KNOW_THIS_IS_UNSTABLE -internal-isystem /usr/lib/llvm-19/lib/clang/19/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -analyzer-checker deadcode.DeadStores -analyzer-checker alpha.deadcode.UnreachableCode -analyzer-checker alpha.core.CastSize -analyzer-checker alpha.core.CastToStruct -analyzer-checker alpha.core.IdenticalExpr -analyzer-checker alpha.security.ArrayBoundV2 -analyzer-checker alpha.security.MallocOverflow -analyzer-checker alpha.security.ReturnPtrRange -analyzer-checker alpha.unix.SimpleStream -analyzer-checker alpha.unix.cstring.BufferOverlap -analyzer-checker alpha.unix.cstring.NotNullTerminated -analyzer-checker alpha.unix.cstring.OutOfBounds -analyzer-checker alpha.core.FixedAddr -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /rootdir/html-report/2025-04-02-194213-54450-1 -x c panel-properties-dialog.c
1/*
2 * panel-properties-dialog.c:
3 *
4 * Copyright (C) 2003 Sun Microsystems, Inc.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19 * 02110-1301, USA.
20
21 * Authors:
22 * Mark McLoughlin <mark@skynet.ie>
23 */
24
25#include <config.h>
26
27#include "panel-properties-dialog.h"
28
29#include <string.h>
30#include <glib/gi18n.h>
31#include <gio/gio.h>
32
33#include <libpanel-util/panel-glib.h>
34#include <libpanel-util/panel-ctk.h>
35#include <libpanel-util/panel-icon-chooser.h>
36#include <libpanel-util/panel-show.h>
37
38#include "panel-profile.h"
39#include "panel-schemas.h"
40#include "panel-util.h"
41#include "panel-globals.h"
42#include "panel-icon-names.h"
43
44typedef struct {
45 PanelToplevel *toplevel;
46 GSettings *settings;
47 GSettings *background_settings;
48
49 CtkWidget *properties_dialog;
50
51 CtkWidget *general_table;
52 CtkWidget *general_vbox;
53 CtkWidget *orientation_combo;
54 CtkWidget *orientation_label;
55 CtkWidget *size_widgets;
56 CtkWidget *size_spin;
57 CtkWidget *size_label;
58 CtkWidget *size_label_pixels;
59 CtkWidget *icon_align;
60 CtkWidget *icon_chooser;
61 CtkWidget *icon_label;
62 CtkWidget *expand_toggle;
63 CtkWidget *autohide_toggle;
64 CtkWidget *hidebuttons_toggle;
65 CtkWidget *arrows_toggle;
66 CtkWidget *default_radio;
67 CtkWidget *color_radio;
68 CtkWidget *image_radio;
69 CtkWidget *color_widgets;
70 CtkWidget *image_widgets;
71 CtkWidget *color_button;
72 CtkWidget *color_label;
73 CtkWidget *image_chooser;
74 CtkWidget *opacity_scale;
75 CtkWidget *opacity_label;
76 CtkWidget *opacity_legend;
77
78 CtkWidget *writability_warn_general;
79 CtkWidget *writability_warn_background;
80
81 /* FIXME: This is a workaround for CTK+ bug #327243 */
82 int selection_emitted;
83} PanelPropertiesDialog;
84
85static GQuark panel_properties_dialog_quark = 0;
86
87static void panel_properties_dialog_opacity_changed (PanelPropertiesDialog *dialog);
88
89static void
90panel_properties_dialog_free (PanelPropertiesDialog *dialog)
91{
92 if (dialog->settings)
93 g_object_unref (dialog->settings);
94 dialog->settings = NULL((void*)0);
95
96 if (dialog->background_settings)
97 g_object_unref (dialog->background_settings);
98 dialog->background_settings = NULL((void*)0);
99
100 if (dialog->properties_dialog)
101 ctk_widget_destroy (dialog->properties_dialog);
102 dialog->properties_dialog = NULL((void*)0);
103
104 g_free (dialog);
105}
106
107enum {
108 COLUMN_TEXT,
109 COLUMN_ITEM,
110 NUMBER_COLUMNS
111};
112
113typedef struct {
114 const char *name;
115 PanelOrientation orientation;
116} OrientationComboItem;
117
118static OrientationComboItem orientation_items [] = {
119 { NC_("Orientation", "Top")("Top"), PANEL_ORIENTATION_TOP },
120 { NC_("Orientation", "Bottom")("Bottom"), PANEL_ORIENTATION_BOTTOM },
121 { NC_("Orientation", "Left")("Left"), PANEL_ORIENTATION_LEFT },
122 { NC_("Orientation", "Right")("Right"), PANEL_ORIENTATION_RIGHT }
123};
124
125static void
126panel_properties_dialog_orientation_changed (PanelPropertiesDialog *dialog,
127 CtkComboBox *combo_box)
128{
129 CtkTreeIter iter;
130 CtkTreeModel *model;
131 OrientationComboItem *item;
132
133 g_assert (dialog->orientation_combo == CTK_WIDGET (combo_box))do { if (dialog->orientation_combo == ((((CtkWidget*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((combo_box)
), ((ctk_widget_get_type ()))))))) ; else g_assertion_message_expr
(((gchar*) 0), "panel-properties-dialog.c", 133, ((const char
*) (__func__)), "dialog->orientation_combo == CTK_WIDGET (combo_box)"
); } while (0)
;
134
135 if (!ctk_combo_box_get_active_iter (combo_box, &iter))
136 return;
137
138 model = ctk_combo_box_get_model (combo_box);
139 ctk_tree_model_get (model, &iter, COLUMN_ITEM, &item, -1);
140 if (item == NULL((void*)0))
141 return;
142
143 panel_profile_set_toplevel_orientation (dialog->toplevel,
144 item->orientation);
145}
146
147static void
148panel_properties_dialog_setup_orientation_combo_sensitivty (PanelPropertiesDialog *dialog,
149 CtkToggleButton *n G_GNUC_UNUSED__attribute__ ((__unused__)))
150{
151 gboolean expand;
152 expand = panel_profile_get_toplevel_expand (dialog->toplevel);
153
154 if (! panel_profile_key_is_writable (dialog->toplevel, PANEL_TOPLEVEL_ORIENTATION_KEY"orientation")) {
155 ctk_widget_set_sensitive (dialog->orientation_combo, FALSE(0));
156 ctk_widget_set_sensitive (dialog->orientation_label, FALSE(0));
157 ctk_widget_show (dialog->writability_warn_general);
158 }
159 else {
160 /* enable orientation only for non-expanded panels */
161 ctk_widget_set_sensitive (dialog->orientation_combo, expand);
162 ctk_widget_set_sensitive (dialog->orientation_label, expand);
163 }
164}
165
166static void
167panel_properties_dialog_setup_orientation_combo (PanelPropertiesDialog *dialog,
168 CtkBuilder *gui)
169{
170 PanelOrientation orientation;
171 CtkListStore *model;
172 CtkTreeIter iter;
173 CtkCellRenderer *renderer;
174 int i;
175
176 dialog->orientation_combo = PANEL_CTK_BUILDER_GET (gui, "orientation_combo")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "orientation_combo"))), ((ctk_widget_get_type
()))))))
;
177 g_return_if_fail (dialog->orientation_combo != NULL)do { if ((dialog->orientation_combo != ((void*)0))) { } else
{ g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__
)), "dialog->orientation_combo != NULL"); return; } } while
(0)
;
178 dialog->orientation_label = PANEL_CTK_BUILDER_GET (gui, "orientation_label")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "orientation_label"))), ((ctk_widget_get_type
()))))))
;
179 g_return_if_fail (dialog->orientation_label != NULL)do { if ((dialog->orientation_label != ((void*)0))) { } else
{ g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__
)), "dialog->orientation_label != NULL"); return; } } while
(0)
;
180
181 orientation = panel_profile_get_toplevel_orientation (dialog->toplevel);
182
183 model = ctk_list_store_new (NUMBER_COLUMNS,
184 G_TYPE_STRING((GType) ((16) << (2))),
185 G_TYPE_POINTER((GType) ((17) << (2))));
186
187 ctk_combo_box_set_model (CTK_COMBO_BOX (dialog->orientation_combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->orientation_combo)), ((ctk_combo_box_get_type
()))))))
,
188 CTK_TREE_MODEL (model)((((CtkTreeModel*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((model)), ((ctk_tree_model_get_type ()))))))
);
189
190 for (i = 0; i < G_N_ELEMENTS (orientation_items)(sizeof (orientation_items) / sizeof ((orientation_items)[0])
)
; i++) {
191 ctk_list_store_append (model, &iter);
192 ctk_list_store_set (model, &iter,
193 COLUMN_TEXT, g_dpgettext2 (NULL((void*)0), "Orientation", orientation_items [i].name),
194 COLUMN_ITEM, &(orientation_items [i]),
195 -1);
196 if (orientation == orientation_items [i].orientation)
197 ctk_combo_box_set_active_iter (CTK_COMBO_BOX (dialog->orientation_combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->orientation_combo)), ((ctk_combo_box_get_type
()))))))
,
198 &iter);
199 }
200
201 renderer = ctk_cell_renderer_text_new ();
202 ctk_cell_layout_pack_start (CTK_CELL_LAYOUT (dialog->orientation_combo)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->orientation_combo)), ((ctk_cell_layout_get_type
()))))))
,
203 renderer, TRUE(!(0)));
204 ctk_cell_layout_set_attributes (CTK_CELL_LAYOUT (dialog->orientation_combo)((((CtkCellLayout*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->orientation_combo)), ((ctk_cell_layout_get_type
()))))))
,
205 renderer, "text", COLUMN_TEXT, NULL((void*)0));
206
207 g_signal_connect_swapped (dialog->orientation_combo, "changed",g_signal_connect_data ((dialog->orientation_combo), ("changed"
), (((GCallback) (panel_properties_dialog_orientation_changed
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
208 G_CALLBACK (panel_properties_dialog_orientation_changed),g_signal_connect_data ((dialog->orientation_combo), ("changed"
), (((GCallback) (panel_properties_dialog_orientation_changed
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
209 dialog)g_signal_connect_data ((dialog->orientation_combo), ("changed"
), (((GCallback) (panel_properties_dialog_orientation_changed
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
;
210
211 panel_properties_dialog_setup_orientation_combo_sensitivty (dialog, NULL((void*)0));
212}
213
214static void
215panel_properties_dialog_size_changed (PanelPropertiesDialog *dialog,
216 CtkSpinButton *spin_button)
217{
218 panel_profile_set_toplevel_size (dialog->toplevel,
219 ctk_spin_button_get_value_as_int (spin_button));
220}
221
222static void
223panel_properties_dialog_setup_size_spin (PanelPropertiesDialog *dialog,
224 CtkBuilder *gui)
225{
226 dialog->size_widgets = PANEL_CTK_BUILDER_GET (gui, "size_widgets")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "size_widgets"))), ((ctk_widget_get_type
()))))))
;
227 g_return_if_fail (dialog->size_widgets != NULL)do { if ((dialog->size_widgets != ((void*)0))) { } else { g_return_if_fail_warning
(((gchar*) 0), ((const char*) (__func__)), "dialog->size_widgets != NULL"
); return; } } while (0)
;
228 dialog->size_spin = PANEL_CTK_BUILDER_GET (gui, "size_spin")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "size_spin"))), ((ctk_widget_get_type
()))))))
;
229 g_return_if_fail (dialog->size_spin != NULL)do { if ((dialog->size_spin != ((void*)0))) { } else { g_return_if_fail_warning
(((gchar*) 0), ((const char*) (__func__)), "dialog->size_spin != NULL"
); return; } } while (0)
;
230 dialog->size_label = PANEL_CTK_BUILDER_GET (gui, "size_label")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "size_label"))), ((ctk_widget_get_type
()))))))
;
231 g_return_if_fail (dialog->size_label != NULL)do { if ((dialog->size_label != ((void*)0))) { } else { g_return_if_fail_warning
(((gchar*) 0), ((const char*) (__func__)), "dialog->size_label != NULL"
); return; } } while (0)
;
232 dialog->size_label_pixels = PANEL_CTK_BUILDER_GET (gui, "size_label_pixels")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "size_label_pixels"))), ((ctk_widget_get_type
()))))))
;
233 g_return_if_fail (dialog->size_label_pixels != NULL)do { if ((dialog->size_label_pixels != ((void*)0))) { } else
{ g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__
)), "dialog->size_label_pixels != NULL"); return; } } while
(0)
;
234
235 ctk_spin_button_set_range (CTK_SPIN_BUTTON (dialog->size_spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->size_spin)), ((ctk_spin_button_get_type ())))
)))
,
236 panel_toplevel_get_minimum_size (dialog->toplevel),
237 panel_toplevel_get_maximum_size (dialog->toplevel));
238
239 ctk_spin_button_set_value (CTK_SPIN_BUTTON (dialog->size_spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->size_spin)), ((ctk_spin_button_get_type ())))
)))
,
240 panel_profile_get_toplevel_size (dialog->toplevel));
241
242 g_signal_connect_swapped (dialog->size_spin, "value_changed",g_signal_connect_data ((dialog->size_spin), ("value_changed"
), (((GCallback) (panel_properties_dialog_size_changed))), (dialog
), ((void*)0), G_CONNECT_SWAPPED)
243 G_CALLBACK (panel_properties_dialog_size_changed),g_signal_connect_data ((dialog->size_spin), ("value_changed"
), (((GCallback) (panel_properties_dialog_size_changed))), (dialog
), ((void*)0), G_CONNECT_SWAPPED)
244 dialog)g_signal_connect_data ((dialog->size_spin), ("value_changed"
), (((GCallback) (panel_properties_dialog_size_changed))), (dialog
), ((void*)0), G_CONNECT_SWAPPED)
;
245
246 if ( ! panel_profile_key_is_writable (dialog->toplevel, PANEL_TOPLEVEL_SIZE_KEY"size")) {
247 ctk_widget_set_sensitive (dialog->size_spin, FALSE(0));
248 ctk_widget_set_sensitive (dialog->size_label, FALSE(0));
249 ctk_widget_set_sensitive (dialog->size_label_pixels, FALSE(0));
250 ctk_widget_show (dialog->writability_warn_general);
251 }
252}
253
254static void
255panel_properties_dialog_icon_changed (PanelIconChooser *chooser G_GNUC_UNUSED__attribute__ ((__unused__)),
256 const char *icon,
257 PanelPropertiesDialog *dialog)
258{
259 panel_profile_set_attached_custom_icon (dialog->toplevel, icon);
260}
261
262static void
263panel_properties_dialog_setup_icon_chooser (PanelPropertiesDialog *dialog,
264 CtkBuilder *gui)
265{
266 char *custom_icon;
267
268 dialog->icon_align = PANEL_CTK_BUILDER_GET (gui, "icon_align")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "icon_align"))), ((ctk_widget_get_type
()))))))
;
269 g_return_if_fail (dialog->icon_align != NULL)do { if ((dialog->icon_align != ((void*)0))) { } else { g_return_if_fail_warning
(((gchar*) 0), ((const char*) (__func__)), "dialog->icon_align != NULL"
); return; } } while (0)
;
270
271 dialog->icon_chooser = panel_icon_chooser_new (NULL((void*)0));
272 panel_icon_chooser_set_fallback_icon_name (PANEL_ICON_CHOOSER (dialog->icon_chooser)((((PanelIconChooser*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((dialog->icon_chooser)), ((panel_icon_chooser_get_type
()))))))
,
273 PANEL_ICON_DRAWER"cafe-panel-drawer");
274 ctk_widget_show (dialog->icon_chooser);
275 ctk_container_add (CTK_CONTAINER (dialog->icon_align)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->icon_align)), ((ctk_container_get_type ()))))
))
,
276 dialog->icon_chooser);
277
278 dialog->icon_label = PANEL_CTK_BUILDER_GET (gui, "icon_label")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "icon_label"))), ((ctk_widget_get_type
()))))))
;
279 g_return_if_fail (dialog->icon_label != NULL)do { if ((dialog->icon_label != ((void*)0))) { } else { g_return_if_fail_warning
(((gchar*) 0), ((const char*) (__func__)), "dialog->icon_label != NULL"
); return; } } while (0)
;
280
281 custom_icon = panel_profile_get_attached_custom_icon (dialog->toplevel);
282 panel_icon_chooser_set_icon (PANEL_ICON_CHOOSER (dialog->icon_chooser)((((PanelIconChooser*) (void *) g_type_check_instance_cast ((
GTypeInstance*) ((dialog->icon_chooser)), ((panel_icon_chooser_get_type
()))))))
,
283 custom_icon);
284 g_free (custom_icon);
285
286 g_signal_connect (dialog->icon_chooser, "changed",g_signal_connect_data ((dialog->icon_chooser), ("changed")
, (((GCallback) (panel_properties_dialog_icon_changed))), (dialog
), ((void*)0), (GConnectFlags) 0)
287 G_CALLBACK (panel_properties_dialog_icon_changed), dialog)g_signal_connect_data ((dialog->icon_chooser), ("changed")
, (((GCallback) (panel_properties_dialog_icon_changed))), (dialog
), ((void*)0), (GConnectFlags) 0)
;
288
289 if (!panel_profile_is_writable_attached_custom_icon (dialog->toplevel)) {
290 ctk_widget_set_sensitive (dialog->icon_chooser, FALSE(0));
291 ctk_widget_set_sensitive (dialog->icon_label, FALSE(0));
292 if (panel_toplevel_get_is_attached (dialog->toplevel))
293 ctk_widget_show (dialog->writability_warn_general);
294 }
295}
296
297/* Note: this is only for toggle buttons on the general page, if needed for togglebuttons
298 elsewhere you must make this respect the writability warning thing for the right page */
299#define SETUP_TOGGLE_BUTTON(wid, n, p, key)static void panel_properties_dialog_n (PanelPropertiesDialog *
dialog, CtkToggleButton *n) { panel_profile_set_toplevel_p (dialog
->toplevel, ctk_toggle_button_get_active (n)); } static void
panel_properties_dialog_setup_n (PanelPropertiesDialog *dialog
, CtkBuilder *gui) { dialog->n = ((((CtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((ctk_builder_get_object (gui, wid))), ((ctk_widget_get_type
())))))); ctk_toggle_button_set_active (((((CtkToggleButton*
) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->n)), ((ctk_toggle_button_get_type ())))))), panel_profile_get_toplevel_p
(dialog->toplevel)); g_signal_connect_data ((dialog->n
), ("toggled"), (((GCallback) (panel_properties_dialog_n))), (
dialog), ((void*)0), G_CONNECT_SWAPPED); if ( ! panel_profile_key_is_writable
(dialog->toplevel, key)) { ctk_widget_set_sensitive (dialog
->n, (0)); ctk_widget_show (dialog->writability_warn_general
); } }
\
300 static void \
301 panel_properties_dialog_##n (PanelPropertiesDialog *dialog, \
302 CtkToggleButton *n) \
303 { \
304 panel_profile_set_toplevel_##p (dialog->toplevel, \
305 ctk_toggle_button_get_active (n)); \
306 } \
307 static void \
308 panel_properties_dialog_setup_##n (PanelPropertiesDialog *dialog, \
309 CtkBuilder *gui) \
310 { \
311 dialog->n = PANEL_CTK_BUILDER_GET (gui, wid)((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, wid))), ((ctk_widget_get_type
()))))))
; \
312 ctk_toggle_button_set_active (CTK_TOGGLE_BUTTON (dialog->n)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->n)), ((ctk_toggle_button_get_type ()))))))
, \
313 panel_profile_get_toplevel_##p (dialog->toplevel)); \
314 g_signal_connect_swapped (dialog->n, "toggled", \g_signal_connect_data ((dialog->n), ("toggled"), (((GCallback
) (panel_properties_dialog_##n))), (dialog), ((void*)0), G_CONNECT_SWAPPED
)
315 G_CALLBACK (panel_properties_dialog_##n), dialog)g_signal_connect_data ((dialog->n), ("toggled"), (((GCallback
) (panel_properties_dialog_##n))), (dialog), ((void*)0), G_CONNECT_SWAPPED
)
; \
316 if ( ! panel_profile_key_is_writable (dialog->toplevel, key)) { \
317 ctk_widget_set_sensitive (dialog->n, FALSE(0)); \
318 ctk_widget_show (dialog->writability_warn_general); \
319 } \
320 }
321
322SETUP_TOGGLE_BUTTON ("expand_toggle", expand_toggle, expand, PANEL_TOPLEVEL_EXPAND_KEY)static void panel_properties_dialog_expand_toggle (PanelPropertiesDialog
*dialog, CtkToggleButton *expand_toggle) { panel_profile_set_toplevel_expand
(dialog->toplevel, ctk_toggle_button_get_active (expand_toggle
)); } static void panel_properties_dialog_setup_expand_toggle
(PanelPropertiesDialog *dialog, CtkBuilder *gui) { dialog->
expand_toggle = ((((CtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((ctk_builder_get_object (gui, "expand_toggle"
))), ((ctk_widget_get_type ())))))); ctk_toggle_button_set_active
(((((CtkToggleButton*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((dialog->expand_toggle)), ((ctk_toggle_button_get_type
())))))), panel_profile_get_toplevel_expand (dialog->toplevel
)); g_signal_connect_data ((dialog->expand_toggle), ("toggled"
), (((GCallback) (panel_properties_dialog_expand_toggle))), (
dialog), ((void*)0), G_CONNECT_SWAPPED); if ( ! panel_profile_key_is_writable
(dialog->toplevel, "expand")) { ctk_widget_set_sensitive (
dialog->expand_toggle, (0)); ctk_widget_show (dialog->writability_warn_general
); } }
323SETUP_TOGGLE_BUTTON ("autohide_toggle", autohide_toggle, auto_hide, PANEL_TOPLEVEL_AUTO_HIDE_KEY)static void panel_properties_dialog_autohide_toggle (PanelPropertiesDialog
*dialog, CtkToggleButton *autohide_toggle) { panel_profile_set_toplevel_auto_hide
(dialog->toplevel, ctk_toggle_button_get_active (autohide_toggle
)); } static void panel_properties_dialog_setup_autohide_toggle
(PanelPropertiesDialog *dialog, CtkBuilder *gui) { dialog->
autohide_toggle = ((((CtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((ctk_builder_get_object (gui, "autohide_toggle"
))), ((ctk_widget_get_type ())))))); ctk_toggle_button_set_active
(((((CtkToggleButton*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((dialog->autohide_toggle)), ((ctk_toggle_button_get_type
())))))), panel_profile_get_toplevel_auto_hide (dialog->toplevel
)); g_signal_connect_data ((dialog->autohide_toggle), ("toggled"
), (((GCallback) (panel_properties_dialog_autohide_toggle))),
(dialog), ((void*)0), G_CONNECT_SWAPPED); if ( ! panel_profile_key_is_writable
(dialog->toplevel, "auto-hide")) { ctk_widget_set_sensitive
(dialog->autohide_toggle, (0)); ctk_widget_show (dialog->
writability_warn_general); } }
324SETUP_TOGGLE_BUTTON ("hidebuttons_toggle", hidebuttons_toggle, enable_buttons, PANEL_TOPLEVEL_ENABLE_BUTTONS_KEY)static void panel_properties_dialog_hidebuttons_toggle (PanelPropertiesDialog
*dialog, CtkToggleButton *hidebuttons_toggle) { panel_profile_set_toplevel_enable_buttons
(dialog->toplevel, ctk_toggle_button_get_active (hidebuttons_toggle
)); } static void panel_properties_dialog_setup_hidebuttons_toggle
(PanelPropertiesDialog *dialog, CtkBuilder *gui) { dialog->
hidebuttons_toggle = ((((CtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((ctk_builder_get_object (gui, "hidebuttons_toggle"
))), ((ctk_widget_get_type ())))))); ctk_toggle_button_set_active
(((((CtkToggleButton*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((dialog->hidebuttons_toggle)), ((ctk_toggle_button_get_type
())))))), panel_profile_get_toplevel_enable_buttons (dialog->
toplevel)); g_signal_connect_data ((dialog->hidebuttons_toggle
), ("toggled"), (((GCallback) (panel_properties_dialog_hidebuttons_toggle
))), (dialog), ((void*)0), G_CONNECT_SWAPPED); if ( ! panel_profile_key_is_writable
(dialog->toplevel, "enable-buttons")) { ctk_widget_set_sensitive
(dialog->hidebuttons_toggle, (0)); ctk_widget_show (dialog
->writability_warn_general); } }
325SETUP_TOGGLE_BUTTON ("arrows_toggle", arrows_toggle, enable_arrows, PANEL_TOPLEVEL_ENABLE_ARROWS_KEY)static void panel_properties_dialog_arrows_toggle (PanelPropertiesDialog
*dialog, CtkToggleButton *arrows_toggle) { panel_profile_set_toplevel_enable_arrows
(dialog->toplevel, ctk_toggle_button_get_active (arrows_toggle
)); } static void panel_properties_dialog_setup_arrows_toggle
(PanelPropertiesDialog *dialog, CtkBuilder *gui) { dialog->
arrows_toggle = ((((CtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((ctk_builder_get_object (gui, "arrows_toggle"
))), ((ctk_widget_get_type ())))))); ctk_toggle_button_set_active
(((((CtkToggleButton*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((dialog->arrows_toggle)), ((ctk_toggle_button_get_type
())))))), panel_profile_get_toplevel_enable_arrows (dialog->
toplevel)); g_signal_connect_data ((dialog->arrows_toggle)
, ("toggled"), (((GCallback) (panel_properties_dialog_arrows_toggle
))), (dialog), ((void*)0), G_CONNECT_SWAPPED); if ( ! panel_profile_key_is_writable
(dialog->toplevel, "enable-arrows")) { ctk_widget_set_sensitive
(dialog->arrows_toggle, (0)); ctk_widget_show (dialog->
writability_warn_general); } }
326
327static void
328panel_properties_dialog_color_changed (PanelPropertiesDialog *dialog,
329 CtkColorChooser *color_button)
330{
331 CdkRGBA color;
332
333 g_assert (dialog->color_button == CTK_WIDGET (color_button))do { if (dialog->color_button == ((((CtkWidget*) (void *) g_type_check_instance_cast
((GTypeInstance*) ((color_button)), ((ctk_widget_get_type ()
))))))) ; else g_assertion_message_expr (((gchar*) 0), "panel-properties-dialog.c"
, 333, ((const char*) (__func__)), "dialog->color_button == CTK_WIDGET (color_button)"
); } while (0)
;
334
335 ctk_color_chooser_get_rgba (color_button, &color);
336 panel_profile_set_background_cdk_rgba (dialog->toplevel, &color);
337 panel_properties_dialog_opacity_changed (dialog);
338}
339
340static void
341panel_properties_dialog_setup_color_button (PanelPropertiesDialog *dialog,
342 CtkBuilder *gui)
343{
344 CdkRGBA color;
345
346 dialog->color_button = PANEL_CTK_BUILDER_GET (gui, "color_button")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "color_button"))), ((ctk_widget_get_type
()))))))
;
347 g_return_if_fail (dialog->color_button != NULL)do { if ((dialog->color_button != ((void*)0))) { } else { g_return_if_fail_warning
(((gchar*) 0), ((const char*) (__func__)), "dialog->color_button != NULL"
); return; } } while (0)
;
348 dialog->color_label = PANEL_CTK_BUILDER_GET (gui, "color_label")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "color_label"))), ((ctk_widget_get_type
()))))))
;
349 g_return_if_fail (dialog->color_label != NULL)do { if ((dialog->color_label != ((void*)0))) { } else { g_return_if_fail_warning
(((gchar*) 0), ((const char*) (__func__)), "dialog->color_label != NULL"
); return; } } while (0)
;
350
351 panel_profile_get_background_color (dialog->toplevel, &color);
352
353 ctk_color_chooser_set_rgba (CTK_COLOR_CHOOSER (dialog->color_button)((((CtkColorChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->color_button)), ((ctk_color_chooser_get_type (
)))))))
,
354 &color);
355
356 g_signal_connect_swapped (dialog->color_button, "color_set",g_signal_connect_data ((dialog->color_button), ("color_set"
), (((GCallback) (panel_properties_dialog_color_changed))), (
dialog), ((void*)0), G_CONNECT_SWAPPED)
357 G_CALLBACK (panel_properties_dialog_color_changed),g_signal_connect_data ((dialog->color_button), ("color_set"
), (((GCallback) (panel_properties_dialog_color_changed))), (
dialog), ((void*)0), G_CONNECT_SWAPPED)
358 dialog)g_signal_connect_data ((dialog->color_button), ("color_set"
), (((GCallback) (panel_properties_dialog_color_changed))), (
dialog), ((void*)0), G_CONNECT_SWAPPED)
;
359
360 if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "color")) {
361 ctk_widget_set_sensitive (dialog->color_button, FALSE(0));
362 ctk_widget_set_sensitive (dialog->color_label, FALSE(0));
363 ctk_widget_show (dialog->writability_warn_background);
364 }
365}
366
367static void
368panel_properties_dialog_image_changed (PanelPropertiesDialog *dialog)
369{
370 char *image;
371
372 image = ctk_file_chooser_get_filename (CTK_FILE_CHOOSER (dialog->image_chooser)((((CtkFileChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->image_chooser)), ((ctk_file_chooser_get_type (
)))))))
);
373
374 /* FIXME: This is an ugly workaround for CTK+ bug #327243.
375 * FIXME: Note that CTK+ 2.12 and file-set signal might help. */
376 if (! (dialog->selection_emitted < 2) && !image) {
377 dialog->selection_emitted++;
378 return;
379 }
380 panel_profile_set_background_image (dialog->toplevel, image);
381
382 g_free (image);
383}
384
385static void
386panel_properties_dialog_setup_image_chooser (PanelPropertiesDialog *dialog,
387 CtkBuilder *gui)
388{
389 char *image;
390
391 dialog->image_chooser = PANEL_CTK_BUILDER_GET (gui, "image_chooser")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "image_chooser"))), ((ctk_widget_get_type
()))))))
;
392 panel_ctk_file_chooser_add_image_preview (CTK_FILE_CHOOSER (dialog->image_chooser)((((CtkFileChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->image_chooser)), ((ctk_file_chooser_get_type (
)))))))
);
393
394 image = panel_profile_get_background_image (dialog->toplevel);
395
396 if (PANEL_GLIB_STR_EMPTY (image)((image) == ((void*)0) || (image)[0] == '\0'))
397 ctk_file_chooser_unselect_all (CTK_FILE_CHOOSER (dialog->image_chooser)((((CtkFileChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->image_chooser)), ((ctk_file_chooser_get_type (
)))))))
);
398 else
399 ctk_file_chooser_set_filename (CTK_FILE_CHOOSER (dialog->image_chooser)((((CtkFileChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->image_chooser)), ((ctk_file_chooser_get_type (
)))))))
,
400 image);
401
402 if (image)
403 g_free (image);
404
405 dialog->selection_emitted = 0;
406 g_signal_connect_swapped (dialog->image_chooser, "selection-changed",g_signal_connect_data ((dialog->image_chooser), ("selection-changed"
), (((GCallback) (panel_properties_dialog_image_changed))), (
dialog), ((void*)0), G_CONNECT_SWAPPED)
407 G_CALLBACK (panel_properties_dialog_image_changed),g_signal_connect_data ((dialog->image_chooser), ("selection-changed"
), (((GCallback) (panel_properties_dialog_image_changed))), (
dialog), ((void*)0), G_CONNECT_SWAPPED)
408 dialog)g_signal_connect_data ((dialog->image_chooser), ("selection-changed"
), (((GCallback) (panel_properties_dialog_image_changed))), (
dialog), ((void*)0), G_CONNECT_SWAPPED)
;
409
410 if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "image")) {
411 ctk_widget_set_sensitive (dialog->image_chooser, FALSE(0));
412 ctk_widget_show (dialog->writability_warn_background);
413 }
414}
415
416static void
417panel_properties_dialog_opacity_changed (PanelPropertiesDialog *dialog)
418{
419 gdouble percentage;
420 guint16 opacity;
421
422 percentage = ctk_range_get_value (CTK_RANGE (dialog->opacity_scale)((((CtkRange*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->opacity_scale)), ((ctk_range_get_type ())))))
)
);
423
424 if (percentage >= 98)
425 percentage = 100;
426 else if (percentage <= 2)
427 percentage = 0;
428
429 opacity = (percentage / 100) * 65535;
430
431 panel_profile_set_background_opacity (dialog->toplevel, opacity);
432}
433
434static void
435panel_properties_dialog_setup_opacity_scale (PanelPropertiesDialog *dialog,
436 CtkBuilder *gui)
437{
438 guint16 opacity;
439 gdouble percentage;
440
441 dialog->opacity_scale = PANEL_CTK_BUILDER_GET (gui, "opacity_scale")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "opacity_scale"))), ((ctk_widget_get_type
()))))))
;
442 g_return_if_fail (dialog->opacity_scale != NULL)do { if ((dialog->opacity_scale != ((void*)0))) { } else {
g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__
)), "dialog->opacity_scale != NULL"); return; } } while (0
)
;
443 dialog->opacity_label = PANEL_CTK_BUILDER_GET (gui, "opacity_label")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "opacity_label"))), ((ctk_widget_get_type
()))))))
;
444 g_return_if_fail (dialog->opacity_label != NULL)do { if ((dialog->opacity_label != ((void*)0))) { } else {
g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__
)), "dialog->opacity_label != NULL"); return; } } while (0
)
;
445 dialog->opacity_legend = PANEL_CTK_BUILDER_GET (gui, "opacity_legend")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "opacity_legend"))), ((ctk_widget_get_type
()))))))
;
446 g_return_if_fail (dialog->opacity_legend != NULL)do { if ((dialog->opacity_legend != ((void*)0))) { } else {
g_return_if_fail_warning (((gchar*) 0), ((const char*) (__func__
)), "dialog->opacity_legend != NULL"); return; } } while (
0)
;
447
448 opacity = panel_profile_get_background_opacity (dialog->toplevel);
449
450 percentage = (opacity * 100.0) / 65535;
451
452 ctk_range_set_value (CTK_RANGE (dialog->opacity_scale)((((CtkRange*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->opacity_scale)), ((ctk_range_get_type ())))))
)
, percentage);
453
454 g_signal_connect_swapped (dialog->opacity_scale, "value_changed",g_signal_connect_data ((dialog->opacity_scale), ("value_changed"
), (((GCallback) (panel_properties_dialog_opacity_changed))),
(dialog), ((void*)0), G_CONNECT_SWAPPED)
455 G_CALLBACK (panel_properties_dialog_opacity_changed),g_signal_connect_data ((dialog->opacity_scale), ("value_changed"
), (((GCallback) (panel_properties_dialog_opacity_changed))),
(dialog), ((void*)0), G_CONNECT_SWAPPED)
456 dialog)g_signal_connect_data ((dialog->opacity_scale), ("value_changed"
), (((GCallback) (panel_properties_dialog_opacity_changed))),
(dialog), ((void*)0), G_CONNECT_SWAPPED)
;
457
458 if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "opacity")) {
459 ctk_widget_set_sensitive (dialog->opacity_scale, FALSE(0));
460 ctk_widget_set_sensitive (dialog->opacity_label, FALSE(0));
461 ctk_widget_set_sensitive (dialog->opacity_legend, FALSE(0));
462 ctk_widget_show (dialog->writability_warn_background);
463 }
464}
465
466static void
467panel_properties_dialog_upd_sensitivity (PanelPropertiesDialog *dialog,
468 PanelBackgroundType background_type)
469{
470 ctk_widget_set_sensitive (dialog->color_widgets,
471 background_type == PANEL_BACK_COLOR);
472 ctk_widget_set_sensitive (dialog->image_widgets,
473 background_type == PANEL_BACK_IMAGE);
474}
475
476static void
477panel_properties_dialog_background_toggled (PanelPropertiesDialog *dialog,
478 CtkWidget *radio)
479{
480 PanelBackgroundType background_type = PANEL_BACK_NONE;
481
482 if (!ctk_toggle_button_get_active (CTK_TOGGLE_BUTTON (radio)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((radio)), ((ctk_toggle_button_get_type ()))))))
))
483 return;
484
485 if (radio == dialog->default_radio)
486 background_type = PANEL_BACK_NONE;
487
488 else if (radio == dialog->color_radio)
489 background_type = PANEL_BACK_COLOR;
490
491 else if (radio == dialog->image_radio)
492 background_type = PANEL_BACK_IMAGE;
493
494 panel_properties_dialog_upd_sensitivity (dialog, background_type);
495
496 panel_profile_set_background_type (dialog->toplevel, background_type);
497}
498
499static void
500panel_properties_dialog_setup_background_radios (PanelPropertiesDialog *dialog,
501 CtkBuilder *gui)
502{
503 PanelBackgroundType background_type;
504 CtkWidget *active_radio;
505
506 dialog->default_radio = PANEL_CTK_BUILDER_GET (gui, "default_radio")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "default_radio"))), ((ctk_widget_get_type
()))))))
;
507 dialog->color_radio = PANEL_CTK_BUILDER_GET (gui, "color_radio")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "color_radio"))), ((ctk_widget_get_type
()))))))
;
508 dialog->image_radio = PANEL_CTK_BUILDER_GET (gui, "image_radio")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "image_radio"))), ((ctk_widget_get_type
()))))))
;
509 dialog->color_widgets = PANEL_CTK_BUILDER_GET (gui, "color_widgets")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "color_widgets"))), ((ctk_widget_get_type
()))))))
;
510 dialog->image_widgets = PANEL_CTK_BUILDER_GET (gui, "image_widgets")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "image_widgets"))), ((ctk_widget_get_type
()))))))
;
511
512 background_type = panel_profile_get_background_type (dialog->toplevel);
513 switch (background_type) {
514 case PANEL_BACK_NONE:
515 active_radio = dialog->default_radio;
516 break;
517 case PANEL_BACK_COLOR:
518 active_radio = dialog->color_radio;
519 break;
520 case PANEL_BACK_IMAGE:
521 active_radio = dialog->image_radio;
522 break;
523 default:
524 active_radio = NULL((void*)0);
525 g_assert_not_reached ()do { g_assertion_message_expr (((gchar*) 0), "panel-properties-dialog.c"
, 525, ((const char*) (__func__)), ((void*)0)); } while (0)
;
526 }
527
528 ctk_toggle_button_set_active (CTK_TOGGLE_BUTTON (active_radio)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((active_radio)), ((ctk_toggle_button_get_type ()))))))
, TRUE(!(0)));
529
530 panel_properties_dialog_upd_sensitivity (dialog, background_type);
531
532 g_signal_connect_swapped (dialog->default_radio, "toggled",g_signal_connect_data ((dialog->default_radio), ("toggled"
), (((GCallback) (panel_properties_dialog_background_toggled)
)), (dialog), ((void*)0), G_CONNECT_SWAPPED)
533 G_CALLBACK (panel_properties_dialog_background_toggled),g_signal_connect_data ((dialog->default_radio), ("toggled"
), (((GCallback) (panel_properties_dialog_background_toggled)
)), (dialog), ((void*)0), G_CONNECT_SWAPPED)
534 dialog)g_signal_connect_data ((dialog->default_radio), ("toggled"
), (((GCallback) (panel_properties_dialog_background_toggled)
)), (dialog), ((void*)0), G_CONNECT_SWAPPED)
;
535 g_signal_connect_swapped (dialog->color_radio, "toggled",g_signal_connect_data ((dialog->color_radio), ("toggled"),
(((GCallback) (panel_properties_dialog_background_toggled)))
, (dialog), ((void*)0), G_CONNECT_SWAPPED)
536 G_CALLBACK (panel_properties_dialog_background_toggled),g_signal_connect_data ((dialog->color_radio), ("toggled"),
(((GCallback) (panel_properties_dialog_background_toggled)))
, (dialog), ((void*)0), G_CONNECT_SWAPPED)
537 dialog)g_signal_connect_data ((dialog->color_radio), ("toggled"),
(((GCallback) (panel_properties_dialog_background_toggled)))
, (dialog), ((void*)0), G_CONNECT_SWAPPED)
;
538 g_signal_connect_swapped (dialog->image_radio, "toggled",g_signal_connect_data ((dialog->image_radio), ("toggled"),
(((GCallback) (panel_properties_dialog_background_toggled)))
, (dialog), ((void*)0), G_CONNECT_SWAPPED)
539 G_CALLBACK (panel_properties_dialog_background_toggled),g_signal_connect_data ((dialog->image_radio), ("toggled"),
(((GCallback) (panel_properties_dialog_background_toggled)))
, (dialog), ((void*)0), G_CONNECT_SWAPPED)
540 dialog)g_signal_connect_data ((dialog->image_radio), ("toggled"),
(((GCallback) (panel_properties_dialog_background_toggled)))
, (dialog), ((void*)0), G_CONNECT_SWAPPED)
;
541
542 if ( ! panel_profile_background_key_is_writable (dialog->toplevel, "type")) {
543 ctk_widget_set_sensitive (dialog->default_radio, FALSE(0));
544 ctk_widget_set_sensitive (dialog->color_radio, FALSE(0));
545 ctk_widget_set_sensitive (dialog->image_radio, FALSE(0));
546 ctk_widget_show (dialog->writability_warn_background);
547 }
548}
549
550static void
551panel_properties_update_arrows_toggle_visible (PanelPropertiesDialog *dialog,
552 CtkToggleButton *toggle)
553{
554 if (ctk_toggle_button_get_active (toggle))
555 ctk_widget_set_sensitive (dialog->arrows_toggle,
556 panel_profile_key_is_writable (dialog->toplevel, PANEL_TOPLEVEL_ENABLE_ARROWS_KEY"enable-arrows"));
557 else
558 ctk_widget_set_sensitive (dialog->arrows_toggle, FALSE(0));
559}
560
561static void
562panel_properties_dialog_response (PanelPropertiesDialog *dialog,
563 int response,
564 CtkWidget *properties_dialog)
565{
566 char *help_id;
567
568 switch (response) {
569 case CTK_RESPONSE_CLOSE:
570 ctk_widget_destroy (properties_dialog);
571 break;
572 case CTK_RESPONSE_HELP:
573 if (panel_toplevel_get_is_attached (dialog->toplevel)) {
574 help_id = "gospanel-550";
575 } else {
576 help_id = "gospanel-28";
577 }
578 panel_show_help (ctk_window_get_screen (CTK_WINDOW (properties_dialog)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((properties_dialog)), ((ctk_window_get_type ()))))))
),
579 "cafe-user-guide", help_id, NULL((void*)0));
580 break;
581 default:
582 break;
583 }
584}
585
586static void
587panel_properties_dialog_destroy (PanelPropertiesDialog *dialog)
588{
589 panel_toplevel_pop_autohide_disabler (PANEL_TOPLEVEL (dialog->toplevel)((((PanelToplevel*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->toplevel)), ((panel_toplevel_get_type ())))))
)
);
590 g_object_set_qdata (G_OBJECT (dialog->toplevel)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->toplevel)), (((GType) ((20) << (2))))))
))
,
591 panel_properties_dialog_quark,
592 NULL((void*)0));
593}
594
595static void
596panel_properties_dialog_update_orientation (PanelPropertiesDialog *dialog,
597 PanelOrientation orientation)
598{
599 CtkTreeModel *model;
600 CtkTreeIter iter;
601 OrientationComboItem *item;
602 int max_size;
603 int spin_size;
604 int profile_size;
605
606 /* change the maximum size of the panel */
607 //TODO: we should also do this when the monitor size changes
608 max_size = panel_toplevel_get_maximum_size (dialog->toplevel);
609 spin_size = ctk_spin_button_get_value_as_int (CTK_SPIN_BUTTON (dialog->size_spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->size_spin)), ((ctk_spin_button_get_type ())))
)))
);
610 profile_size = panel_profile_get_toplevel_size (dialog->toplevel);
611
612 ctk_spin_button_set_range (CTK_SPIN_BUTTON (dialog->size_spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->size_spin)), ((ctk_spin_button_get_type ())))
)))
,
613 panel_toplevel_get_minimum_size (dialog->toplevel),
614 max_size);
615
616 if (spin_size > max_size)
617 ctk_spin_button_set_value (CTK_SPIN_BUTTON (dialog->size_spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->size_spin)), ((ctk_spin_button_get_type ())))
)))
,
618 max_size);
619 else if (spin_size != profile_size)
620 ctk_spin_button_set_value (CTK_SPIN_BUTTON (dialog->size_spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->size_spin)), ((ctk_spin_button_get_type ())))
)))
,
621 MIN (profile_size, max_size)(((profile_size) < (max_size)) ? (profile_size) : (max_size
))
);
622
623 /* update the orientation combo box */
624 model = ctk_combo_box_get_model (CTK_COMBO_BOX (dialog->orientation_combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->orientation_combo)), ((ctk_combo_box_get_type
()))))))
);
625
626 if (!ctk_tree_model_get_iter_first (model, &iter))
627 return;
628
629 do {
630 ctk_tree_model_get (model, &iter, COLUMN_ITEM, &item, -1);
631 if (item != NULL((void*)0) && item->orientation == orientation) {
632 ctk_combo_box_set_active_iter (CTK_COMBO_BOX (dialog->orientation_combo)((((CtkComboBox*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->orientation_combo)), ((ctk_combo_box_get_type
()))))))
,
633 &iter);
634 return;
635 }
636 } while (ctk_tree_model_iter_next (model, &iter));
637}
638
639static void
640panel_properties_dialog_update_size (PanelPropertiesDialog *dialog,
641 int size)
642{
643 ctk_spin_button_set_value (CTK_SPIN_BUTTON (dialog->size_spin)((((CtkSpinButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->size_spin)), ((ctk_spin_button_get_type ())))
)))
, size);
644}
645
646static void
647panel_properties_dialog_toplevel_notify (GSettings *settings,
648 gchar *key,
649 PanelPropertiesDialog *dialog)
650{
651
652#define UPDATE_TOGGLE(p, n)if (!strcmp (key, p)) { gboolean val = g_settings_get_boolean
(settings, key); if (ctk_toggle_button_get_active (((((CtkToggleButton
*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->n)), ((ctk_toggle_button_get_type ()))))))) != val) ctk_toggle_button_set_active
(((((CtkToggleButton*) (void *) g_type_check_instance_cast (
(GTypeInstance*) ((dialog->n)), ((ctk_toggle_button_get_type
())))))), val); }
\
653 if (!strcmp (key, p)) { \
654 gboolean val = g_settings_get_boolean (settings, key); \
655 if (ctk_toggle_button_get_active (CTK_TOGGLE_BUTTON (dialog->n)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->n)), ((ctk_toggle_button_get_type ()))))))
) != val) \
656 ctk_toggle_button_set_active (CTK_TOGGLE_BUTTON (dialog->n)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->n)), ((ctk_toggle_button_get_type ()))))))
, val); \
657 }
658
659 if (!strcmp (key, "orientation"))
660 panel_properties_dialog_update_orientation (dialog, g_settings_get_enum (settings, key));
661 else if (!strcmp (key, "size"))
662 panel_properties_dialog_update_size (dialog, g_settings_get_int (settings, key));
663 else UPDATE_TOGGLE ("expand", expand_toggle)if (!strcmp (key, "expand")) { gboolean val = g_settings_get_boolean
(settings, key); if (ctk_toggle_button_get_active (((((CtkToggleButton
*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->expand_toggle)), ((ctk_toggle_button_get_type ()))))))) !=
val) ctk_toggle_button_set_active (((((CtkToggleButton*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((dialog->
expand_toggle)), ((ctk_toggle_button_get_type ())))))), val);
}
664 else UPDATE_TOGGLE ("auto-hide", autohide_toggle)if (!strcmp (key, "auto-hide")) { gboolean val = g_settings_get_boolean
(settings, key); if (ctk_toggle_button_get_active (((((CtkToggleButton
*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->autohide_toggle)), ((ctk_toggle_button_get_type ()))))))
) != val) ctk_toggle_button_set_active (((((CtkToggleButton*)
(void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->autohide_toggle)), ((ctk_toggle_button_get_type ()))))))
, val); }
665 else UPDATE_TOGGLE ("enable-buttons", hidebuttons_toggle)if (!strcmp (key, "enable-buttons")) { gboolean val = g_settings_get_boolean
(settings, key); if (ctk_toggle_button_get_active (((((CtkToggleButton
*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->hidebuttons_toggle)), ((ctk_toggle_button_get_type ())))
)))) != val) ctk_toggle_button_set_active (((((CtkToggleButton
*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->hidebuttons_toggle)), ((ctk_toggle_button_get_type ())))
))), val); }
666 else UPDATE_TOGGLE ("enable-arrows", arrows_toggle)if (!strcmp (key, "enable-arrows")) { gboolean val = g_settings_get_boolean
(settings, key); if (ctk_toggle_button_get_active (((((CtkToggleButton
*) (void *) g_type_check_instance_cast ((GTypeInstance*) ((dialog
->arrows_toggle)), ((ctk_toggle_button_get_type ()))))))) !=
val) ctk_toggle_button_set_active (((((CtkToggleButton*) (void
*) g_type_check_instance_cast ((GTypeInstance*) ((dialog->
arrows_toggle)), ((ctk_toggle_button_get_type ())))))), val);
}
667}
668
669static void
670panel_properties_dialog_update_background_type (PanelPropertiesDialog *dialog,
671 PanelBackgroundType background_type)
672{
673 CtkWidget *active_radio;
674
675 switch (background_type) {
676 case PANEL_BACK_NONE:
677 active_radio = dialog->default_radio;
678 break;
679 case PANEL_BACK_COLOR:
680 active_radio = dialog->color_radio;
681 break;
682 case PANEL_BACK_IMAGE:
683 active_radio = dialog->image_radio;
684 break;
685 default:
686 active_radio = NULL((void*)0);
687 g_assert_not_reached ()do { g_assertion_message_expr (((gchar*) 0), "panel-properties-dialog.c"
, 687, ((const char*) (__func__)), ((void*)0)); } while (0)
;
688 break;
689 }
690
691 ctk_toggle_button_set_active (CTK_TOGGLE_BUTTON (active_radio)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((active_radio)), ((ctk_toggle_button_get_type ()))))))
, TRUE(!(0)));
692}
693
694static void
695panel_properties_dialog_update_background_color (PanelPropertiesDialog *dialog,
696 gchar *str_color)
697{
698 CdkRGBA new_color;
699 CdkRGBA old_color;
700
701 if (!cdk_rgba_parse (&new_color, str_color))
702 return;
703
704 ctk_color_chooser_get_rgba (CTK_COLOR_CHOOSER (dialog->color_button)((((CtkColorChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->color_button)), ((ctk_color_chooser_get_type (
)))))))
,
705 &old_color);
706
707 if (!cdk_rgba_equal (&old_color, &new_color))
708 ctk_color_chooser_set_rgba (CTK_COLOR_CHOOSER (dialog->color_button)((((CtkColorChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->color_button)), ((ctk_color_chooser_get_type (
)))))))
,
709 &new_color);
710}
711
712static void
713panel_properties_dialog_update_background_image (PanelPropertiesDialog *dialog,
714 gchar *text)
715{
716 char *old_text;
717
718 old_text = ctk_file_chooser_get_filename (CTK_FILE_CHOOSER (dialog->image_chooser)((((CtkFileChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->image_chooser)), ((ctk_file_chooser_get_type (
)))))))
);
719
720 if (PANEL_GLIB_STR_EMPTY (text)((text) == ((void*)0) || (text)[0] == '\0') && old_text)
721 ctk_file_chooser_unselect_all (CTK_FILE_CHOOSER (dialog->image_chooser)((((CtkFileChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->image_chooser)), ((ctk_file_chooser_get_type (
)))))))
);
722 else if (!PANEL_GLIB_STR_EMPTY (text)((text) == ((void*)0) || (text)[0] == '\0') &&
723 (!old_text || strcmp (text, old_text)))
724 ctk_file_chooser_set_filename (CTK_FILE_CHOOSER (dialog->image_chooser)((((CtkFileChooser*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->image_chooser)), ((ctk_file_chooser_get_type (
)))))))
,
725 text);
726
727 if (old_text)
728 g_free (old_text);
729}
730
731static void
732panel_properties_dialog_background_notify (GSettings *settings,
733 gchar *key,
734 PanelPropertiesDialog *dialog)
735{
736 if (!strcmp (key, "type"))
737 {
738 PanelBackgroundType type = g_settings_get_enum (settings, key);
739 panel_properties_dialog_update_background_type (dialog, type);
740 }
741 else if (!strcmp (key, "color"))
742 {
743 char *color = g_settings_get_string (settings, key);
744 panel_properties_dialog_update_background_color (dialog, color);
745 g_free (color);
746 }
747 else if (!strcmp (key, "image"))
748 {
749 char *image = g_settings_get_string (settings, key);
750 panel_properties_dialog_update_background_image (dialog, image);
751 g_free (image);
752 }
753}
754
755static void
756panel_properties_dialog_remove_orientation_combo (PanelPropertiesDialog *dialog)
757{
758 CtkContainer *container = CTK_CONTAINER (dialog->general_table)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->general_table)), ((ctk_container_get_type ())
)))))
;
759 CtkGrid *grid = CTK_GRID (dialog->general_table)((((CtkGrid*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->general_table)), ((ctk_grid_get_type ()))))))
;
760
761 g_object_ref (dialog->size_label)((__typeof__ (dialog->size_label)) (g_object_ref) (dialog->
size_label))
;
762 g_object_ref (dialog->size_widgets)((__typeof__ (dialog->size_widgets)) (g_object_ref) (dialog
->size_widgets))
;
763 g_object_ref (dialog->icon_label)((__typeof__ (dialog->icon_label)) (g_object_ref) (dialog->
icon_label))
;
764 g_object_ref (dialog->icon_align)((__typeof__ (dialog->icon_align)) (g_object_ref) (dialog->
icon_align))
;
765
766 ctk_container_remove (container, dialog->orientation_label);
767 ctk_container_remove (container, dialog->orientation_combo);
768 ctk_container_remove (container, dialog->size_label);
769 ctk_container_remove (container, dialog->size_widgets);
770 ctk_container_remove (container, dialog->icon_label);
771 ctk_container_remove (container, dialog->icon_align);
772
773 ctk_grid_attach (grid, dialog->size_label, 0, 1, 1, 1);
774 ctk_grid_attach (grid, dialog->size_widgets, 1, 1, 1, 1);
775 ctk_grid_attach (grid, dialog->icon_label, 0, 2, 1, 1);
776 ctk_grid_attach (grid, dialog->icon_align, 1, 2, 1, 1);
777
778 dialog->orientation_label = NULL((void*)0);
779 dialog->orientation_combo = NULL((void*)0);
780 g_object_unref (dialog->size_label);
781 g_object_unref (dialog->size_widgets);
782 g_object_unref (dialog->icon_label);
783 g_object_unref (dialog->icon_align);
784}
785
786static void
787panel_properties_dialog_remove_icon_chooser (PanelPropertiesDialog *dialog)
788{
789 CtkContainer *container = CTK_CONTAINER (dialog->general_table)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->general_table)), ((ctk_container_get_type ())
)))))
;
790
791 ctk_container_remove (container, dialog->icon_label);
792 ctk_container_remove (container, dialog->icon_align);
793
794 dialog->icon_label = NULL((void*)0);
795 dialog->icon_align = NULL((void*)0);
796 dialog->icon_chooser = NULL((void*)0);
797}
798
799static void
800panel_properties_dialog_remove_toggles (PanelPropertiesDialog *dialog)
801{
802 CtkContainer *container = CTK_CONTAINER (dialog->general_vbox)((((CtkContainer*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->general_vbox)), ((ctk_container_get_type ()))
))))
;
803
804 ctk_container_remove (container, dialog->autohide_toggle);
805 ctk_container_remove (container, dialog->expand_toggle);
806
807 dialog->autohide_toggle = NULL((void*)0);
808 dialog->expand_toggle = NULL((void*)0);
809}
810
811static void
812panel_properties_dialog_update_for_attached (PanelPropertiesDialog *dialog,
813 gboolean attached)
814{
815 if (!attached)
816 panel_properties_dialog_remove_icon_chooser (dialog);
817 else {
818 ctk_window_set_title (CTK_WINDOW (dialog->properties_dialog)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->properties_dialog)), ((ctk_window_get_type ()
))))))
,
819 _("Drawer Properties")gettext ("Drawer Properties"));
820 panel_properties_dialog_remove_toggles (dialog);
821 panel_properties_dialog_remove_orientation_combo (dialog);
822 }
823}
824
825static PanelPropertiesDialog *
826panel_properties_dialog_new (PanelToplevel *toplevel,
827 CtkBuilder *gui)
828{
829 PanelPropertiesDialog *dialog;
830 char *toplevel_settings_path;
831
832 dialog = g_new0 (PanelPropertiesDialog, 1)((PanelPropertiesDialog *) g_malloc0_n ((1), sizeof (PanelPropertiesDialog
)))
;
833
834 g_object_set_qdata_full (G_OBJECT (toplevel)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((toplevel)), (((GType) ((20) << (2))))))))
,
835 panel_properties_dialog_quark,
836 dialog,
837 (GDestroyNotify) panel_properties_dialog_free);
838
839 dialog->toplevel = toplevel;
840
841 dialog->properties_dialog = PANEL_CTK_BUILDER_GET (gui, "panel_properties_dialog")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "panel_properties_dialog"))
), ((ctk_widget_get_type ()))))))
;
842 g_signal_connect_swapped (dialog->properties_dialog, "response",g_signal_connect_data ((dialog->properties_dialog), ("response"
), (((GCallback) (panel_properties_dialog_response))), (dialog
), ((void*)0), G_CONNECT_SWAPPED)
843 G_CALLBACK (panel_properties_dialog_response), dialog)g_signal_connect_data ((dialog->properties_dialog), ("response"
), (((GCallback) (panel_properties_dialog_response))), (dialog
), ((void*)0), G_CONNECT_SWAPPED)
;
844 g_signal_connect_swapped (dialog->properties_dialog, "destroy",g_signal_connect_data ((dialog->properties_dialog), ("destroy"
), (((GCallback) (panel_properties_dialog_destroy))), (dialog
), ((void*)0), G_CONNECT_SWAPPED)
845 G_CALLBACK (panel_properties_dialog_destroy), dialog)g_signal_connect_data ((dialog->properties_dialog), ("destroy"
), (((GCallback) (panel_properties_dialog_destroy))), (dialog
), ((void*)0), G_CONNECT_SWAPPED)
;
846
847 ctk_window_set_screen (CTK_WINDOW (dialog->properties_dialog)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->properties_dialog)), ((ctk_window_get_type ()
))))))
,
848 ctk_window_get_screen (CTK_WINDOW (toplevel)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((toplevel)), ((ctk_window_get_type ()))))))
));
849
850 dialog->writability_warn_general = PANEL_CTK_BUILDER_GET (gui, "writability_warn_general")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "writability_warn_general")
)), ((ctk_widget_get_type ()))))))
;
851 dialog->writability_warn_background = PANEL_CTK_BUILDER_GET (gui, "writability_warn_background")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "writability_warn_background"
))), ((ctk_widget_get_type ()))))))
;
852
853 dialog->general_vbox = PANEL_CTK_BUILDER_GET (gui, "general_vbox")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "general_vbox"))), ((ctk_widget_get_type
()))))))
;
854 dialog->general_table = PANEL_CTK_BUILDER_GET (gui, "general_table")((((CtkWidget*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((ctk_builder_get_object (gui, "general_table"))), ((ctk_widget_get_type
()))))))
;
855
856 panel_properties_dialog_setup_orientation_combo (dialog, gui);
857 panel_properties_dialog_setup_size_spin (dialog, gui);
858 panel_properties_dialog_setup_icon_chooser (dialog, gui);
859 panel_properties_dialog_setup_expand_toggle (dialog, gui);
860 panel_properties_dialog_setup_autohide_toggle (dialog, gui);
861 panel_properties_dialog_setup_hidebuttons_toggle (dialog, gui);
862 panel_properties_dialog_setup_arrows_toggle (dialog, gui);
863
864 g_signal_connect_swapped (dialog->expand_toggle, "toggled",g_signal_connect_data ((dialog->expand_toggle), ("toggled"
), (((GCallback) (panel_properties_dialog_setup_orientation_combo_sensitivty
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
865 G_CALLBACK (panel_properties_dialog_setup_orientation_combo_sensitivty), dialog)g_signal_connect_data ((dialog->expand_toggle), ("toggled"
), (((GCallback) (panel_properties_dialog_setup_orientation_combo_sensitivty
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
;
866
867 panel_properties_update_arrows_toggle_visible (
868 dialog, CTK_TOGGLE_BUTTON (dialog->hidebuttons_toggle)((((CtkToggleButton*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->hidebuttons_toggle)), ((ctk_toggle_button_get_type
()))))))
);
869 g_signal_connect_swapped (dialog->hidebuttons_toggle, "toggled",g_signal_connect_data ((dialog->hidebuttons_toggle), ("toggled"
), (((GCallback) (panel_properties_update_arrows_toggle_visible
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
870 G_CALLBACK (panel_properties_update_arrows_toggle_visible),g_signal_connect_data ((dialog->hidebuttons_toggle), ("toggled"
), (((GCallback) (panel_properties_update_arrows_toggle_visible
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
871 dialog)g_signal_connect_data ((dialog->hidebuttons_toggle), ("toggled"
), (((GCallback) (panel_properties_update_arrows_toggle_visible
))), (dialog), ((void*)0), G_CONNECT_SWAPPED)
;
872
873 g_object_get (toplevel, "settings-path", &toplevel_settings_path, NULL((void*)0));
874 dialog->settings = g_settings_new_with_path (PANEL_TOPLEVEL_SCHEMA"org.cafe.panel.toplevel",
875 toplevel_settings_path);
876 gchar *toplevel_background_path;
877 toplevel_background_path = g_strdup_printf ("%sbackground/", toplevel_settings_path);
878 dialog->background_settings = g_settings_new_with_path (PANEL_TOPLEVEL_BACKGROUND_SCHEMA"org.cafe.panel.toplevel.background",
879 toplevel_background_path);
880 g_free (toplevel_background_path);
881 g_free (toplevel_settings_path);
882
883 g_signal_connect (dialog->settings,g_signal_connect_data ((dialog->settings), ("changed"), ((
(GCallback) (panel_properties_dialog_toplevel_notify))), (dialog
), ((void*)0), (GConnectFlags) 0)
884 "changed",g_signal_connect_data ((dialog->settings), ("changed"), ((
(GCallback) (panel_properties_dialog_toplevel_notify))), (dialog
), ((void*)0), (GConnectFlags) 0)
885 G_CALLBACK (panel_properties_dialog_toplevel_notify),g_signal_connect_data ((dialog->settings), ("changed"), ((
(GCallback) (panel_properties_dialog_toplevel_notify))), (dialog
), ((void*)0), (GConnectFlags) 0)
886 dialog)g_signal_connect_data ((dialog->settings), ("changed"), ((
(GCallback) (panel_properties_dialog_toplevel_notify))), (dialog
), ((void*)0), (GConnectFlags) 0)
;
887
888 panel_properties_dialog_setup_color_button (dialog, gui);
889 panel_properties_dialog_setup_image_chooser (dialog, gui);
890 panel_properties_dialog_setup_opacity_scale (dialog, gui);
891 panel_properties_dialog_setup_background_radios (dialog, gui);
892
893 g_signal_connect (dialog->background_settings,g_signal_connect_data ((dialog->background_settings), ("changed"
), (((GCallback) (panel_properties_dialog_background_notify))
), (dialog), ((void*)0), (GConnectFlags) 0)
894 "changed",g_signal_connect_data ((dialog->background_settings), ("changed"
), (((GCallback) (panel_properties_dialog_background_notify))
), (dialog), ((void*)0), (GConnectFlags) 0)
895 G_CALLBACK (panel_properties_dialog_background_notify),g_signal_connect_data ((dialog->background_settings), ("changed"
), (((GCallback) (panel_properties_dialog_background_notify))
), (dialog), ((void*)0), (GConnectFlags) 0)
896 dialog)g_signal_connect_data ((dialog->background_settings), ("changed"
), (((GCallback) (panel_properties_dialog_background_notify))
), (dialog), ((void*)0), (GConnectFlags) 0)
;
897
898 panel_properties_dialog_update_for_attached (dialog,
899 panel_toplevel_get_is_attached (dialog->toplevel));
900
901 panel_toplevel_push_autohide_disabler (dialog->toplevel);
902 panel_widget_register_open_dialog (panel_toplevel_get_panel_widget (dialog->toplevel),
903 dialog->properties_dialog);
904
905 ctk_widget_show (dialog->properties_dialog);
906
907 return dialog;
908}
909
910void
911panel_properties_dialog_present (PanelToplevel *toplevel)
912{
913 PanelPropertiesDialog *dialog;
914 CtkBuilder *gui;
915
916 if (!panel_properties_dialog_quark)
917 panel_properties_dialog_quark =
918 g_quark_from_static_string ("panel-properties-dialog");
919
920 dialog = g_object_get_qdata (G_OBJECT (toplevel)((((GObject*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((toplevel)), (((GType) ((20) << (2))))))))
, panel_properties_dialog_quark);
921 if (dialog) {
922 ctk_window_set_screen (CTK_WINDOW (dialog->properties_dialog)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->properties_dialog)), ((ctk_window_get_type ()
))))))
,
923 ctk_window_get_screen (CTK_WINDOW (toplevel)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((toplevel)), ((ctk_window_get_type ()))))))
));
924 ctk_window_present (CTK_WINDOW (dialog->properties_dialog)((((CtkWindow*) (void *) g_type_check_instance_cast ((GTypeInstance
*) ((dialog->properties_dialog)), ((ctk_window_get_type ()
))))))
);
925 return;
926 }
927
928 gui = ctk_builder_new ();
929 ctk_builder_set_translation_domain (gui, GETTEXT_PACKAGE"cafe-panel");
930 ctk_builder_add_from_resource (gui,
931 PANEL_RESOURCE_PATH"/org/cafe/panel/" "panel-properties-dialog.ui",
932 NULL((void*)0));
933
934 dialog = panel_properties_dialog_new (toplevel, gui);
Value stored to 'dialog' is never read
935
936 g_object_unref (gui);
937}