78
77
PanelMenuBar *self) {
79
78
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
81
g_return_if_fail (self == NULL || IS_PANEL_MENU_BAR (self));
80
g_return_if_fail (IS_PANEL_MENU_BAR (self));
84
gboolean text_vertical = FALSE;
88
GtkWidget *menu_browser = NULL;
89
GtkRequisition requisition;
90
GtkPackDirection pack_direction;
83
PangoEllipsizeMode ellipsize_mode = PANGO_ELLIPSIZE_NONE;
84
GtkPackDirection pack_direction = GTK_PACK_DIRECTION_LTR;
85
double text_angle = 0.0;
86
float text_xalign = 0.0;
87
float text_yalign = 0.5;
92
89
/* update the panel's orientation */
93
90
self->priv->orientation = orientation;
95
/* set the default (horizontal panel) pack and text direction */
96
pack_direction = GTK_PACK_DIRECTION_LTR;
101
/* iterate through each menu_item in the menu bar and check it's width */
102
for (i=0; i < self->priv->file_browsers->len; i++) {
103
menu_browser = (GtkWidget *)(g_ptr_array_index (self->priv->file_browsers, i));
104
gtk_widget_size_request (menu_browser,
106
/* if any of the menu_items are wider that the panel, set the text to be rotated */
107
if ((!self->priv->text_vertical & (requisition.width > self->priv->panel_size)) ||
108
( self->priv->text_vertical & (requisition.height > self->priv->panel_size))) {
109
text_vertical = TRUE;
112
self->priv->text_vertical = text_vertical;
113
92
/* set the text and pack direction and */
114
93
switch (orientation) {
115
case PANEL_APPLET_ORIENT_UP:
116
case PANEL_APPLET_ORIENT_DOWN:
117
self->priv->text_vertical = FALSE;
119
case PANEL_APPLET_ORIENT_RIGHT:
120
pack_direction = GTK_PACK_DIRECTION_TTB;
122
pack_direction = GTK_PACK_DIRECTION_BTT;
128
case PANEL_APPLET_ORIENT_LEFT:
129
pack_direction = GTK_PACK_DIRECTION_TTB;
137
g_assert_not_reached ();
94
case PANEL_APPLET_ORIENT_UP:
95
case PANEL_APPLET_ORIENT_DOWN:
96
/* handled by defaults */
98
case PANEL_APPLET_ORIENT_RIGHT:
99
if (self->priv->prefs->menu_bar_prefs->horizontal_text) {
100
pack_direction = GTK_PACK_DIRECTION_TTB;
101
ellipsize_mode = PANGO_ELLIPSIZE_END;
104
pack_direction = GTK_PACK_DIRECTION_BTT;
110
case PANEL_APPLET_ORIENT_LEFT:
111
pack_direction = GTK_PACK_DIRECTION_TTB;
112
if (self->priv->prefs->menu_bar_prefs->horizontal_text) {
113
ellipsize_mode = PANGO_ELLIPSIZE_END;
122
g_assert_not_reached ();
140
125
/* update the menu_bar pack direction */
141
126
gtk_menu_bar_set_pack_direction (GTK_MENU_BAR (self), pack_direction);
142
127
gtk_menu_bar_set_child_pack_direction (GTK_MENU_BAR (self), pack_direction);
144
/* update the menu_item text direction */
129
/* update the menu_item ellipsizing */
145
130
for (i=0; i < self->priv->file_browsers->len; i++) {
146
menu_browser = (GtkWidget *)(g_ptr_array_index (self->priv->file_browsers, i));
147
GtkWidget *label = GTK_BIN (menu_browser)->child;
148
gtk_label_set_angle (GTK_LABEL (label), text_angle);
149
gtk_misc_set_alignment (GTK_MISC (label), text_xalign, text_yalign);
131
GtkWidget *menu_browser = (GtkWidget *)(g_ptr_array_index (self->priv->file_browsers, i));
132
GtkWidget *label = gtk_bin_get_child (GTK_BIN (menu_browser));
133
if (GTK_IS_LABEL (label)) {
134
gtk_label_set_ellipsize (GTK_LABEL (label), ellipsize_mode);
135
gtk_label_set_angle (GTK_LABEL (label), text_angle);
136
gtk_misc_set_alignment (GTK_MISC (label), text_xalign, text_yalign);
140
/******************************************************************************/
142
panel_menu_bar_update_orient (PanelMenuBar *self) {
143
g_return_if_fail (IS_PANEL_MENU_BAR (self));
145
PanelAppletOrient orientation = panel_applet_get_orient (PANEL_APPLET (self->priv->applet));
146
panel_menu_bar_change_orient (self->priv->applet, orientation, self);
153
148
/******************************************************************************/
154
149
static void /* Taken from the Main Menu Bar Applet */
203
194
gtk_rc_style_unref (rc_style);
206
case PANEL_COLOR_BACKGROUND:
207
gtk_widget_modify_bg (GTK_WIDGET (self),
212
case PANEL_PIXMAP_BACKGROUND:
213
style = gtk_style_copy (GTK_WIDGET (self)->style);
214
if (style->bg_pixmap[GTK_STATE_NORMAL] != NULL)
215
g_object_unref (style->bg_pixmap[GTK_STATE_NORMAL]);
217
style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref (pixmap);
218
gtk_widget_set_style (GTK_WIDGET (self), style);
219
g_object_unref (style);
222
case PANEL_NO_BACKGROUND:
197
case PANEL_COLOR_BACKGROUND:
198
gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, color);
200
case PANEL_PIXMAP_BACKGROUND:
201
style = gtk_style_copy (GTK_WIDGET (self)->style);
202
if (style->bg_pixmap[GTK_STATE_NORMAL] != NULL)
203
g_object_unref (style->bg_pixmap[GTK_STATE_NORMAL]);
205
style->bg_pixmap[GTK_STATE_NORMAL] = g_object_ref (pixmap);
206
gtk_widget_set_style (GTK_WIDGET (self), style);
207
g_object_unref (style);
209
case PANEL_NO_BACKGROUND:
228
214
/******************************************************************************/
230
216
panel_menu_bar_update_image (PanelMenuBar *self) {
231
217
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
233
g_return_if_fail (self == NULL || IS_PANEL_MENU_BAR (self));
219
g_return_if_fail (IS_PANEL_MENU_BAR (self));
235
221
GtkWidget *image = NULL;
236
222
AppletPreferences *a_prefs = self->priv->prefs;
262
247
PanelMenuBar *self) {
263
248
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
265
g_return_if_fail (self == NULL || IS_PANEL_MENU_BAR (self));
250
g_return_if_fail (IS_PANEL_MENU_BAR (self));
267
252
MenuBrowser *menu_browser = (MenuBrowser *)(g_ptr_array_index (self->priv->file_browsers, 0));
269
254
GTK_MENU_SHELL (self)->active = TRUE;
270
255
gtk_menu_shell_set_take_focus (GTK_MENU_SHELL (self), TRUE);
271
gtk_menu_shell_select_item (GTK_MENU_SHELL (self),
272
GTK_WIDGET (menu_browser));
256
gtk_menu_shell_select_item (GTK_MENU_SHELL (self), GTK_WIDGET (menu_browser));
274
258
/******************************************************************************/
276
260
panel_menu_bar_add_keybinding (PanelMenuBar *self) {
277
261
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
279
g_return_if_fail (self == NULL || IS_PANEL_MENU_BAR (self));
263
g_return_if_fail (IS_PANEL_MENU_BAR (self));
281
265
GError *error = NULL;
403
373
PanelMenuBar *self) {
404
374
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
406
g_return_if_fail (self == NULL || IS_PANEL_MENU_BAR (self));
376
g_return_if_fail (IS_PANEL_MENU_BAR (self));
408
378
switch (signal_data->signal_id) {
409
case PREFS_SIGNAL_TERMINAL :
410
case PREFS_SIGNAL_SHOW_HIDDEN :
412
case PREFS_SIGNAL_SHOW_ICON :
413
case PREFS_SIGNAL_ICON_CHANGED :
414
panel_menu_bar_update_image (self);
416
case PREFS_SIGNAL_DIR_MOVE_UP :
417
case PREFS_SIGNAL_DIR_MOVE_DOWN :
418
panel_menu_bar_move_entry (self, signal_data);
420
case PREFS_SIGNAL_DIR_CHANGED :
421
panel_menu_bar_update_entry (self, signal_data);
423
case PREFS_SIGNAL_DIR_ADD :
424
panel_menu_bar_add_entry (self, signal_data->label, g_strdup (signal_data->path));
426
case PREFS_SIGNAL_DIR_DEL :
427
panel_menu_bar_remove_entry (self, signal_data->instance);
379
case PREFS_SIGNAL_TERMINAL :
380
case PREFS_SIGNAL_SHOW_HIDDEN :
382
case PREFS_SIGNAL_SHOW_ICON :
383
case PREFS_SIGNAL_ICON_CHANGED :
384
panel_menu_bar_update_image (self);
386
case PREFS_SIGNAL_DIR_MOVE_UP :
387
case PREFS_SIGNAL_DIR_MOVE_DOWN :
388
panel_menu_bar_move_entry (self, signal_data);
390
case PREFS_SIGNAL_DIR_CHANGED :
391
panel_menu_bar_update_entry (self, signal_data);
393
case PREFS_SIGNAL_DIR_ADD :
394
panel_menu_bar_add_entry (self, signal_data->label, g_strdup (signal_data->path));
396
case PREFS_SIGNAL_DIR_DEL :
397
panel_menu_bar_remove_entry (self, signal_data->instance);
399
case PREFS_SIGNAL_HORIZONTAL_TEXT :
400
panel_menu_bar_update_orient (self);
403
g_assert_not_reached ();
430
405
if (DEBUG) g_printf ("caught the signal: %d, ", signal_data->signal_id);
431
406
if (DEBUG) g_printf ("instance %d, label: %s, path %s\n",
520
495
PanelMenuBar *self) {
521
496
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
523
g_return_if_fail (self == NULL || IS_PANEL_MENU_BAR (self));
525
g_object_set (G_OBJECT (widget), "has-tooltip", TRUE, NULL);
498
g_return_if_fail (IS_PANEL_MENU_BAR (self));
500
g_object_set (G_OBJECT (self), "has-tooltip", TRUE, NULL);
502
/* this is here because of the solution to the focus problem caused by the
503
* popped context menu */
504
gtk_widget_set_sensitive (GTK_WIDGET (self), TRUE);
506
for (i=0; i < self->priv->file_browsers->len; i++) {
507
GtkWidget *menu_browser = (GtkWidget *)(g_ptr_array_index (self->priv->file_browsers, i));
508
gtk_widget_set_sensitive (menu_browser, TRUE);
527
511
/******************************************************************************/
591
575
panel_menu_bar_new (PanelApplet* applet) {
592
576
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
594
g_return_val_if_fail (applet == NULL || PANEL_IS_APPLET (applet), NULL);
598
g_return_val_if_fail (applet == NULL || PANEL_IS_APPLET (applet), NULL);
599
self = g_object_newv (TYPE_PANEL_MENU_BAR, 0, NULL);
578
g_return_val_if_fail (PANEL_IS_APPLET (applet), NULL);
580
PanelMenuBar *self = g_object_newv (TYPE_PANEL_MENU_BAR, 0, NULL);
601
582
g_signal_connect (GTK_MENU_BAR (self),
602
583
"button_press_event",
691
672
panel_menu_bar_init (PanelMenuBar * self) {
692
673
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
694
g_return_if_fail (self == NULL || IS_PANEL_MENU_BAR (self));
675
g_return_if_fail (IS_PANEL_MENU_BAR (self));
696
677
self->priv = PANEL_MENU_BAR_GET_PRIVATE (self);
699
679
/******************************************************************************/
701
681
panel_menu_bar_dispose (GObject *obj) {
702
682
if (DEBUG) g_printf ("In %s\n", __FUNCTION__);
705
684
PanelMenuBarClass *klass;
706
685
/* GObjectClass * parent_class;*/
708
self = PANEL_MENU_BAR (obj);
687
PanelMenuBar *self = PANEL_MENU_BAR (obj);
709
688
(self->priv->applet == NULL ? NULL : (self->priv->applet = (g_object_unref (self->priv->applet), NULL)));
710
689
(self->priv->file_browsers == NULL ? NULL : (self->priv->file_browsers = (gpointer)(g_ptr_array_free (self->priv->file_browsers, TRUE))));
711
690
klass = PANEL_MENU_BAR_CLASS (g_type_class_peek (TYPE_PANEL_MENU_BAR));
712
691
G_OBJECT_CLASS (panel_menu_bar_parent_class)->dispose (obj);
715
693
/******************************************************************************/