Updating branch refs/heads/master
         to 71a8070168881256735aac5cd5fc5683341d6a28 (commit)
       from 9d4d549cd0421cee1326f296b1adefd36f203fc5 (commit)

commit 71a8070168881256735aac5cd5fc5683341d6a28
Author: Mike Massonnet <[email protected]>
Date:   Wed Dec 2 17:01:11 2009 +0100

    Add Unique support for xfce4-notes and the settings dialog

 ChangeLog                           |    4 ++++
 configure.ac.in                     |    1 +
 panel-plugin/Makefile.am            |   14 +++++++++-----
 panel-plugin/main-status-icon.vala  |   13 +++++++++++++
 panel-plugin/xfce4-notes-settings.c |   27 +++++++++++++++++++++++++++
 5 files changed, 54 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2f4ae51..99589b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2009-12-02  Mike Massonnet <[email protected]>
 
+Add Unique support for xfce4-notes and the settings dialog
+
+2009-12-02  Mike Massonnet <[email protected]>
+
 Hide notebook border
 
 2009-12-01  Mike Massonnet <[email protected]>
diff --git a/configure.ac.in b/configure.ac.in
index 061fda6..63790a6 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -49,6 +49,7 @@ XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.4.0])
 XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.4.0])
 XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-1.0], [4.4.0])
 XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.6.0])
+XDT_CHECK_PACKAGE([UNIQUE], [unique-1.0], [1.0.0])
 
 dnl Check for libxfce4panel >= 4.7
 XDT_CHECK_OPTIONAL_PACKAGE([LIBXFCE4PANEL47], [libxfce4panel-1.0], [4.7.0], 
[], [])
diff --git a/panel-plugin/Makefile.am b/panel-plugin/Makefile.am
index 44fb002..3d15277 100644
--- a/panel-plugin/Makefile.am
+++ b/panel-plugin/Makefile.am
@@ -37,13 +37,15 @@ xfce4_notes_settings_CFLAGS =                               
                \
        @LIBX11_CFLAGS@                                                 \
        @GTK_CFLAGS@                                                    \
        @LIBXFCEGUI4_CFLAGS@                                            \
-       @XFCONF_CFLAGS@
+       @XFCONF_CFLAGS@                                                 \
+       @UNIQUE_CFLAGS@
 
 xfce4_notes_settings_LDADD =                                           \
        @LIBX11_LIBS@                                                   \
        @GTK_LIBS@                                                      \
        @LIBXFCEGUI4_LIBS@                                              \
-       @XFCONF_LIBS@
+       @XFCONF_LIBS@                                                   \
+       @UNIQUE_LIBS@
 
 #
 # Vala sources
@@ -83,7 +85,7 @@ vala.stamp: $(notes_VALASOURCES) 
$(notes_panel_plugin_VALASOURCES) $(notes_statu
        $(VALAC) $(DEFINES) --vapidir=$(srcdir) $(PACKAGES)                     
        \
                 --pkg=libxfconf-0 --pkg=libxfce4panel-1.0                      
        \
                 $(notes_VALASOURCES) $(notes_panel_plugin_VALASOURCES) -C
-       $(VALAC) $(DEFINES) --vapidir=$(srcdir) $(PACKAGES)                     
        \
+       $(VALAC) $(DEFINES) --vapidir=$(srcdir) $(PACKAGES) --pkg=unique-1.0    
        \
                 --pkg=xfce-autostart --pkg=libxfconf-0 --pkg=libxfce4util-1.0  
        \
                 $(notes_VALASOURCES) $(notes_status_icon_VALASOURCES) -C
        touch $@
@@ -170,14 +172,16 @@ xfce4_notes_CFLAGS =                                      
                \
        @GTK_CFLAGS@                                                    \
        @LIBXFCE4UTIL_CFLAGS@                                           \
        @LIBXFCEGUI4_CFLAGS@                                            \
-       @XFCONF_CFLAGS@
+       @XFCONF_CFLAGS@                                                 \
+       @UNIQUE_CFLAGS@
 
 xfce4_notes_LDADD =                                                    \
        @LIBX11_LIBS@                                                   \
        @GTK_LIBS@                                                      \
        @LIBXFCE4UTIL_LIBS@                                             \
        @LIBXFCEGUI4_LIBS@                                              \
-       @XFCONF_LIBS@
+       @XFCONF_LIBS@                                                   \
+       @UNIQUE_LIBS@
 
 #
 # Plugin desktop file
diff --git a/panel-plugin/main-status-icon.vala 
b/panel-plugin/main-status-icon.vala
index fd84021..0d975f7 100644
--- a/panel-plugin/main-status-icon.vala
+++ b/panel-plugin/main-status-icon.vala
@@ -128,6 +128,19 @@ public class Notes : GLib.Object {
 
        public static int main (string[] args) {
                Gtk.init (ref args);
+               Unique.App app = new Unique.App ("org.xfce.Notes", null);
+               if (app.is_running) {
+                       if (app.send_message (Unique.Command.ACTIVATE, null) == 
Unique.Response.OK) {
+                               app = null;
+                               return 0;
+                       }
+               }
+               app.message_received += (command, message_data, time_) => {
+                       if (command != Unique.Command.ACTIVATE) {
+                               return Unique.Response.PASSTHROUGH;
+                       }
+                       return Unique.Response.OK;
+               };
                GLib.Environment.set_application_name (_("Notes"));
                var notes = new Notes ();
                xfce.autosta...@set ("xfce4-notes-autostart", "xfce4-notes", 
false);
diff --git a/panel-plugin/xfce4-notes-settings.c 
b/panel-plugin/xfce4-notes-settings.c
index 767182c..60bc965 100644
--- a/panel-plugin/xfce4-notes-settings.c
+++ b/panel-plugin/xfce4-notes-settings.c
@@ -21,6 +21,7 @@
 #include <config.h>
 #endif
 
+#include <unique/unique.h>
 #include <xfconf/xfconf.h>
 #include <gtk/gtk.h>
 #include <libxfce4util/libxfce4util.h>
@@ -474,6 +475,22 @@ cb_color_button_pressed (GtkButton *button,
 
 
 
+static UniqueResponse
+cb_unique_app (UniqueApp *app,
+               gint command,
+               UniqueMessageData *message_data,
+               guint time_,
+               gpointer user_data)
+{
+  GtkWidget *dialog = user_data;
+  if (command != UNIQUE_ACTIVATE)
+    {
+      return UNIQUE_RESPONSE_PASSTHROUGH;
+    }
+  gtk_window_present (GTK_WINDOW (dialog));
+  return UNIQUE_RESPONSE_OK;
+}
+
 gint main (gint argc,
           gchar *argv[])
 {
@@ -481,7 +498,17 @@ gint main (gint argc,
   xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, NULL);
   xfconf_init (NULL);
   gtk_init (&argc, &argv);
+  UniqueApp *app = unique_app_new ("org.xfce.NotesSettings", NULL);
+  if (unique_app_is_running (app))
+    {
+      if (unique_app_send_message (app, UNIQUE_ACTIVATE, NULL) == 
UNIQUE_RESPONSE_OK)
+        {
+          g_object_unref (app);
+          return;
+        }
+    }
   dialog = prop_dialog_new ();
+  g_signal_connect (app, "message-received", G_CALLBACK (cb_unique_app), 
dialog);
   gtk_dialog_run (GTK_DIALOG (dialog));
   gtk_widget_destroy (dialog);
   xfconf_shutdown ();
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to