[Xfce4-commits] <mousepad:master> * 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.
Nick Schermer
noreply at xfce.org
Sat May 5 21:31:06 CEST 2012
Updating branch refs/heads/master
to 1d7bef769029aae39ddcecb6c529177393363dcf (commit)
from f67680befa81f562943b591a7143e25baea1fb17 (commit)
commit 1d7bef769029aae39ddcecb6c529177393363dcf
Author: Nick Schermer <nick at xfce.org>
Date: Sat Dec 8 10:46:08 2007 +0000
* 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.
(Old svn revision: 26451)
ChangeLog | 7 +++++++
mousepad/mousepad-dialogs.c | 39 ++++++++++++++++++++++-----------------
mousepad/mousepad-dialogs.h | 3 ++-
mousepad/mousepad-window.c | 13 +++++++++++--
4 files changed, 42 insertions(+), 20 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 724b54b..2c1a270 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/mousepad/mousepad-dialogs.c b/mousepad/mousepad-dialogs.c
index adaffc3..3ec9dad 100644
--- a/mousepad/mousepad-dialogs.c
+++ b/mousepad/mousepad-dialogs.c
@@ -350,36 +350,41 @@ mousepad_dialogs_clear_recent (GtkWindow *parent)
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);
-
- gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, MOUSEPAD_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, MOUSEPAD_RESPONSE_SAVE,
- NULL);
+ /* 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_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));
diff --git a/mousepad/mousepad-dialogs.h b/mousepad/mousepad-dialogs.h
index 5ecfc15..de24257 100644
--- a/mousepad/mousepad-dialogs.h
+++ b/mousepad/mousepad-dialogs.h
@@ -58,7 +58,8 @@ gboolean mousepad_dialogs_go_to (GtkWindow *parent,
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);
diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c
index 9defb9d..34ba8a4 100644
--- a/mousepad/mousepad-window.c
+++ b/mousepad/mousepad-window.c
@@ -1177,6 +1177,7 @@ mousepad_window_close_document (MousepadWindow *window,
{
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 @@ mousepad_window_close_document (MousepadWindow *window,
/* 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 @@ mousepad_window_close_document (MousepadWindow *window,
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 @@ mousepad_window_action_save_all (GtkAction *action,
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