[gimp] Move dock window themeing to GimpDockWindow
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Move dock window themeing to GimpDockWindow
- Date: Sun, 13 Sep 2009 09:20:29 +0000 (UTC)
commit fb99f997880cc5d98c35150946873bc33e95850d
Author: Martin Nordholts <martinn src gnome org>
Date: Sun Sep 13 11:23:02 2009 +0200
Move dock window themeing to GimpDockWindow
Move the dock window related themeing namely default dock heght and
font scale from GimpDock to GimpDockWindow to get rid of yet another
GtkWindow dependency from GimpDock.
Note that this change requires gtkrc updates where "GimpDock::" needs
to be repaced with "GimpDockWindow::".
app/actions/windows-actions.c | 8 ++-
app/menus/windows-menu.c | 13 ++++--
app/widgets/gimpdock.c | 92 +-------------------------------------
app/widgets/gimpdockwindow.c | 100 ++++++++++++++++++++++++++++++++++++++++-
app/widgets/gimpdockwindow.h | 1 +
themes/Default/gtkrc | 4 +-
themes/Small/gtkrc | 4 +-
7 files changed, 119 insertions(+), 103 deletions(-)
---
diff --git a/app/actions/windows-actions.c b/app/actions/windows-actions.c
index 138ef3a..c1a090b 100644
--- a/app/actions/windows-actions.c
+++ b/app/actions/windows-actions.c
@@ -272,7 +272,7 @@ windows_actions_dock_added (GimpDialogFactory *factory,
GtkAction *action;
GimpActionEntry entry;
gchar *action_name = g_strdup_printf ("windows-dock-%04d",
- gimp_dock_get_id (dock));
+ gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
entry.name = action_name;
entry.stock_id = NULL;
@@ -309,7 +309,8 @@ windows_actions_dock_removed (GimpDialogFactory *factory,
GimpActionGroup *group)
{
GtkAction *action;
- gchar *action_name = g_strdup_printf ("windows-dock-%04d", gimp_dock_get_id (dock));
+ gchar *action_name = g_strdup_printf ("windows-dock-%04d",
+ gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name);
@@ -327,7 +328,8 @@ windows_actions_dock_notify (GimpDock *dock,
GtkAction *action;
gchar *action_name;
- action_name = g_strdup_printf ("windows-dock-%04d", gimp_dock_get_id (dock));
+ action_name = g_strdup_printf ("windows-dock-%04d",
+ gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), action_name);
g_free (action_name);
diff --git a/app/menus/windows-menu.c b/app/menus/windows-menu.c
index 7a362dc..623b441 100644
--- a/app/menus/windows-menu.c
+++ b/app/menus/windows-menu.c
@@ -34,6 +34,7 @@
#include "widgets/gimpaction.h"
#include "widgets/gimpdialogfactory.h"
#include "widgets/gimpdock.h"
+#include "widgets/gimpdockwindow.h"
#include "widgets/gimpuimanager.h"
#include "display/gimpdisplay.h"
@@ -255,10 +256,13 @@ windows_menu_dock_added (GimpDialogFactory *factory,
ui_path = g_object_get_data (G_OBJECT (manager), "image-menu-ui-path");
- action_name = g_strdup_printf ("windows-dock-%04d", gimp_dock_get_id (dock));
- action_path = g_strdup_printf ("%s/Windows/Docks", ui_path);
+ action_name = g_strdup_printf ("windows-dock-%04d",
+ gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
+ action_path = g_strdup_printf ("%s/Windows/Docks",
+ ui_path);
- merge_key = g_strdup_printf ("windows-dock-%04d-merge-id", gimp_dock_get_id (dock));
+ merge_key = g_strdup_printf ("windows-dock-%04d-merge-id",
+ gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
merge_id = gtk_ui_manager_new_merge_id (GTK_UI_MANAGER (manager));
g_object_set_data (G_OBJECT (manager), merge_key,
@@ -279,7 +283,8 @@ windows_menu_dock_removed (GimpDialogFactory *factory,
GimpDock *dock,
GimpUIManager *manager)
{
- gchar *merge_key = g_strdup_printf ("windows-dock-%04d-merge-id", gimp_dock_get_id (dock));
+ gchar *merge_key = g_strdup_printf ("windows-dock-%04d-merge-id",
+ gimp_dock_window_get_id (GIMP_DOCK_WINDOW (dock)));
guint merge_id;
merge_id = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (manager),
diff --git a/app/widgets/gimpdock.c b/app/widgets/gimpdock.c
index e70957d..3b95d0b 100644
--- a/app/widgets/gimpdock.c
+++ b/app/widgets/gimpdock.c
@@ -43,9 +43,6 @@
#include "gimp-intl.h"
-#define DEFAULT_DOCK_HEIGHT 300
-#define DEFAULT_DOCK_FONT_SCALE PANGO_SCALE_SMALL
-
enum
{
PROP_0,
@@ -70,8 +67,6 @@ struct _GimpDockPrivate
GtkWidget *vbox;
GList *dockbooks;
-
- gint ID; /* for themeing */
};
@@ -88,8 +83,6 @@ static void gimp_dock_destroy (GtkObject *object);
static gboolean gimp_dock_delete_event (GtkWidget *widget,
GdkEventAny *event);
-static void gimp_dock_style_set (GtkWidget *widget,
- GtkStyle *prev_style);
static void gimp_dock_real_book_added (GimpDock *dock,
GimpDockbook *dockbook);
@@ -137,7 +130,6 @@ gimp_dock_class_init (GimpDockClass *klass)
gtk_object_class->destroy = gimp_dock_destroy;
widget_class->delete_event = gimp_dock_delete_event;
- widget_class->style_set = gimp_dock_style_set;
klass->setup = NULL;
klass->book_added = gimp_dock_real_book_added;
@@ -156,29 +148,13 @@ gimp_dock_class_init (GimpDockClass *klass)
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
- gtk_widget_class_install_style_property (widget_class,
- g_param_spec_int ("default-height",
- NULL, NULL,
- -1, G_MAXINT,
- DEFAULT_DOCK_HEIGHT,
- GIMP_PARAM_READABLE));
- gtk_widget_class_install_style_property (widget_class,
- g_param_spec_double ("font-scale",
- NULL, NULL,
- 0.0,
- G_MAXDOUBLE,
- DEFAULT_DOCK_FONT_SCALE,
- GIMP_PARAM_READABLE));
-
g_type_class_add_private (klass, sizeof (GimpDockPrivate));
}
static void
gimp_dock_init (GimpDock *dock)
{
- static gint dock_ID = 1;
- GtkWidget *separator;
- gchar *name;
+ GtkWidget *separator;
dock->p = G_TYPE_INSTANCE_GET_PRIVATE (dock,
GIMP_TYPE_DOCK,
@@ -186,11 +162,6 @@ gimp_dock_init (GimpDock *dock)
dock->p->context = NULL;
dock->p->dialog_factory = NULL;
dock->p->dockbooks = NULL;
- dock->p->ID = dock_ID++;
-
- name = g_strdup_printf ("gimp-dock-%d", dock->p->ID);
- gtk_widget_set_name (GTK_WIDGET (dock), name);
- g_free (name);
dock->p->main_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (dock), dock->p->main_vbox);
@@ -300,59 +271,6 @@ gimp_dock_delete_event (GtkWidget *widget,
}
static void
-gimp_dock_style_set (GtkWidget *widget,
- GtkStyle *prev_style)
-{
- gint default_height;
- gdouble font_scale;
-
- GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
-
- gtk_widget_style_get (widget,
- "default-height", &default_height,
- "font-scale", &font_scale,
- NULL);
-
- gtk_window_set_default_size (GTK_WINDOW (widget), -1, default_height);
-
- if (font_scale != 1.0)
- {
- PangoContext *context;
- PangoFontDescription *font_desc;
- gint font_size;
- gchar *font_str;
- gchar *rc_string;
-
- context = gtk_widget_get_pango_context (widget);
- font_desc = pango_context_get_font_description (context);
- font_desc = pango_font_description_copy (font_desc);
-
- font_size = pango_font_description_get_size (font_desc);
- font_size = font_scale * font_size;
- pango_font_description_set_size (font_desc, font_size);
-
- font_str = pango_font_description_to_string (font_desc);
- pango_font_description_free (font_desc);
-
- rc_string =
- g_strdup_printf ("style \"gimp-dock-style\""
- "{"
- " font_name = \"%s\""
- "}"
- "widget \"gimp-dock-%d.*\" style \"gimp-dock-style\"",
- font_str,
- GIMP_DOCK (widget)->p->ID);
- g_free (font_str);
-
- gtk_rc_parse_string (rc_string);
- g_free (rc_string);
-
- if (gtk_bin_get_child (GTK_BIN (widget)))
- gtk_widget_reset_rc_styles (gtk_bin_get_child (GTK_BIN (widget)));
- }
-}
-
-static void
gimp_dock_real_book_added (GimpDock *dock,
GimpDockbook *dockbook)
{
@@ -441,14 +359,6 @@ gimp_dock_get_vbox (GimpDock *dock)
return dock->p->vbox;
}
-gint
-gimp_dock_get_id (GimpDock *dock)
-{
- g_return_val_if_fail (GIMP_IS_DOCK (dock), 0);
-
- return dock->p->ID;
-}
-
void
gimp_dock_add (GimpDock *dock,
GimpDockable *dockable,
diff --git a/app/widgets/gimpdockwindow.c b/app/widgets/gimpdockwindow.c
index 704929c..b6e7e2d 100644
--- a/app/widgets/gimpdockwindow.c
+++ b/app/widgets/gimpdockwindow.c
@@ -43,6 +43,10 @@
#include "gimp-intl.h"
+#define DEFAULT_DOCK_HEIGHT 300
+#define DEFAULT_DOCK_FONT_SCALE PANGO_SCALE_SMALL
+
+
enum
{
PROP_0,
@@ -61,6 +65,8 @@ struct _GimpDockWindowPrivate
gchar *ui_manager_name;
GimpUIManager *ui_manager;
GQuark image_flush_handler_id;
+
+ gint ID;
};
static GObject * gimp_dock_window_constructor (GType type,
@@ -75,6 +81,8 @@ static void gimp_dock_window_get_property (GObject *obje
guint property_id,
GValue *value,
GParamSpec *pspec);
+static void gimp_dock_window_style_set (GtkWidget *widget,
+ GtkStyle *prev_style);
static void gimp_dock_window_display_changed (GimpDockWindow *dock_window,
GimpObject *display,
GimpContext *context);
@@ -93,13 +101,16 @@ G_DEFINE_TYPE (GimpDockWindow, gimp_dock_window, GIMP_TYPE_WINDOW)
static void
gimp_dock_window_class_init (GimpDockWindowClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->constructor = gimp_dock_window_constructor;
object_class->dispose = gimp_dock_window_dispose;
object_class->set_property = gimp_dock_window_set_property;
object_class->get_property = gimp_dock_window_get_property;
+ widget_class->style_set = gimp_dock_window_style_set;
+
g_object_class_install_property (object_class, PROP_CONTEXT,
g_param_spec_object ("gimp-context", NULL, NULL,
GIMP_TYPE_CONTEXT,
@@ -120,12 +131,30 @@ gimp_dock_window_class_init (GimpDockWindowClass *klass)
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_int ("default-height",
+ NULL, NULL,
+ -1, G_MAXINT,
+ DEFAULT_DOCK_HEIGHT,
+ GIMP_PARAM_READABLE));
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_double ("font-scale",
+ NULL, NULL,
+ 0.0,
+ G_MAXDOUBLE,
+ DEFAULT_DOCK_FONT_SCALE,
+ GIMP_PARAM_READABLE));
+
g_type_class_add_private (klass, sizeof (GimpDockWindowPrivate));
}
static void
gimp_dock_window_init (GimpDockWindow *dock_window)
{
+ static gint dock_ID = 1;
+ gchar *name;
+
+ /* Initialize members */
dock_window->p = G_TYPE_INSTANCE_GET_PRIVATE (dock_window,
GIMP_TYPE_DOCK_WINDOW,
GimpDockWindowPrivate);
@@ -134,9 +163,16 @@ gimp_dock_window_init (GimpDockWindow *dock_window)
dock_window->p->ui_manager_name = NULL;
dock_window->p->ui_manager = NULL;
dock_window->p->image_flush_handler_id = 0;
+ dock_window->p->ID = dock_ID++;
+ /* Some common initialization for all dock windows */
gtk_window_set_resizable (GTK_WINDOW (dock_window), TRUE);
gtk_window_set_focus_on_map (GTK_WINDOW (dock_window), FALSE);
+
+ /* Initialize theming and style-setting stuff */
+ name = g_strdup_printf ("gimp-dock-%d", dock_window->p->ID);
+ gtk_widget_set_name (GTK_WIDGET (dock_window), name);
+ g_free (name);
}
static GObject *
@@ -279,6 +315,60 @@ gimp_dock_window_get_property (GObject *object,
}
static void
+gimp_dock_window_style_set (GtkWidget *widget,
+ GtkStyle *prev_style)
+{
+ GimpDockWindow *dock_window = GIMP_DOCK_WINDOW (widget);
+ gint default_height;
+ gdouble font_scale;
+
+ GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
+
+ gtk_widget_style_get (widget,
+ "default-height", &default_height,
+ "font-scale", &font_scale,
+ NULL);
+
+ gtk_window_set_default_size (GTK_WINDOW (widget), -1, default_height);
+
+ if (font_scale != 1.0)
+ {
+ PangoContext *context;
+ PangoFontDescription *font_desc;
+ gint font_size;
+ gchar *font_str;
+ gchar *rc_string;
+
+ context = gtk_widget_get_pango_context (widget);
+ font_desc = pango_context_get_font_description (context);
+ font_desc = pango_font_description_copy (font_desc);
+
+ font_size = pango_font_description_get_size (font_desc);
+ font_size = font_scale * font_size;
+ pango_font_description_set_size (font_desc, font_size);
+
+ font_str = pango_font_description_to_string (font_desc);
+ pango_font_description_free (font_desc);
+
+ rc_string =
+ g_strdup_printf ("style \"gimp-dock-style\""
+ "{"
+ " font_name = \"%s\""
+ "}"
+ "widget \"gimp-dock-%d.*\" style \"gimp-dock-style\"",
+ font_str,
+ dock_window->p->ID);
+ g_free (font_str);
+
+ gtk_rc_parse_string (rc_string);
+ g_free (rc_string);
+
+ if (gtk_bin_get_child (GTK_BIN (widget)))
+ gtk_widget_reset_rc_styles (gtk_bin_get_child (GTK_BIN (widget)));
+ }
+}
+
+static void
gimp_dock_window_display_changed (GimpDockWindow *dock_window,
GimpObject *display,
GimpContext *context)
@@ -310,6 +400,14 @@ gimp_dock_window_image_flush (GimpImage *image,
}
}
+gint
+gimp_dock_window_get_id (GimpDockWindow *dock_window)
+{
+ g_return_val_if_fail (GIMP_IS_DOCK_WINDOW (dock_window), 0);
+
+ return dock_window->p->ID;
+}
+
GimpUIManager *
gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window)
{
diff --git a/app/widgets/gimpdockwindow.h b/app/widgets/gimpdockwindow.h
index 29551ea..8a4a064 100644
--- a/app/widgets/gimpdockwindow.h
+++ b/app/widgets/gimpdockwindow.h
@@ -54,6 +54,7 @@ struct _GimpDockWindowClass
GType gimp_dock_window_get_type (void) G_GNUC_CONST;
+gint gimp_dock_window_get_id (GimpDockWindow *dock_window);
GimpUIManager * gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window);
diff --git a/themes/Default/gtkrc b/themes/Default/gtkrc
index c1d01f4..f24c74f 100644
--- a/themes/Default/gtkrc
+++ b/themes/Default/gtkrc
@@ -37,8 +37,8 @@ style "gimp-default-style"
}
GtkPaned::handle-size = 6
- GimpDock::default-height = 300
- GimpDock::font-scale = 0.8333
+ GimpDockWindow::default-height = 300
+ GimpDockWindow::font-scale = 0.8333
GimpDockSeparator::height = 6
GimpMenuDock::minimal-width = 200
GimpMenuDock::menu-preview-size = button
diff --git a/themes/Small/gtkrc b/themes/Small/gtkrc
index a795950..e21b33e 100644
--- a/themes/Small/gtkrc
+++ b/themes/Small/gtkrc
@@ -44,8 +44,8 @@ style "gimp-default-style"
GtkOptionMenu::indicator-spacing = { 4, 3, 1, 1 }
GtkPaned::handle-size = 5
- GimpDock::default-height = 240
- GimpDock::font-scale = 0.8333
+ GimpDockWindow::default-height = 240
+ GimpDockWindow::font-scale = 0.8333
GimpDockSeparator::height = 5
GimpMenuDock::minimal-width = 200
GimpMenuDock::menu-preview-size = small-toolbar
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]