53
51
GtkWidget *move_minimized_radio;
54
52
GtkWidget *change_workspace_radio;
58
/* gconf listeners id */
62
57
static void display_properties_dialog (GtkAction *action,
63
58
TasklistData *tasklist);
64
static void display_help_dialog (GtkAction *action,
65
TasklistData *tasklist);
66
static void display_about_dialog (GtkAction *action,
67
TasklistData *tasklist);
70
61
tasklist_update (TasklistData *tasklist)
129
120
tasklist->orientation = new_orient;
121
wnck_tasklist_set_orientation (tasklist->tasklist, new_orient);
131
122
tasklist_update (tasklist);
135
applet_change_background (PanelApplet *applet,
136
PanelAppletBackgroundType type,
139
TasklistData *tasklist)
126
applet_change_background (PanelApplet *applet,
127
cairo_pattern_t *pattern,
128
TasklistData *tasklist)
142
case PANEL_NO_BACKGROUND:
143
wnck_tasklist_set_button_relief (WNCK_TASKLIST (tasklist->tasklist),
146
case PANEL_COLOR_BACKGROUND:
147
case PANEL_PIXMAP_BACKGROUND:
148
wnck_tasklist_set_button_relief (WNCK_TASKLIST (tasklist->tasklist),
130
wnck_tasklist_set_button_relief (WNCK_TASKLIST (tasklist->tasklist),
131
pattern != NULL ? GTK_RELIEF_NONE
132
: GTK_RELIEF_NORMAL);
168
149
destroy_tasklist(GtkWidget * widget, TasklistData *tasklist)
170
GConfClient *client = gconf_client_get_default ();
172
gconf_client_notify_remove (client, tasklist->listeners[0]);
173
gconf_client_notify_remove (client, tasklist->listeners[1]);
174
gconf_client_notify_remove (client, tasklist->listeners[2]);
176
g_object_unref (G_OBJECT (client));
178
tasklist->listeners[0] = 0;
179
tasklist->listeners[1] = 0;
180
tasklist->listeners[2] = 0;
151
g_object_unref (tasklist->settings);
152
tasklist->settings = NULL;
182
154
if (tasklist->properties_dialog)
183
155
gtk_widget_destroy (tasklist->properties_dialog);
186
gtk_widget_destroy (tasklist->about);
188
157
g_free (tasklist);
191
160
static const GtkActionEntry tasklist_menu_actions [] = {
192
161
{ "TasklistPreferences", GTK_STOCK_PROPERTIES, N_("_Preferences"),
194
G_CALLBACK (display_properties_dialog) },
195
{ "TasklistHelp", GTK_STOCK_HELP, N_("_Help"),
197
G_CALLBACK (display_help_dialog) },
198
{ "TasklistAbout", GTK_STOCK_ABOUT, N_("_About"),
200
G_CALLBACK (display_about_dialog) }
163
G_CALLBACK (display_properties_dialog) }
229
display_all_workspaces_changed (GConfClient *client,
232
TasklistData *tasklist)
192
display_all_workspaces_changed (GSettings *settings,
194
TasklistData *tasklist)
236
if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
239
value = gconf_value_get_bool (entry->value);
198
value = g_settings_get_boolean (settings, key);
241
200
tasklist->include_all_workspaces = (value != 0);
242
201
tasklist_update (tasklist);
244
203
tasklist_properties_update_content_radio (tasklist);
247
static WnckTasklistGroupingType
248
get_grouping_type (GConfValue *value)
250
WnckTasklistGroupingType type = -1;
253
g_assert (value != NULL);
255
/* Backwards compat for old type: */
256
if (value->type == GCONF_VALUE_BOOL) {
257
type = (gconf_value_get_bool (value)) ? WNCK_TASKLIST_AUTO_GROUP:WNCK_TASKLIST_NEVER_GROUP;
259
} else if (value->type == GCONF_VALUE_STRING) {
260
str = gconf_value_get_string (value);
261
if (g_ascii_strcasecmp (str, "never") == 0) {
262
type = WNCK_TASKLIST_NEVER_GROUP;
263
} else if (g_ascii_strcasecmp (str, "auto") == 0) {
264
type = WNCK_TASKLIST_AUTO_GROUP;
265
} else if (g_ascii_strcasecmp (str, "always") == 0) {
266
type = WNCK_TASKLIST_ALWAYS_GROUP;
273
206
static GtkWidget *
274
207
get_grouping_button (TasklistData *tasklist,
275
208
WnckTasklistGroupingType type)
292
group_windows_changed (GConfClient *client,
225
group_windows_changed (GSettings *settings,
295
227
TasklistData *tasklist)
297
WnckTasklistGroupingType type;
298
229
GtkWidget *button;
301
(entry->value->type != GCONF_VALUE_BOOL &&
302
entry->value->type != GCONF_VALUE_STRING))
305
type = get_grouping_type (entry->value);
307
g_warning ("tasklist: Unknown value for GConf key 'group_windows'");
311
tasklist->grouping = type;
231
tasklist->grouping = g_settings_get_enum (settings, key);
312
232
tasklist_update (tasklist);
314
button = get_grouping_button (tasklist, type);
234
button = get_grouping_button (tasklist, tasklist->grouping);
316
236
!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
317
237
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
341
move_unminimized_windows_changed (GConfClient *client,
261
move_unminimized_windows_changed (GSettings *settings,
344
263
TasklistData *tasklist)
348
if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
351
value = gconf_value_get_bool (entry->value);
267
value = g_settings_get_boolean (settings, key);
353
269
tasklist->move_unminimized_windows = (value != 0);
354
270
tasklist_update (tasklist);
360
276
setup_gconf (TasklistData *tasklist)
365
client = gconf_client_get_default ();
367
key = panel_applet_gconf_get_full_key (PANEL_APPLET (tasklist->applet),
368
"display_all_workspaces");
369
tasklist->listeners[0] = gconf_client_notify_add(client, key,
370
(GConfClientNotifyFunc)display_all_workspaces_changed,
375
key = panel_applet_gconf_get_full_key (PANEL_APPLET (tasklist->applet),
377
tasklist->listeners[1] = gconf_client_notify_add(client, key,
378
(GConfClientNotifyFunc)group_windows_changed,
383
key = panel_applet_gconf_get_full_key (PANEL_APPLET (tasklist->applet),
384
"move_unminimized_windows");
385
tasklist->listeners[2] = gconf_client_notify_add(client, key,
386
(GConfClientNotifyFunc)move_unminimized_windows_changed,
391
g_object_unref (G_OBJECT (client));
279
panel_applet_settings_new (PANEL_APPLET (tasklist->applet),
280
"org.gnome.gnome-panel.applet.window-list");
282
g_signal_connect (tasklist->settings, "changed::display-all-workspaces",
283
G_CALLBACK (display_all_workspaces_changed), tasklist);
285
g_signal_connect (tasklist->settings, "changed::group-windows",
286
G_CALLBACK (group_windows_changed), tasklist);
288
g_signal_connect (tasklist->settings, "changed::move-unminimized-windows",
289
G_CALLBACK (move_unminimized_windows_changed), tasklist);
395
applet_size_request (GtkWidget *widget,
396
GtkRequisition *requisition,
397
TasklistData *tasklist)
293
applet_size_allocate (GtkWidget *widget,
294
GtkAllocation *allocation,
295
TasklistData *tasklist)
400
298
const int *size_hints;
401
GtkRequisition child_req;
402
WnckTasklist *wncktl = WNCK_TASKLIST (tasklist->tasklist);
404
gtk_widget_get_child_requisition (tasklist->applet, &child_req);
406
size_hints = wnck_tasklist_get_size_hint_list (wncktl, &len);
300
size_hints = wnck_tasklist_get_size_hint_list (WNCK_TASKLIST (tasklist->tasklist), &len);
407
301
g_assert (len % 2 == 0);
409
303
panel_applet_set_size_hints (PANEL_APPLET (tasklist->applet),
483
376
setup_gconf (tasklist);
486
tasklist->include_all_workspaces = panel_applet_gconf_get_bool (applet, "display_all_workspaces", &error);
488
g_error_free (error);
489
tasklist->include_all_workspaces = FALSE; /* Default value */
493
tasklist->grouping = -1;
494
value = panel_applet_gconf_get_value (applet, "group_windows", &error);
496
g_error_free (error);
498
tasklist->grouping = get_grouping_type (value);
499
gconf_value_free (value);
501
if (tasklist->grouping < 0)
502
tasklist->grouping = WNCK_TASKLIST_AUTO_GROUP; /* Default value */
505
tasklist->move_unminimized_windows = panel_applet_gconf_get_bool (applet, "move_unminimized_windows", &error);
507
g_error_free (error);
508
tasklist->move_unminimized_windows = TRUE; /* Default value */
378
tasklist->include_all_workspaces = g_settings_get_boolean (tasklist->settings, "display-all-workspaces");
379
tasklist->grouping = g_settings_get_enum (tasklist->settings, "group-windows");
380
tasklist->move_unminimized_windows = g_settings_get_boolean (tasklist->settings, "move-unminimized-windows");
511
382
tasklist->size = panel_applet_get_size (applet);
512
383
switch (panel_applet_get_orient (applet)) {
531
404
g_signal_connect (G_OBJECT (tasklist->tasklist), "destroy",
532
405
G_CALLBACK (destroy_tasklist),
535
g_signal_connect (G_OBJECT (tasklist->applet), "size_request",
536
G_CALLBACK (applet_size_request),
407
g_signal_connect (G_OBJECT (tasklist->applet), "size_allocate",
408
G_CALLBACK (applet_size_allocate),
538
410
tasklist_update (tasklist);
539
411
gtk_widget_show (tasklist->tasklist);
571
443
ui_path, action_group);
572
444
g_free (ui_path);
574
if (panel_applet_get_locked_down (PANEL_APPLET (tasklist->applet))) {
446
action = gtk_action_group_get_action (action_group, "TasklistPreferences");
447
g_object_bind_property (tasklist->applet, "locked-down",
449
G_BINDING_DEFAULT|G_BINDING_INVERT_BOOLEAN|G_BINDING_SYNC_CREATE);
577
action = gtk_action_group_get_action (action_group, "TasklistPreferences");
578
gtk_action_set_visible (action, FALSE);
580
451
g_object_unref (action_group);
582
453
gtk_widget_show (tasklist->applet);
589
display_help_dialog (GtkAction *action,
590
TasklistData *tasklist)
592
wncklet_display_help (tasklist->applet, "user-guide",
593
"windowlist", WINDOW_LIST_ICON);
597
display_about_dialog (GtkAction *action,
598
TasklistData *tasklist)
600
static const gchar *authors[] =
602
"Alexander Larsson <alla@lysator.liu.se>",
605
const char *documenters [] = {
606
"Sun GNOME Documentation Team <gdocteam@sun.com>",
609
const char *translator_credits = _("translator-credits");
611
wncklet_display_about (tasklist->applet, &tasklist->about,
613
"Copyright \xc2\xa9 2001-2002 Red Hat, Inc.",
614
_("The Window List shows a list of all windows in a set of buttons and lets you browse them."),
624
459
group_windows_toggled (GtkToggleButton *button,
625
460
TasklistData *tasklist)
627
462
if (gtk_toggle_button_get_active (button)) {
629
464
str = g_object_get_data (G_OBJECT (button), "group_value");
630
panel_applet_gconf_set_string (PANEL_APPLET (tasklist->applet),
631
"group_windows", str,
465
g_settings_set_string (tasklist->settings, "group-windows", str);
636
470
move_minimized_toggled (GtkToggleButton *button,
637
471
TasklistData *tasklist)
639
panel_applet_gconf_set_bool (PANEL_APPLET (tasklist->applet),
640
"move_unminimized_windows",
641
gtk_toggle_button_get_active (button),
473
g_settings_set_boolean (tasklist->settings, "move-unminimized-windows",
474
gtk_toggle_button_get_active (button));
645
478
display_all_workspaces_toggled (GtkToggleButton *button,
646
479
TasklistData *tasklist)
648
panel_applet_gconf_set_bool (PANEL_APPLET (tasklist->applet),
649
"display_all_workspaces",
650
gtk_toggle_button_get_active (button),
481
g_settings_set_boolean (tasklist->settings, "display-all-workspaces",
482
gtk_toggle_button_get_active (button));
654
485
#define WID(s) GTK_WIDGET (gtk_builder_get_object (builder, s))
657
488
setup_sensitivity (TasklistData *tasklist,
659
489
GtkBuilder *builder,
660
490
const char *wid1,
661
491
const char *wid2,
662
492
const char *wid3,
665
PanelApplet *applet = PANEL_APPLET (tasklist->applet);
669
fullkey = panel_applet_gconf_get_full_key (applet, key);
671
if (gconf_client_key_is_writable (client, fullkey, NULL)) {
497
if (g_settings_is_writable (tasklist->settings, key)) {
678
502
g_assert (w != NULL);
695
519
setup_dialog (GtkBuilder *builder,
696
520
TasklistData *tasklist)
699
522
GtkWidget *button;
701
client = gconf_client_get_default ();
703
524
tasklist->show_current_radio = WID ("show_current_radio");
704
525
tasklist->show_all_radio = WID ("show_all_radio");
706
setup_sensitivity (tasklist, client, builder,
527
setup_sensitivity (tasklist, builder,
707
528
"show_current_radio",
708
529
"show_all_radio",
710
"display_all_workspaces" /* key */);
531
"display-all-workspaces" /* key */);
712
533
tasklist->never_group_radio = WID ("never_group_radio");
713
534
tasklist->auto_group_radio = WID ("auto_group_radio");
714
535
tasklist->always_group_radio = WID ("always_group_radio");
716
setup_sensitivity (tasklist, client, builder,
537
setup_sensitivity (tasklist, builder,
717
538
"never_group_radio",
718
539
"auto_group_radio",
719
540
"always_group_radio",
720
"group_windows" /* key */);
541
"group-windows" /* key */);
722
543
tasklist->minimized_windows_label = WID ("minimized_windows_label");
723
544
tasklist->move_minimized_radio = WID ("move_minimized_radio");
724
545
tasklist->change_workspace_radio = WID ("change_workspace_radio");
726
setup_sensitivity (tasklist, client, builder,
547
setup_sensitivity (tasklist, builder,
727
548
"move_minimized_radio",
728
549
"change_workspace_radio",
730
"move_unminimized_windows" /* key */);
551
"move-unminimized-windows" /* key */);
732
553
/* Window grouping: */
733
554
button = get_grouping_button (tasklist, tasklist->grouping);
734
555
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
735
556
g_object_set_data (G_OBJECT (tasklist->never_group_radio),
736
"group_value", "never");
557
"group_value", "never-group");
737
558
g_object_set_data (G_OBJECT (tasklist->auto_group_radio),
738
"group_value", "auto");
559
"group_value", "auto-group");
739
560
g_object_set_data (G_OBJECT (tasklist->always_group_radio),
740
"group_value", "always");
561
"group_value", "always-group");
742
563
g_signal_connect (G_OBJECT (tasklist->never_group_radio), "toggled",
743
564
(GCallback) group_windows_toggled, tasklist);