summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile.am1
-rw-r--r--src/eom-application-internal.h60
-rw-r--r--src/eom-application.c88
-rw-r--r--src/eom-application.h21
-rw-r--r--src/eom-window.c9
-rw-r--r--src/main.c3
6 files changed, 121 insertions, 61 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 79fe623..8f9cab7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -16,6 +16,7 @@ MARSHAL_OUTPUT = \
eom-marshal.c
NOINST_H_FILES = \
+ eom-application-internal.h \
eom-session.h \
eom-util.h \
eom-pixbuf-util.h \
diff --git a/src/eom-application-internal.h b/src/eom-application-internal.h
new file mode 100644
index 0000000..07755e2
--- /dev/null
+++ b/src/eom-application-internal.h
@@ -0,0 +1,60 @@
+/* Eye Of Gnome - Application Facade (internal)
+ *
+ * Copyright (C) 2006-2012 The Free Software Foundation
+ *
+ * Author: Lucas Rocha <[email protected]>
+ *
+ * Based on evince code (shell/ev-application.h) by:
+ * - Martin Kretzschmar <[email protected]>
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __EOM_APPLICATION_INTERNAL_H__
+#define __EOM_APPLICATION_INTERNAL_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <libpeas/peas-extension-set.h>
+
+#include "eom-application.h"
+#include "eom-plugin-engine.h"
+#include "egg-toolbars-model.h"
+#include "eom-window.h"
+
+G_BEGIN_DECLS
+
+struct _EomApplicationPrivate {
+ EggToolbarsModel *toolbars_model;
+ gchar *toolbars_file;
+ EomPluginEngine *plugin_engine;
+
+ EomStartupFlags flags;
+
+ PeasExtensionSet *extensions;
+};
+
+
+EggToolbarsModel *eom_application_get_toolbars_model (EomApplication *application);
+
+void eom_application_save_toolbars_model (EomApplication *application);
+
+void eom_application_reset_toolbars_model (EomApplication *app);
+
+G_END_DECLS
+
+#endif /* __EOM_APPLICATION_INTERNAL_H__ */
+
diff --git a/src/eom-application.c b/src/eom-application.c
index 1ab52d1..9830bd2 100644
--- a/src/eom-application.c
+++ b/src/eom-application.c
@@ -31,6 +31,7 @@
#include "eom-window.h"
#include "eom-application.h"
#include "eom-application-activatable.h"
+#include "eom-application-internal.h"
#include "eom-util.h"
#include <string.h>
@@ -55,7 +56,7 @@ eom_application_activate (GApplication *application)
{
eom_application_open_window (EOM_APPLICATION (application),
GDK_CURRENT_TIME,
- EOM_APPLICATION (application)->flags,
+ EOM_APPLICATION (application)->priv->flags,
NULL);
}
@@ -72,7 +73,7 @@ eom_application_open (GApplication *application,
eom_application_open_file_list (EOM_APPLICATION (application),
list, GDK_CURRENT_TIME,
- EOM_APPLICATION (application)->flags,
+ EOM_APPLICATION (application)->priv->flags,
NULL);
}
@@ -80,19 +81,20 @@ static void
eom_application_finalize (GObject *object)
{
EomApplication *application = EOM_APPLICATION (object);
+ EomApplicationPrivate *priv = application->priv;
- if (application->toolbars_model) {
- g_object_unref (application->toolbars_model);
- application->toolbars_model = NULL;
- g_free (application->toolbars_file);
- application->toolbars_file = NULL;
+ if (priv->toolbars_model) {
+ g_object_unref (priv->toolbars_model);
+ priv->toolbars_model = NULL;
+ g_free (priv->toolbars_file);
+ priv->toolbars_file = NULL;
}
- g_clear_object (&application->extensions);
+ g_clear_object (&priv->extensions);
- if (application->plugin_engine) {
- g_object_unref (application->plugin_engine);
- application->plugin_engine = NULL;
+ if (priv->plugin_engine) {
+ g_object_unref (priv->plugin_engine);
+ priv->plugin_engine = NULL;
}
eom_application_save_accelerators ();
}
@@ -106,10 +108,10 @@ eom_application_add_platform_data (GApplication *application,
G_APPLICATION_CLASS (eom_application_parent_class)->add_platform_data (application,
builder);
- if (app->flags) {
+ if (app->priv->flags) {
g_variant_builder_add (builder, "{sv}",
"eom-application-startup-flags",
- g_variant_new_byte (app->flags));
+ g_variant_new_byte (app->priv->flags));
}
}
@@ -121,11 +123,11 @@ eom_application_before_emit (GApplication *application,
const gchar *key;
GVariant *value;
- EOM_APPLICATION (application)->flags = 0;
+ EOM_APPLICATION (application)->priv->flags = 0;
g_variant_iter_init (&iter, platform_data);
while (g_variant_iter_loop (&iter, "{&sv}", &key, &value)) {
if (strcmp (key, "eom-application-startup-flags") == 0) {
- EOM_APPLICATION (application)->flags = g_variant_get_byte (value);
+ EOM_APPLICATION (application)->priv->flags = g_variant_get_byte (value);
}
}
@@ -139,6 +141,9 @@ eom_application_class_init (EomApplicationClass *eom_application_class)
GApplicationClass *application_class;
GObjectClass *object_class;
+ g_type_class_add_private (eom_application_class,
+ sizeof (EomApplicationPrivate));
+
application_class = (GApplicationClass *) eom_application_class;
object_class = (GObjectClass *) eom_application_class;
@@ -171,42 +176,46 @@ on_extension_removed (PeasExtensionSet *set,
static void
eom_application_init (EomApplication *eom_application)
{
+ EomApplicationPrivate *priv;
const gchar *dot_dir = eom_util_dot_dir ();
eom_session_init (eom_application);
- eom_application->toolbars_model = egg_toolbars_model_new ();
- eom_application->plugin_engine = eom_plugin_engine_new ();
- eom_application->flags = 0;
+ eom_application->priv = EOM_APPLICATION_GET_PRIVATE (eom_application);
+ priv = eom_application->priv;
+
+ priv->toolbars_model = egg_toolbars_model_new ();
+ priv->plugin_engine = eom_plugin_engine_new ();
+ priv->flags = 0;
- egg_toolbars_model_load_names (eom_application->toolbars_model,
+ egg_toolbars_model_load_names (priv->toolbars_model,
EOM_DATA_DIR "/eom-toolbar.xml");
if (G_LIKELY (dot_dir != NULL))
- eom_application->toolbars_file = g_build_filename
+ priv->toolbars_file = g_build_filename
(dot_dir, "eom_toolbar.xml", NULL);
- if (!dot_dir || !egg_toolbars_model_load_toolbars (eom_application->toolbars_model,
- eom_application->toolbars_file)) {
+ if (!dot_dir || !egg_toolbars_model_load_toolbars (priv->toolbars_model,
+ priv->toolbars_file)) {
- egg_toolbars_model_load_toolbars (eom_application->toolbars_model,
+ egg_toolbars_model_load_toolbars (priv->toolbars_model,
EOM_DATA_DIR "/eom-toolbar.xml");
}
- egg_toolbars_model_set_flags (eom_application->toolbars_model, 0,
+ egg_toolbars_model_set_flags (priv->toolbars_model, 0,
EGG_TB_MODEL_NOT_REMOVABLE);
eom_application_load_accelerators ();
- eom_application->extensions = peas_extension_set_new (
- PEAS_ENGINE (eom_application->plugin_engine),
+ priv->extensions = peas_extension_set_new (
+ PEAS_ENGINE (priv->plugin_engine),
EOM_TYPE_APPLICATION_ACTIVATABLE,
"app", EOM_APPLICATION (eom_application),
NULL);
- peas_extension_set_call (eom_application->extensions, "activate");
- g_signal_connect (eom_application->extensions, "extension-added",
+ peas_extension_set_call (priv->extensions, "activate");
+ g_signal_connect (priv->extensions, "extension-added",
G_CALLBACK (on_extension_added), eom_application);
- g_signal_connect (eom_application->extensions, "extension-removed",
+ g_signal_connect (priv->extensions, "extension-removed",
G_CALLBACK (on_extension_removed), eom_application);
}
@@ -475,7 +484,7 @@ eom_application_get_toolbars_model (EomApplication *application)
{
g_return_val_if_fail (EOM_IS_APPLICATION (application), NULL);
- return application->toolbars_model;
+ return application->priv->toolbars_model;
}
/**
@@ -487,9 +496,9 @@ eom_application_get_toolbars_model (EomApplication *application)
void
eom_application_save_toolbars_model (EomApplication *application)
{
- if (G_LIKELY(application->toolbars_file != NULL))
- egg_toolbars_model_save_toolbars (application->toolbars_model,
- application->toolbars_file,
+ if (G_LIKELY(application->priv->toolbars_file != NULL))
+ egg_toolbars_model_save_toolbars (application->priv->toolbars_model,
+ application->priv->toolbars_file,
"1.0");
}
@@ -502,17 +511,20 @@ eom_application_save_toolbars_model (EomApplication *application)
void
eom_application_reset_toolbars_model (EomApplication *app)
{
+ EomApplicationPrivate *priv;
g_return_if_fail (EOM_IS_APPLICATION (app));
- g_object_unref (app->toolbars_model);
+ priv = app->priv;
+
+ g_object_unref (app->priv->toolbars_model);
- app->toolbars_model = egg_toolbars_model_new ();
+ priv->toolbars_model = egg_toolbars_model_new ();
- egg_toolbars_model_load_names (app->toolbars_model,
+ egg_toolbars_model_load_names (priv->toolbars_model,
EOM_DATA_DIR "/eom-toolbar.xml");
- egg_toolbars_model_load_toolbars (app->toolbars_model,
+ egg_toolbars_model_load_toolbars (priv->toolbars_model,
EOM_DATA_DIR "/eom-toolbar.xml");
- egg_toolbars_model_set_flags (app->toolbars_model, 0,
+ egg_toolbars_model_set_flags (priv->toolbars_model, 0,
EGG_TB_MODEL_NOT_REMOVABLE);
}
diff --git a/src/eom-application.h b/src/eom-application.h
index 01e8887..f3913ba 100644
--- a/src/eom-application.h
+++ b/src/eom-application.h
@@ -25,14 +25,12 @@
#ifndef __EOM_APPLICATION_H__
#define __EOM_APPLICATION_H__
-#include "eom-window.h"
-#include "eom-plugin-engine.h"
-#include "egg-toolbars-model.h"
-
#include <glib.h>
#include <glib-object.h>
#include <libpeas/peas-extension-set.h>
+#include <gtk/gtk.h>
+#include "eom-window.h"
G_BEGIN_DECLS
@@ -52,14 +50,7 @@ typedef struct _EomApplicationPrivate EomApplicationPrivate;
struct _EomApplication {
GtkApplication base_instance;
- EggToolbarsModel *toolbars_model;
- gchar *toolbars_file;
-
- EomPluginEngine *plugin_engine;
-
- EomStartupFlags flags;
-
- PeasExtensionSet *extensions;
+ EomApplicationPrivate *priv;
};
struct _EomApplicationClass {
@@ -93,12 +84,6 @@ gboolean eom_application_open_uris (EomApplication *applicati
EomStartupFlags flags,
GError **error);
-EggToolbarsModel *eom_application_get_toolbars_model (EomApplication *application);
-
-void eom_application_save_toolbars_model (EomApplication *application);
-
-void eom_application_reset_toolbars_model (EomApplication *app);
-
G_END_DECLS
#endif /* __EOM_APPLICATION_H__ */
diff --git a/src/eom-window.c b/src/eom-window.c
index 1ac7365..787c116 100644
--- a/src/eom-window.c
+++ b/src/eom-window.c
@@ -44,6 +44,7 @@
#include "eom-print.h"
#include "eom-error-message-area.h"
#include "eom-application.h"
+#include "eom-application-internal.h"
#include "eom-thumb-nav.h"
#include "eom-config-keys.h"
#include "eom-job-queue.h"
@@ -4664,12 +4665,12 @@ eom_window_dispose (GObject *object)
window = EOM_WINDOW (object);
priv = window->priv;
- peas_engine_garbage_collect (PEAS_ENGINE (EOM_APP->plugin_engine));
+ peas_engine_garbage_collect (PEAS_ENGINE (EOM_APP->priv->plugin_engine));
if (priv->extensions != NULL) {
g_object_unref (priv->extensions);
priv->extensions = NULL;
- peas_engine_garbage_collect (PEAS_ENGINE (EOM_APP->plugin_engine));
+ peas_engine_garbage_collect (PEAS_ENGINE (EOM_APP->priv->plugin_engine));
}
if (priv->page_setup != NULL) {
@@ -4789,7 +4790,7 @@ eom_window_dispose (GObject *object)
priv->last_save_as_folder = NULL;
}
- peas_engine_garbage_collect (PEAS_ENGINE (EOM_APP->plugin_engine));
+ peas_engine_garbage_collect (PEAS_ENGINE (EOM_APP->priv->plugin_engine));
G_OBJECT_CLASS (eom_window_parent_class)->dispose (object);
}
@@ -5127,7 +5128,7 @@ eom_window_constructor (GType type,
eom_window_construct_ui (EOM_WINDOW (object));
- priv->extensions = peas_extension_set_new (PEAS_ENGINE (EOM_APP->plugin_engine),
+ priv->extensions = peas_extension_set_new (PEAS_ENGINE (EOM_APP->priv->plugin_engine),
EOM_TYPE_WINDOW_ACTIVATABLE,
"window",
EOM_WINDOW (object), NULL);
diff --git a/src/main.c b/src/main.c
index bafaaf3..d7fd2a1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -35,6 +35,7 @@
#include "eom-thumbnail.h"
#include "eom-job-queue.h"
#include "eom-application.h"
+#include "eom-application-internal.h"
#include "eom-util.h"
#include <string.h>
@@ -161,7 +162,7 @@ main (int argc, char **argv)
gtk_window_set_default_icon_name ("eom");
g_set_application_name (_("Eye of MATE Image Viewer"));
- EOM_APP->flags = flags;
+ EOM_APP->priv->flags = flags;
if (force_new_instance) {
GApplicationFlags app_flags = g_application_get_flags (G_APPLICATION (EOM_APP));
app_flags |= G_APPLICATION_NON_UNIQUE;