229
191
pager->orientation = new_orient;
230
192
pager_update (pager);
231
193
if (pager->label_row_col)
232
gtk_label_set_text (GTK_LABEL (pager->label_row_col),
233
pager->orientation == GTK_ORIENTATION_HORIZONTAL ? _("rows") : _("columns"));
194
gtk_label_set_text (GTK_LABEL (pager->label_row_col), pager->orientation == GTK_ORIENTATION_HORIZONTAL ? _("rows") : _("columns"));
237
198
applet_change_background (PanelApplet *applet,
238
PanelAppletBackgroundType type,
199
cairo_pattern_t *pattern,
241
200
PagerData *pager)
244
case PANEL_NO_BACKGROUND:
245
wnck_pager_set_shadow_type (WNCK_PAGER (pager->pager),
248
case PANEL_COLOR_BACKGROUND:
249
wnck_pager_set_shadow_type (WNCK_PAGER (pager->pager),
252
case PANEL_PIXMAP_BACKGROUND:
253
wnck_pager_set_shadow_type (WNCK_PAGER (pager->pager),
260
applet_scroll (PanelApplet *applet,
261
GdkEventScroll *event,
264
GdkScrollDirection absolute_direction;
270
if (event->type != GDK_SCROLL)
273
index = wnck_workspace_get_number (wnck_screen_get_active_workspace (pager->screen));
274
n_workspaces = wnck_screen_get_workspace_count (pager->screen);
275
n_columns = n_workspaces / pager->n_rows;
276
if (n_workspaces % pager->n_rows != 0)
278
in_last_row = n_workspaces % n_columns;
280
absolute_direction = event->direction;
281
if (gtk_widget_get_direction (GTK_WIDGET (applet)) == GTK_TEXT_DIR_RTL) {
282
switch (event->direction) {
283
case GDK_SCROLL_DOWN:
286
case GDK_SCROLL_RIGHT:
287
absolute_direction = GDK_SCROLL_LEFT;
289
case GDK_SCROLL_LEFT:
290
absolute_direction = GDK_SCROLL_RIGHT;
295
switch (absolute_direction) {
296
case GDK_SCROLL_DOWN:
297
if (index + n_columns < n_workspaces)
299
else if ((index < n_workspaces - 1
300
&& index + in_last_row != n_workspaces - 1) ||
301
(index == n_workspaces - 1
302
&& in_last_row != 0))
303
index = (index % n_columns) + 1;
306
case GDK_SCROLL_RIGHT:
307
if (index < n_workspaces - 1)
312
if (index - n_columns >= 0)
315
index = ((pager->n_rows - 1) * n_columns) + (index % n_columns) - 1;
316
if (index >= n_workspaces)
320
case GDK_SCROLL_LEFT:
325
g_assert_not_reached ();
329
wnck_workspace_activate (wnck_screen_get_workspace (pager->screen,
202
wnck_pager_set_shadow_type (WNCK_PAGER (pager->pager),
203
pattern != NULL ? GTK_SHADOW_NONE : GTK_SHADOW_IN);
337
207
destroy_pager(GtkWidget * widget, PagerData *pager)
339
GConfClient *client = gconf_client_get_default ();
341
gconf_client_notify_remove (client, pager->listeners[0]);
342
gconf_client_notify_remove (client, pager->listeners[1]);
343
gconf_client_notify_remove (client, pager->listeners[2]);
345
g_object_unref (G_OBJECT (client));
347
pager->listeners[0] = 0;
348
pager->listeners[1] = 0;
349
pager->listeners[2] = 0;
209
g_object_unref (G_OBJECT (pager->settings));
351
211
if (pager->properties_dialog)
352
212
gtk_widget_destroy (pager->properties_dialog);
355
gtk_widget_destroy (pager->about);
360
217
static const GtkActionEntry pager_menu_actions [] = {
361
218
{ "PagerPreferences", GTK_STOCK_PROPERTIES, N_("_Preferences"),
363
G_CALLBACK (display_properties_dialog) },
364
{ "PagerHelp", GTK_STOCK_HELP, N_("_Help"),
366
G_CALLBACK (display_help_dialog) },
367
{ "PagerAbout", GTK_STOCK_ABOUT, N_("_About"),
369
G_CALLBACK (display_about_dialog) }
220
G_CALLBACK (display_properties_dialog) }
373
num_rows_changed (GConfClient *client,
224
num_rows_changed (GSettings *settings,
376
226
PagerData *pager)
378
int n_rows = DEFAULT_ROWS;
380
if (entry->value != NULL &&
381
entry->value->type == GCONF_VALUE_INT) {
382
n_rows = gconf_value_get_int (entry->value);
385
n_rows = CLAMP (n_rows, 1, MAX_REASONABLE_ROWS);
230
n_rows = g_settings_get_int (settings, key);
387
232
pager->n_rows = n_rows;
388
233
pager_update (pager);
604
389
ui_path, action_group);
605
390
g_free (ui_path);
607
if (panel_applet_get_locked_down (PANEL_APPLET (pager->applet))) {
392
action = gtk_action_group_get_action (action_group, "PagerPreferences");
393
g_object_bind_property (pager->applet, "locked-down",
395
G_BINDING_DEFAULT|G_BINDING_INVERT_BOOLEAN|G_BINDING_SYNC_CREATE);
610
action = gtk_action_group_get_action (action_group, "PagerPreferences");
611
gtk_action_set_visible (action, FALSE);
613
397
g_object_unref (action_group);
620
display_help_dialog (GtkAction *action,
623
wncklet_display_help (pager->applet, "user-guide",
624
"overview-workspaces", WORKSPACE_SWITCHER_ICON);
628
display_about_dialog (GtkAction *action,
631
static const gchar *authors[] =
633
"Alexander Larsson <alla@lysator.liu.se>",
636
const char *documenters [] = {
637
"John Fleck <jfleck@inkstain.net>",
638
"Sun GNOME Documentation Team <gdocteam@sun.com>",
641
const char *translator_credits = _("translator-credits");
643
wncklet_display_about (pager->applet, &pager->about,
644
_("Workspace Switcher"),
645
"Copyright \xc2\xa9 2001-2002 Red Hat, Inc.",
646
_("The Workspace Switcher shows you a small version of your workspaces that lets you manage your windows."),
650
WORKSPACE_SWITCHER_ICON,
657
403
display_workspace_names_toggled (GtkToggleButton *button,
658
404
PagerData *pager)
660
panel_applet_gconf_set_bool (PANEL_APPLET (pager->applet),
661
"display_workspace_names",
662
gtk_toggle_button_get_active (button),
406
g_settings_set_boolean (pager->settings,
407
"display-workspace-names",
408
gtk_toggle_button_get_active (button));
667
412
all_workspaces_toggled (GtkToggleButton *button,
668
413
PagerData *pager)
670
panel_applet_gconf_set_bool (PANEL_APPLET (pager->applet),
671
"display_all_workspaces",
672
gtk_toggle_button_get_active (button),
415
g_settings_set_boolean (pager->settings,
416
"display-all-workspaces",
417
gtk_toggle_button_get_active (button));
677
421
num_rows_value_changed (GtkSpinButton *button,
678
422
PagerData *pager)
680
panel_applet_gconf_set_int (PANEL_APPLET (pager->applet),
682
gtk_spin_button_get_value_as_int (button),
686
/* compiz' "columns" */
688
hsize_value_changed (GtkSpinButton *button,
691
GConfClient* client = gconf_client_get_default ();
693
gconf_client_set_int (client,
695
gtk_spin_button_get_value_as_int (button),
697
g_object_unref (client);
702
vsize_value_changed (GtkSpinButton *button,
705
GConfClient* client = gconf_client_get_default ();
707
gconf_client_set_int (client,
709
gtk_spin_button_get_value_as_int (button),
711
g_object_unref (client);
424
g_settings_set_int (pager->settings,
426
gtk_spin_button_get_value_as_int (button));
952
658
GtkTreeViewColumn *column;
953
659
GtkCellRenderer *cell;
955
GConfClient* client = NULL;
959
pager->switcher_frame = WID ("switcher_frame");
960
662
pager->workspaces_frame = WID ("workspaces_frame");
961
663
pager->workspace_names_label = WID ("workspace_names_label");
962
664
pager->workspace_names_scroll = WID ("workspace_names_scroll");
964
if (pager->wm == PAGER_WM_COMPIZ)
966
client = gconf_client_get_default ();
968
pager->viewports_frame = WID ("viewports_frame");
969
pager->hsize_spin = WID ("hsize_spin");
970
pager->vsize_spin = WID ("vsize_spin");
972
g_signal_connect (G_OBJECT (pager->hsize_spin),
974
(GCallback) hsize_value_changed,
977
g_signal_connect (G_OBJECT (pager->vsize_spin),
979
(GCallback) vsize_value_changed,
982
/* set value for hsize (compiz's "columns") */
983
hsize = gconf_client_get_int (client, COMPIZ_HSIZE, NULL);
984
gtk_spin_button_set_value (GTK_SPIN_BUTTON (pager->hsize_spin),
987
/* set value for vsize (compiz's "rows") */
988
vsize = gconf_client_get_int (client, COMPIZ_VSIZE, NULL);
989
gtk_spin_button_set_value (GTK_SPIN_BUTTON (pager->vsize_spin),
992
g_object_unref (client);
995
666
pager->display_workspaces_toggle = WID ("workspace_name_toggle");
996
setup_sensitivity (pager,
667
setup_sensitivity (pager, builder,
998
668
"workspace_name_toggle",
1001
"display_workspace_names" /* key */);
671
"display-workspace-names" /* key */);
1003
673
pager->all_workspaces_radio = WID ("all_workspaces_radio");
1004
674
pager->current_only_radio = WID ("current_only_radio");
1005
setup_sensitivity (pager,
675
setup_sensitivity (pager, builder,
1007
676
"all_workspaces_radio",
1008
677
"current_only_radio",
1009
678
"label_row_col",
1010
"display_all_workspaces" /* key */);
679
"display-all-workspaces" /* key */);
1012
681
pager->num_rows_spin = WID ("num_rows_spin");
1013
682
pager->label_row_col = WID("label_row_col");
1014
setup_sensitivity (pager,
683
setup_sensitivity (pager, builder,
1016
684
"num_rows_spin",
1019
"num_rows" /* key */);
687
"num-rows" /* key */);
1021
689
pager->num_workspaces_spin = WID ("num_workspaces_spin");
1022
setup_sensitivity (pager,
1024
"num_workspaces_spin",
1027
NUM_WORKSPACES /* key */);
1029
690
pager->workspaces_tree = WID ("workspaces_tree_view");
1030
setup_sensitivity (pager, builder,
1031
"workspaces_tree_view",
1034
WORKSPACE_NAME /* key */);
1036
692
/* Display workspace names: */
1037
g_signal_connect (G_OBJECT (pager->display_workspaces_toggle),
1039
(GCallback) display_workspace_names_toggled,
694
g_signal_connect (G_OBJECT (pager->display_workspaces_toggle), "toggled",
695
(GCallback) display_workspace_names_toggled, pager);
1042
if (pager->display_mode == WNCK_PAGER_DISPLAY_NAME)
697
if (pager->display_mode == WNCK_PAGER_DISPLAY_NAME) {
1047
702
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pager->display_workspaces_toggle),
1050
705
/* Display all workspaces: */
1051
g_signal_connect (G_OBJECT (pager->all_workspaces_radio),
1053
(GCallback) all_workspaces_toggled,
1056
if (pager->display_all)
1058
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pager->all_workspaces_radio),
1061
if (!g_object_get_data (G_OBJECT (pager->num_rows_spin),
1063
gtk_widget_set_sensitive (pager->num_rows_spin,
1068
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pager->current_only_radio),
1070
gtk_widget_set_sensitive (pager->num_rows_spin,
706
g_signal_connect (G_OBJECT (pager->all_workspaces_radio), "toggled",
707
(GCallback) all_workspaces_toggled, pager);
709
if (pager->display_all) {
710
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pager->all_workspaces_radio), TRUE);
711
if ( ! g_object_get_data (G_OBJECT (pager->num_rows_spin), NEVER_SENSITIVE))
712
gtk_widget_set_sensitive (pager->num_rows_spin, TRUE);
714
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pager->current_only_radio), TRUE);
715
gtk_widget_set_sensitive (pager->num_rows_spin, FALSE);
1075
g_signal_connect (G_OBJECT (pager->num_rows_spin),
1077
(GCallback) num_rows_value_changed,
1080
gtk_spin_button_set_value (GTK_SPIN_BUTTON (pager->num_rows_spin),
1082
gtk_label_set_text (GTK_LABEL (pager->label_row_col),
1083
pager->orientation == GTK_ORIENTATION_HORIZONTAL ? _("rows") : _("columns"));
1085
g_signal_connect (pager->properties_dialog,
719
g_signal_connect (G_OBJECT (pager->num_rows_spin), "value_changed",
720
(GCallback) num_rows_value_changed, pager);
722
gtk_spin_button_set_value (GTK_SPIN_BUTTON (pager->num_rows_spin), pager->n_rows);
723
gtk_label_set_text (GTK_LABEL (pager->label_row_col), pager->orientation == GTK_ORIENTATION_HORIZONTAL ? _("rows") : _("columns"));
725
g_signal_connect (pager->properties_dialog, "destroy",
1087
726
G_CALLBACK (properties_dialog_destroyed),
1089
g_signal_connect (pager->properties_dialog,
728
g_signal_connect (pager->properties_dialog, "delete_event",
1091
729
G_CALLBACK (delete_event),
1093
g_signal_connect (pager->properties_dialog,
731
g_signal_connect (pager->properties_dialog, "response",
1095
732
G_CALLBACK (response_cb),
1098
g_signal_connect (WID ("done_button"),
1100
(GCallback) close_dialog,
735
g_signal_connect (WID ("done_button"), "clicked",
736
(GCallback) close_dialog, pager);
1103
738
gtk_spin_button_set_value (GTK_SPIN_BUTTON (pager->num_workspaces_spin),
1104
739
wnck_screen_get_workspace_count (pager->screen));
1105
g_signal_connect (G_OBJECT (pager->num_workspaces_spin),
1107
(GCallback) num_workspaces_value_changed,
1110
wncklet_connect_while_alive (pager->screen,
1111
"workspace_created",
1112
G_CALLBACK (workspace_created),
1114
pager->properties_dialog);
1116
wncklet_connect_while_alive (pager->screen,
1117
"workspace_destroyed",
1118
G_CALLBACK (workspace_destroyed),
1120
pager->properties_dialog);
1122
g_signal_connect (G_OBJECT (pager->workspaces_tree),
1124
(GCallback) workspaces_tree_focused_out,
1127
pager->workspaces_store = gtk_list_store_new (1,
740
g_signal_connect (G_OBJECT (pager->num_workspaces_spin), "value_changed",
741
(GCallback) num_workspaces_value_changed, pager);
743
wncklet_connect_while_alive (pager->screen, "workspace_created",
744
G_CALLBACK(workspace_created),
746
pager->properties_dialog);
748
wncklet_connect_while_alive (pager->screen, "workspace_destroyed",
749
G_CALLBACK(workspace_destroyed),
751
pager->properties_dialog);
753
g_signal_connect (G_OBJECT (pager->workspaces_tree), "focus_out_event",
754
(GCallback) workspaces_tree_focused_out, pager);
756
pager->workspaces_store = gtk_list_store_new (1, G_TYPE_STRING, NULL);
1130
757
update_workspaces_model (pager);
1131
gtk_tree_view_set_model (GTK_TREE_VIEW (pager->workspaces_tree),
1132
GTK_TREE_MODEL (pager->workspaces_store));
758
gtk_tree_view_set_model (GTK_TREE_VIEW (pager->workspaces_tree), GTK_TREE_MODEL (pager->workspaces_store));
1134
760
g_object_unref (pager->workspaces_store);
1136
cell = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT,
762
cell = g_object_new (GTK_TYPE_CELL_RENDERER_TEXT, "editable", TRUE, NULL);
1140
763
column = gtk_tree_view_column_new_with_attributes ("workspace",
1145
gtk_tree_view_append_column (GTK_TREE_VIEW (pager->workspaces_tree),
1147
g_signal_connect (cell,
1149
(GCallback) workspace_name_edited,
767
gtk_tree_view_append_column (GTK_TREE_VIEW (pager->workspaces_tree), column);
768
g_signal_connect (cell, "edited",
769
(GCallback) workspace_name_edited, pager);
1152
771
nr_ws = wnck_screen_get_workspace_count (pager->screen);
1153
for (i = 0; i < nr_ws; i++)
1155
wncklet_connect_while_alive (G_OBJECT (wnck_screen_get_workspace (pager->screen,
1158
G_CALLBACK (workspace_renamed),
1160
pager->properties_dialog);
772
for (i = 0; i < nr_ws; i++) {
773
wncklet_connect_while_alive (
774
G_OBJECT (wnck_screen_get_workspace (pager->screen, i)),
776
G_CALLBACK(workspace_renamed),
778
pager->properties_dialog);
1163
781
update_properties_for_wm (pager);