[devhelp/gnome-2-32] Revert "port to GApplication (GNOME bug 624197)"
- From: Frederic Peters <fpeters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [devhelp/gnome-2-32] Revert "port to GApplication (GNOME bug 624197)"
- Date: Mon, 13 Sep 2010 10:19:32 +0000 (UTC)
commit 91cf4c38f7b2e6c09fe4d0acb3738c5edb3df33e
Author: Frédéric Péters <fpeters 0d be>
Date: Sat Sep 4 09:59:22 2010 +0200
Revert "port to GApplication (GNOME bug 624197)"
This reverts commit 87f2924b00e00caa06761b7b452890d7ab92f4d5.
configure.ac | 2 +-
src/dh-main.c | 232 ++++++++++++++++++--------------------------------------
2 files changed, 76 insertions(+), 158 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 16b4a32..098b8a0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -63,7 +63,7 @@ PKG_CHECK_MODULES(DEVHELP, [
gthread-2.0 >= 2.10.0
gtk+-2.0 >= 2.10.0
webkit-1.0 >= 1.1.13
- glib-2.0 >= 2.25.11
+ unique-1.0
])
PKG_CHECK_MODULES(LIBDEVHELP, [
diff --git a/src/dh-main.c b/src/dh-main.c
index cac6533..609f9fb 100644
--- a/src/dh-main.c
+++ b/src/dh-main.c
@@ -20,12 +20,10 @@
*/
#include "config.h"
-
-#include <stdlib.h>
#include <string.h>
-
#include <glib/gi18n.h>
#include <gtk/gtk.h>
+#include <unique/unique.h>
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
@@ -35,6 +33,11 @@
#include "dh-window.h"
#include "dh-assistant.h"
+#define COMMAND_QUIT 1
+#define COMMAND_SEARCH 2
+#define COMMAND_SEARCH_ASSISTANT 3
+#define COMMAND_FOCUS_SEARCH 4
+#define COMMAND_RAISE 5
static void
extract_book_id (const gchar *str,
@@ -107,127 +110,51 @@ search_assistant (DhBase *base,
return dh_assistant_search (DH_ASSISTANT (assistant), str);
}
-
-static GApplication *application = NULL;
-
-
-static void
-dh_quit (DhBase *base,
- const char *data)
-{
- gtk_main_quit ();
-}
-
-static void
-dh_search (DhBase *base,
- const char *data)
-{
- GtkWidget *window;
-
- window = dh_base_get_window (base);
- search_normal (DH_WINDOW (window), data);
- gtk_window_present (GTK_WINDOW (window));
-}
-
-static void
-dh_search_assistant (DhBase *base,
- const char *data)
-{
- search_assistant (base, data);
-}
-
-static void
-dh_focus_search (DhBase *base,
- const char *data)
+static UniqueResponse
+unique_app_message_cb (UniqueApp *unique_app,
+ gint command,
+ UniqueMessageData *data,
+ guint timestamp,
+ gpointer user_data)
{
+ DhBase *base = user_data;
+ gchar *search_string;
GtkWidget *window;
- window = dh_base_get_window (base);
- dh_window_focus_search (DH_WINDOW (window));
- gtk_window_present (GTK_WINDOW (window));
-}
+ if (command == COMMAND_QUIT) {
+ gtk_main_quit ();
+ return UNIQUE_RESPONSE_OK;
+ }
-static void
-dh_raise (DhBase *base,
- const char *data)
-{
- GtkWidget *window;
+ if (command == COMMAND_SEARCH_ASSISTANT) {
+ search_string = unique_message_data_get_text(data);
+ search_assistant (base, search_string);
+ g_free (search_string);
+ return UNIQUE_RESPONSE_OK;
+ }
window = dh_base_get_window (base);
- gtk_window_present (GTK_WINDOW (window));
-}
-
-
-enum
-{
- COMMAND_QUIT,
- COMMAND_SEARCH,
- COMMAND_SEARCH_ASSISTANT,
- COMMAND_FOCUS_SEARCH,
- COMMAND_RAISE,
- N_COMMANDS,
-};
-
-static const struct dh_command {
- const gchar * const name;
- const gchar * const description;
- void (*handler)(DhBase *, const char *);
-} commands[N_COMMANDS] = {
- [COMMAND_QUIT] = { "quit", "quit any running devhelp", dh_quit },
- [COMMAND_SEARCH] = { "search", "search for a keyword", dh_search },
- [COMMAND_SEARCH_ASSISTANT] = { "search-assistant", "search and display any hit in the assitant window", dh_search_assistant },
- [COMMAND_FOCUS_SEARCH] = { "focus-search", "focus the devhelp window with the search field active", dh_focus_search },
- [COMMAND_RAISE] = { "raise", "raise any running devhelp window", dh_raise },
-};
-
-
-static void
-dh_action_handler (GApplication *app,
- gchar *name,
- GVariant *platform_data,
- gpointer user_data)
-{
- char *data = NULL;
- DhBase *base;
- guint i;
-
- g_return_if_fail (DH_IS_BASE (user_data));
-
- base = DH_BASE (user_data);
-
- if (platform_data) {
- GVariantIter iter;
- const char *key;
- GVariant *value;
-
- g_variant_iter_init (&iter, platform_data);
- while (g_variant_iter_next (&iter, "{&sv}", &key, &value)) {
- if (g_strcmp0 (key, "data") == 0) {
- data = g_variant_dup_string (value, NULL);
- g_variant_unref (value);
- break;
- }
- g_variant_unref (value);
- }
+ if (command == COMMAND_SEARCH) {
+ search_string = unique_message_data_get_text(data);
+ search_normal (DH_WINDOW (window), search_string);
+ g_free (search_string);
}
-
- for (i = 0; i < N_COMMANDS; i++) {
- if (g_strcmp0 (name, commands[i].name) == 0) {
- commands[i].handler (base, data);
- }
+ else if (command == COMMAND_FOCUS_SEARCH) {
+ dh_window_focus_search (DH_WINDOW (window));
}
- g_free (data);
-}
-
-static void
-dh_register_commands (GApplication *application)
-{
- guint i;
+#ifdef GDK_WINDOWING_X11
+#if GTK_CHECK_VERSION (2,14,0)
+ timestamp = gdk_x11_get_server_time (gtk_widget_get_window (window));
+#else
+ timestamp = gdk_x11_get_server_time (window->window);
+#endif
+#else
+ timestamp = GDK_CURRENT_TIME;
+#endif
- for (i = 0; i < G_N_ELEMENTS (commands); i++) {
- g_application_add_action (application, commands[i].name, commands[i].description);
- }
+ gtk_window_present_with_time (GTK_WINDOW (window), timestamp);
+ return UNIQUE_RESPONSE_OK;
}
int
@@ -238,6 +165,7 @@ main (int argc, char **argv)
gboolean option_quit = FALSE;
gboolean option_focus_search = FALSE;
gboolean option_version = FALSE;
+ UniqueApp *unique_app;
DhBase *base;
GtkWidget *window;
GError *error = NULL;
@@ -307,81 +235,71 @@ main (int argc, char **argv)
g_set_application_name (_("Devhelp"));
gtk_window_set_default_icon_name ("devhelp");
- application = g_initable_new (G_TYPE_APPLICATION,
- NULL,
- NULL,
- "application-id", "org.gnome.Devhelp",
- "argv", g_variant_new_bytestring_array ((const char * const *) argv, argc),
- "default-quit", FALSE,
- NULL);
+ unique_app = unique_app_new_with_commands ("org.gnome.Devhelp", NULL,
+ "quit", COMMAND_QUIT,
+ "search", COMMAND_SEARCH,
+ "search_assistant", COMMAND_SEARCH_ASSISTANT,
+ "focus_search", COMMAND_FOCUS_SEARCH,
+ "raise", COMMAND_RAISE,
+ NULL
+ );
- if (g_application_is_remote (G_APPLICATION (application))) {
- GVariant *data = NULL;
- GVariantBuilder builder;
-
- g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+ if (unique_app_is_running (unique_app)) {
+ UniqueMessageData *message_data = NULL;
if (option_quit) {
- g_application_invoke_action (G_APPLICATION (application), commands[COMMAND_QUIT].name, data);
+ unique_app_send_message (unique_app, COMMAND_QUIT, NULL);
}
else if (option_search) {
- g_variant_builder_add (&builder, "{sv}", "data", g_variant_new_string (option_search));
- data = g_variant_builder_end (&builder);
-
- g_application_invoke_action (G_APPLICATION (application), commands[COMMAND_SEARCH].name, data);
-
- g_variant_unref (data);
+ message_data = unique_message_data_new ();
+ unique_message_data_set_text (message_data, option_search, -1);
+ unique_app_send_message (unique_app, COMMAND_SEARCH, message_data);
+ unique_message_data_free (message_data);
}
else if (option_search_assistant) {
- g_variant_builder_add (&builder, "{sv}", "data", g_variant_new_string (option_search_assistant));
- data = g_variant_builder_end (&builder);
-
- g_application_invoke_action (G_APPLICATION (application), commands[COMMAND_SEARCH_ASSISTANT].name, data);
-
- g_variant_unref (data);
+ message_data = unique_message_data_new ();
+ unique_message_data_set_text (message_data, option_search_assistant, -1);
+ unique_app_send_message (unique_app, COMMAND_SEARCH_ASSISTANT, message_data);
+ unique_message_data_free (message_data);
}
else if (option_focus_search) {
- g_application_invoke_action (G_APPLICATION (application), commands[COMMAND_FOCUS_SEARCH].name, data);
+ unique_app_send_message (unique_app, COMMAND_FOCUS_SEARCH, NULL);
} else {
- g_application_invoke_action (G_APPLICATION (application), commands[COMMAND_RAISE].name, data);
+ unique_app_send_message (unique_app, COMMAND_RAISE, NULL);
}
- gdk_notify_startup_complete ();
- g_object_unref (application);
- return EXIT_SUCCESS;
- } else {
- dh_register_commands (G_APPLICATION (application));
+ g_object_unref (unique_app);
+ return 0;
}
if (option_quit) {
/* No running Devhelps so just quit */
- return EXIT_SUCCESS;
+ return 0;
}
base = dh_base_new ();
- g_signal_connect (G_APPLICATION (application), "action-with-data",
- G_CALLBACK (dh_action_handler), base);
+ g_signal_connect (unique_app, "message-received",
+ G_CALLBACK (unique_app_message_cb), base);
if (!option_search_assistant) {
window = dh_base_new_window (base);
- if (option_search) {
- search_normal (DH_WINDOW (window), option_search);
- }
+ if (option_search) {
+ search_normal (DH_WINDOW (window), option_search);
+ }
gtk_widget_show (window);
} else {
if (!search_assistant (base, option_search_assistant)) {
- return EXIT_SUCCESS;
- }
+ return 0;
+ }
}
gtk_main ();
g_object_unref (base);
- g_object_unref (application);
+ g_object_unref (unique_app);
- return EXIT_SUCCESS;
+ return 0;
}
-
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]