[gimp] app: Make GimpSessionInfo members private
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] app: Make GimpSessionInfo members private
- Date: Sun, 20 Sep 2009 15:04:52 +0000 (UTC)
commit 94d95e4db2396c1695fe3b670b7d15f4cd4c66ce
Author: Martin Nordholts <martinn src gnome org>
Date: Sun Sep 20 17:06:36 2009 +0200
app: Make GimpSessionInfo members private
Make GimpSessionInfo members private but put them in a shared header
file so gimpsessioninfo-dock.c can access them too.
app/widgets/Makefile.am | 1 +
app/widgets/gimpsessioninfo-dock.c | 9 +-
app/widgets/gimpsessioninfo-private.h | 53 ++++++++
app/widgets/gimpsessioninfo.c | 216 +++++++++++++++++----------------
app/widgets/gimpsessioninfo.h | 29 +----
5 files changed, 174 insertions(+), 134 deletions(-)
---
diff --git a/app/widgets/Makefile.am b/app/widgets/Makefile.am
index ca25311..823b814 100644
--- a/app/widgets/Makefile.am
+++ b/app/widgets/Makefile.am
@@ -257,6 +257,7 @@ libappwidgets_a_sources = \
gimpsessioninfo-dock.h \
gimpsessioninfo-dockable.c \
gimpsessioninfo-dockable.h \
+ gimpsessioninfo-private.h \
gimpsettingsbox.c \
gimpsettingsbox.h \
gimpsettingseditor.c \
diff --git a/app/widgets/gimpsessioninfo-dock.c b/app/widgets/gimpsessioninfo-dock.c
index 82aa658..d1d474b 100644
--- a/app/widgets/gimpsessioninfo-dock.c
+++ b/app/widgets/gimpsessioninfo-dock.c
@@ -32,6 +32,7 @@
#include "gimpsessioninfo-aux.h"
#include "gimpsessioninfo-book.h"
#include "gimpsessioninfo-dock.h"
+#include "gimpsessioninfo-private.h"
enum
@@ -96,7 +97,7 @@ gimp_session_info_dock_deserialize (GScanner *scanner,
if (token == G_TOKEN_LEFT_PAREN)
{
- info->books = g_list_append (info->books, book);
+ info->p->books = g_list_append (info->p->books, book);
g_scanner_set_scope (scanner, scope);
}
else
@@ -183,10 +184,10 @@ gimp_session_info_dock_restore (GimpSessionInfo *info,
dock = GIMP_DOCK (gimp_dialog_factory_dock_new (factory, screen));
- if (dock && info->aux_info)
- gimp_session_info_aux_set_list (GTK_WIDGET (dock), info->aux_info);
+ if (dock && info->p->aux_info)
+ gimp_session_info_aux_set_list (GTK_WIDGET (dock), info->p->aux_info);
- for (books = info->books; books; books = g_list_next (books))
+ for (books = info->p->books; books; books = g_list_next (books))
{
GimpSessionInfoBook *book_info = books->data;
GtkWidget *dockbook;
diff --git a/app/widgets/gimpsessioninfo-private.h b/app/widgets/gimpsessioninfo-private.h
new file mode 100644
index 0000000..98d8a99
--- /dev/null
+++ b/app/widgets/gimpsessioninfo-private.h
@@ -0,0 +1,53 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * gimpsessioninfo-private.h
+ * Copyright (C) 2001-2008 Michael Natterer <mitch gimp org>
+ *
+ * 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
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_SESSION_INFO_PRIVATE_H__
+#define __GIMP_SESSION_INFO_PRIVATE_H__
+
+
+struct _GimpSessionInfoPrivate
+{
+ gint x;
+ gint y;
+ gint width;
+ gint height;
+ gboolean right_align;
+ gboolean bottom_align;
+
+ /* only valid while restoring and saving the session */
+ gboolean open;
+ gint screen;
+
+ /* dialog specific list of GimpSessionInfoAux */
+ GList *aux_info;
+
+ GtkWidget *widget;
+
+ /* the dialog factory entry for object we have session info for
+ * note that pure "dock" entries don't have any factory entry
+ */
+ GimpDialogFactoryEntry *factory_entry;
+
+ /* list of GimpSessionInfoBook */
+ GList *books;
+};
+
+
+#endif /* __GIMP_SESSION_INFO_PRIVATE_H__ */
diff --git a/app/widgets/gimpsessioninfo.c b/app/widgets/gimpsessioninfo.c
index b2ee187..57945c0 100644
--- a/app/widgets/gimpsessioninfo.c
+++ b/app/widgets/gimpsessioninfo.c
@@ -34,6 +34,7 @@
#include "gimpsessioninfo-aux.h"
#include "gimpsessioninfo-book.h"
#include "gimpsessioninfo-dock.h"
+#include "gimpsessioninfo-private.h"
enum
@@ -81,12 +82,17 @@ gimp_session_info_class_init (GimpSessionInfoClass *klass)
object_class->finalize = gimp_session_info_finalize;
gimp_object_class->get_memsize = gimp_session_info_get_memsize;
+
+ g_type_class_add_private (klass, sizeof (GimpSessionInfoPrivate));
}
static void
gimp_session_info_init (GimpSessionInfo *info)
{
- info->screen = DEFAULT_SCREEN;
+ info->p = G_TYPE_INSTANCE_GET_PRIVATE (info,
+ GIMP_TYPE_SESSION_INFO,
+ GimpSessionInfoPrivate);
+ info->p->screen = DEFAULT_SCREEN;
}
static void
@@ -127,31 +133,31 @@ gimp_session_info_serialize (GimpConfig *config,
GimpSessionInfo *info = GIMP_SESSION_INFO (config);
gimp_config_writer_open (writer, "position");
- gimp_config_writer_printf (writer, "%d %d", info->x, info->y);
+ gimp_config_writer_printf (writer, "%d %d", info->p->x, info->p->y);
gimp_config_writer_close (writer);
- if (info->width > 0 && info->height > 0)
+ if (info->p->width > 0 && info->p->height > 0)
{
gimp_config_writer_open (writer, "size");
- gimp_config_writer_printf (writer, "%d %d", info->width, info->height);
+ gimp_config_writer_printf (writer, "%d %d", info->p->width, info->p->height);
gimp_config_writer_close (writer);
}
- if (info->open)
+ if (info->p->open)
{
gimp_config_writer_open (writer, "open-on-exit");
- if (info->screen != DEFAULT_SCREEN)
- gimp_config_writer_printf (writer, "%d", info->screen);
+ if (info->p->screen != DEFAULT_SCREEN)
+ gimp_config_writer_printf (writer, "%d", info->p->screen);
gimp_config_writer_close (writer);
}
- if (info->aux_info)
- gimp_session_info_aux_serialize (writer, info->aux_info);
+ if (info->p->aux_info)
+ gimp_session_info_aux_serialize (writer, info->p->aux_info);
- if (info->books)
- gimp_session_info_dock_serialize (writer, info->books);
+ if (info->p->books)
+ gimp_session_info_dock_serialize (writer, info->p->books);
return TRUE;
}
@@ -231,44 +237,44 @@ gimp_session_info_deserialize (GimpConfig *config,
case SESSION_INFO_POSITION:
token = G_TOKEN_INT;
if (! gimp_session_info_parse_offset (scanner,
- &info->x,
- &info->right_align))
+ &info->p->x,
+ &info->p->right_align))
goto error;
if (! gimp_session_info_parse_offset (scanner,
- &info->y,
- &info->bottom_align))
+ &info->p->y,
+ &info->p->bottom_align))
goto error;
break;
case SESSION_INFO_SIZE:
token = G_TOKEN_INT;
- if (! gimp_scanner_parse_int (scanner, &info->width))
+ if (! gimp_scanner_parse_int (scanner, &info->p->width))
goto error;
- if (! gimp_scanner_parse_int (scanner, &info->height))
+ if (! gimp_scanner_parse_int (scanner, &info->p->height))
goto error;
break;
case SESSION_INFO_OPEN:
- info->open = TRUE;
+ info->p->open = TRUE;
/* the screen number is optional */
if (g_scanner_peek_next_token (scanner) == G_TOKEN_RIGHT_PAREN)
break;
token = G_TOKEN_INT;
- if (! gimp_scanner_parse_int (scanner, &info->screen))
+ if (! gimp_scanner_parse_int (scanner, &info->p->screen))
goto error;
break;
case SESSION_INFO_AUX:
token = gimp_session_info_aux_deserialize (scanner,
- &info->aux_info);
+ &info->p->aux_info);
if (token != G_TOKEN_LEFT_PAREN)
goto error;
break;
case SESSION_INFO_DOCK:
- if (info->factory_entry)
+ if (info->p->factory_entry)
goto error;
g_scanner_set_scope (scanner, scope_id + 1);
@@ -323,9 +329,9 @@ gimp_session_info_deserialize (GimpConfig *config,
static gboolean
gimp_session_info_is_for_dock (GimpSessionInfo *info)
{
- gboolean entry_state_for_dock = info->factory_entry == NULL;
- gboolean widget_state_for_dock = (info->widget == NULL ||
- GIMP_IS_DOCK (info->widget));
+ gboolean entry_state_for_dock = info->p->factory_entry == NULL;
+ gboolean widget_state_for_dock = (info->p->widget == NULL ||
+ GIMP_IS_DOCK (info->p->widget));
return entry_state_for_dock && widget_state_for_dock;
}
@@ -351,27 +357,27 @@ gimp_session_info_restore (GimpSessionInfo *info,
display = gdk_display_get_default ();
- if (info->screen != DEFAULT_SCREEN)
- screen = gdk_display_get_screen (display, info->screen);
+ if (info->p->screen != DEFAULT_SCREEN)
+ screen = gdk_display_get_screen (display, info->p->screen);
if (! screen)
screen = gdk_display_get_default_screen (display);
- info->open = FALSE;
- info->screen = DEFAULT_SCREEN;
+ info->p->open = FALSE;
+ info->p->screen = DEFAULT_SCREEN;
- if (info->factory_entry && ! info->factory_entry->dockable)
+ if (info->p->factory_entry && ! info->p->factory_entry->dockable)
{
GtkWidget *dialog;
dialog =
gimp_dialog_factory_dialog_new (factory, screen,
- info->factory_entry->identifier,
- info->factory_entry->view_size,
+ info->p->factory_entry->identifier,
+ info->p->factory_entry->view_size,
TRUE);
- if (dialog && info->aux_info)
- gimp_session_info_aux_set_list (dialog, info->aux_info);
+ if (dialog && info->p->aux_info)
+ gimp_session_info_aux_set_list (dialog, info->p->aux_info);
}
else
{
@@ -441,60 +447,60 @@ gimp_session_info_apply_geometry (GimpSessionInfo *info)
gboolean use_size;
g_return_if_fail (GIMP_IS_SESSION_INFO (info));
- g_return_if_fail (GTK_IS_WINDOW (info->widget));
+ g_return_if_fail (GTK_IS_WINDOW (info->p->widget));
- screen = gtk_widget_get_screen (info->widget);
+ screen = gtk_widget_get_screen (info->p->widget);
use_size = (gimp_session_info_get_remember_size (info) &&
- info->width > 0 &&
- info->height > 0);
+ info->p->width > 0 &&
+ info->p->height > 0);
if (use_size)
{
monitor = gimp_session_info_get_appropriate_monitor (screen,
- info->x,
- info->y,
- info->width,
- info->height);
+ info->p->x,
+ info->p->y,
+ info->p->width,
+ info->p->height);
}
else
{
- monitor = gdk_screen_get_monitor_at_point (screen, info->x, info->y);
+ monitor = gdk_screen_get_monitor_at_point (screen, info->p->x, info->p->y);
}
gdk_screen_get_monitor_geometry (screen, monitor, &rect);
- info->x = CLAMP (info->x,
+ info->p->x = CLAMP (info->p->x,
rect.x,
- rect.x + rect.width - (info->width > 0 ?
- info->width : 128));
- info->y = CLAMP (info->y,
+ rect.x + rect.width - (info->p->width > 0 ?
+ info->p->width : 128));
+ info->p->y = CLAMP (info->p->y,
rect.y,
- rect.y + rect.height - (info->height > 0 ?
- info->height : 128));
+ rect.y + rect.height - (info->p->height > 0 ?
+ info->p->height : 128));
- if (info->right_align && info->bottom_align)
+ if (info->p->right_align && info->p->bottom_align)
{
g_strlcpy (geom, "-0-0", sizeof (geom));
}
- else if (info->right_align)
+ else if (info->p->right_align)
{
- g_snprintf (geom, sizeof (geom), "-0%+d", info->y);
+ g_snprintf (geom, sizeof (geom), "-0%+d", info->p->y);
}
- else if (info->bottom_align)
+ else if (info->p->bottom_align)
{
- g_snprintf (geom, sizeof (geom), "%+d-0", info->x);
+ g_snprintf (geom, sizeof (geom), "%+d-0", info->p->x);
}
else
{
- g_snprintf (geom, sizeof (geom), "%+d%+d", info->x, info->y);
+ g_snprintf (geom, sizeof (geom), "%+d%+d", info->p->x, info->p->y);
}
- gtk_window_parse_geometry (GTK_WINDOW (info->widget), geom);
+ gtk_window_parse_geometry (GTK_WINDOW (info->p->widget), geom);
if (use_size)
- gtk_window_set_default_size (GTK_WINDOW (info->widget),
- info->width, info->height);
+ gtk_window_set_default_size (GTK_WINDOW (info->p->widget),
+ info->p->width, info->p->height);
}
/**
@@ -509,9 +515,9 @@ gimp_session_info_read_geometry (GimpSessionInfo *info)
GdkWindow *window;
g_return_if_fail (GIMP_IS_SESSION_INFO (info));
- g_return_if_fail (GTK_IS_WINDOW (info->widget));
+ g_return_if_fail (GTK_IS_WINDOW (info->p->widget));
- window = gtk_widget_get_window (info->widget);
+ window = gtk_widget_get_window (info->p->widget);
if (window)
{
@@ -523,56 +529,56 @@ gimp_session_info_read_geometry (GimpSessionInfo *info)
* interpreted as relative to the right, respective bottom edge
* of the screen.
*/
- info->x = MAX (0, x);
- info->y = MAX (0, y);
+ info->p->x = MAX (0, x);
+ info->p->y = MAX (0, y);
if (gimp_session_info_get_remember_size (info))
{
gdk_drawable_get_size (GDK_DRAWABLE (window),
- &info->width, &info->height);
+ &info->p->width, &info->p->height);
}
else
{
- info->width = 0;
- info->height = 0;
+ info->p->width = 0;
+ info->p->height = 0;
}
}
- info->open = FALSE;
+ info->p->open = FALSE;
if (gimp_session_info_get_remember_if_open (info))
{
GimpDialogVisibilityState visibility;
visibility =
- GPOINTER_TO_INT (g_object_get_data (G_OBJECT (info->widget),
+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (info->p->widget),
GIMP_DIALOG_VISIBILITY_KEY));
switch (visibility)
{
case GIMP_DIALOG_VISIBILITY_UNKNOWN:
- info->open = GTK_WIDGET_VISIBLE (info->widget);
+ info->p->open = GTK_WIDGET_VISIBLE (info->p->widget);
break;
case GIMP_DIALOG_VISIBILITY_INVISIBLE:
- info->open = FALSE;
+ info->p->open = FALSE;
break;
case GIMP_DIALOG_VISIBILITY_VISIBLE:
- info->open = TRUE;
+ info->p->open = TRUE;
break;
}
}
- info->screen = DEFAULT_SCREEN;
+ info->p->screen = DEFAULT_SCREEN;
- if (info->open)
+ if (info->p->open)
{
- GdkDisplay *display = gtk_widget_get_display (info->widget);
- GdkScreen *screen = gtk_widget_get_screen (info->widget);
+ GdkDisplay *display = gtk_widget_get_display (info->p->widget);
+ GdkScreen *screen = gtk_widget_get_screen (info->p->widget);
if (screen != gdk_display_get_default_screen (display))
- info->screen = gdk_screen_get_number (screen);
+ info->p->screen = gdk_screen_get_number (screen);
}
}
@@ -580,16 +586,16 @@ void
gimp_session_info_get_info (GimpSessionInfo *info)
{
g_return_if_fail (GIMP_IS_SESSION_INFO (info));
- g_return_if_fail (GTK_IS_WIDGET (info->widget));
+ g_return_if_fail (GTK_IS_WIDGET (info->p->widget));
gimp_session_info_read_geometry (info);
- info->aux_info = gimp_session_info_aux_get_list (info->widget);
+ info->p->aux_info = gimp_session_info_aux_get_list (info->p->widget);
- if (info->factory_entry == NULL ||
- (info->factory_entry &&
- info->factory_entry->dockable))
- info->books = gimp_session_info_dock_from_widget (GIMP_DOCK (info->widget));
+ if (info->p->factory_entry == NULL ||
+ (info->p->factory_entry &&
+ info->p->factory_entry->dockable))
+ info->p->books = gimp_session_info_dock_from_widget (GIMP_DOCK (info->p->widget));
}
void
@@ -597,20 +603,20 @@ gimp_session_info_clear_info (GimpSessionInfo *info)
{
g_return_if_fail (GIMP_IS_SESSION_INFO (info));
- if (info->aux_info)
+ if (info->p->aux_info)
{
- g_list_foreach (info->aux_info,
+ g_list_foreach (info->p->aux_info,
(GFunc) gimp_session_info_aux_free, NULL);
- g_list_free (info->aux_info);
- info->aux_info = NULL;
+ g_list_free (info->p->aux_info);
+ info->p->aux_info = NULL;
}
- if (info->books)
+ if (info->p->books)
{
- g_list_foreach (info->books,
+ g_list_foreach (info->p->books,
(GFunc) gimp_session_info_book_free, NULL);
- g_list_free (info->books);
- info->books = NULL;
+ g_list_free (info->p->books);
+ info->p->books = NULL;
}
}
@@ -620,8 +626,8 @@ gimp_session_info_is_singleton (GimpSessionInfo *info)
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE);
return (! gimp_session_info_is_for_dock (info) &&
- info->factory_entry &&
- info->factory_entry->singleton);
+ info->p->factory_entry &&
+ info->p->factory_entry->singleton);
}
gboolean
@@ -630,8 +636,8 @@ gimp_session_info_is_session_managed (GimpSessionInfo *info)
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE);
return (gimp_session_info_is_for_dock (info) ||
- (info->factory_entry &&
- info->factory_entry->session_managed));
+ (info->p->factory_entry &&
+ info->p->factory_entry->session_managed));
}
@@ -641,8 +647,8 @@ gimp_session_info_get_remember_size (GimpSessionInfo *info)
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE);
return (gimp_session_info_is_for_dock (info) ||
- (info->factory_entry &&
- info->factory_entry->remember_size));
+ (info->p->factory_entry &&
+ info->p->factory_entry->remember_size));
}
gboolean
@@ -651,8 +657,8 @@ gimp_session_info_get_remember_if_open (GimpSessionInfo *info)
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE);
return (gimp_session_info_is_for_dock (info) ||
- (info->factory_entry &&
- info->factory_entry->remember_if_open));
+ (info->p->factory_entry &&
+ info->p->factory_entry->remember_if_open));
}
GtkWidget *
@@ -660,7 +666,7 @@ gimp_session_info_get_widget (GimpSessionInfo *info)
{
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE);
- return info->widget;
+ return info->p->widget;
}
void
@@ -669,7 +675,7 @@ gimp_session_info_set_widget (GimpSessionInfo *info,
{
g_return_if_fail (GIMP_IS_SESSION_INFO (info));
- info->widget = widget;
+ info->p->widget = widget;
}
GimpDialogFactoryEntry *
@@ -677,7 +683,7 @@ gimp_session_info_get_factory_entry (GimpSessionInfo *info)
{
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE);
- return info->factory_entry;
+ return info->p->factory_entry;
}
void
@@ -686,7 +692,7 @@ gimp_session_info_set_factory_entry (GimpSessionInfo *info,
{
g_return_if_fail (GIMP_IS_SESSION_INFO (info));
- info->factory_entry = entry;
+ info->p->factory_entry = entry;
}
gboolean
@@ -694,7 +700,7 @@ gimp_session_info_get_open (GimpSessionInfo *info)
{
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), FALSE);
- return info->open;
+ return info->p->open;
}
gint
@@ -702,7 +708,7 @@ gimp_session_info_get_x (GimpSessionInfo *info)
{
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0);
- return info->x;
+ return info->p->x;
}
gint
@@ -710,7 +716,7 @@ gimp_session_info_get_y (GimpSessionInfo *info)
{
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0);
- return info->y;
+ return info->p->y;
}
gint
@@ -718,7 +724,7 @@ gimp_session_info_get_width (GimpSessionInfo *info)
{
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0);
- return info->width;
+ return info->p->width;
}
gint
@@ -726,5 +732,5 @@ gimp_session_info_get_height (GimpSessionInfo *info)
{
g_return_val_if_fail (GIMP_IS_SESSION_INFO (info), 0);
- return info->height;
+ return info->p->height;
}
diff --git a/app/widgets/gimpsessioninfo.h b/app/widgets/gimpsessioninfo.h
index 7c6d494..570823b 100644
--- a/app/widgets/gimpsessioninfo.h
+++ b/app/widgets/gimpsessioninfo.h
@@ -33,7 +33,8 @@
#define GIMP_SESSION_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_SESSION_INFO, GimpSessionInfoClass))
-typedef struct _GimpSessionInfoClass GimpSessionInfoClass;
+typedef struct _GimpSessionInfoPrivate GimpSessionInfoPrivate;
+typedef struct _GimpSessionInfoClass GimpSessionInfoClass;
/**
* Contains session info for one toplevel window in the interface such
@@ -41,31 +42,9 @@ typedef struct _GimpSessionInfoClass GimpSessionInfoClass;
*/
struct _GimpSessionInfo
{
- GimpObject parent_instance;
+ GimpObject parent_instance;
- gint x;
- gint y;
- gint width;
- gint height;
- gboolean right_align;
- gboolean bottom_align;
-
- /* only valid while restoring and saving the session */
- gboolean open;
- gint screen;
-
- /* dialog specific list of GimpSessionInfoAux */
- GList *aux_info;
-
- GtkWidget *widget;
-
- /* the dialog factory entry for object we have session info for
- * note that pure "dock" entries don't have any factory entry
- */
- GimpDialogFactoryEntry *factory_entry;
-
- /* list of GimpSessionInfoBook */
- GList *books;
+ GimpSessionInfoPrivate *p;
};
struct _GimpSessionInfoClass
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]