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 <[EMAIL PROTECTED]>
 
+       * 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 <[EMAIL PROTECTED]>
+
        * 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);

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to