From e067a30f2dab9ccfa87520c911f0a67a4031668b Mon Sep 17 00:00:00 2001 From: Christian Stimming Date: Sat, 31 Dec 2011 16:32:12 +0000 Subject: [PATCH] Read-only mode: Add "Revert file" menu item so that a file that might got changed from someone else can easily be reloaded. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@21810 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/gnome/gnc-plugin-basic-commands.c | 27 +++++++++++++++++++ src/gnome/ui/gnc-plugin-basic-commands-ui.xml | 1 + 2 files changed, 28 insertions(+) diff --git a/src/gnome/gnc-plugin-basic-commands.c b/src/gnome/gnc-plugin-basic-commands.c index c3093cb407..7a9e15dfc2 100644 --- a/src/gnome/gnc-plugin-basic-commands.c +++ b/src/gnome/gnc-plugin-basic-commands.c @@ -55,6 +55,7 @@ #include "gnc-window.h" #include "gnc-session.h" #include "gnc-plugin-page-sx-list.h" +#include "gnc-plugin-file-history.h" /* This static indicates the debugging module that this .o belongs to. */ static QofLogModule log_module = GNC_MOD_GUI; @@ -70,6 +71,7 @@ static void gnc_main_window_cmd_file_new (GtkAction *action, GncMainWindowAction static void gnc_main_window_cmd_file_open (GtkAction *action, GncMainWindowActionData *data); static void gnc_main_window_cmd_file_save (GtkAction *action, GncMainWindowActionData *data); static void gnc_main_window_cmd_file_save_as (GtkAction *action, GncMainWindowActionData *data); +static void gnc_main_window_cmd_file_revert (GtkAction *action, GncMainWindowActionData *data); static void gnc_main_window_cmd_file_export_accounts (GtkAction *action, GncMainWindowActionData *data); static void gnc_main_window_cmd_edit_tax_options (GtkAction *action, GncMainWindowActionData *data); static void gnc_main_window_cmd_actions_mortgage_loan (GtkAction *action, GncMainWindowActionData *data); @@ -115,6 +117,11 @@ static GtkActionEntry gnc_plugin_actions [] = N_("Save this file with a different name"), G_CALLBACK (gnc_main_window_cmd_file_save_as) }, + { + "FileRevertAction", GTK_STOCK_REVERT_TO_SAVED, N_("Re_vert"), NULL, + N_("Reload the current database, reverting all unsaved changes"), + G_CALLBACK (gnc_main_window_cmd_file_revert) + }, { "FileExportAccountsAction", GTK_STOCK_CONVERT, N_("Export _Accounts"), NULL, @@ -422,6 +429,26 @@ gnc_main_window_cmd_file_save_as (GtkAction *action, GncMainWindowActionData *da /* FIXME GNOME 2 Port (update the title etc.) */ } +static void +gnc_main_window_cmd_file_revert (GtkAction *action, GncMainWindowActionData *data) +{ + g_return_if_fail (data != NULL); + + if (!gnc_main_window_all_finish_pending()) + return; + + gnc_window_set_progressbar_window (GNC_WINDOW(data->window)); + + { + gchar *filename = gnc_history_get_last(); + // And actually open the current file again + gnc_file_open_file (filename, qof_book_is_readonly(gnc_get_current_book())); + g_free(filename); + } + + gnc_window_set_progressbar_window (NULL); +} + static void gnc_main_window_cmd_file_export_accounts (GtkAction *action, GncMainWindowActionData *data) { diff --git a/src/gnome/ui/gnc-plugin-basic-commands-ui.xml b/src/gnome/ui/gnc-plugin-basic-commands-ui.xml index 11ae07b3a2..e60ffce10d 100644 --- a/src/gnome/ui/gnc-plugin-basic-commands-ui.xml +++ b/src/gnome/ui/gnc-plugin-basic-commands-ui.xml @@ -10,6 +10,7 @@ +