#include <gtk/gtktogglebutton.h>
#include <string.h>
#include <gtk/gtkmain.h>
+#include <libgnomeui/gnome-app-util.h>
#include "network.h"
{
g_return_if_fail(GTK_IS_BUTTON(button));
- gtk_main_quit();
+ /* Do not: gtk_main_quit();
+ * as 'App' widget will quit our gtk_main() automatically.
+ */
+ gtk_widget_destroy(GTK_WIDGET(App));
+}
+
+static void ui_gnome_g_log_handler(const gchar *log_domain,GLogLevelFlags log_level,const gchar *message,gpointer user_data)
+{
+GtkWidget *dialog;
+
+ /**/ if (log_level & G_LOG_LEVEL_ERROR)
+ dialog=gnome_app_error(App,message);
+ else if (log_level & (G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING))
+ dialog=gnome_app_warning(App,message);
+ else
+ dialog=gnome_app_message(App,message);
+
+ gtk_window_set_modal(GTK_WINDOW(dialog),TRUE);
+ g_signal_connect((gpointer)dialog,"close",G_CALLBACK(gtk_main_quit),NULL);
+ gtk_main();
+ /* 'dialog' gets destroyed automatically */
}
/* of "ui-gnome-interface.h": */
AppBar=GNOME_APPBAR(lookup_widget(GTK_WIDGET(App),"AppBar"));
PortEntry=GTK_ENTRY(lookup_widget(GTK_WIDGET(App),"PortEntry"));
+ /* ui_gnome_g_log_handler() needs 'App'. */
+ g_log_set_handler(
+ G_LOG_DOMAIN, /* log_domain; "Captive" */
+ G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL, /* log_levels */
+ ui_gnome_g_log_handler, /* log_func */
+ NULL); /* user_data */
+
gtk_widget_show_all(GTK_WIDGET(App));
g_timeout_add(
DAEMON_CHECK_INTERVAL_MS, /* interval */
void ui_gnome_interactive(void)
{
gtk_main();
- gtk_widget_destroy(GTK_WIDGET(App));
}