aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-08-15 16:36:48 +0000
committerChristian Grothoff <christian@grothoff.org>2011-08-15 16:36:48 +0000
commit05497278d9c4374864c6b77c06615744354ba2e7 (patch)
tree886cffd1ae443f73d659ea2e422bb06533e9f0c3
parentd4ce88d7a348662d778b20b1eee49475fa9e34fd (diff)
downloadgnunet-gtk-05497278d9c4374864c6b77c06615744354ba2e7.tar.gz
gnunet-gtk-05497278d9c4374864c6b77c06615744354ba2e7.zip
make gnunet-setup compile
-rw-r--r--src/setup/gnunet-setup-datacache-config.c6
-rw-r--r--src/setup/gnunet-setup-datastore-config.c6
-rw-r--r--src/setup/gnunet-setup-hostlist-editing.c3
-rw-r--r--src/setup/gnunet-setup-options.c15
-rw-r--r--src/setup/gnunet-setup-transport-http.c15
-rw-r--r--src/setup/gnunet-setup-transport-https.c15
-rw-r--r--src/setup/gnunet-setup-transport-tcp.c15
-rw-r--r--src/setup/gnunet-setup-transport-udp.c15
-rw-r--r--src/setup/gnunet-setup-transport.c15
-rw-r--r--src/setup/gnunet-setup.c305
-rw-r--r--src/setup/gnunet-setup.h9
11 files changed, 150 insertions, 269 deletions
diff --git a/src/setup/gnunet-setup-datacache-config.c b/src/setup/gnunet-setup-datacache-config.c
index 585a786f..f779d8c4 100644
--- a/src/setup/gnunet-setup-datacache-config.c
+++ b/src/setup/gnunet-setup-datacache-config.c
@@ -67,16 +67,14 @@ test_config (const char *name)
67static void 67static void
68show (const char *name) 68show (const char *name)
69{ 69{
70 gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (builder, 70 gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object (name)));
71 name)));
72} 71}
73 72
74 73
75static void 74static void
76hide (const char *name) 75hide (const char *name)
77{ 76{
78 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, 77 gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object (name)));
79 name)));
80} 78}
81 79
82 80
diff --git a/src/setup/gnunet-setup-datastore-config.c b/src/setup/gnunet-setup-datastore-config.c
index ad9c541a..86925418 100644
--- a/src/setup/gnunet-setup-datastore-config.c
+++ b/src/setup/gnunet-setup-datastore-config.c
@@ -63,16 +63,14 @@ test_config (const char *name)
63static void 63static void
64show (const char *name) 64show (const char *name)
65{ 65{
66 gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (builder, 66 gtk_widget_show (GTK_WIDGET (GNUNET_SETUP_get_object (name)));
67 name)));
68} 67}
69 68
70 69
71static void 70static void
72hide (const char *name) 71hide (const char *name)
73{ 72{
74 gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, 73 gtk_widget_hide (GTK_WIDGET (GNUNET_SETUP_get_object (name)));
75 name)));
76} 74}
77 75
78 76
diff --git a/src/setup/gnunet-setup-hostlist-editing.c b/src/setup/gnunet-setup-hostlist-editing.c
index 471327ca..98e6e136 100644
--- a/src/setup/gnunet-setup-hostlist-editing.c
+++ b/src/setup/gnunet-setup-hostlist-editing.c
@@ -45,8 +45,7 @@ GNUNET_setup_hostlist_url_cellrenderertext_edited_cb (GtkCellRendererText *rende
45 GtkTreeIter old; 45 GtkTreeIter old;
46 GtkTreeIter iter; 46 GtkTreeIter iter;
47 47
48 ls = GTK_LIST_STORE (gtk_builder_get_object (builder, 48 ls = GTK_LIST_STORE (GNUNET_SETUP_get_object ("GNUNET_setup_hostlist_url_liststore"));
49 "GNUNET_setup_hostlist_url_liststore"));
50 if (ls == NULL) 49 if (ls == NULL)
51 { 50 {
52 GNUNET_break (0); 51 GNUNET_break (0);
diff --git a/src/setup/gnunet-setup-options.c b/src/setup/gnunet-setup-options.c
index ae2c436e..ee230c2b 100644
--- a/src/setup/gnunet-setup-options.c
+++ b/src/setup/gnunet-setup-options.c
@@ -942,8 +942,7 @@ save_vpn_dns_service_dnsname (GtkCellRendererText *renderer,
942 GtkTreeIter iter; 942 GtkTreeIter iter;
943 gchar *old; 943 gchar *old;
944 944
945 tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, 945 tm = GTK_TREE_MODEL (GNUNET_SETUP_get_object ("vpn_dns_config_liststore"));
946 "vpn_dns_config_liststore"));
947 if (NULL == tm) 946 if (NULL == tm)
948 { 947 {
949 GNUNET_break (0); 948 GNUNET_break (0);
@@ -1049,8 +1048,7 @@ save_vpn_dns_service_tcpudp (GtkCellRendererText *renderer,
1049 /* FIXME: warn... */ 1048 /* FIXME: warn... */
1050 return; 1049 return;
1051 } 1050 }
1052 tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, 1051 tm = GTK_TREE_MODEL (GNUNET_SETUP_get_object ("vpn_dns_config_liststore"));
1053 "vpn_dns_config_liststore"));
1054 if (NULL == tm) 1052 if (NULL == tm)
1055 { 1053 {
1056 GNUNET_break (0); 1054 GNUNET_break (0);
@@ -1139,8 +1137,7 @@ save_vpn_dns_service_sourceport (GtkCellRendererText *renderer,
1139 /* invalid port, FIXME: warn */ 1137 /* invalid port, FIXME: warn */
1140 return; 1138 return;
1141 } 1139 }
1142 tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, 1140 tm = GTK_TREE_MODEL (GNUNET_SETUP_get_object ("vpn_dns_config_liststore"));
1143 "vpn_dns_config_liststore"));
1144 if (NULL == tm) 1141 if (NULL == tm)
1145 { 1142 {
1146 GNUNET_break (0); 1143 GNUNET_break (0);
@@ -1222,8 +1219,7 @@ save_vpn_dns_service_targethostname (GtkCellRendererText *renderer,
1222 GtkListStore *ls; 1219 GtkListStore *ls;
1223 GtkTreeIter iter; 1220 GtkTreeIter iter;
1224 1221
1225 tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, 1222 tm = GTK_TREE_MODEL (GNUNET_SETUP_get_object ("vpn_dns_config_liststore"));
1226 "vpn_dns_config_liststore"));
1227 if (NULL == tm) 1223 if (NULL == tm)
1228 { 1224 {
1229 GNUNET_break (0); 1225 GNUNET_break (0);
@@ -1312,8 +1308,7 @@ save_vpn_dns_service_targetport (GtkCellRendererText *renderer,
1312 /* invalid port, FIXME: warn */ 1308 /* invalid port, FIXME: warn */
1313 return; 1309 return;
1314 } 1310 }
1315 tm = GTK_TREE_MODEL (gtk_builder_get_object (builder, 1311 tm = GTK_TREE_MODEL (GNUNET_SETUP_get_object ("vpn_dns_config_liststore"));
1316 "vpn_dns_config_liststore"));
1317 if (NULL == tm) 1312 if (NULL == tm)
1318 { 1313 {
1319 GNUNET_break (0); 1314 GNUNET_break (0);
diff --git a/src/setup/gnunet-setup-transport-http.c b/src/setup/gnunet-setup-transport-http.c
index 6021413b..36447917 100644
--- a/src/setup/gnunet-setup-transport-http.c
+++ b/src/setup/gnunet-setup-transport-http.c
@@ -145,8 +145,7 @@ GNUNET_setup_transport_http_test_button_clicked_cb ()
145 145
146 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk); 146 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk);
147 GNUNET_assert (NULL == tst); 147 GNUNET_assert (NULL == tst);
148 w = GTK_WIDGET (gtk_builder_get_object (builder, 148 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_http_test_success_image"));
149 "GNUNET_setup_transport_http_test_success_image"));
150 gtk_widget_hide (w); 149 gtk_widget_hide (w);
151 resolver = GNUNET_OS_start_process (NULL, NULL, 150 resolver = GNUNET_OS_start_process (NULL, NULL,
152 "gnunet-service-resolver", 151 "gnunet-service-resolver",
@@ -160,20 +159,16 @@ GNUNET_setup_transport_http_test_button_clicked_cb ()
160 } 159 }
161 if (GNUNET_YES != ok) 160 if (GNUNET_YES != ok)
162 { 161 {
163 w = GTK_WIDGET (gtk_builder_get_object (builder, 162 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_http_test_fail_image"));
164 "GNUNET_setup_transport_http_test_fail_image"));
165 gtk_widget_show (w); 163 gtk_widget_show (w);
166 w = GTK_WIDGET (gtk_builder_get_object (builder, 164 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_http_test_success_image"));
167 "GNUNET_setup_transport_http_test_success_image"));
168 gtk_widget_hide (w); 165 gtk_widget_hide (w);
169 } 166 }
170 else 167 else
171 { 168 {
172 w = GTK_WIDGET (gtk_builder_get_object (builder, 169 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_http_test_fail_image"));
173 "GNUNET_setup_transport_http_test_fail_image"));
174 gtk_widget_hide (w); 170 gtk_widget_hide (w);
175 w = GTK_WIDGET (gtk_builder_get_object (builder, 171 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_http_test_success_image"));
176 "GNUNET_setup_transport_http_test_success_image"));
177 gtk_widget_show (w); 172 gtk_widget_show (w);
178 } 173 }
179} 174}
diff --git a/src/setup/gnunet-setup-transport-https.c b/src/setup/gnunet-setup-transport-https.c
index 8d53b1f4..c4ac462a 100644
--- a/src/setup/gnunet-setup-transport-https.c
+++ b/src/setup/gnunet-setup-transport-https.c
@@ -145,8 +145,7 @@ GNUNET_setup_transport_https_test_button_clicked_cb ()
145 145
146 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk); 146 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk);
147 GNUNET_assert (NULL == tst); 147 GNUNET_assert (NULL == tst);
148 w = GTK_WIDGET (gtk_builder_get_object (builder, 148 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_https_test_success_image"));
149 "GNUNET_setup_transport_https_test_success_image"));
150 gtk_widget_hide (w); 149 gtk_widget_hide (w);
151 resolver = GNUNET_OS_start_process (NULL, NULL, 150 resolver = GNUNET_OS_start_process (NULL, NULL,
152 "gnunet-service-resolver", 151 "gnunet-service-resolver",
@@ -160,20 +159,16 @@ GNUNET_setup_transport_https_test_button_clicked_cb ()
160 } 159 }
161 if (GNUNET_YES != ok) 160 if (GNUNET_YES != ok)
162 { 161 {
163 w = GTK_WIDGET (gtk_builder_get_object (builder, 162 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_https_test_fail_image"));
164 "GNUNET_setup_transport_https_test_fail_image"));
165 gtk_widget_show (w); 163 gtk_widget_show (w);
166 w = GTK_WIDGET (gtk_builder_get_object (builder, 164 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_https_test_success_image"));
167 "GNUNET_setup_transport_https_test_success_image"));
168 gtk_widget_hide (w); 165 gtk_widget_hide (w);
169 } 166 }
170 else 167 else
171 { 168 {
172 w = GTK_WIDGET (gtk_builder_get_object (builder, 169 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_https_test_fail_image"));
173 "GNUNET_setup_transport_https_test_fail_image"));
174 gtk_widget_hide (w); 170 gtk_widget_hide (w);
175 w = GTK_WIDGET (gtk_builder_get_object (builder, 171 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_https_test_success_image"));
176 "GNUNET_setup_transport_https_test_success_image"));
177 gtk_widget_show (w); 172 gtk_widget_show (w);
178 } 173 }
179} 174}
diff --git a/src/setup/gnunet-setup-transport-tcp.c b/src/setup/gnunet-setup-transport-tcp.c
index ba592846..52312a4b 100644
--- a/src/setup/gnunet-setup-transport-tcp.c
+++ b/src/setup/gnunet-setup-transport-tcp.c
@@ -145,8 +145,7 @@ GNUNET_setup_transport_tcp_test_button_clicked_cb ()
145 145
146 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk); 146 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk);
147 GNUNET_assert (NULL == tst); 147 GNUNET_assert (NULL == tst);
148 w = GTK_WIDGET (gtk_builder_get_object (builder, 148 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_tcp_test_success_image"));
149 "GNUNET_setup_transport_tcp_test_success_image"));
150 gtk_widget_hide (w); 149 gtk_widget_hide (w);
151 resolver = GNUNET_OS_start_process (NULL, NULL, 150 resolver = GNUNET_OS_start_process (NULL, NULL,
152 "gnunet-service-resolver", 151 "gnunet-service-resolver",
@@ -160,20 +159,16 @@ GNUNET_setup_transport_tcp_test_button_clicked_cb ()
160 } 159 }
161 if (GNUNET_YES != ok) 160 if (GNUNET_YES != ok)
162 { 161 {
163 w = GTK_WIDGET (gtk_builder_get_object (builder, 162 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_tcp_test_fail_image"));
164 "GNUNET_setup_transport_tcp_test_fail_image"));
165 gtk_widget_show (w); 163 gtk_widget_show (w);
166 w = GTK_WIDGET (gtk_builder_get_object (builder, 164 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_tcp_test_success_image"));
167 "GNUNET_setup_transport_tcp_test_success_image"));
168 gtk_widget_hide (w); 165 gtk_widget_hide (w);
169 } 166 }
170 else 167 else
171 { 168 {
172 w = GTK_WIDGET (gtk_builder_get_object (builder, 169 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_tcp_test_fail_image"));
173 "GNUNET_setup_transport_tcp_test_fail_image"));
174 gtk_widget_hide (w); 170 gtk_widget_hide (w);
175 w = GTK_WIDGET (gtk_builder_get_object (builder, 171 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_tcp_test_success_image"));
176 "GNUNET_setup_transport_tcp_test_success_image"));
177 gtk_widget_show (w); 172 gtk_widget_show (w);
178 } 173 }
179} 174}
diff --git a/src/setup/gnunet-setup-transport-udp.c b/src/setup/gnunet-setup-transport-udp.c
index 28aec749..989b5bf3 100644
--- a/src/setup/gnunet-setup-transport-udp.c
+++ b/src/setup/gnunet-setup-transport-udp.c
@@ -144,8 +144,7 @@ GNUNET_setup_transport_udp_test_button_clicked_cb ()
144 144
145 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk); 145 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == tsk);
146 GNUNET_assert (NULL == tst); 146 GNUNET_assert (NULL == tst);
147 w = GTK_WIDGET (gtk_builder_get_object (builder, 147 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_udp_test_success_image"));
148 "GNUNET_setup_transport_udp_test_success_image"));
149 gtk_widget_hide (w); 148 gtk_widget_hide (w);
150 resolver = GNUNET_OS_start_process (NULL, NULL, 149 resolver = GNUNET_OS_start_process (NULL, NULL,
151 "gnunet-service-resolver", 150 "gnunet-service-resolver",
@@ -159,20 +158,16 @@ GNUNET_setup_transport_udp_test_button_clicked_cb ()
159 } 158 }
160 if (GNUNET_YES != ok) 159 if (GNUNET_YES != ok)
161 { 160 {
162 w = GTK_WIDGET (gtk_builder_get_object (builder, 161 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_udp_test_fail_image"));
163 "GNUNET_setup_transport_udp_test_fail_image"));
164 gtk_widget_show (w); 162 gtk_widget_show (w);
165 w = GTK_WIDGET (gtk_builder_get_object (builder, 163 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_udp_test_success_image"));
166 "GNUNET_setup_transport_udp_test_success_image"));
167 gtk_widget_hide (w); 164 gtk_widget_hide (w);
168 } 165 }
169 else 166 else
170 { 167 {
171 w = GTK_WIDGET (gtk_builder_get_object (builder, 168 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_udp_test_fail_image"));
172 "GNUNET_setup_transport_udp_test_fail_image"));
173 gtk_widget_hide (w); 169 gtk_widget_hide (w);
174 w = GTK_WIDGET (gtk_builder_get_object (builder, 170 w = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_transport_udp_test_success_image"));
175 "GNUNET_setup_transport_udp_test_success_image"));
176 gtk_widget_show (w); 171 gtk_widget_show (w);
177 } 172 }
178} 173}
diff --git a/src/setup/gnunet-setup-transport.c b/src/setup/gnunet-setup-transport.c
index 58a25c15..652c356b 100644
--- a/src/setup/gnunet-setup-transport.c
+++ b/src/setup/gnunet-setup-transport.c
@@ -173,8 +173,7 @@ nipo (void *cls,
173 "nat", 173 "nat",
174 "INTERNAL_ADDRESS", 174 "INTERNAL_ADDRESS",
175 buf); 175 buf);
176 entry = GTK_ENTRY (gtk_builder_get_object (builder, 176 entry = GTK_ENTRY (GNUNET_SETUP_get_object ("GNUNET_setup_transport_internal_ip_entry"));
177 "GNUNET_setup_transport_internal_ip_entry"));
178 if (entry == NULL) 177 if (entry == NULL)
179 { 178 {
180 GNUNET_break (0); 179 GNUNET_break (0);
@@ -210,8 +209,7 @@ GNUNET_setup_transport_autoconfig_button_clicked_cb ()
210 "nat", 209 "nat",
211 "BEHIND_NAT", 210 "BEHIND_NAT",
212 "YES"); 211 "YES");
213 button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 212 button = GTK_TOGGLE_BUTTON (GNUNET_SETUP_get_object ("GNUNET_setup_transport_nat_checkbutton"));
214 "GNUNET_setup_transport_nat_checkbutton"));
215 if (button == NULL) 213 if (button == NULL)
216 { 214 {
217 GNUNET_break (0); 215 GNUNET_break (0);
@@ -226,8 +224,7 @@ GNUNET_setup_transport_autoconfig_button_clicked_cb ()
226 "nat", 224 "nat",
227 "EXTERNAL_ADDRESS", 225 "EXTERNAL_ADDRESS",
228 buf); 226 buf);
229 entry = GTK_ENTRY (gtk_builder_get_object (builder, 227 entry = GTK_ENTRY (GNUNET_SETUP_get_object ("GNUNET_setup_transport_external_ip_address_entry"));
230 "GNUNET_setup_transport_external_ip_address_entry"));
231 if (entry == NULL) 228 if (entry == NULL)
232 { 229 {
233 GNUNET_break (0); 230 GNUNET_break (0);
@@ -260,8 +257,7 @@ GNUNET_setup_transport_autoconfig_button_clicked_cb ()
260 if (hns) 257 if (hns)
261 hns = test_connection_reversal (); 258 hns = test_connection_reversal ();
262 259
263 button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 260 button = GTK_TOGGLE_BUTTON (GNUNET_SETUP_get_object ("GNUNET_setup_transport_icmp_server_enable_checkbutton"));
264 "GNUNET_setup_transport_icmp_server_enable_checkbutton"));
265 if (button == NULL) 261 if (button == NULL)
266 { 262 {
267 GNUNET_break (0); 263 GNUNET_break (0);
@@ -286,8 +282,7 @@ GNUNET_setup_transport_autoconfig_button_clicked_cb ()
286 (GNUNET_YES == 282 (GNUNET_YES ==
287 GNUNET_OS_check_helper_binary ("gnunet-helper-nat-client")) ); 283 GNUNET_OS_check_helper_binary ("gnunet-helper-nat-client")) );
288 GNUNET_free_non_null (tmp); 284 GNUNET_free_non_null (tmp);
289 button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, 285 button = GTK_TOGGLE_BUTTON (GNUNET_SETUP_get_object ("GNUNET_setup_transport_icmp_client_enable_checkbutton"));
290 "GNUNET_setup_transport_icmp_client_enable_checkbutton"));
291 if (button == NULL) 286 if (button == NULL)
292 { 287 {
293 GNUNET_break (0); 288 GNUNET_break (0);
diff --git a/src/setup/gnunet-setup.c b/src/setup/gnunet-setup.c
index 1845c683..136eff23 100644
--- a/src/setup/gnunet-setup.c
+++ b/src/setup/gnunet-setup.c
@@ -31,119 +31,40 @@
31#include <regex.h> 31#include <regex.h>
32 32
33/** 33/**
34 * Builder for the main window (global!) 34 * Main loop handle.
35 */ 35 */
36GtkBuilder *builder; 36static struct GNUNET_GTK_MainLoop *ml;
37 37
38/** 38/**
39 * Our configuration (global!) 39 * Name of the configuration file.
40 */ 40 */
41struct GNUNET_CONFIGURATION_Handle *cfg; 41static char *cfgName;
42
43 42
44/** 43/**
45 * @brief get the path to a specific GNUnet installation directory or, 44 * Our log level (FIXME: needed!?)
46 * with GNUNET_IPK_SELF_PREFIX, the current running apps installation directory
47 * @author Milan
48 * @return a pointer to the dir path (to be freed by the caller)
49 */ 45 */
50char * 46static char *loglev;
51GNUNET_GTK_installation_get_path (enum GNUNET_OS_InstallationPathKind dirkind);
52
53
54 47
55/** 48/**
56 * Get the name of the directory where all of our package 49 * Our configuration.
57 * data is stored ($PREFIX/share/)
58 *
59 * @return name of the data directory
60 */ 50 */
61const char * 51struct GNUNET_CONFIGURATION_Handle *cfg;
62GNUNET_GTK_get_data_dir ()
63{
64 static char *dd;
65
66 if (dd == NULL)
67 dd = GNUNET_GTK_installation_get_path (GNUNET_OS_IPK_DATADIR);
68 return dd;
69}
70
71
72/**
73 * Create an initialize a new builder based on the
74 * GNUnet-GTK glade file.
75 *
76 * @param filename name of the resource file to load
77 * @return NULL on error
78 */
79GtkBuilder *
80GNUNET_GTK_get_new_builder (const char *filename)
81{
82 char *glade_path;
83 GtkBuilder *ret;
84 GError *error;
85
86 ret = gtk_builder_new ();
87 gtk_builder_set_translation_domain (ret, "gnunet-gtk");
88 GNUNET_asprintf (&glade_path,
89 "%s%s",
90 GNUNET_GTK_get_data_dir (),
91 filename);
92 error = NULL;
93 if (0 == gtk_builder_add_from_file (ret, glade_path, &error))
94 {
95 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
96 _("Failed to load `%s': %s\n"),
97 glade_path,
98 error->message);
99 g_error_free (error);
100 GNUNET_free (glade_path);
101 return NULL;
102 }
103 gtk_builder_connect_signals (ret, NULL);
104 GNUNET_free (glade_path);
105 return ret;
106}
107
108
109 52
110/** 53/**
111 * Initialize GNU gettext for message translation. 54 * Global return value (for success/failure of gnunet-setup).
112 */ 55 */
113static void 56static int gret;
114setup_nls ()
115{
116#if ENABLE_NLS
117 char *path;
118
119 setlocale (LC_ALL, "");
120 GNUNET_asprintf (&path,
121 "%s/%s/locale/",
122 GNUNET_GTK_get_data_dir (),
123 PACKAGE_NAME);
124 bindtextdomain ("gnunet-setup", path);
125 textdomain ("gnunet-setup");
126 bind_textdomain_codeset ("GNUnet", "UTF-8");
127 bind_textdomain_codeset ("gnunet-setup", "UTF-8");
128 GNUNET_free (path);
129#else
130 fprintf (stderr,
131 "WARNING: gnunet-setup was compiled without i18n support (did CFLAGS contain -Werror?).\n");
132#endif
133}
134
135 57
136/** 58/**
137 * Initialize GTK search path for icons. 59 * Get an object from the main window.
60 *
61 * @param name name of the object
62 * @return NULL on error, otherwise the object
138 */ 63 */
139static void 64GObject *
140set_icon_search_path () 65GNUNET_SETUP_get_object (const char *name)
141{ 66{
142 char *buf; 67 return GNUNET_GTK_main_loop_get_object (ml, name);
143
144 buf = GNUNET_GTK_installation_get_path (GNUNET_OS_IPK_ICONDIR);
145 gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), buf);
146 GNUNET_free (buf);
147} 68}
148 69
149 70
@@ -157,8 +78,7 @@ help_click_callback (GtkWidget *widget,
157 78
158 if (event->type != GDK_BUTTON_PRESS) 79 if (event->type != GDK_BUTTON_PRESS)
159 return FALSE; 80 return FALSE;
160 help = GTK_LINK_BUTTON (gtk_builder_get_object (builder, 81 help = GTK_LINK_BUTTON (GNUNET_SETUP_get_object ("GNUNET_setup_help_text"));
161 "GNUNET_setup_help_text"));
162 gtk_link_button_set_uri (help, 82 gtk_link_button_set_uri (help,
163 os->help_url); 83 os->help_url);
164 gtk_button_set_label (GTK_BUTTON (help), 84 gtk_button_set_label (GTK_BUTTON (help),
@@ -189,8 +109,7 @@ update_visibility (const struct GNUNET_SETUP_OptionSpecification *os,
189 while (os->visibility[i].widget_name != NULL) 109 while (os->visibility[i].widget_name != NULL)
190 { 110 {
191 vs = &os->visibility[i]; 111 vs = &os->visibility[i];
192 widget = GTK_WIDGET (gtk_builder_get_object (builder, 112 widget = GTK_WIDGET (GNUNET_SETUP_get_object (vs->widget_name));
193 vs->widget_name));
194 if (widget == NULL) 113 if (widget == NULL)
195 { 114 {
196 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 115 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -243,8 +162,7 @@ widget_state_change_callback (const struct GNUNET_SETUP_OptionSpecification *os)
243 GObject *widget; 162 GObject *widget;
244 char *value; 163 char *value;
245 164
246 widget = gtk_builder_get_object (builder, 165 widget = GNUNET_SETUP_get_object (os->widget_name);
247 os->widget_name);
248 GNUNET_assert (NULL != os->save_function); 166 GNUNET_assert (NULL != os->save_function);
249 if (GNUNET_OK != 167 if (GNUNET_OK !=
250 os->save_function (os->load_save_cls, 168 os->save_function (os->load_save_cls,
@@ -272,67 +190,22 @@ widget_state_change_callback (const struct GNUNET_SETUP_OptionSpecification *os)
272} 190}
273 191
274 192
275int 193/**
276main (int argc, 194 * Load options into the main dialog.
277 char *const *argv) 195 */
196static void
197load_options ()
278{ 198{
279 char *cfgName = GNUNET_strdup (GNUNET_DEFAULT_USER_CONFIG_FILE);
280 char *loglev = GNUNET_strdup ("WARNING");
281 struct GNUNET_GETOPT_CommandLineOption options[] = {
282 GNUNET_GETOPT_OPTION_CFG_FILE (&cfgName),
283 GNUNET_GETOPT_OPTION_HELP (gettext_noop ("Setup tool for GNUnet")),
284 GNUNET_GETOPT_OPTION_LOGLEVEL (&loglev),
285 GNUNET_GETOPT_OPTION_VERSION (PACKAGE_VERSION),
286 GNUNET_GETOPT_OPTION_END
287 };
288 gint ret;
289 GtkWidget *main_window;
290 GtkWidget *dialog;
291 GObject *widget;
292 int arg_off;
293 int iret;
294 char *const *argp;
295 char *value;
296 struct GNUNET_CONFIGURATION_Handle *cfgDefault;
297 const struct GNUNET_SETUP_OptionSpecification *os; 199 const struct GNUNET_SETUP_OptionSpecification *os;
298 unsigned int i; 200 unsigned int i;
299 201 GObject *widget;
300 arg_off = GNUNET_GETOPT_run ("gnunet-setup", 202 char *value;
301 options, 203
302 argc,
303 argv);
304 if (arg_off == GNUNET_SYSERR)
305 {
306 GNUNET_free (loglev);
307 GNUNET_free (cfgName);
308 return 1;
309 }
310 (void) GNUNET_log_setup ("gnunet-setup",
311 loglev,
312 NULL);
313 argp = &argv[arg_off];
314 argc -= arg_off;
315 gtk_init (&argc, (char ***) &argp);
316 set_icon_search_path ();
317 setup_nls ();
318 builder = GNUNET_GTK_get_new_builder ("gnunet-setup.glade");
319 if (builder == NULL)
320 {
321 GNUNET_free (loglev);
322 GNUNET_free (cfgName);
323 return 1;
324 }
325 cfg = GNUNET_CONFIGURATION_create ();
326 (void) GNUNET_CONFIGURATION_load (cfg, cfgName);
327 main_window = GTK_WIDGET (gtk_builder_get_object (builder,
328 "GNUNET_setup_dialog"));
329 /* load options into dialog */
330 i = 0; 204 i = 0;
331 while (option_specifications[i].widget_name != NULL) 205 while (option_specifications[i].widget_name != NULL)
332 { 206 {
333 os = &option_specifications[i]; 207 os = &option_specifications[i];
334 widget = gtk_builder_get_object (builder, 208 widget = GNUNET_SETUP_get_object (os->widget_name);
335 os->widget_name);
336 if (NULL == widget) 209 if (NULL == widget)
337 { 210 {
338 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 211 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -410,53 +283,91 @@ main (int argc,
410 i++; 283 i++;
411 } 284 }
412 285
413 RESTART: 286}
414 ret = gtk_dialog_run (GTK_DIALOG (main_window)); 287
415 gtk_widget_hide (main_window); 288
289/**
290 * Callback invoked if the application is supposed to exit.
291 */
292void
293GNUNET_SETUP_quit_cb (GtkObject *object,
294 gpointer user_data)
295{
296 struct GNUNET_CONFIGURATION_Handle *cfgDefault;
297
298 GNUNET_GTK_main_loop_quit (ml);
416 cfgDefault = GNUNET_CONFIGURATION_create (); 299 cfgDefault = GNUNET_CONFIGURATION_create ();
417 (void) GNUNET_CONFIGURATION_load (cfgDefault, NULL); /* load defaults only */ 300 (void) GNUNET_CONFIGURATION_load (cfgDefault, NULL); /* load defaults only */
418 iret = 0; 301 if (GNUNET_OK !=
419 switch (ret) 302 GNUNET_CONFIGURATION_write_diffs (cfgDefault,
420 { 303 cfg,
421 case GTK_RESPONSE_CANCEL: /* -6 */ 304 cfgName))
422 /* explicit cancel, do not save! */ 305 gret = 1;
423 break;
424 case GTK_RESPONSE_OK: /* save-as, -5 */
425 dialog = gtk_file_chooser_dialog_new (_("Save Configuration File"),
426 NULL,
427 GTK_FILE_CHOOSER_ACTION_SAVE,
428 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
429 GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
430 NULL);
431 gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), cfgName);
432 if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_ACCEPT)
433 {
434 gtk_widget_destroy (dialog);
435 goto RESTART;
436 }
437 GNUNET_free (cfgName);
438 cfgName = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
439 gtk_widget_destroy (dialog);
440 /* fall through! */
441 case GTK_RESPONSE_DELETE_EVENT: /* window close, -4 */
442 case GTK_RESPONSE_ACCEPT: /* save, -3 */
443 if (GNUNET_OK !=
444 GNUNET_CONFIGURATION_write_diffs (cfgDefault,
445 cfg,
446 cfgName))
447 iret = 1;
448 break;
449 default:
450 GNUNET_break (0);
451 }
452 gtk_widget_destroy (main_window);
453 g_object_unref (G_OBJECT (builder));
454 GNUNET_CONFIGURATION_destroy (cfgDefault); 306 GNUNET_CONFIGURATION_destroy (cfgDefault);
455 GNUNET_CONFIGURATION_destroy (cfg); 307 GNUNET_CONFIGURATION_destroy (cfg);
308}
309
310
311/**
312 * Actual main method that sets up the configuration window.
313 *
314 * @param cls the main loop handle
315 * @param tc scheduler context
316 */
317static void
318run (void *cls,
319 const struct GNUNET_SCHEDULER_TaskContext *tc)
320{
321 ml = cls;
322 GtkWidget *main_window;
323
324 cfg = GNUNET_CONFIGURATION_create ();
325 (void) GNUNET_CONFIGURATION_load (cfg, cfgName);
326 main_window = GTK_WIDGET (GNUNET_SETUP_get_object ("GNUNET_setup_dialog"));
327
328 load_options ();
329 gtk_widget_show (main_window);
330 gtk_window_present (GTK_WINDOW (main_window));
331}
332
333
334/**
335 * Main function for gnunet-setup.
336 *
337 * @param argc number of arguments
338 * @param argv arguments
339 * @return 0 on success
340 */
341int
342main (int argc,
343 char *const *argv)
344{
345 struct GNUNET_GETOPT_CommandLineOption options[] = {
346 GNUNET_GETOPT_OPTION_CFG_FILE (&cfgName),
347 GNUNET_GETOPT_OPTION_HELP (gettext_noop ("Setup tool for GNUnet")),
348 GNUNET_GETOPT_OPTION_LOGLEVEL (&loglev),
349 GNUNET_GETOPT_OPTION_VERSION (PACKAGE_VERSION),
350 GNUNET_GETOPT_OPTION_END
351 };
352 int ret;
353
354 cfgName = GNUNET_strdup (GNUNET_DEFAULT_USER_CONFIG_FILE);
355 loglev = GNUNET_strdup ("WARNING");
356
357 if (GNUNET_OK ==
358 GNUNET_GTK_main_loop_start ("gnunet-setup",
359 "guunet-setup",
360 argc,
361 argv,
362 options,
363 "gnunet_setup_gtk_main_window.glade",
364 &run))
365 ret = gret;
366 else
367 ret = 1;
456 GNUNET_free (cfgName); 368 GNUNET_free (cfgName);
457 GNUNET_free (loglev); 369 GNUNET_free (loglev);
458 return iret; 370 return ret;
459} 371}
460 372
461
462/* end of gnunet-setup.c */ 373/* end of gnunet-setup.c */
diff --git a/src/setup/gnunet-setup.h b/src/setup/gnunet-setup.h
index 74b7aba5..bc7deef8 100644
--- a/src/setup/gnunet-setup.h
+++ b/src/setup/gnunet-setup.h
@@ -33,9 +33,14 @@
33#include <gtk/gtk.h> 33#include <gtk/gtk.h>
34 34
35/** 35/**
36 * Builder for the main window. 36 * Get an object from the main window.
37 *
38 * @param name name of the object
39 * @return NULL on error, otherwise the object
37 */ 40 */
38extern GtkBuilder *builder; 41GObject *
42GNUNET_SETUP_get_object (const char *name);
43
39 44
40/** 45/**
41 * Our configuration. 46 * Our configuration.