From 5acf3f0cd39aafdfdc428f1ff4aef9f15d89e8f9 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 19 Jul 2003 11:30:10 +0000 Subject: [PATCH] added style properties "tab_border" and "tab_icon_size" just as they exist 2003-07-19 Michael Natterer * libgimpwidgets/gimpcolornotebook.c: added style properties "tab_border" and "tab_icon_size" just as they exist for GimpDockbook. Factored page creation out to the new gimp_color_notebook_add_page() utility function. Added fancy menu items for the popup menu and translate them. * etc/gtkrc_user * themes/Default/gtkrc: use the same tab style for GimpDockbooks and GimpColorNotebooks. --- ChangeLog | 12 ++ etc/gtkrc_user | 2 + libgimpwidgets/gimpcolornotebook.c | 210 ++++++++++++++++++----------- themes/Default/gtkrc | 4 +- 4 files changed, 151 insertions(+), 77 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b327b5406..f34c767f02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2003-07-19 Michael Natterer + + * libgimpwidgets/gimpcolornotebook.c: added style properties + "tab_border" and "tab_icon_size" just as they exist for + GimpDockbook. Factored page creation out to the new + gimp_color_notebook_add_page() utility function. Added fancy menu + items for the popup menu and translate them. + + * etc/gtkrc_user + * themes/Default/gtkrc: use the same tab style for GimpDockbooks + and GimpColorNotebooks. + 2003-07-19 Dave Neary * app/paint/gimpclone.c: Fixed a mistake in the code which does diff --git a/etc/gtkrc_user b/etc/gtkrc_user index 817168a2ed..ea557b67cf 100644 --- a/etc/gtkrc_user +++ b/etc/gtkrc_user @@ -28,6 +28,8 @@ style "gimp-small-style" GimpToolbox::tool_icon_size = menu GimpDockbook::tab_border = 0 GimpDockbook::tab_icon_size = menu + GimpColorNotebook::tab_border = 0 + GimpColorNotebook::tab_icon_size = menu GimpDockable::content_border = 1 GimpEditor::content_spacing = 1 GimpEditor::button_spacing = 1 diff --git a/libgimpwidgets/gimpcolornotebook.c b/libgimpwidgets/gimpcolornotebook.c index b523828c41..72a0a8efc0 100644 --- a/libgimpwidgets/gimpcolornotebook.c +++ b/libgimpwidgets/gimpcolornotebook.c @@ -1,5 +1,5 @@ -/* LIBGIMP - The GIMP Library - * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball +/* LIBGIMP - The GIMP Library + * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball * * gimpcolornotebook.c * Copyright (C) 2002 Michael Natterer @@ -11,10 +11,10 @@ * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Lesser General Public @@ -35,12 +35,20 @@ #include "gimpcolorscales.h" #include "gimpwidgetsmarshal.h" +#include "libgimp/libgimp-intl.h" + + +#define DEFAULT_TAB_BORDER 0 +#define DEFAULT_TAB_ICON_SIZE GTK_ICON_SIZE_BUTTON + static void gimp_color_notebook_class_init (GimpColorNotebookClass *klass); static void gimp_color_notebook_init (GimpColorNotebook *notebook); static void gimp_color_notebook_finalize (GObject *object); +static void gimp_color_notebook_style_set (GtkWidget *widget, + GtkStyle *prev_style); static void gimp_color_notebook_togg_visible (GimpColorSelector *selector, gboolean visible); static void gimp_color_notebook_togg_sensitive (GimpColorSelector *selector, @@ -66,6 +74,9 @@ static void gimp_color_notebook_channel_changed (GimpColorSelector *page, GimpColorSelectorChannel channel, GimpColorNotebook *notebook); +static GtkWidget * gimp_color_notebook_add_page (GimpColorNotebook *notebook, + GType page_type); + static GimpColorSelectorClass *parent_class = NULL; @@ -91,7 +102,7 @@ gimp_color_notebook_get_type (void) }; notebook_type = g_type_register_static (GIMP_TYPE_COLOR_SELECTOR, - "GimpColorNotebook", + "GimpColorNotebook", ¬ebook_info, 0); } @@ -102,15 +113,19 @@ static void gimp_color_notebook_class_init (GimpColorNotebookClass *klass) { GObjectClass *object_class; + GtkWidgetClass *widget_class; GimpColorSelectorClass *selector_class; object_class = G_OBJECT_CLASS (klass); + widget_class = GTK_WIDGET_CLASS (klass); selector_class = GIMP_COLOR_SELECTOR_CLASS (klass); parent_class = g_type_class_peek_parent (klass); object_class->finalize = gimp_color_notebook_finalize; + widget_class->style_set = gimp_color_notebook_style_set; + selector_class->name = "Notebook"; selector_class->help_page = "notebook.html"; selector_class->set_toggles_visible = gimp_color_notebook_togg_visible; @@ -118,13 +133,25 @@ gimp_color_notebook_class_init (GimpColorNotebookClass *klass) selector_class->set_show_alpha = gimp_color_notebook_set_show_alpha; selector_class->set_color = gimp_color_notebook_set_color; selector_class->set_channel = gimp_color_notebook_set_channel; + + gtk_widget_class_install_style_property (widget_class, + g_param_spec_int ("tab_border", + NULL, NULL, + 0, G_MAXINT, + DEFAULT_TAB_BORDER, + G_PARAM_READABLE)); + gtk_widget_class_install_style_property (widget_class, + g_param_spec_enum ("tab_icon_size", + NULL, NULL, + GTK_TYPE_ICON_SIZE, + DEFAULT_TAB_ICON_SIZE, + G_PARAM_READABLE)); } static void gimp_color_notebook_init (GimpColorNotebook *notebook) { GimpColorSelector *selector; - GimpColorSelectorClass *selector_class; GType *selector_types; gint n_selector_types; gint i; @@ -152,9 +179,6 @@ gimp_color_notebook_init (GimpColorNotebook *notebook) for (i = 0; i < n_selector_types; i++) { - GtkWidget *page; - GtkWidget *image; - /* skip ourselves */ if (g_type_is_a (selector_types[i], GIMP_TYPE_COLOR_NOTEBOOK)) continue; @@ -163,40 +187,7 @@ gimp_color_notebook_init (GimpColorNotebook *notebook) if (g_type_is_a (selector_types[i], GIMP_TYPE_COLOR_SCALES)) continue; - page = gimp_color_selector_new (selector_types[i], - &selector->rgb, - &selector->hsv, - selector->channel); - - if (! page) - continue; - - selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (page); - - gimp_color_selector_set_show_alpha (GIMP_COLOR_SELECTOR (page), FALSE); - - image = gtk_image_new_from_stock (selector_class->stock_id, - GTK_ICON_SIZE_BUTTON); - - gtk_notebook_append_page (GTK_NOTEBOOK (notebook->notebook), - page, image); - - gtk_notebook_set_menu_label_text (GTK_NOTEBOOK (notebook->notebook), - page, selector_class->name); - - if (! notebook->cur_page) - notebook->cur_page = GIMP_COLOR_SELECTOR (page); - - notebook->selectors = g_list_append (notebook->selectors, page); - - gtk_widget_show (page); - - g_signal_connect (page, "color_changed", - G_CALLBACK (gimp_color_notebook_color_changed), - notebook); - g_signal_connect (page, "channel_changed", - G_CALLBACK (gimp_color_notebook_channel_changed), - notebook); + gimp_color_notebook_add_page (notebook, selector_types[i]); } g_free (selector_types); @@ -218,6 +209,44 @@ gimp_color_notebook_finalize (GObject *object) G_OBJECT_CLASS (parent_class)->finalize (object); } +static void +gimp_color_notebook_style_set (GtkWidget *widget, + GtkStyle *prev_style) +{ + GimpColorNotebook *notebook; + GList *list; + gint tab_border; + GtkIconSize icon_size; + + notebook = GIMP_COLOR_NOTEBOOK (widget); + + if (GTK_WIDGET_CLASS (parent_class)->style_set) + GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style); + + gtk_widget_style_get (widget, + "tab_border", &tab_border, + "tab_icon_size", &icon_size, + NULL); + + g_object_set (notebook->notebook, + "tab_border", tab_border, + NULL); + + for (list = notebook->selectors; list; list = g_list_next (list)) + { + GimpColorSelectorClass *selector_class; + GtkWidget *image; + + selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (list->data); + + image = gtk_image_new_from_stock (selector_class->stock_id, icon_size); + + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook->notebook), + GTK_WIDGET (list->data), + image); + } +} + static void gimp_color_notebook_togg_visible (GimpColorSelector *selector, gboolean visible) @@ -377,6 +406,65 @@ gimp_color_notebook_channel_changed (GimpColorSelector *page, gimp_color_selector_channel_changed (selector); } +static GtkWidget * +gimp_color_notebook_add_page (GimpColorNotebook *notebook, + GType page_type) +{ + GimpColorSelector *selector; + GimpColorSelectorClass *selector_class; + GtkWidget *page; + GtkWidget *menu_widget; + GtkWidget *image; + GtkWidget *label; + + selector = GIMP_COLOR_SELECTOR (notebook); + + page = gimp_color_selector_new (page_type, + &selector->rgb, + &selector->hsv, + selector->channel); + + if (! page) + return NULL; + + selector_class = GIMP_COLOR_SELECTOR_GET_CLASS (page); + + gimp_color_selector_set_show_alpha (GIMP_COLOR_SELECTOR (page), FALSE); + + menu_widget = gtk_hbox_new (FALSE, 4); + + image = gtk_image_new_from_stock (selector_class->stock_id, + GTK_ICON_SIZE_MENU); + gtk_box_pack_start (GTK_BOX (menu_widget), image, FALSE, FALSE, 0); + gtk_widget_show (image); + + label = gtk_label_new (gettext (selector_class->name)); + gtk_box_pack_start (GTK_BOX (menu_widget), label, FALSE, FALSE, 0); + gtk_widget_show (label); + + image = gtk_image_new_from_stock (selector_class->stock_id, + DEFAULT_TAB_ICON_SIZE); + + gtk_notebook_append_page_menu (GTK_NOTEBOOK (notebook->notebook), + page, image, menu_widget); + + if (! notebook->cur_page) + notebook->cur_page = GIMP_COLOR_SELECTOR (page); + + notebook->selectors = g_list_append (notebook->selectors, page); + + gtk_widget_show (page); + + g_signal_connect (page, "color_changed", + G_CALLBACK (gimp_color_notebook_color_changed), + notebook); + g_signal_connect (page, "channel_changed", + G_CALLBACK (gimp_color_notebook_channel_changed), + notebook); + + return page; +} + /* public function */ @@ -387,7 +475,6 @@ gimp_color_notebook_set_has_page (GimpColorNotebook *notebook, { GimpColorSelector *selector; GimpColorSelector *page; - GtkWidget *label; GList *list; g_return_val_if_fail (GIMP_IS_COLOR_NOTEBOOK (notebook), NULL); @@ -421,34 +508,5 @@ gimp_color_notebook_set_has_page (GimpColorNotebook *notebook, if (! has_page) return NULL; - page = GIMP_COLOR_SELECTOR (gimp_color_selector_new (page_type, - &selector->rgb, - &selector->hsv, - selector->channel)); - - if (! page) - return NULL; - - gimp_color_selector_set_show_alpha (page, selector->show_alpha); - - label = gtk_label_new_with_mnemonic (GIMP_COLOR_SELECTOR_GET_CLASS (page)->name); - - gtk_notebook_append_page (GTK_NOTEBOOK (notebook->notebook), - GTK_WIDGET (page), label); - - if (! notebook->cur_page) - notebook->cur_page = page; - - notebook->selectors = g_list_append (notebook->selectors, page); - - gtk_widget_show (GTK_WIDGET (page)); - - g_signal_connect (page, "color_changed", - G_CALLBACK (gimp_color_notebook_color_changed), - notebook); - g_signal_connect (page, "channel_changed", - G_CALLBACK (gimp_color_notebook_channel_changed), - notebook); - - return GTK_WIDGET (page); + return gimp_color_notebook_add_page (notebook, page_type); } diff --git a/themes/Default/gtkrc b/themes/Default/gtkrc index 237159085e..853db48c27 100644 --- a/themes/Default/gtkrc +++ b/themes/Default/gtkrc @@ -43,7 +43,9 @@ style "gimp-default-style" GimpToolbox::tool_icon_size = button GimpToolbox::button_relief = none GimpDockbook::tab_border = 0 - GimpDockbook::tab_size = button + GimpDockbook::tab_icon_size = button + GimpColorNotebook::tab_border = 0 + GimpColorNotebook::tab_icon_size = button GimpDockable::content_border = 2 GimpEditor::content_spacing = 2 GimpEditor::button_spacing = 2