diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-10-07 18:31:11 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-10-07 18:31:11 +0000 |
commit | d81312d3f27cb390c23778619af3586de0679b5f (patch) | |
tree | 1f40c655d7731a384dabc07d2794f27241155325 | |
parent | 194b522a49637811f14680dcf16079365d010a77 (diff) | |
download | gnunet-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.am | 6 | ||||
-rw-r--r-- | src/peerinfo/Makefile.am | 9 | ||||
-rw-r--r-- | src/peerinfo/gnunet-peerinfo-gtk.c | 132 |
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 | ||
30 | gnunet_fs_gtk_LDADD = \ | 30 | gnunet_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) |
43 | gnunet_fs_gtk_LDFLAGS = \ | 43 | gnunet_fs_gtk_LDFLAGS = \ |
44 | -export-dynamic | 44 | -export-dynamic |
45 | 45 | ||
46 | pkgcfgdir= $(prefix)/share/gnunet/config.d/ | 46 | pkgcfgdir= $(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 | ||
10 | bin_PROGRAMS = gnunet-peerinfo-gtk | 11 | bin_PROGRAMS = gnunet-peerinfo-gtk |
11 | 12 | ||
@@ -16,8 +17,8 @@ gnunet_peerinfo_gtk_SOURCES = \ | |||
16 | gnunet_peerinfo_gtk_LDADD = \ | 17 | gnunet_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) |
22 | gnunet_peerinfo_gtk_LDFLAGS = \ | 23 | gnunet_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 | */ |
36 | enum PEERINFO_ModelColumns | 40 | enum 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; | |||
155 | static GtkListStore *ls; | 159 | static GtkListStore *ls; |
156 | 160 | ||
157 | 161 | ||
162 | #if HAVE_LIBUNIQUE | ||
163 | static 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 | */ |
539 | int | 550 | int |
540 | main (int argc, char *const *argv) | 551 | main (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 | ||