#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"
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?
bool wxDocument::Save()
{
- if (!IsModified() && m_savedYet)
+ if ( AlreadySaved() )
return true;
if ( m_documentFile.empty() || !m_savedYet )
wxString fileName(tmp);
wxString path, name, ext;
- wxSplitPath(fileName, & path, & name, & ext);
+ wxFileName::SplitPath(fileName, & path, & name, & ext);
if (ext.empty())
{
{
#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);
{
#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)
#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 )
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
void wxDocManager::OnFileNew(wxCommandEvent& WXUNUSED(event))
{
- CreateDocument( wxEmptyString, wxDOC_NEW );
+ CreateNewDocument();
}
void wxDocManager::OnFileOpen(wxCommandEvent& WXUNUSED(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)
{
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++;