diff --git a/xed/xed-panel.c b/xed/xed-panel.c index 7ee88e0..13d7357 100644 --- a/xed/xed-panel.c +++ b/xed/xed-panel.c @@ -2,7 +2,7 @@ * xed-panel.c * This file is part of xed * - * Copyright (C) 2005 - Paolo Maggi + * Copyright (C) 2005 - Paolo Maggi * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,13 +16,13 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, + * Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ - + /* - * Modified by the xed Team, 2005. See the AUTHORS file for a - * list of people on the xed Team. + * Modified by the xed Team, 2005. See the AUTHORS file for a + * list of people on the xed Team. * See the ChangeLog files for a list of changes. * * $Id$ @@ -43,214 +43,221 @@ #define XED_PANEL_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), XED_TYPE_PANEL, XedPanelPrivate)) -struct _XedPanelPrivate +struct _XedPanelPrivate { - GtkOrientation orientation; - - /* Title bar (vertical panel only) */ - GtkWidget *title_image; - GtkWidget *title_label; + GtkOrientation orientation; - /* Notebook */ - GtkWidget *notebook; + /* Title bar (vertical panel only) */ + GtkWidget *title_image; + GtkWidget *title_label; + + /* Notebook */ + GtkWidget *notebook; }; typedef struct _XedPanelItem XedPanelItem; -struct _XedPanelItem +struct _XedPanelItem { - gchar *name; - GtkWidget *icon; + gchar *name; + GtkWidget *icon; }; /* Properties */ -enum { - PROP_0, - PROP_ORIENTATION +enum +{ + PROP_0, + PROP_ORIENTATION }; /* Signals */ -enum { - ITEM_ADDED, - ITEM_REMOVED, - CLOSE, - FOCUS_DOCUMENT, - LAST_SIGNAL +enum +{ + ITEM_ADDED, + ITEM_REMOVED, + CLOSE, + FOCUS_DOCUMENT, + LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; -static GObject *xed_panel_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties); +static GObject *xed_panel_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties); -G_DEFINE_TYPE(XedPanel, xed_panel, GTK_TYPE_BOX) +G_DEFINE_TYPE (XedPanel, xed_panel, GTK_TYPE_BOX) static void xed_panel_finalize (GObject *obj) { - if (G_OBJECT_CLASS (xed_panel_parent_class)->finalize) - (*G_OBJECT_CLASS (xed_panel_parent_class)->finalize) (obj); + if (G_OBJECT_CLASS (xed_panel_parent_class)->finalize) + { + (*G_OBJECT_CLASS (xed_panel_parent_class)->finalize) (obj); + } } static void xed_panel_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { - XedPanel *panel = XED_PANEL (object); - - switch (prop_id) - { - case PROP_ORIENTATION: - g_value_set_enum(value, panel->priv->orientation); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + XedPanel *panel = XED_PANEL (object); + + switch (prop_id) + { + case PROP_ORIENTATION: + g_value_set_enum(value, panel->priv->orientation); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static void xed_panel_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - XedPanel *panel = XED_PANEL (object); + XedPanel *panel = XED_PANEL (object); - switch (prop_id) - { - case PROP_ORIENTATION: - panel->priv->orientation = g_value_get_enum (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + switch (prop_id) + { + case PROP_ORIENTATION: + panel->priv->orientation = g_value_get_enum (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static void xed_panel_close (XedPanel *panel) { - gtk_widget_hide (GTK_WIDGET (panel)); + gtk_widget_hide (GTK_WIDGET (panel)); } static void xed_panel_focus_document (XedPanel *panel) { - GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (panel)); - if (gtk_widget_is_toplevel (toplevel) && XED_IS_WINDOW (toplevel)) - { - XedView *view; + GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (panel)); + if (gtk_widget_is_toplevel (toplevel) && XED_IS_WINDOW (toplevel)) + { + XedView *view; - view = xed_window_get_active_view (XED_WINDOW (toplevel)); - if (view != NULL) - gtk_widget_grab_focus (GTK_WIDGET (view)); - } + view = xed_window_get_active_view (XED_WINDOW (toplevel)); + if (view != NULL) + { + gtk_widget_grab_focus (GTK_WIDGET (view)); + } + } } static void xed_panel_grab_focus (GtkWidget *w) { - gint n; - GtkWidget *tab; - XedPanel *panel = XED_PANEL (w); + gint n; + GtkWidget *tab; + XedPanel *panel = XED_PANEL (w); - n = gtk_notebook_get_current_page (GTK_NOTEBOOK (panel->priv->notebook)); - if (n == -1) - return; + n = gtk_notebook_get_current_page (GTK_NOTEBOOK (panel->priv->notebook)); + if (n == -1) + { + return; + } - tab = gtk_notebook_get_nth_page (GTK_NOTEBOOK (panel->priv->notebook), - n); - g_return_if_fail (tab != NULL); + tab = gtk_notebook_get_nth_page (GTK_NOTEBOOK (panel->priv->notebook), n); + g_return_if_fail (tab != NULL); - gtk_widget_grab_focus (tab); + gtk_widget_grab_focus (tab); } static void xed_panel_class_init (XedPanelClass *klass) { - GtkBindingSet *binding_set; - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + GtkBindingSet *binding_set; + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - g_type_class_add_private (klass, sizeof (XedPanelPrivate)); + g_type_class_add_private (klass, sizeof (XedPanelPrivate)); - object_class->constructor = xed_panel_constructor; - object_class->finalize = xed_panel_finalize; - object_class->get_property = xed_panel_get_property; - object_class->set_property = xed_panel_set_property; + object_class->constructor = xed_panel_constructor; + object_class->finalize = xed_panel_finalize; + object_class->get_property = xed_panel_get_property; + object_class->set_property = xed_panel_set_property; - g_object_class_install_property (object_class, - PROP_ORIENTATION, - g_param_spec_enum ("panel-orientation", - "Panel Orientation", - "The panel's orientation", - GTK_TYPE_ORIENTATION, - GTK_ORIENTATION_VERTICAL, - G_PARAM_WRITABLE | - G_PARAM_READABLE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, + PROP_ORIENTATION, + g_param_spec_enum ("panel-orientation", + "Panel Orientation", + "The panel's orientation", + GTK_TYPE_ORIENTATION, + GTK_ORIENTATION_VERTICAL, + G_PARAM_WRITABLE | + G_PARAM_READABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); - widget_class->grab_focus = xed_panel_grab_focus; + widget_class->grab_focus = xed_panel_grab_focus; - klass->close = xed_panel_close; - klass->focus_document = xed_panel_focus_document; + klass->close = xed_panel_close; + klass->focus_document = xed_panel_focus_document; - signals[ITEM_ADDED] = - g_signal_new ("item_added", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (XedPanelClass, item_added), - NULL, NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, - 1, - GTK_TYPE_WIDGET); - signals[ITEM_REMOVED] = - g_signal_new ("item_removed", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (XedPanelClass, item_removed), - NULL, NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, - 1, - GTK_TYPE_WIDGET); + signals[ITEM_ADDED] = + g_signal_new ("item_added", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (XedPanelClass, item_added), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + GTK_TYPE_WIDGET); + signals[ITEM_REMOVED] = + g_signal_new ("item_removed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (XedPanelClass, item_removed), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + GTK_TYPE_WIDGET); - /* Keybinding signals */ - signals[CLOSE] = - g_signal_new ("close", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (XedPanelClass, close), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - signals[FOCUS_DOCUMENT] = - g_signal_new ("focus_document", - G_OBJECT_CLASS_TYPE (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (XedPanelClass, focus_document), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - binding_set = gtk_binding_set_by_class (klass); + /* Keybinding signals */ + signals[CLOSE] = + g_signal_new ("close", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (XedPanelClass, close), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + signals[FOCUS_DOCUMENT] = + g_signal_new ("focus_document", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (XedPanelClass, focus_document), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + binding_set = gtk_binding_set_by_class (klass); - gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Escape, - 0, - "close", - 0); - gtk_binding_entry_add_signal (binding_set, - GDK_KEY_Return, - GDK_CONTROL_MASK, - "focus_document", - 0); + gtk_binding_entry_add_signal (binding_set, + GDK_KEY_Escape, + 0, + "close", + 0); + gtk_binding_entry_add_signal (binding_set, + GDK_KEY_Return, + GDK_CONTROL_MASK, + "focus_document", + 0); } /* This is ugly, since it supports only known @@ -260,313 +267,246 @@ xed_panel_class_init (XedPanelClass *klass) */ static void set_gtk_image_from_gtk_image (GtkImage *image, - GtkImage *source) + GtkImage *source) { - switch (gtk_image_get_storage_type (source)) - { - case GTK_IMAGE_EMPTY: - gtk_image_clear (image); - break; - case GTK_IMAGE_PIXBUF: - { - GdkPixbuf *pb; + switch (gtk_image_get_storage_type (source)) + { + case GTK_IMAGE_EMPTY: + gtk_image_clear (image); + break; + case GTK_IMAGE_PIXBUF: + { + GdkPixbuf *pb; - pb = gtk_image_get_pixbuf (source); - gtk_image_set_from_pixbuf (image, pb); - } - break; - case GTK_IMAGE_STOCK: - { - gchar *s_id; - GtkIconSize s; + pb = gtk_image_get_pixbuf (source); + gtk_image_set_from_pixbuf (image, pb); + } + break; + case GTK_IMAGE_STOCK: + { + gchar *s_id; + GtkIconSize s; - gtk_image_get_stock (source, &s_id, &s); - gtk_image_set_from_stock (image, s_id, s); - } - break; - case GTK_IMAGE_ICON_SET: - { - GtkIconSet *is; - GtkIconSize s; + gtk_image_get_stock (source, &s_id, &s); + gtk_image_set_from_stock (image, s_id, s); + } + break; + case GTK_IMAGE_ICON_SET: + { + GtkIconSet *is; + GtkIconSize s; - gtk_image_get_icon_set (source, &is, &s); - gtk_image_set_from_icon_set (image, is, s); - } - break; - case GTK_IMAGE_ANIMATION: - { - GdkPixbufAnimation *a; + gtk_image_get_icon_set (source, &is, &s); + gtk_image_set_from_icon_set (image, is, s); + } + break; + case GTK_IMAGE_ANIMATION: + { + GdkPixbufAnimation *a; - a = gtk_image_get_animation (source); - gtk_image_set_from_animation (image, a); - } - break; - case GTK_IMAGE_ICON_NAME: - { - const gchar *n; - GtkIconSize s; + a = gtk_image_get_animation (source); + gtk_image_set_from_animation (image, a); + } + break; + case GTK_IMAGE_ICON_NAME: + { + const gchar *n; + GtkIconSize s; - gtk_image_get_icon_name (source, &n, &s); - gtk_image_set_from_icon_name (image, n, s); - } - break; - default: - gtk_image_set_from_stock (image, - GTK_STOCK_FILE, - GTK_ICON_SIZE_MENU); - } + gtk_image_get_icon_name (source, &n, &s); + gtk_image_set_from_icon_name (image, n, s); + } + break; + default: + gtk_image_set_from_stock (image, GTK_STOCK_FILE, GTK_ICON_SIZE_MENU); + } } static void sync_title (XedPanel *panel, - XedPanelItem *item) + XedPanelItem *item) { - if (panel->priv->orientation != GTK_ORIENTATION_VERTICAL) - return; + if (panel->priv->orientation != GTK_ORIENTATION_VERTICAL) + { + return; + } - if (item != NULL) - { - gtk_label_set_text (GTK_LABEL (panel->priv->title_label), - item->name); + if (item != NULL) + { + gtk_label_set_text (GTK_LABEL (panel->priv->title_label), item->name); - set_gtk_image_from_gtk_image (GTK_IMAGE (panel->priv->title_image), - GTK_IMAGE (item->icon)); - } - else - { - gtk_label_set_text (GTK_LABEL (panel->priv->title_label), - _("Empty")); - - gtk_image_set_from_stock (GTK_IMAGE (panel->priv->title_image), - GTK_STOCK_FILE, - GTK_ICON_SIZE_MENU); - } + set_gtk_image_from_gtk_image (GTK_IMAGE (panel->priv->title_image), GTK_IMAGE (item->icon)); + } + else + { + gtk_label_set_text (GTK_LABEL (panel->priv->title_label), _("Empty")); + gtk_image_set_from_stock (GTK_IMAGE (panel->priv->title_image), GTK_STOCK_FILE, GTK_ICON_SIZE_MENU); + } } static void -notebook_page_changed (GtkNotebook *notebook, - GtkWidget *page, - guint page_num, - XedPanel *panel) +notebook_page_changed (GtkNotebook *notebook, + GtkWidget *page, + guint page_num, + XedPanel *panel) { - GtkWidget *item; - XedPanelItem *data; + GtkWidget *item; + XedPanelItem *data; - item = gtk_notebook_get_nth_page (notebook, page_num); - g_return_if_fail (item != NULL); + item = gtk_notebook_get_nth_page (notebook, page_num); + g_return_if_fail (item != NULL); - data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), - PANEL_ITEM_KEY); - g_return_if_fail (data != NULL); + data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), PANEL_ITEM_KEY); + g_return_if_fail (data != NULL); - sync_title (panel, data); + sync_title (panel, data); } static void panel_show (XedPanel *panel, - gpointer user_data) + gpointer user_data) { - gint page; - GtkNotebook *nb; + gint page; + GtkNotebook *nb; - nb = GTK_NOTEBOOK (panel->priv->notebook); + nb = GTK_NOTEBOOK (panel->priv->notebook); - page = gtk_notebook_get_current_page (nb); + page = gtk_notebook_get_current_page (nb); - if (page != -1) - notebook_page_changed (nb, NULL, page, panel); + if (page != -1) + { + notebook_page_changed (nb, NULL, page, panel); + } } static void xed_panel_init (XedPanel *panel) { - panel->priv = XED_PANEL_GET_PRIVATE (panel); + panel->priv = XED_PANEL_GET_PRIVATE (panel); - gtk_orientable_set_orientation (GTK_ORIENTABLE (panel), - GTK_ORIENTATION_VERTICAL); + gtk_orientable_set_orientation (GTK_ORIENTABLE (panel), GTK_ORIENTATION_VERTICAL); } static void close_button_clicked_cb (GtkWidget *widget, - GtkWidget *panel) + GtkWidget *panel) { - gtk_widget_hide (panel); + gtk_widget_hide (panel); } static GtkWidget * create_close_button (XedPanel *panel) { - GtkWidget *button; + GtkWidget *button; - button = xed_close_button_new (); + button = xed_close_button_new (); + gtk_widget_set_tooltip_text (button, _("Hide panel")); + g_signal_connect (button, "clicked", G_CALLBACK (close_button_clicked_cb), panel); - gtk_widget_set_tooltip_text (button, _("Hide panel")); - - g_signal_connect (button, - "clicked", - G_CALLBACK (close_button_clicked_cb), - panel); - - return button; + return button; } static void build_notebook_for_panel (XedPanel *panel) { - /* Create the panel notebook */ - panel->priv->notebook = gtk_notebook_new (); + /* Create the panel notebook */ + panel->priv->notebook = gtk_notebook_new (); - gtk_notebook_set_tab_pos (GTK_NOTEBOOK (panel->priv->notebook), - GTK_POS_BOTTOM); - gtk_notebook_set_scrollable (GTK_NOTEBOOK (panel->priv->notebook), - TRUE); - gtk_notebook_popup_enable (GTK_NOTEBOOK (panel->priv->notebook)); + gtk_notebook_set_tab_pos (GTK_NOTEBOOK (panel->priv->notebook), GTK_POS_BOTTOM); + gtk_notebook_set_scrollable (GTK_NOTEBOOK (panel->priv->notebook), TRUE); + gtk_notebook_popup_enable (GTK_NOTEBOOK (panel->priv->notebook)); - gtk_widget_show (GTK_WIDGET (panel->priv->notebook)); + gtk_widget_show (GTK_WIDGET (panel->priv->notebook)); - g_signal_connect (panel->priv->notebook, - "switch-page", - G_CALLBACK (notebook_page_changed), - panel); + g_signal_connect (panel->priv->notebook, "switch-page", G_CALLBACK (notebook_page_changed), panel); } static void build_horizontal_panel (XedPanel *panel) { - GtkWidget *box; - GtkWidget *sidebar; - GtkWidget *close_button; + GtkWidget *box; + GtkWidget *sidebar; + GtkWidget *close_button; - box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (GTK_BOX (box), panel->priv->notebook, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (box), - panel->priv->notebook, - TRUE, - TRUE, - 0); + /* Toolbar, close button and first separator */ + sidebar = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); + gtk_container_set_border_width (GTK_CONTAINER (sidebar), 4); + gtk_box_pack_start (GTK_BOX (box), sidebar, FALSE, FALSE, 0); - /* Toolbar, close button and first separator */ - sidebar = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); - gtk_container_set_border_width (GTK_CONTAINER (sidebar), 4); + close_button = create_close_button (panel); + gtk_box_pack_start (GTK_BOX (sidebar), close_button, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (box), - sidebar, - FALSE, - FALSE, - 0); + gtk_widget_show_all (box); - close_button = create_close_button (panel); - - gtk_box_pack_start (GTK_BOX (sidebar), - close_button, - FALSE, - FALSE, - 0); - - gtk_widget_show_all (box); - - gtk_box_pack_start (GTK_BOX (panel), - box, - TRUE, - TRUE, - 0); + gtk_box_pack_start (GTK_BOX (panel), box, TRUE, TRUE, 0); } static void build_vertical_panel (XedPanel *panel) { - GtkWidget *close_button; - GtkWidget *title_hbox; - GtkWidget *icon_name_hbox; - GtkWidget *dummy_label; + GtkWidget *close_button; + GtkWidget *title_hbox; + GtkWidget *icon_name_hbox; + GtkWidget *dummy_label; - /* Create title hbox */ - title_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - gtk_container_set_border_width (GTK_CONTAINER (title_hbox), 5); - - gtk_box_pack_start (GTK_BOX (panel), title_hbox, FALSE, FALSE, 0); - - icon_name_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_box_pack_start (GTK_BOX (title_hbox), - icon_name_hbox, - TRUE, - TRUE, - 0); - - panel->priv->title_image = - gtk_image_new_from_stock (GTK_STOCK_FILE, - GTK_ICON_SIZE_MENU); - gtk_box_pack_start (GTK_BOX (icon_name_hbox), - panel->priv->title_image, - FALSE, - TRUE, - 0); + /* Create title hbox */ + title_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + gtk_container_set_border_width (GTK_CONTAINER (title_hbox), 5); - dummy_label = gtk_label_new (" "); + gtk_box_pack_start (GTK_BOX (panel), title_hbox, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (icon_name_hbox), - dummy_label, - FALSE, - FALSE, - 0); + icon_name_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_pack_start (GTK_BOX (title_hbox), icon_name_hbox, TRUE, TRUE, 0); - panel->priv->title_label = gtk_label_new (_("Empty")); + panel->priv->title_image = gtk_image_new_from_stock (GTK_STOCK_FILE, GTK_ICON_SIZE_MENU); + gtk_box_pack_start (GTK_BOX (icon_name_hbox), panel->priv->title_image, FALSE, TRUE, 0); - gtk_misc_set_alignment (GTK_MISC (panel->priv->title_label), 0, 0.5); - gtk_label_set_ellipsize(GTK_LABEL (panel->priv->title_label), PANGO_ELLIPSIZE_END); + dummy_label = gtk_label_new (" "); + gtk_box_pack_start (GTK_BOX (icon_name_hbox), dummy_label, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (icon_name_hbox), - panel->priv->title_label, - TRUE, - TRUE, - 0); + panel->priv->title_label = gtk_label_new (_("Empty")); + gtk_misc_set_alignment (GTK_MISC (panel->priv->title_label), 0, 0.5); + gtk_label_set_ellipsize(GTK_LABEL (panel->priv->title_label), PANGO_ELLIPSIZE_END); + gtk_box_pack_start (GTK_BOX (icon_name_hbox), panel->priv->title_label, TRUE, TRUE, 0); - close_button = create_close_button (panel); + close_button = create_close_button (panel); + gtk_box_pack_start (GTK_BOX (title_hbox), close_button, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (title_hbox), - close_button, - FALSE, - FALSE, - 0); + gtk_widget_show_all (title_hbox); - gtk_widget_show_all (title_hbox); - - gtk_box_pack_start (GTK_BOX (panel), - panel->priv->notebook, - TRUE, - TRUE, - 0); + gtk_box_pack_start (GTK_BOX (panel), panel->priv->notebook, TRUE, TRUE, 0); } static GObject * -xed_panel_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) +xed_panel_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) { - - /* Invoke parent constructor. */ - XedPanelClass *klass = XED_PANEL_CLASS (g_type_class_peek (XED_TYPE_PANEL)); - GObjectClass *parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); - GObject *obj = parent_class->constructor (type, - n_construct_properties, - construct_properties); - /* Build the panel, now that we know the orientation - (_init has been called previously) */ - XedPanel *panel = XED_PANEL (obj); + /* Invoke parent constructor. */ + XedPanelClass *klass = XED_PANEL_CLASS (g_type_class_peek (XED_TYPE_PANEL)); + GObjectClass *parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); + GObject *obj = parent_class->constructor (type, n_construct_properties, construct_properties); - build_notebook_for_panel (panel); - if (panel->priv->orientation == GTK_ORIENTATION_HORIZONTAL) - build_horizontal_panel (panel); - else - build_vertical_panel (panel); + /* Build the panel, now that we know the orientation (_init has been called previously) */ + XedPanel *panel = XED_PANEL (obj); - g_signal_connect (panel, - "show", - G_CALLBACK (panel_show), - NULL); + build_notebook_for_panel (panel); + if (panel->priv->orientation == GTK_ORIENTATION_HORIZONTAL) + { + build_horizontal_panel (panel); + } + else + { + build_vertical_panel (panel); + } - return obj; + g_signal_connect (panel, "show", G_CALLBACK (panel_show), NULL); + + return obj; } /** @@ -582,54 +522,58 @@ xed_panel_constructor (GType type, GtkWidget * xed_panel_new (GtkOrientation orientation) { - return GTK_WIDGET (g_object_new (XED_TYPE_PANEL, "orientation", orientation, NULL)); + return GTK_WIDGET (g_object_new (XED_TYPE_PANEL, "orientation", orientation, NULL)); } static GtkWidget * -build_tab_label (XedPanel *panel, - GtkWidget *item, - const gchar *name, - GtkWidget *icon) +build_tab_label (XedPanel *panel, + GtkWidget *item, + const gchar *name, + GtkWidget *icon) { - GtkWidget *hbox, *label_hbox, *label_ebox; - GtkWidget *label; + GtkWidget *hbox; + GtkWidget *label_hbox; + GtkWidget *label_ebox; + GtkWidget *label; - /* set hbox spacing and label padding (see below) so that there's an - * equal amount of space around the label */ - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4); + /* set hbox spacing and label padding (see below) so that there's an + * equal amount of space around the label */ + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4); - label_ebox = gtk_event_box_new (); - gtk_event_box_set_visible_window (GTK_EVENT_BOX (label_ebox), FALSE); - gtk_box_pack_start (GTK_BOX (hbox), label_ebox, TRUE, TRUE, 0); + label_ebox = gtk_event_box_new (); + gtk_event_box_set_visible_window (GTK_EVENT_BOX (label_ebox), FALSE); + gtk_box_pack_start (GTK_BOX (hbox), label_ebox, TRUE, TRUE, 0); - label_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4); - gtk_container_add (GTK_CONTAINER (label_ebox), label_hbox); + label_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4); + gtk_container_add (GTK_CONTAINER (label_ebox), label_hbox); - /* setup icon */ - gtk_box_pack_start (GTK_BOX (label_hbox), icon, FALSE, FALSE, 0); + /* setup icon */ + gtk_box_pack_start (GTK_BOX (label_hbox), icon, FALSE, FALSE, 0); - /* setup label */ + /* setup label */ label = gtk_label_new (name); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_widget_set_margin_left (label, 0); - gtk_widget_set_margin_right (label, 0); - gtk_widget_set_margin_top (label, 0); - gtk_widget_set_margin_bottom (label, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_widget_set_margin_left (label, 0); + gtk_widget_set_margin_right (label, 0); + gtk_widget_set_margin_top (label, 0); + gtk_widget_set_margin_bottom (label, 0); - gtk_box_pack_start (GTK_BOX (label_hbox), label, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (label_hbox), label, TRUE, TRUE, 0); - gtk_widget_set_tooltip_text (label_ebox, name); + gtk_widget_set_tooltip_text (label_ebox, name); - gtk_widget_show_all (hbox); + gtk_widget_show_all (hbox); - if (panel->priv->orientation == GTK_ORIENTATION_VERTICAL) - gtk_widget_hide(label); + if (panel->priv->orientation == GTK_ORIENTATION_VERTICAL) + { + gtk_widget_hide(label); + } - g_object_set_data (G_OBJECT (item), "label", label); - g_object_set_data (G_OBJECT (item), "hbox", hbox); + g_object_set_data (G_OBJECT (item), "label", label); + g_object_set_data (G_OBJECT (item), "hbox", hbox); - return hbox; + return hbox; } /** @@ -642,58 +586,54 @@ build_tab_label (XedPanel *panel, * Adds a new item to the @panel. */ void -xed_panel_add_item (XedPanel *panel, - GtkWidget *item, - const gchar *name, - GtkWidget *image) +xed_panel_add_item (XedPanel *panel, + GtkWidget *item, + const gchar *name, + GtkWidget *image) { - XedPanelItem *data; - GtkWidget *tab_label; - GtkWidget *menu_label; - gint w, h; - - g_return_if_fail (XED_IS_PANEL (panel)); - g_return_if_fail (GTK_IS_WIDGET (item)); - g_return_if_fail (name != NULL); - g_return_if_fail (image == NULL || GTK_IS_IMAGE (image)); + XedPanelItem *data; + GtkWidget *tab_label; + GtkWidget *menu_label; + gint w, h; - data = g_new (XedPanelItem, 1); + g_return_if_fail (XED_IS_PANEL (panel)); + g_return_if_fail (GTK_IS_WIDGET (item)); + g_return_if_fail (name != NULL); + g_return_if_fail (image == NULL || GTK_IS_IMAGE (image)); - data->name = g_strdup (name); + data = g_new (XedPanelItem, 1); - if (image == NULL) - { - /* default to empty */ - data->icon = gtk_image_new_from_stock (GTK_STOCK_FILE, - GTK_ICON_SIZE_MENU); - } - else - { - data->icon = image; - } + data->name = g_strdup (name); - gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h); - gtk_widget_set_size_request (data->icon, w, h); - - g_object_set_data (G_OBJECT (item), - PANEL_ITEM_KEY, - data); + if (image == NULL) + { + /* default to empty */ + data->icon = gtk_image_new_from_stock (GTK_STOCK_FILE, GTK_ICON_SIZE_MENU); + } + else + { + data->icon = image; + } - tab_label = build_tab_label (panel, item, data->name, data->icon); + gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h); + gtk_widget_set_size_request (data->icon, w, h); - menu_label = gtk_label_new (name); + g_object_set_data (G_OBJECT (item), PANEL_ITEM_KEY, data); - gtk_misc_set_alignment (GTK_MISC (menu_label), 0.0, 0.5); + tab_label = build_tab_label (panel, item, data->name, data->icon); - if (!gtk_widget_get_visible (item)) - gtk_widget_show (item); + menu_label = gtk_label_new (name); - gtk_notebook_append_page_menu (GTK_NOTEBOOK (panel->priv->notebook), - item, - tab_label, - menu_label); + gtk_misc_set_alignment (GTK_MISC (menu_label), 0.0, 0.5); - g_signal_emit (G_OBJECT (panel), signals[ITEM_ADDED], 0, item); + if (!gtk_widget_get_visible (item)) + { + gtk_widget_show (item); + } + + gtk_notebook_append_page_menu (GTK_NOTEBOOK (panel->priv->notebook), item, tab_label, menu_label); + + g_signal_emit (G_OBJECT (panel), signals[ITEM_ADDED], 0, item); } /** @@ -706,20 +646,19 @@ xed_panel_add_item (XedPanel *panel, * Same as xed_panel_add_item() but using an image from stock. */ void -xed_panel_add_item_with_stock_icon (XedPanel *panel, - GtkWidget *item, - const gchar *name, - const gchar *stock_id) +xed_panel_add_item_with_stock_icon (XedPanel *panel, + GtkWidget *item, + const gchar *name, + const gchar *stock_id) { - GtkWidget *icon = NULL; + GtkWidget *icon = NULL; - if (stock_id != NULL) - { - icon = gtk_image_new_from_stock (stock_id, - GTK_ICON_SIZE_MENU); - } + if (stock_id != NULL) + { + icon = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_MENU); + } - xed_panel_add_item (panel, item, name, icon); + xed_panel_add_item (panel, item, name, icon); } /** @@ -733,47 +672,46 @@ xed_panel_add_item_with_stock_icon (XedPanel *panel, * Returns: %TRUE if it was well removed. */ gboolean -xed_panel_remove_item (XedPanel *panel, - GtkWidget *item) +xed_panel_remove_item (XedPanel *panel, + GtkWidget *item) { - XedPanelItem *data; - gint page_num; - - g_return_val_if_fail (XED_IS_PANEL (panel), FALSE); - g_return_val_if_fail (GTK_IS_WIDGET (item), FALSE); + XedPanelItem *data; + gint page_num; - page_num = gtk_notebook_page_num (GTK_NOTEBOOK (panel->priv->notebook), - item); - - if (page_num == -1) - return FALSE; - - data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), - PANEL_ITEM_KEY); - g_return_val_if_fail (data != NULL, FALSE); - - g_free (data->name); - g_free (data); + g_return_val_if_fail (XED_IS_PANEL (panel), FALSE); + g_return_val_if_fail (GTK_IS_WIDGET (item), FALSE); - g_object_set_data (G_OBJECT (item), - PANEL_ITEM_KEY, - NULL); + page_num = gtk_notebook_page_num (GTK_NOTEBOOK (panel->priv->notebook), item); - /* ref the item to keep it alive during signal emission */ - g_object_ref (G_OBJECT (item)); + if (page_num == -1) + { + return FALSE; + } - gtk_notebook_remove_page (GTK_NOTEBOOK (panel->priv->notebook), - page_num); + data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), PANEL_ITEM_KEY); + g_return_val_if_fail (data != NULL, FALSE); - /* if we removed all the pages, reset the title */ - if (gtk_notebook_get_n_pages (GTK_NOTEBOOK (panel->priv->notebook)) == 0) - sync_title (panel, NULL); + g_free (data->name); + g_free (data); - g_signal_emit (G_OBJECT (panel), signals[ITEM_REMOVED], 0, item); + g_object_set_data (G_OBJECT (item), PANEL_ITEM_KEY, NULL); - g_object_unref (G_OBJECT (item)); + /* ref the item to keep it alive during signal emission */ + g_object_ref (G_OBJECT (item)); - return TRUE; + gtk_notebook_remove_page (GTK_NOTEBOOK (panel->priv->notebook), page_num); + + /* if we removed all the pages, reset the title */ + if (gtk_notebook_get_n_pages (GTK_NOTEBOOK (panel->priv->notebook)) == 0) + { + sync_title (panel, NULL); + } + + g_signal_emit (G_OBJECT (panel), signals[ITEM_REMOVED], 0, item); + + g_object_unref (G_OBJECT (item)); + + return TRUE; } /** @@ -786,24 +724,24 @@ xed_panel_remove_item (XedPanel *panel, * Returns: %TRUE if it was activated */ gboolean -xed_panel_activate_item (XedPanel *panel, - GtkWidget *item) +xed_panel_activate_item (XedPanel *panel, + GtkWidget *item) { - gint page_num; + gint page_num; - g_return_val_if_fail (XED_IS_PANEL (panel), FALSE); - g_return_val_if_fail (GTK_IS_WIDGET (item), FALSE); + g_return_val_if_fail (XED_IS_PANEL (panel), FALSE); + g_return_val_if_fail (GTK_IS_WIDGET (item), FALSE); - page_num = gtk_notebook_page_num (GTK_NOTEBOOK (panel->priv->notebook), - item); + page_num = gtk_notebook_page_num (GTK_NOTEBOOK (panel->priv->notebook), item); - if (page_num == -1) - return FALSE; + if (page_num == -1) + { + return FALSE; + } - gtk_notebook_set_current_page (GTK_NOTEBOOK (panel->priv->notebook), - page_num); + gtk_notebook_set_current_page (GTK_NOTEBOOK (panel->priv->notebook), page_num); - return TRUE; + return TRUE; } /** @@ -816,41 +754,41 @@ xed_panel_activate_item (XedPanel *panel, * Returns: %TRUE if @item is the active widget */ gboolean -xed_panel_item_is_active (XedPanel *panel, - GtkWidget *item) +xed_panel_item_is_active (XedPanel *panel, + GtkWidget *item) { - gint cur_page; - gint page_num; + gint cur_page; + gint page_num; - g_return_val_if_fail (XED_IS_PANEL (panel), FALSE); - g_return_val_if_fail (GTK_IS_WIDGET (item), FALSE); + g_return_val_if_fail (XED_IS_PANEL (panel), FALSE); + g_return_val_if_fail (GTK_IS_WIDGET (item), FALSE); - page_num = gtk_notebook_page_num (GTK_NOTEBOOK (panel->priv->notebook), - item); + page_num = gtk_notebook_page_num (GTK_NOTEBOOK (panel->priv->notebook), item); - if (page_num == -1) - return FALSE; + if (page_num == -1) + { + return FALSE; + } - cur_page = gtk_notebook_get_current_page ( - GTK_NOTEBOOK (panel->priv->notebook)); + cur_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (panel->priv->notebook)); - return (page_num == cur_page); + return (page_num == cur_page); } /** * xed_panel_get_orientation: * @panel: a #XedPanel * - * Gets the orientation of the @panel. + * Gets the orientation of the @panel. * * Returns: the #GtkOrientation of #XedPanel */ GtkOrientation xed_panel_get_orientation (XedPanel *panel) { - g_return_val_if_fail (XED_IS_PANEL (panel), GTK_ORIENTATION_VERTICAL); + g_return_val_if_fail (XED_IS_PANEL (panel), GTK_ORIENTATION_VERTICAL); - return panel->priv->orientation; + return panel->priv->orientation; } /** @@ -858,81 +796,77 @@ xed_panel_get_orientation (XedPanel *panel) * @panel: a #XedPanel * * Gets the number of items in a @panel. - * + * * Returns: the number of items contained in #XedPanel */ gint xed_panel_get_n_items (XedPanel *panel) { - g_return_val_if_fail (XED_IS_PANEL (panel), -1); + g_return_val_if_fail (XED_IS_PANEL (panel), -1); - return gtk_notebook_get_n_pages (GTK_NOTEBOOK (panel->priv->notebook)); + return gtk_notebook_get_n_pages (GTK_NOTEBOOK (panel->priv->notebook)); } gint _xed_panel_get_active_item_id (XedPanel *panel) { - gint cur_page; - GtkWidget *item; - XedPanelItem *data; + gint cur_page; + GtkWidget *item; + XedPanelItem *data; - g_return_val_if_fail (XED_IS_PANEL (panel), 0); + g_return_val_if_fail (XED_IS_PANEL (panel), 0); - cur_page = gtk_notebook_get_current_page ( - GTK_NOTEBOOK (panel->priv->notebook)); - if (cur_page == -1) - return 0; + cur_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (panel->priv->notebook)); + if (cur_page == -1) + { + return 0; + } - item = gtk_notebook_get_nth_page ( - GTK_NOTEBOOK (panel->priv->notebook), - cur_page); + item = gtk_notebook_get_nth_page (GTK_NOTEBOOK (panel->priv->notebook), cur_page); - /* FIXME: for now we use as the hash of the name as id. - * However the name is not guaranteed to be unique and - * it is a translated string, so it's subotimal, but should - * be good enough for now since we don't want to add an - * ad hoc id argument. - */ + /* FIXME: for now we use as the hash of the name as id. + * However the name is not guaranteed to be unique and + * it is a translated string, so it's subotimal, but should + * be good enough for now since we don't want to add an + * ad hoc id argument. + */ - data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), - PANEL_ITEM_KEY); - g_return_val_if_fail (data != NULL, 0); + data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), PANEL_ITEM_KEY); + g_return_val_if_fail (data != NULL, 0); - return g_str_hash (data->name); + return g_str_hash (data->name); } void _xed_panel_set_active_item_by_id (XedPanel *panel, - gint id) + gint id) { - gint n, i; + gint n, i; - g_return_if_fail (XED_IS_PANEL (panel)); + g_return_if_fail (XED_IS_PANEL (panel)); - if (id == 0) - return; + if (id == 0) + { + return; + } - n = gtk_notebook_get_n_pages ( - GTK_NOTEBOOK (panel->priv->notebook)); + n = gtk_notebook_get_n_pages (GTK_NOTEBOOK (panel->priv->notebook)); - for (i = 0; i < n; i++) - { - GtkWidget *item; - XedPanelItem *data; + for (i = 0; i < n; i++) + { + GtkWidget *item; + XedPanelItem *data; - item = gtk_notebook_get_nth_page ( - GTK_NOTEBOOK (panel->priv->notebook), i); + item = gtk_notebook_get_nth_page (GTK_NOTEBOOK (panel->priv->notebook), i); - data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), - PANEL_ITEM_KEY); - g_return_if_fail (data != NULL); + data = (XedPanelItem *)g_object_get_data (G_OBJECT (item), PANEL_ITEM_KEY); + g_return_if_fail (data != NULL); - if (g_str_hash (data->name) == id) - { - gtk_notebook_set_current_page ( - GTK_NOTEBOOK (panel->priv->notebook), i); + if (g_str_hash (data->name) == id) + { + gtk_notebook_set_current_page (GTK_NOTEBOOK (panel->priv->notebook), i); - return; - } - } + return; + } + } }