Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=fun.git;a=commitdiff;h=eec6e13eec6c9d814322c9f13e9b4f1f6021bb88

commit eec6e13eec6c9d814322c9f13e9b4f1f6021bb88
Author: Priyank <[EMAIL PROTECTED]>
Date:   Sat Nov 3 19:19:07 2007 +0530

fun-ui
* Added a new preferences dialog

diff --git a/src/fun-ui.c b/src/fun-ui.c
index aa09570..68f0636 100644
--- a/src/fun-ui.c
+++ b/src/fun-ui.c
@@ -43,6 +43,7 @@ GtkWidget     *stooltip;
static GtkStatusIcon    *fun_icon = NULL;
static GtkWidget        *fun_about_dlg = NULL;
static GdkPixbuf        *fun_about_pixbuf = NULL;
+static GtkWidget       *fun_config_dlg = NULL;
static gboolean         connected = FALSE;

/* credits */
@@ -63,10 +64,14 @@ static const gchar translators[] = "";
static gboolean fun_timeout_func (void);
static gboolean fun_timeout_conn (void);

+static void fun_config_dialog_show (void);
+
static gboolean cb_fun_systray_icon_clicked (GtkWidget *widget, GdkEventButton 
*event, gpointer data);
static gboolean cb_fun_systray_enter_notify (GtkWidget *widget, 
GdkEventCrossing *event, gpointer data);
static gboolean cb_fun_systray_leave_notify (GtkWidget *widget, 
GdkEventCrossing *event, gpointer data);

+static void cb_fun_config_dlg_close_clicked (GtkWidget *button, gpointer data);
+
void
fun_systray_create (void)
{
@@ -194,6 +199,12 @@ cb_fun_systray_icon_clicked (GtkWidget *widget, 
GdkEventButton *event, gpointer
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
gtk_widget_show (menu_item);

+               /* Preferences */
+               menu_item = gtk_image_menu_item_new_from_stock 
(GTK_STOCK_PREFERENCES, NULL);
+               g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK 
(fun_config_dialog_show), NULL);
+               gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+               gtk_widget_show (menu_item);
+
/* Quit */
menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL);
g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (gtk_main_quit), 
NULL);
@@ -213,6 +224,26 @@ cb_fun_systray_icon_clicked (GtkWidget *widget, 
GdkEventButton *event, gpointer
}
}

+static void
+cb_fun_config_dlg_close_clicked (GtkWidget *button, gpointer data)
+{
+       GtkAdjustment   *adj = NULL;
+       guint                   interval = 0;
+       guint                   old_interval = 0;
+
+       adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON(data));
+       interval = gtk_adjustment_get_value (adj);
+       old_interval = fun_config_get_value_int ("update_interval");
+       /* if nothing is changed */
+       if (old_interval == interval)
+               return;
+       fun_config_set_value_int ("update_interval", interval);
+       fun_config_save ();
+       gtk_widget_hide (fun_config_dlg);
+
+       return;
+}
+
void
fun_systray_destroy (void)
{
@@ -227,6 +258,89 @@ fun_systray_destroy (void)
return;
}

+static void
+fun_config_dialog_show (void)
+{
+       if (!GTK_WIDGET_VISIBLE(fun_config_dlg))
+       {
+               gtk_widget_show (fun_config_dlg);
+               gtk_window_present (GTK_WINDOW(fun_config_dlg));
+       }
+       else
+       {
+               gtk_window_present (GTK_WINDOW(fun_config_dlg));
+       }
+
+       return;
+}
+
+static void
+fun_config_dialog_init (void)
+{
+       GtkWidget *vbox1;
+       GtkWidget *hbox2;
+       GtkWidget *image1;
+       GtkWidget *label2;
+       GtkWidget *hbox1;
+       GtkWidget *label1;
+       GtkObject *spinbutton1_adj;
+       GtkWidget *spinbutton1;
+       GtkWidget *hbuttonbox1;
+       GtkWidget *pref_close;
+
+       fun_config_dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+       gtk_window_set_default_size (fun_config_dlg, 350, 150);
+       //gtk_window_set_resizable (fun_config_dlg, FALSE);
+
+       vbox1 = gtk_vbox_new (FALSE, 5);
+       gtk_widget_show (vbox1);
+       gtk_container_add (GTK_CONTAINER (fun_config_dlg), vbox1);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox1), 6);
+
+       hbox2 = gtk_hbox_new (FALSE, 0);
+       gtk_widget_show (hbox2);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox2, FALSE, TRUE, 5);
+
+       image1 = gtk_image_new_from_file ("/usr/share/fun/fun.png");
+       gtk_widget_show (image1);
+       gtk_box_pack_start (GTK_BOX (hbox2), image1, FALSE, TRUE, 0);
+       gtk_misc_set_alignment (GTK_MISC (image1), 0, 0);
+
+       label2 = gtk_label_new ("<b>Configure Frugalware Update Nofitier</b>");
+       gtk_widget_show (label2);
+       gtk_box_pack_start (GTK_BOX (hbox2), label2, TRUE, TRUE, 0);
+       gtk_label_set_use_markup (GTK_LABEL (label2), TRUE);
+       gtk_misc_set_alignment (GTK_MISC (label2), 0.05, 0.5);
+
+       hbox1 = gtk_hbox_new (FALSE, 5);
+       gtk_widget_show (hbox1);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 0);
+
+       label1 = gtk_label_new ("<b>Update Interval (minutes) :</b>");
+       gtk_widget_show (label1);
+       gtk_box_pack_start (GTK_BOX (hbox1), label1, TRUE, TRUE, 0);
+       gtk_label_set_use_markup (GTK_LABEL (label1), TRUE);
+       gtk_misc_set_alignment (GTK_MISC (label1), 0, 0.5);
+
+       spinbutton1_adj = gtk_adjustment_new (1, 1, 60, 1, 10, 10);
+       spinbutton1 = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton1_adj), 1, 
0);
+       gtk_widget_show (spinbutton1);
+       gtk_box_pack_start (GTK_BOX (hbox1), spinbutton1, FALSE, TRUE, 0);
+
+       hbuttonbox1 = gtk_hbutton_box_new ();
+       gtk_widget_show (hbuttonbox1);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, FALSE, TRUE, 0);
+       gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), 
GTK_BUTTONBOX_END);
+
+       pref_close = gtk_button_new_from_stock ("gtk-close");
+       gtk_widget_show (pref_close);
+       gtk_container_add (GTK_CONTAINER (hbuttonbox1), pref_close);
+       GTK_WIDGET_SET_FLAGS (pref_close, GTK_CAN_DEFAULT);
+       g_signal_connect (G_OBJECT(pref_close), "clicked", 
G_CALLBACK(cb_fun_config_dlg_close_clicked), (gpointer)spinbutton1);
+
+       return;
+}
+
void
fun_ui_init (void)
{
@@ -234,6 +348,8 @@ fun_ui_init (void)
gulong          seconds = 0;

fun_systray_create ();
+       fun_config_dialog_init ();
+
if (fun_dbus_perform_service (TEST_SERVICE, NULL) == FALSE)
{
g_print ("Failed to connect to the fun daemon\n");
@@ -243,8 +359,6 @@ fun_ui_init (void)
return;
}
seconds = fun_config_get_value_int ("update_interval") * 60;
-       g_print ("%d\n", seconds);
-
connected = TRUE;

/* register the timeout */
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to