[Xfce4-commits] r26451 - in mousepad/branches/nick_0_3: . mousepad

Nick Schermer nick at xfce.org
Sat Dec 8 11:46:09 CET 2007


Author: nick
Date: 2007-12-08 10:46:08 +0000 (Sat, 08 Dec 2007)
New Revision: 26451

Modified:
   mousepad/branches/nick_0_3/ChangeLog
   mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.c
   mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.h
   mousepad/branches/nick_0_3/mousepad/mousepad-window.c
Log:
	* mousepad/mousepad-{dialog,window}.c: Show save as button in
	  question dialog for readonly documents. Also add the modified
	  readonly documents to the save-as queue when running save all.

Modified: mousepad/branches/nick_0_3/ChangeLog
===================================================================
--- mousepad/branches/nick_0_3/ChangeLog	2007-12-08 10:31:50 UTC (rev 26450)
+++ mousepad/branches/nick_0_3/ChangeLog	2007-12-08 10:46:08 UTC (rev 26451)
@@ -1,5 +1,12 @@
 2007-12-08	Nick Schermer <nick at xfce.org>
 
+	* mousepad/mousepad-{dialog,window}.c: Show save as button in
+	  question dialog for readonly documents. Also add the modified
+	  readonly documents to the save-as queue when running save all.
+
+
+2007-12-08	Nick Schermer <nick at xfce.org>
+
 	* mousepad/mousepad-{search-bar,window}.c: Remove highlight when
 	  hiding the search bar. Search ahead when opening the search bar.
 

Modified: mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.c
===================================================================
--- mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.c	2007-12-08 10:31:50 UTC (rev 26450)
+++ mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.c	2007-12-08 10:46:08 UTC (rev 26451)
@@ -350,36 +350,41 @@
 
 
 gint
-mousepad_dialogs_save_changes (GtkWindow *parent)
+mousepad_dialogs_save_changes (GtkWindow *parent,
+                               gboolean   readonly)
 {
   GtkWidget *dialog;
   GtkWidget *image;
   gint       response;
 
-  /* the dialog icon */
-  image = gtk_image_new_from_stock (GTK_STOCK_SAVE, GTK_ICON_SIZE_DIALOG);
-  gtk_widget_show (image);
-
   /* create the question dialog */
   dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
                                    GTK_MESSAGE_OTHER, GTK_BUTTONS_NONE,
                                    _("Do you want to save the changes before closing?"));
+  gtk_window_set_title (GTK_WINDOW (dialog), _("Save Changes"));
+  gtk_dialog_add_action_widget (GTK_DIALOG (dialog), mousepad_util_image_button (GTK_STOCK_DELETE, _("_Don't Save")), MOUSEPAD_RESPONSE_DONT_SAVE);
+  gtk_dialog_add_buttons (GTK_DIALOG (dialog), GTK_STOCK_CANCEL, MOUSEPAD_RESPONSE_CANCEL, NULL);
 
-  gtk_dialog_add_action_widget (GTK_DIALOG (dialog),
-                                mousepad_util_image_button (GTK_STOCK_DELETE, _("_Don't Save")),
-                                MOUSEPAD_RESPONSE_DONT_SAVE);
+  /* we show the save as button instead of save for readonly document */
+  if (G_UNLIKELY (readonly))
+    {
+      image = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_DIALOG);
+      gtk_dialog_add_buttons (GTK_DIALOG (dialog), GTK_STOCK_SAVE_AS, MOUSEPAD_RESPONSE_SAVE_AS, NULL);
+      gtk_dialog_set_default_response (GTK_DIALOG (dialog), MOUSEPAD_RESPONSE_SAVE_AS);
+    }
+  else
+    {
+      image = gtk_image_new_from_stock (GTK_STOCK_SAVE, GTK_ICON_SIZE_DIALOG);
+      gtk_dialog_add_buttons (GTK_DIALOG (dialog), GTK_STOCK_SAVE, MOUSEPAD_RESPONSE_SAVE, NULL);
+      gtk_dialog_set_default_response (GTK_DIALOG (dialog), MOUSEPAD_RESPONSE_SAVE);
+    }
 
-  gtk_dialog_add_buttons (GTK_DIALOG (dialog),
-                          GTK_STOCK_CANCEL, MOUSEPAD_RESPONSE_CANCEL,
-                          GTK_STOCK_SAVE, MOUSEPAD_RESPONSE_SAVE,
-                          NULL);
-
-  gtk_window_set_title (GTK_WINDOW (dialog), _("Save Changes"));
+  /* the dialog icon */
   gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (dialog), image);
-  gtk_dialog_set_default_response (GTK_DIALOG (dialog), MOUSEPAD_RESPONSE_SAVE);
+  gtk_widget_show (image);
 
-  gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                            _("If you don't save the document, all the changes will be lost."));
+  /* secondary text */
+  gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("If you don't save the document, all the changes will be lost."));
 
   /* run the dialog and wait for a response */
   response = gtk_dialog_run (GTK_DIALOG (dialog));

Modified: mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.h
===================================================================
--- mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.h	2007-12-08 10:31:50 UTC (rev 26450)
+++ mousepad/branches/nick_0_3/mousepad/mousepad-dialogs.h	2007-12-08 10:46:08 UTC (rev 26451)
@@ -58,7 +58,8 @@
 
 gboolean   mousepad_dialogs_clear_recent   (GtkWindow     *parent);
 
-gint       mousepad_dialogs_save_changes   (GtkWindow     *parent);
+gint       mousepad_dialogs_save_changes   (GtkWindow     *parent,
+                                            gboolean       readonly);
 
 gint       mousepad_dialogs_revert         (GtkWindow     *parent);
 

Modified: mousepad/branches/nick_0_3/mousepad/mousepad-window.c
===================================================================
--- mousepad/branches/nick_0_3/mousepad/mousepad-window.c	2007-12-08 10:31:50 UTC (rev 26450)
+++ mousepad/branches/nick_0_3/mousepad/mousepad-window.c	2007-12-08 10:46:08 UTC (rev 26451)
@@ -1177,6 +1177,7 @@
 {
   gboolean succeed = FALSE;
   gint     response;
+  gboolean readonly;
 
   _mousepad_return_val_if_fail (MOUSEPAD_IS_WINDOW (window), FALSE);
   _mousepad_return_val_if_fail (MOUSEPAD_IS_DOCUMENT (document), FALSE);
@@ -1184,8 +1185,11 @@
   /* check if the document has been modified */
   if (gtk_text_buffer_get_modified (document->buffer))
     {
+      /* whether the file is readonly */
+      readonly = mousepad_file_get_read_only (document->file);
+
       /* run save changes dialog */
-      response = mousepad_dialogs_save_changes (GTK_WINDOW (window));
+      response = mousepad_dialogs_save_changes (GTK_WINDOW (window), readonly);
 
       switch (response)
         {
@@ -1201,6 +1205,10 @@
           case MOUSEPAD_RESPONSE_SAVE:
             succeed = mousepad_window_action_save (NULL, window);
             break;
+
+          case MOUSEPAD_RESPONSE_SAVE_AS:
+            succeed = mousepad_window_action_save_as (NULL, window);
+            break;
         }
     }
   else
@@ -3371,7 +3379,8 @@
       if (!gtk_text_buffer_get_modified (MOUSEPAD_DOCUMENT (document)->buffer))
         continue;
 
-      if (mousepad_file_get_filename (MOUSEPAD_DOCUMENT (document)->file) == NULL)
+      if (mousepad_file_get_filename (MOUSEPAD_DOCUMENT (document)->file) == NULL ||
+          mousepad_file_get_read_only ((MOUSEPAD_DOCUMENT (document)->file)))
         {
           /* add the document to a queue to bother the user later */
           unnamed = g_slist_prepend (unnamed, document);



More information about the Xfce4-commits mailing list