]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/docview.cpp
my previous commit patched the wrong file
[wxWidgets.git] / src / common / docview.cpp
index e308d867c016d9ae5ce405854fd12d13e4a5d06d..11f9b7b6737d9844605f29dcff5a7a4ac1d777fe 100644 (file)
@@ -57,6 +57,7 @@
 #include "wx/tokenzr.h"
 #include "wx/filename.h"
 #include "wx/vector.h"
+#include "wx/ptr_scpd.h"
 
 #if wxUSE_STD_IOSTREAM
     #include "wx/ioswrap.h"
@@ -111,7 +112,7 @@ wxWindow *wxFindSuitableParent()
 wxString FindExtension(const wxString& path)
 {
     wxString ext;
-    wxSplitPath(path, NULL, NULL, &ext);
+    wxFileName::SplitPath(path, NULL, NULL, &ext);
 
     // VZ: extensions are considered not case sensitive - is this really a good
     //     idea?
@@ -259,7 +260,7 @@ bool wxDocument::OnNewDocument()
 
 bool wxDocument::Save()
 {
-    if (!IsModified() && m_savedYet)
+    if ( AlreadySaved() )
         return true;
 
     if ( m_documentFile.empty() || !m_savedYet )
@@ -322,7 +323,7 @@ bool wxDocument::SaveAs()
 
     wxString fileName(tmp);
     wxString path, name, ext;
-    wxSplitPath(fileName, & path, & name, & ext);
+    wxFileName::SplitPath(fileName, & path, & name, & ext);
 
     if (ext.empty())
     {
@@ -582,10 +583,10 @@ bool wxDocument::DoSaveDocument(const wxString& file)
 {
 #if wxUSE_STD_IOSTREAM
     wxSTD ofstream store(file.mb_str(), wxSTD ios::binary);
-    if (store.fail() || store.bad())
+    if ( !store )
 #else
     wxFileOutputStream store(file);
-    if (store.GetLastError() != wxSTREAM_NO_ERROR)
+    if ( store.GetLastError() != wxSTREAM_NO_ERROR )
 #endif
     {
         wxLogError(_("File \"%s\" could not be opened for writing."), file);
@@ -605,7 +606,7 @@ bool wxDocument::DoOpenDocument(const wxString& file)
 {
 #if wxUSE_STD_IOSTREAM
     wxSTD ifstream store(file.mb_str(), wxSTD ios::binary);
-    if ( store.fail() || store.bad() )
+    if ( !store )
 #else
     wxFileInputStream store(file);
     if (store.GetLastError() != wxSTREAM_NO_ERROR)
@@ -617,7 +618,7 @@ bool wxDocument::DoOpenDocument(const wxString& file)
 
 #if wxUSE_STD_IOSTREAM
     LoadObject(store);
-    if ( store.fail() || store.bad() )
+    if ( !store )
 #else
     int res = LoadObject(store).GetLastError();
     if ( res != wxSTREAM_NO_ERROR && res != wxSTREAM_EOF )
@@ -779,20 +780,15 @@ wxDocTemplate::InitDocument(wxDocument* doc, const wxString& path, long flags)
 
 wxView *wxDocTemplate::CreateView(wxDocument *doc, long flags)
 {
-    wxView *view = DoCreateView();
-    if ( view == NULL )
+    wxScopedPtr<wxView> view(DoCreateView());
+    if ( !view )
         return NULL;
 
     view->SetDocument(doc);
-    if (view->OnCreate(doc, flags))
-    {
-        return view;
-    }
-    else
-    {
-        delete view;
+    if ( !view->OnCreate(doc, flags) )
         return NULL;
-    }
+
+    return view.release();
 }
 
 // The default (very primitive) format detection: check is the extension is
@@ -972,7 +968,7 @@ void wxDocManager::OnFileCloseAll(wxCommandEvent& WXUNUSED(event))
 
 void wxDocManager::OnFileNew(wxCommandEvent& WXUNUSED(event))
 {
-    CreateDocument( wxEmptyString, wxDOC_NEW );
+    CreateNewDocument();
 }
 
 void wxDocManager::OnFileOpen(wxCommandEvent& WXUNUSED(event))
@@ -1094,8 +1090,8 @@ void wxDocManager::OnUpdateFileNew(wxUpdateUIEvent& event)
 
 void wxDocManager::OnUpdateFileSave(wxUpdateUIEvent& event)
 {
-    wxDocument *doc = GetCurrentDocument();
-    event.Enable( doc && doc->IsModified() );
+    wxDocument * const doc = GetCurrentDocument();
+    event.Enable( doc && !doc->AlreadySaved() );
 }
 
 void wxDocManager::OnUpdateUndo(wxUpdateUIEvent& event)
@@ -2013,24 +2009,22 @@ void wxFileHistory::AddFileToHistory(const wxString& file)
     {
         RemoveFileFromHistory(--numFiles);
     }
-    else // add a new menu item to all file menus (will be updated below)
+
+    // add a new menu item to all file menus (they will be updated below)
+    for ( wxList::compatibility_iterator node = m_fileMenus.GetFirst();
+        node;
+        node = node->GetNext() )
     {
-        for ( wxList::compatibility_iterator node = m_fileMenus.GetFirst();
-              node;
-              node = node->GetNext() )
-        {
-            wxMenu * const menu = (wxMenu *)node->GetData();
+        wxMenu * const menu = (wxMenu *)node->GetData();
 
-            if ( !numFiles && menu->GetMenuItemCount() )
-                menu->AppendSeparator();
+        if ( !numFiles && menu->GetMenuItemCount() )
+            menu->AppendSeparator();
 
-            // label doesn't matter, it will be set below anyhow, but it can't
-            // be empty (this is supposed to indicate a stock item)
-            menu->Append(m_idBase + numFiles, " ");
-        }
+        // label doesn't matter, it will be set below anyhow, but it can't
+        // be empty (this is supposed to indicate a stock item)
+        menu->Append(m_idBase + numFiles, " ");
     }
 
-
     // insert the new file in the beginning of the file history
     m_fileHistory.insert(m_fileHistory.begin(), file);
     numFiles++;