[zenity] Bug 593926 - --progress needs a --nocancel option



commit 3c17a5a8870422b9a9145ff805d6d3bb872dacea
Author: Huzaifa Sidhpurwala <huzaifas redhat com>
Date:   Tue Feb 23 18:07:08 2010 +0000

    Bug 593926 - --progress needs a --nocancel option

 src/option.c   |   17 ++++++++++++++++-
 src/progress.c |   17 +++++++++++++++++
 src/zenity.h   |    1 +
 3 files changed, 34 insertions(+), 1 deletions(-)
---
diff --git a/src/option.c b/src/option.c
index 0e3ede5..bc09009 100644
--- a/src/option.c
+++ b/src/option.c
@@ -86,6 +86,7 @@ static int      zenity_progress_percentage;
 static gboolean zenity_progress_pulsate;
 static gboolean zenity_progress_auto_close;
 static gboolean zenity_progress_auto_kill;
+static gboolean zenity_progress_no_cancel;
 
 /* Question Dialog Options */
 static gboolean zenity_question_active;
@@ -607,6 +608,16 @@ static GOptionEntry progress_options[] = {
     N_("Kill parent process if cancel button is pressed"),
     NULL
   },
+  {
+   "no-cancel",
+   '\0',
+   0,
+   G_OPTION_ARG_NONE,
+   &zenity_progress_no_cancel,
+   /* xgettext: no-c-format */
+   N_("Hide cancel button"),
+   NULL
+  },
   { 
     NULL 
   }
@@ -1050,7 +1061,7 @@ zenity_progress_pre_callback (GOptionContext *context,
   zenity_progress_pulsate = FALSE;
   zenity_progress_auto_close = FALSE;
   zenity_progress_auto_kill = FALSE;
-
+  zenity_progress_no_cancel = FALSE;
   return TRUE;
 }
 
@@ -1370,6 +1381,7 @@ zenity_progress_post_callback (GOptionContext *context,
     results->progress_data->autoclose = zenity_progress_auto_close;
     results->progress_data->autokill = zenity_progress_auto_kill;
     results->progress_data->percentage = zenity_progress_percentage;
+    results->progress_data->no_cancel = zenity_progress_no_cancel;
   } else {
     if (zenity_progress_pulsate)
       zenity_option_error (zenity_option_get_name (progress_options, &zenity_progress_pulsate),
@@ -1386,6 +1398,9 @@ zenity_progress_post_callback (GOptionContext *context,
     if (zenity_progress_auto_kill)
       zenity_option_error (zenity_option_get_name (progress_options, &zenity_progress_auto_kill),
                            ERROR_SUPPORT);
+    if (zenity_progress_no_cancel)
+      zenity_option_error (zenity_option_get_name (progress_options, &zenity_progress_no_cancel),
+			   ERROR_SUPPORT);
   }
     
   return TRUE;
diff --git a/src/progress.c b/src/progress.c
index bc1c102..40f9182 100644
--- a/src/progress.c
+++ b/src/progress.c
@@ -38,6 +38,8 @@ static GIOChannel *channel;
 
 static gint pulsate_timeout = -1;
 static gboolean autokill;
+static gboolean no_cancel;
+static gboolean auto_close;
 
 gint zenity_progress_timeout (gpointer data);
 gint zenity_progress_pulsate_timeout (gpointer data);
@@ -227,6 +229,7 @@ zenity_progress (ZenityData *data, ZenityProgressData *progress_data)
   GtkWidget *dialog;
   GObject *text;
   GObject *progress_bar;
+  GObject *cancel_button,*ok_button;
 
   zen_data = data;
   builder = zenity_util_load_ui_file ("zenity_progress_dialog", NULL);
@@ -265,6 +268,20 @@ zenity_progress (ZenityData *data, ZenityProgressData *progress_data)
 
   autokill = progress_data->autokill;
 
+  auto_close = progress_data->autoclose;
+  ok_button = gtk_builder_get_object (builder, "zenity_progress_ok_button");
+
+  no_cancel = progress_data->no_cancel;
+  cancel_button = gtk_builder_get_object (builder, "zenity_progress_cancel_button");
+
+  if (no_cancel) {
+     gtk_widget_hide (GTK_WIDGET(cancel_button));
+     gtk_window_set_deletable (GTK_WINDOW (dialog), FALSE);
+  }
+
+  if (no_cancel && auto_close)
+     gtk_widget_hide(GTK_WIDGET(ok_button));
+
   zenity_util_show_dialog (dialog);
   zenity_progress_read_info (progress_data);
 
diff --git a/src/zenity.h b/src/zenity.h
index fa65b0c..9d7a153 100644
--- a/src/zenity.h
+++ b/src/zenity.h
@@ -98,6 +98,7 @@ typedef struct {
   gboolean autoclose;
   gboolean autokill;
   gdouble  percentage;
+  gboolean no_cancel;
 } ZenityProgressData;
 
 typedef struct {



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