#include <libgnomeui/gnome-app-util.h>
#include "network.h"
+#include "packet.h"
/* Config: */
static GtkHBox *PortHBox;
static GnomeAppBar *AppBar;
static GtkEntry *PortEntry;
+static GtkEntry *HostIPEntry;
static void state_start_stop(void)
void on_ButtonStart_clicked(GtkButton *button,gpointer user_data)
{
-const gchar *port_string;
-char *endp;
-long port_long;
-
g_return_if_fail(GTK_IS_BUTTON(button));
- port_string=gtk_entry_get_text(PortEntry);
- port_long=strtol(port_string,&endp,0);
- if (endp && *endp) {
- g_warning(_("Invalid port specification, offending string: %s"),endp);
- return;
- }
- if (port_long<1 || port_long>=G_MAXINT || (endp && *endp)) {
- g_warning(_("Invalid port integer number specification (%ld)"),port_long);
+ if (!optarg_port_set_string(gtk_entry_get_text(PortEntry)))
return;
- }
- network_start(port_long);
+ network_start(optarg_port);
}
void on_ButtonStop_clicked(GtkButton *button,gpointer user_data)
{
g_return_if_fail(GTK_IS_BUTTON(button));
+ /* update config file */
+ optarg_port_set_string(gtk_entry_get_text(PortEntry));
+
/* Do not: gtk_main_quit();
* as 'App' widget will quit our gtk_main() automatically.
*/
gtk_widget_destroy(GTK_WIDGET(App));
}
+static void ui_gnome_network_notify_hostip(guint32 hostip_guint32)
+{
+ if (!hostip_guint32) {
+ if (is_daemon_running()==(pid_t)-1)
+ gtk_entry_set_text(HostIPEntry,_("(unknown; Start the daemon)"));
+ else
+ gtk_entry_set_text(HostIPEntry,_("(unknown; detecting...)"));
+ }
+ else {
+ gtk_entry_set_text(HostIPEntry,HOSTIP_GUINT32_TO_STRING(hostip_guint32));
+ }
+}
+
+static guint ui_gnome_g_log_handler_handler_id;
static void ui_gnome_g_log_handler(const gchar *log_domain,GLogLevelFlags log_level,const gchar *message,gpointer user_data)
{
GtkWidget *dialog;
/* 'dialog' gets destroyed automatically */
}
+static void ui_gnome_interactive(void)
+{
+ gtk_main();
+ network_notify_hostip=NULL;
+ g_log_remove_handler(
+ G_LOG_DOMAIN, /* log_domain; "Captive" */
+ ui_gnome_g_log_handler_handler_id); /* handler_id */
+ network_detach();
+}
+
/* of "ui-gnome-interface.h": */
GtkWidget *create_App(void);
/* of "ui-gnome-support.h": */
PortHBox=GTK_HBOX(lookup_widget(GTK_WIDGET(App),"PortHBox"));
AppBar=GNOME_APPBAR(lookup_widget(GTK_WIDGET(App),"AppBar"));
PortEntry=GTK_ENTRY(lookup_widget(GTK_WIDGET(App),"PortEntry"));
+ HostIPEntry=GTK_ENTRY(lookup_widget(GTK_WIDGET(App),"HostIPEntry"));
/* ui_gnome_g_log_handler() needs 'App'. */
- g_log_set_handler(
+ ui_gnome_g_log_handler_handler_id=g_log_set_handler(
G_LOG_DOMAIN, /* log_domain; "Captive" */
(G_LOG_LEVEL_MASK|G_LOG_FLAG_FATAL)&~(0
|G_LOG_LEVEL_MESSAGE
ui_gnome_g_log_handler, /* log_func */
NULL); /* user_data */
+ ui_gnome_network_notify_hostip(0);
+ gtk_entry_set_text(PortEntry,udpgate_printf_alloca("%d",(int)optarg_port));
+
gtk_widget_show_all(GTK_WIDGET(App));
g_timeout_add(
DAEMON_CHECK_INTERVAL_MS, /* interval */
daemon_check_timeout_func, /* function */
NULL); /* data; unused */
- return TRUE;
-}
-void ui_gnome_interactive(void)
-{
- gtk_main();
+ network_notify_hostip=ui_gnome_network_notify_hostip;
+
+ ui_interactive=ui_gnome_interactive;
+
+ return TRUE;
}