[zenity] Now if you use --timeout option, the return code will be properly handled The default behavior will



commit d60e5eeeb379e5444ad218d7335b17eaa821b182
Author: Arx Cruz <arxcruz src gnome org>
Date:   Fri Jun 17 10:47:07 2011 -0300

    Now if you use --timeout option, the return code will be properly handled
    The default behavior will be done (ie. user click on ok button)
    The return code will be 5

 src/calendar.c      |    3 +--
 src/color.c         |    2 +-
 src/entry.c         |    2 +-
 src/fileselection.c |    2 +-
 src/forms.c         |    2 +-
 src/msg.c           |    2 +-
 src/password.c      |    2 +-
 src/progress.c      |    2 +-
 src/scale.c         |    2 +-
 src/text.c          |    2 +-
 src/tree.c          |    2 +-
 src/util.c          |   19 ++++++++++++++++++-
 src/util.h          |    2 ++
 13 files changed, 31 insertions(+), 13 deletions(-)
---
diff --git a/src/calendar.c b/src/calendar.c
index 60931c4..32825da 100644
--- a/src/calendar.c
+++ b/src/calendar.c
@@ -112,8 +112,7 @@ zenity_calendar_dialog_response (GtkWidget *widget, int response, gpointer data)
     
       if (date != NULL)
         g_date_free (date);
-    
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data (ZENITY_OK, zen_data);   
       break;
 
     case GTK_RESPONSE_CANCEL:
diff --git a/src/color.c b/src/color.c
index eee68ee..ca8debd 100644
--- a/src/color.c
+++ b/src/color.c
@@ -78,7 +78,7 @@ zenity_colorselection_dialog_response (GtkWidget *widget, int response, gpointer
 
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);      
       colorsel = gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (widget));
       gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (colorsel), &color);
       g_print ("%s\n", gdk_color_to_string (&color));
diff --git a/src/entry.c b/src/entry.c
index ce6cda5..d8111c0 100644
--- a/src/entry.c
+++ b/src/entry.c
@@ -143,7 +143,7 @@ zenity_entry_dialog_response (GtkWidget *widget, int response, gpointer data)
 
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);
       if (n_entries > 1) {
 	text = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (entry));
       }
diff --git a/src/fileselection.c b/src/fileselection.c
index 07d85c0..349ff32 100644
--- a/src/fileselection.c
+++ b/src/fileselection.c
@@ -150,7 +150,7 @@ zenity_fileselection_dialog_response (GtkWidget *widget, int response, gpointer
 	  
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);		
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);
       selections = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (widget));
       for (iter = selections;iter != NULL; iter = iter->next) {
         g_print ("%s", g_filename_to_utf8 ((gchar*)iter->data, -1, NULL, NULL, NULL));
diff --git a/src/forms.c b/src/forms.c
index d6db778..d59a5af 100644
--- a/src/forms.c
+++ b/src/forms.c
@@ -181,7 +181,7 @@ zenity_forms_dialog_response (GtkWidget *widget, int response, gpointer data)
 
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);      
       for (tmp = forms_data->list; tmp; tmp = tmp->next) {
         ZenityFormsValue *zenity_value = (ZenityFormsValue *) tmp->data;
         switch (zenity_value->type) {
diff --git a/src/msg.c b/src/msg.c
index 1a92875..1f060c5 100644
--- a/src/msg.c
+++ b/src/msg.c
@@ -153,7 +153,7 @@ zenity_msg_dialog_response (GtkWidget *widget, int response, gpointer data)
 
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);      
       break;
 
     case GTK_RESPONSE_CANCEL:
diff --git a/src/password.c b/src/password.c
index 219f5f9..c49b675 100644
--- a/src/password.c
+++ b/src/password.c
@@ -154,7 +154,7 @@ zenity_password_dialog_response (GtkWidget *widget, int response, gpointer data)
   ZenityPasswordData *password_data = (ZenityPasswordData *) data;
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);
       if (password_data->username)
         g_print("%s|%s\n", gtk_entry_get_text (GTK_ENTRY(password_data->entry_username)), gtk_entry_get_text (GTK_ENTRY(password_data->entry_password)));
       else
diff --git a/src/progress.c b/src/progress.c
index 2533aa1..6dc93f8 100644
--- a/src/progress.c
+++ b/src/progress.c
@@ -297,7 +297,7 @@ zenity_progress_dialog_response (GtkWidget *widget, int response, gpointer data)
 {
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);
       break;
 
     case GTK_RESPONSE_CANCEL:
diff --git a/src/scale.c b/src/scale.c
index d6cc340..87bf55a 100644
--- a/src/scale.c
+++ b/src/scale.c
@@ -113,7 +113,7 @@ zenity_scale_dialog_response (GtkWidget *widget, int response, gpointer data)
 
   switch (response) {
     case GTK_RESPONSE_OK:
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);
       g_print ("%.0f\n", gtk_range_get_value (GTK_RANGE (scale)));
       break;
 
diff --git a/src/text.c b/src/text.c
index 147e706..9868675 100644
--- a/src/text.c
+++ b/src/text.c
@@ -187,7 +187,7 @@ zenity_text_dialog_response (GtkWidget *widget, int response, gpointer data)
 
     default:
       /* Esc dialog */
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_ESC);
+      zenity_util_exit_code_with_data(ZENITY_ESC, zen_data);
       break;
   }
   gtk_main_quit ();
diff --git a/src/tree.c b/src/tree.c
index c7477c3..b0ff4c5 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -613,7 +613,7 @@ zenity_tree_dialog_response (GtkWidget *widget, int response, gpointer data)
                                              GTK_TREE_VIEW (tree_view));
       }
       zenity_tree_dialog_output ();
-      zen_data->exit_code = zenity_util_return_exit_code (ZENITY_OK);
+      zenity_util_exit_code_with_data(ZENITY_OK, zen_data);
       break;
 
     case GTK_RESPONSE_CANCEL:
diff --git a/src/util.c b/src/util.c
index 37845a0..440c7de 100644
--- a/src/util.c
+++ b/src/util.c
@@ -304,7 +304,15 @@ zenity_util_return_exit_code ( ZenityExitCode value )
     if (! env_var) 
           retval = ZENITY_ERROR_DEFAULT;
     break;
-    
+  
+  case ZENITY_TIMEOUT:
+    env_var = g_getenv("ZENITY_TIMEOUT");
+    if (! env_var)
+          env_var = g_getenv("DIALOG_TIMEOUT");
+    if (! env_var)
+          retval = ZENITY_TIMEOUT;
+    break;
+   
   default:
     retval = 1;
   }
@@ -314,6 +322,15 @@ zenity_util_return_exit_code ( ZenityExitCode value )
   return retval; 
 }
 
+void
+zenity_util_exit_code_with_data(ZenityExitCode value, ZenityData *zen_data)
+{
+  /* We assume it's being called with --timeout option and should return 5) */
+  if(zen_data->timeout_delay > 0)
+    zen_data->exit_code = zenity_util_return_exit_code (ZENITY_TIMEOUT);
+  else
+    zen_data->exit_code = zenity_util_return_exit_code (value);
+}
 
 #ifdef GDK_WINDOWING_X11
 
diff --git a/src/util.h b/src/util.h
index 7005441..48409c1 100644
--- a/src/util.h
+++ b/src/util.h
@@ -26,6 +26,8 @@ GdkPixbuf *	zenity_util_pixbuf_new_from_file	  (GtkWidget	  *widget,
 							   const gchar	  *filename);
 void		zenity_util_show_help                     (GError        **error);
 gint		zenity_util_return_exit_code 		  (ZenityExitCode value);                      
+void            zenity_util_exit_code_with_data           (ZenityExitCode value,
+                                                           ZenityData     *data);
 void            zenity_util_show_dialog                   (GtkWidget      *widget);
 
 gboolean        zenity_util_timeout_handle                (gpointer data);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]