]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement wxDocument::Revert() and show its use in the sample.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Mar 2010 10:49:51 +0000 (10:49 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 23 Mar 2010 10:49:51 +0000 (10:49 +0000)
wxDocument::Revert() method existed but didn't do anything, provide a
default implementation for it. Also document it and show it in the sample.

Closes #11849.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/docview.h
interface/wx/docview.h
samples/docview/docview.cpp
src/common/docview.cpp

index c0d0cafc94a4930cac59e7153b32826762d54f76..1bfa022e3d877906dd3edf248cd53a5559ef055e 100644 (file)
@@ -497,6 +497,7 @@ All (GUI):
 - Added wxTreeCtrl::SelectChildren() (Nikolay Tjushkov).
 - Show pages icons in window list menu in wxAuiNotebook (Ronny Krüger).
 - Add "initial selection" parameter to wxGetSingleChoice() (Nikolay Tjushkov).
+- Implement wxDocument::Revert() (troelsk).
 
 GTK:
 
index c9109ce65bb417d512583f4f93be06cdab7b0b37..bf9a54d35704b0061f2d0aa10d1f01afc912266b 100644 (file)
@@ -377,6 +377,7 @@ public:
     // Handlers for UI update commands
     void OnUpdateFileOpen(wxUpdateUIEvent& event);
     void OnUpdateDisableIfNoDoc(wxUpdateUIEvent& event);
+    void OnUpdateFileRevert(wxUpdateUIEvent& event);
     void OnUpdateFileNew(wxUpdateUIEvent& event);
     void OnUpdateFileSave(wxUpdateUIEvent& event);
     void OnUpdateUndo(wxUpdateUIEvent& event);
index b39691807674740742b19e2a08692797c465b21c..e857d57304aa06f6278c5a38ed10fa4ade074531 100644 (file)
@@ -1332,6 +1332,14 @@ public:
     */
     virtual bool SaveAs();
 
+    /**
+        Discard changes and load last saved version.
+
+        Prompts the user first, and then calls DoOpenDocument() to reload the
+        current file.
+    */
+    virtual bool Revert();
+
     //@{
     /**
         Override this function and call it from your own SaveObject() before
index b865b6f42590348df34d8b6659b1a6b493fca9ef..e0ee83cbd29caebfb00d80a8e28f6878b37fc9cc 100644 (file)
@@ -247,6 +247,7 @@ void MyApp::AppendDocumentFileCommands(wxMenu *menu, bool supportsPrinting)
     menu->Append(wxID_CLOSE);
     menu->Append(wxID_SAVE);
     menu->Append(wxID_SAVEAS);
+    menu->Append(wxID_REVERT, _("Re&vert..."));
 
     if ( supportsPrinting )
     {
index 102653afa13848a78d7852fe90a9ead13b65fdb3..265a6e54a6ef09d18357b89dd9d70e639fff08dc 100644 (file)
@@ -418,7 +418,22 @@ wxOutputStream& wxDocument::SaveObject(wxOutputStream& stream)
 
 bool wxDocument::Revert()
 {
-    return false;
+    if ( wxMessageBox
+         (
+            _("Discard changes and reload the last saved version?"),
+            wxTheApp->GetAppDisplayName(),
+            wxYES_NO | wxCANCEL | wxICON_QUESTION,
+            GetDocumentWindow()
+          ) != wxYES )
+        return false;
+
+    if ( !DoOpenDocument(GetFilename()) )
+        return false;
+
+    Modify(false);
+    UpdateAllViews();
+
+    return true;
 }
 
 
@@ -888,7 +903,7 @@ BEGIN_EVENT_TABLE(wxDocManager, wxEvtHandler)
     EVT_UPDATE_UI(wxID_OPEN, wxDocManager::OnUpdateFileOpen)
     EVT_UPDATE_UI(wxID_CLOSE, wxDocManager::OnUpdateDisableIfNoDoc)
     EVT_UPDATE_UI(wxID_CLOSE_ALL, wxDocManager::OnUpdateDisableIfNoDoc)
-    EVT_UPDATE_UI(wxID_REVERT, wxDocManager::OnUpdateDisableIfNoDoc)
+    EVT_UPDATE_UI(wxID_REVERT, wxDocManager::OnUpdateFileRevert)
     EVT_UPDATE_UI(wxID_NEW, wxDocManager::OnUpdateFileNew)
     EVT_UPDATE_UI(wxID_SAVE, wxDocManager::OnUpdateFileSave)
     EVT_UPDATE_UI(wxID_SAVEAS, wxDocManager::OnUpdateDisableIfNoDoc)
@@ -1168,6 +1183,12 @@ void wxDocManager::OnUpdateDisableIfNoDoc(wxUpdateUIEvent& event)
     event.Enable( GetCurrentDocument() != NULL );
 }
 
+void wxDocManager::OnUpdateFileRevert(wxUpdateUIEvent& event)
+{
+    wxDocument* doc = GetCurrentDocument();
+    event.Enable(doc && doc->IsModified() && doc->GetDocumentSaved());
+}
+
 void wxDocManager::OnUpdateFileNew(wxUpdateUIEvent& event)
 {
     // CreateDocument() (which is called from OnFileNew) may succeed