aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-10-07 18:31:11 +0000
committerChristian Grothoff <christian@grothoff.org>2013-10-07 18:31:11 +0000
commitd81312d3f27cb390c23778619af3586de0679b5f (patch)
tree1f40c655d7731a384dabc07d2794f27241155325
parent194b522a49637811f14680dcf16079365d010a77 (diff)
downloadgnunet-gtk-d81312d3f27cb390c23778619af3586de0679b5f.tar.gz
gnunet-gtk-d81312d3f27cb390c23778619af3586de0679b5f.zip
make sure to only start one instance of gnunet-peerinfo-gtk at a time
-rw-r--r--src/fs/Makefile.am6
-rw-r--r--src/peerinfo/Makefile.am9
-rw-r--r--src/peerinfo/gnunet-peerinfo-gtk.c132
3 files changed, 88 insertions, 59 deletions
diff --git a/src/fs/Makefile.am b/src/fs/Makefile.am
index 553822ee..5d4c14e3 100644
--- a/src/fs/Makefile.am
+++ b/src/fs/Makefile.am
@@ -25,7 +25,7 @@ gnunet_fs_gtk_SOURCES = \
25 gnunet-fs-gtk_open-uri.c gnunet-fs-gtk_open-uri.h \ 25 gnunet-fs-gtk_open-uri.c gnunet-fs-gtk_open-uri.h \
26 gnunet-fs-gtk_unindex.c gnunet-fs-gtk_unindex.h \ 26 gnunet-fs-gtk_unindex.c gnunet-fs-gtk_unindex.h \
27 gnunet-fs-gtk_publish-dialog.c \ 27 gnunet-fs-gtk_publish-dialog.c \
28 gnunet-fs-gtk_publish-edit-dialog.c gnunet-fs-gtk_publish-edit-dialog.h 28 gnunet-fs-gtk_publish-edit-dialog.c gnunet-fs-gtk_publish-edit-dialog.h
29 29
30gnunet_fs_gtk_LDADD = \ 30gnunet_fs_gtk_LDADD = \
31 $(top_builddir)/src/lib/libgnunetgtk.la \ 31 $(top_builddir)/src/lib/libgnunetgtk.la \
@@ -39,9 +39,9 @@ gnunet_fs_gtk_LDADD = \
39 -lgnunetgns \ 39 -lgnunetgns \
40 -lgnunetnamestore \ 40 -lgnunetnamestore \
41 -lgnunetidentity \ 41 -lgnunetidentity \
42 $(INTLLIBS) 42 $(INTLLIBS)
43gnunet_fs_gtk_LDFLAGS = \ 43gnunet_fs_gtk_LDFLAGS = \
44 -export-dynamic 44 -export-dynamic
45 45
46pkgcfgdir= $(prefix)/share/gnunet/config.d/ 46pkgcfgdir= $(prefix)/share/gnunet/config.d/
47 47
diff --git a/src/peerinfo/Makefile.am b/src/peerinfo/Makefile.am
index b39bb91a..ec4271fa 100644
--- a/src/peerinfo/Makefile.am
+++ b/src/peerinfo/Makefile.am
@@ -5,7 +5,8 @@ INCLUDES = \
5 -I$(top_srcdir)/src/include \ 5 -I$(top_srcdir)/src/include \
6 @GTK_CFLAGS@ \ 6 @GTK_CFLAGS@ \
7 @GNUNET_CFLAGS@ \ 7 @GNUNET_CFLAGS@ \
8 @GLADE_CFLAGS@ 8 @GLADE_CFLAGS@ \
9 @unique_CFLAGS@
9 10
10bin_PROGRAMS = gnunet-peerinfo-gtk 11bin_PROGRAMS = gnunet-peerinfo-gtk
11 12
@@ -16,8 +17,8 @@ gnunet_peerinfo_gtk_SOURCES = \
16gnunet_peerinfo_gtk_LDADD = \ 17gnunet_peerinfo_gtk_LDADD = \
17 $(top_builddir)/src/lib/libgnunetgtk.la \ 18 $(top_builddir)/src/lib/libgnunetgtk.la \
18 @GTK_LIBS@ \ 19 @GTK_LIBS@ \
19 @GLADE_LIBS@ @GNUNET_LIBS@ \ 20 @GLADE_LIBS@ @GNUNET_LIBS@ @unique_LIBS@ \
20 -lgnunetutil -lgnunetpeerinfo -lgnunettransport -lgnunetats \ 21 -lgnunetutil -lgnunetpeerinfo -lgnunettransport -lgnunetats \
21 $(INTLLIBS) 22 $(INTLLIBS)
22gnunet_peerinfo_gtk_LDFLAGS = \ 23gnunet_peerinfo_gtk_LDFLAGS = \
23 -export-dynamic 24 -export-dynamic
diff --git a/src/peerinfo/gnunet-peerinfo-gtk.c b/src/peerinfo/gnunet-peerinfo-gtk.c
index d62c0b06..3a8e46b9 100644
--- a/src/peerinfo/gnunet-peerinfo-gtk.c
+++ b/src/peerinfo/gnunet-peerinfo-gtk.c
@@ -29,62 +29,66 @@
29#include <gnunet/gnunet_ats_service.h> 29#include <gnunet/gnunet_ats_service.h>
30#include "gnunet-peerinfo-gtk-flags.h" 30#include "gnunet-peerinfo-gtk-flags.h"
31 31
32#if HAVE_LIBUNIQUE
33#include <unique/unique.h>
34#endif
35
32 36
33/** 37/**
34 * Columns in the peerinfo model. 38 * Columns in the peerinfo model.
35 */ 39 */
36enum PEERINFO_ModelColumns 40enum PEERINFO_ModelColumns
37 { 41{
38 /** 42 /**
39 * A gchararray 43 * A gchararray
40 */ 44 */
41 PEERINFO_MC_PEER_IDENTITY_STRING = 0, 45 PEERINFO_MC_PEER_IDENTITY_STRING = 0,
42 46
43 /** 47 /**
44 * A guint 48 * A guint
45 */ 49 */
46 PEERINFO_MC_NUMBER_OF_ADDRESSES = 1, 50 PEERINFO_MC_NUMBER_OF_ADDRESSES = 1,
47 51
48 /** 52 /**
49 * A gchararray 53 * A gchararray
50 */ 54 */
51 PEERINFO_MC_COUNTRY_NAME = 2, 55 PEERINFO_MC_COUNTRY_NAME = 2,
52 56
53 /** 57 /**
54 * A GdkPixbuf 58 * A GdkPixbuf
55 */ 59 */
56 PEERINFO_MC_COUNTRY_FLAG = 3, 60 PEERINFO_MC_COUNTRY_FLAG = 3,
57 61
58 /** 62 /**
59 * A guint64 63 * A guint64
60 */ 64 */
61 PEERINFO_MC_BANDWIDTH_IN = 4, 65 PEERINFO_MC_BANDWIDTH_IN = 4,
62 66
63 /** 67 /**
64 * A guint64 68 * A guint64
65 */ 69 */
66 PEERINFO_MC_BANDWIDTH_OUT = 5, 70 PEERINFO_MC_BANDWIDTH_OUT = 5,
67 71
68 /** 72 /**
69 * A gchararray 73 * A gchararray
70 */ 74 */
71 PEERINFO_MC_ADDRESS_AS_STRING = 6, 75 PEERINFO_MC_ADDRESS_AS_STRING = 6,
72 76
73 /** 77 /**
74 * A GdkPixbuf 78 * A GdkPixbuf
75 */ 79 */
76 PEERINFO_MC_CONNECTIVITY_LED = 7, 80 PEERINFO_MC_CONNECTIVITY_LED = 7,
77 81
78 /** 82 /**
79 * A gboolean 83 * A gboolean
80 */ 84 */
81 PEERINFO_MC_CONNECTED_STATUS = 8, 85 PEERINFO_MC_CONNECTED_STATUS = 8,
82 86
83 /** 87 /**
84 * A gboolean 88 * A gboolean
85 */ 89 */
86 PEERINFO_MC_IS_FRIEND = 9 90 PEERINFO_MC_IS_FRIEND = 9
87 }; 91};
88 92
89 93
90/** 94/**
@@ -155,6 +159,10 @@ static GdkPixbuf *led_red;
155static GtkListStore *ls; 159static GtkListStore *ls;
156 160
157 161
162#if HAVE_LIBUNIQUE
163static UniqueApp *unique_app;
164#endif
165
158 166
159/** 167/**
160 * Get cfg. 168 * Get cfg.
@@ -518,6 +526,9 @@ run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
518 "gnunet-gtk" /* FIXME: different icon? */ , 526 "gnunet-gtk" /* FIXME: different icon? */ ,
519 "gnunet-peerinfo-gtk"); 527 "gnunet-peerinfo-gtk");
520 528
529#if HAVE_LIBUNIQUE
530 unique_app_watch_window (unique_app, GTK_WINDOW (main_window));
531#endif
521 /* make GUI visible */ 532 /* make GUI visible */
522 if (!tray_only) 533 if (!tray_only)
523 { 534 {
@@ -537,7 +548,7 @@ run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
537 * @return 0 on success 548 * @return 0 on success
538 */ 549 */
539int 550int
540main (int argc, char *const *argv) 551main (int argc, char **argv)
541{ 552{
542 static struct GNUNET_GETOPT_CommandLineOption options[] = { 553 static struct GNUNET_GETOPT_CommandLineOption options[] = {
543 {'t', "tray", NULL, 554 {'t', "tray", NULL,
@@ -546,6 +557,19 @@ main (int argc, char *const *argv)
546 GNUNET_GETOPT_OPTION_END 557 GNUNET_GETOPT_OPTION_END
547 }; 558 };
548 559
560#if HAVE_LIBUNIQUE
561 gtk_init (&argc, &argv);
562 unique_app = unique_app_new ("org.gnunet.gnunet-peerinfo-gtk", NULL);
563 if (unique_app_is_running (unique_app))
564 {
565 UniqueResponse response;
566
567 response = unique_app_send_message (unique_app, UNIQUE_ACTIVATE, NULL);
568 g_object_unref (unique_app);
569 return (UNIQUE_RESPONSE_OK == response) ? 0 : 1;
570 }
571#endif
572
549 if (GNUNET_OK != 573 if (GNUNET_OK !=
550 GNUNET_GTK_main_loop_start ("gnunet-peerinfo-gtk", 574 GNUNET_GTK_main_loop_start ("gnunet-peerinfo-gtk",
551 "GTK GUI for inspecting GNUnet Peers", argc, 575 "GTK GUI for inspecting GNUnet Peers", argc,
@@ -553,6 +577,10 @@ main (int argc, char *const *argv)
553 "gnunet_peerinfo_gtk_main_window.glade", 577 "gnunet_peerinfo_gtk_main_window.glade",
554 &run)) 578 &run))
555 return 1; 579 return 1;
580
581#if HAVE_LIBUNIQUE
582 g_object_unref (unique_app);
583#endif
556 return 0; 584 return 0;
557} 585}
558 586