no real changes, just minor refactoring and cleanup

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-01-29 12:52:17 +00:00
parent e61f95ea78
commit 89d94e046d
2 changed files with 166 additions and 146 deletions

View File

@@ -51,7 +51,7 @@ enum
enum
{
wxTEMPLATE_VISIBLE = 1,
wxTEMPLATE_INVISIBLE,
wxTEMPLATE_INVISIBLE = 2,
wxDEFAULT_TEMPLATE_FLAGS = wxTEMPLATE_VISIBLE
};
@@ -118,8 +118,10 @@ public:
// By default, creates a base wxCommandProcessor.
virtual wxCommandProcessor *OnCreateCommandProcessor();
virtual wxCommandProcessor *GetCommandProcessor() const { return m_commandProcessor; }
virtual void SetCommandProcessor(wxCommandProcessor *proc) { m_commandProcessor = proc; }
virtual wxCommandProcessor *GetCommandProcessor() const
{ return m_commandProcessor; }
virtual void SetCommandProcessor(wxCommandProcessor *proc)
{ m_commandProcessor = proc; }
// Called after a view is added or removed. The default implementation
// deletes the document if this is there are no more views.
@@ -145,8 +147,10 @@ public:
// Other stuff
virtual wxDocManager *GetDocumentManager() const;
virtual wxDocTemplate *GetDocumentTemplate() const { return m_documentTemplate; }
virtual void SetDocumentTemplate(wxDocTemplate *temp) { m_documentTemplate = temp; }
virtual wxDocTemplate *GetDocumentTemplate() const
{ return m_documentTemplate; }
virtual void SetDocumentTemplate(wxDocTemplate *temp)
{ m_documentTemplate = temp; }
// Get the document name to be shown to the user: the title if there is
// any, otherwise the filename if the document was saved and, finally,
@@ -204,7 +208,9 @@ public:
wxWindow *GetFrame() const { return m_viewFrame ; }
void SetFrame(wxWindow *frame) { m_viewFrame = frame; }
virtual void OnActivateView(bool activate, wxView *activeView, wxView *deactiveView);
virtual void OnActivateView(bool activate,
wxView *activeView,
wxView *deactiveView);
virtual void OnDraw(wxDC *dc) = 0;
virtual void OnPrint(wxDC *dc, wxObject *info);
virtual void OnUpdate(wxView *sender, wxObject *hint = NULL);
@@ -278,13 +284,16 @@ public:
// Helper method for CreateDocument; also allows you to do your own document
// creation
virtual bool InitDocument(wxDocument* doc, const wxString& path, long flags = 0);
virtual bool InitDocument(wxDocument* doc,
const wxString& path,
long flags = 0);
wxString GetDefaultExtension() const { return m_defaultExt; }
wxString GetDescription() const { return m_description; }
wxString GetDirectory() const { return m_directory; }
wxDocManager *GetDocumentManager() const { return m_documentManager; }
void SetDocumentManager(wxDocManager *manager) { m_documentManager = manager; }
void SetDocumentManager(wxDocManager *manager)
{ m_documentManager = manager; }
wxString GetFileFilter() const { return m_fileFilter; }
long GetFlags() const { return m_flags; }
virtual wxString GetViewName() const { return m_viewTypeName; }
@@ -296,7 +305,7 @@ public:
void SetDefaultExtension(const wxString& ext) { m_defaultExt = ext; }
void SetFlags(long flags) { m_flags = flags; }
bool IsVisible() const { return ((m_flags & wxTEMPLATE_VISIBLE) == wxTEMPLATE_VISIBLE); }
bool IsVisible() const { return (m_flags & wxTEMPLATE_VISIBLE) != 0; }
wxClassInfo* GetDocClassInfo() const { return m_docClassInfo; }
wxClassInfo* GetViewClassInfo() const { return m_viewClassInfo; }
@@ -317,9 +326,11 @@ protected:
wxClassInfo* m_docClassInfo;
wxClassInfo* m_viewClassInfo;
// Called by CreateDocument and CreateView to create the actual document/view object.
// By default uses the ClassInfo provided to the constructor. Override these functions
// to provide a different method of creation.
// Called by CreateDocument and CreateView to create the actual
// document/view object.
//
// By default uses the ClassInfo provided to the constructor. Override
// these functions to provide a different method of creation.
virtual wxDocument *DoCreateDocument();
virtual wxView *DoCreateView();
@@ -458,6 +469,10 @@ protected:
// hook the currently active view into event handlers chain here
virtual bool TryValidator(wxEvent& event);
// return the command processor for the current document, if any
wxCommandProcessor *GetCurrentCommandProcessor() const;
int m_defaultDocumentNameCounter;
int m_maxDocsOpen;
wxList m_docs;
@@ -573,10 +588,13 @@ class WXDLLIMPEXP_CORE wxDocPrintout : public wxPrintout
{
public:
wxDocPrintout(wxView *view = NULL, const wxString& title = wxT("Printout"));
bool OnPrintPage(int page);
bool HasPage(int page);
bool OnBeginDocument(int startPage, int endPage);
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
// implement wxPrintout methods
virtual bool OnPrintPage(int page);
virtual bool HasPage(int page);
virtual bool OnBeginDocument(int startPage, int endPage);
virtual void GetPageInfo(int *minPage, int *maxPage,
int *selPageFrom, int *selPageTo);
virtual wxView *GetView() { return m_printoutView; }
@@ -655,16 +673,18 @@ inline size_t wxFileHistory::GetNoHistoryFiles() const
}
#endif // WXWIN_COMPATIBILITY_2_6
// For compatibility with existing file formats:
// converts from/to a stream to/from a temporary file.
#if wxUSE_STD_IOSTREAM
// For compatibility with existing file formats:
// converts from/to a stream to/from a temporary file.
bool WXDLLIMPEXP_CORE wxTransferFileToStream(const wxString& filename, wxSTD ostream& stream);
bool WXDLLIMPEXP_CORE wxTransferStreamToFile(wxSTD istream& stream, const wxString& filename);
bool WXDLLIMPEXP_CORE
wxTransferFileToStream(const wxString& filename, wxSTD ostream& stream);
bool WXDLLIMPEXP_CORE
wxTransferStreamToFile(wxSTD istream& stream, const wxString& filename);
#else
// For compatibility with existing file formats:
// converts from/to a stream to/from a temporary file.
bool WXDLLIMPEXP_CORE wxTransferFileToStream(const wxString& filename, wxOutputStream& stream);
bool WXDLLIMPEXP_CORE wxTransferStreamToFile(wxInputStream& stream, const wxString& filename);
bool WXDLLIMPEXP_CORE
wxTransferFileToStream(const wxString& filename, wxOutputStream& stream);
bool WXDLLIMPEXP_CORE
wxTransferStreamToFile(wxInputStream& stream, const wxString& filename);
#endif // wxUSE_STD_IOSTREAM

View File

@@ -156,7 +156,6 @@ wxDocument::~wxDocument()
{
DeleteContents();
if (m_commandProcessor)
delete m_commandProcessor;
if (GetDocumentManager())
@@ -170,10 +169,10 @@ wxDocument::~wxDocument()
bool wxDocument::Close()
{
if (OnSaveModified())
return OnCloseDocument();
else
if ( !OnSaveModified() )
return false;
return OnCloseDocument();
}
bool wxDocument::OnCloseDocument()
@@ -233,9 +232,10 @@ bool wxDocument::DeleteAllViews()
wxView *wxDocument::GetFirstView() const
{
if (m_documentViews.GetCount() == 0)
if ( m_documentViews.empty() )
return NULL;
return (wxView *)m_documentViews.GetFirst()->GetData();
return static_cast<wxView *>(m_documentViews.GetFirst()->GetData());
}
wxDocManager *wxDocument::GetDocumentManager() const
@@ -276,15 +276,17 @@ bool wxDocument::SaveAs()
if (!docTemplate)
return false;
#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXMAC__)
wxString filter = docTemplate->GetDescription() + wxT(" (") + docTemplate->GetFileFilter() + wxT(")|") + docTemplate->GetFileFilter();
#ifdef wxHAS_MULTIPLE_FILEDLG_FILTERS
wxString filter = docTemplate->GetDescription() + wxT(" (") +
docTemplate->GetFileFilter() + wxT(")|") +
docTemplate->GetFileFilter();
// Now see if there are some other template with identical view and document
// classes, whose filters may also be used.
if (docTemplate->GetViewClassInfo() && docTemplate->GetDocClassInfo())
{
wxList::compatibility_iterator node = docTemplate->GetDocumentManager()->GetTemplates().GetFirst();
wxList::compatibility_iterator
node = docTemplate->GetDocumentManager()->GetTemplates().GetFirst();
while (node)
{
wxDocTemplate *t = (wxDocTemplate*) node->GetData();
@@ -297,7 +299,8 @@ bool wxDocument::SaveAs()
if ( !filter.empty() )
filter << wxT('|');
filter << t->GetDescription() << wxT(" (") << t->GetFileFilter() << wxT(") |")
filter << t->GetDescription()
<< wxT(" (") << t->GetFileFilter() << wxT(") |")
<< t->GetFileFilter();
}
@@ -307,6 +310,7 @@ bool wxDocument::SaveAs()
#else
wxString filter = docTemplate->GetFileFilter() ;
#endif
wxString defaultDir = docTemplate->GetDirectory();
if ( defaultDir.empty() )
{
@@ -324,7 +328,7 @@ bool wxDocument::SaveAs()
GetDocumentWindow());
if (fileName.empty())
return false;
return false; // cancelled by user
wxString ext;
wxFileName::SplitPath(fileName, NULL, NULL, &ext);
@@ -342,17 +346,15 @@ bool wxDocument::SaveAs()
SetTitle(wxFileNameFromPath(fileName));
SetFilename(fileName, true); // will call OnChangeFileName automatically
// A file that doesn't use the default extension of its document template cannot be opened
// via the FileHistory, so we do not add it.
// A file that doesn't use the default extension of its document template
// cannot be opened via the FileHistory, so we do not add it.
if (docTemplate->FileMatchesTemplate(fileName))
{
GetDocumentManager()->AddFileToHistory(fileName);
}
else
{
// The user will probably not be able to open the file again, so
// we could warn about the wrong file-extension here.
}
//else: the user will probably not be able to open the file again, so we
// could warn about the wrong file-extension here
return true;
}
@@ -455,11 +457,9 @@ wxString wxDocument::DoGetUserReadableName() const
wxWindow *wxDocument::GetDocumentWindow() const
{
wxView *view = GetFirstView();
if (view)
return view->GetFrame();
else
return wxTheApp->GetTopWindow();
wxView * const view = GetFirstView();
return view ? view->GetFrame() : wxTheApp->GetTopWindow();
}
wxCommandProcessor *wxDocument::OnCreateCommandProcessor()
@@ -655,7 +655,9 @@ bool wxView::TryValidator(wxEvent& event)
return doc && doc->ProcessEventHere(event);
}
void wxView::OnActivateView(bool WXUNUSED(activate), wxView *WXUNUSED(activeView), wxView *WXUNUSED(deactiveView))
void wxView::OnActivateView(bool WXUNUSED(activate),
wxView *WXUNUSED(activeView),
wxView *WXUNUSED(deactiveView))
{
}
@@ -770,12 +772,10 @@ wxDocTemplate::InitDocument(wxDocument* doc, const wxString& path, long flags)
if (doc->OnCreate(path, flags))
return true;
else
{
if (GetDocumentManager()->GetDocuments().Member(doc))
doc->DeleteAllViews();
return false;
}
}
wxView *wxDocTemplate::CreateView(wxDocument *doc, long flags)
@@ -814,7 +814,7 @@ wxDocument *wxDocTemplate::DoCreateDocument()
if (!m_docClassInfo)
return NULL;
return (wxDocument *)m_docClassInfo->CreateObject();
return static_cast<wxDocument *>(m_docClassInfo->CreateObject());
}
wxView *wxDocTemplate::DoCreateView()
@@ -822,7 +822,7 @@ wxView *wxDocTemplate::DoCreateView()
if (!m_viewClassInfo)
return NULL;
return (wxView *)m_viewClassInfo->CreateObject();
return static_cast<wxView *>(m_viewClassInfo->CreateObject());
}
// ----------------------------------------------------------------------------
@@ -885,8 +885,9 @@ wxDocManager::~wxDocManager()
// closes the specified document
bool wxDocManager::CloseDocument(wxDocument* doc, bool force)
{
if (doc->Close() || force)
{
if ( !doc->Close() && !force )
return false;
// Implicitly deletes the document when
// the last view is deleted
doc->DeleteAllViews();
@@ -896,8 +897,6 @@ bool wxDocManager::CloseDocument(wxDocument* doc, bool force)
delete doc;
return true;
}
return false;
}
bool wxDocManager::CloseDocuments(bool force)
@@ -986,7 +985,7 @@ void wxDocManager::OnFileNew(wxCommandEvent& WXUNUSED(event))
void wxDocManager::OnFileOpen(wxCommandEvent& WXUNUSED(event))
{
if ( !CreateDocument( wxEmptyString, 0) )
if ( !CreateDocument("") )
{
OnOpenFileFailure();
}
@@ -1045,16 +1044,18 @@ void wxDocManager::OnPreview(wxCommandEvent& WXUNUSED(event))
if (printout)
{
// Pass two printout objects: for preview, and possible printing.
wxPrintPreviewBase *preview = new wxPrintPreview(printout, view->OnCreatePrintout());
wxPrintPreviewBase *
preview = new wxPrintPreview(printout, view->OnCreatePrintout());
if ( !preview->Ok() )
{
delete preview;
wxMessageBox( _("Sorry, print preview needs a printer to be installed.") );
wxLogError(_("Print preview creation failed."));
return;
}
wxPreviewFrame *frame = new wxPreviewFrame(preview, (wxFrame *)wxTheApp->GetTopWindow(), _("Print Preview"),
wxPoint(100, 100), wxSize(600, 650));
wxPreviewFrame *
frame = new wxPreviewFrame(preview, wxTheApp->GetTopWindow(),
_("Print Preview"));
frame->Centre(wxBOTH);
frame->Initialize();
frame->Show(true);
@@ -1064,24 +1065,26 @@ void wxDocManager::OnPreview(wxCommandEvent& WXUNUSED(event))
void wxDocManager::OnUndo(wxCommandEvent& event)
{
wxDocument *doc = GetCurrentDocument();
if (!doc)
return;
if (doc->GetCommandProcessor())
doc->GetCommandProcessor()->Undo();
else
wxCommandProcessor * const cmdproc = GetCurrentCommandProcessor();
if ( !cmdproc )
{
event.Skip();
return;
}
cmdproc->Undo();
}
void wxDocManager::OnRedo(wxCommandEvent& event)
{
wxDocument *doc = GetCurrentDocument();
if (!doc)
return;
if (doc->GetCommandProcessor())
doc->GetCommandProcessor()->Redo();
else
wxCommandProcessor * const cmdproc = GetCurrentCommandProcessor();
if ( !cmdproc )
{
event.Skip();
return;
}
cmdproc->Redo();
}
// Handlers for UI update commands
@@ -1113,30 +1116,28 @@ void wxDocManager::OnUpdateFileSave(wxUpdateUIEvent& event)
void wxDocManager::OnUpdateUndo(wxUpdateUIEvent& event)
{
wxDocument *doc = GetCurrentDocument();
if (!doc)
event.Enable(false);
else if (!doc->GetCommandProcessor())
event.Skip();
else
wxCommandProcessor * const cmdproc = GetCurrentCommandProcessor();
if ( !cmdproc )
{
event.Enable( doc->GetCommandProcessor()->CanUndo() );
doc->GetCommandProcessor()->SetMenuStrings();
event.Enable(false);
return;
}
event.Enable(cmdproc->CanUndo());
cmdproc->SetMenuStrings();
}
void wxDocManager::OnUpdateRedo(wxUpdateUIEvent& event)
{
wxDocument *doc = GetCurrentDocument();
if (!doc)
event.Enable(false);
else if (!doc->GetCommandProcessor())
event.Skip();
else
wxCommandProcessor * const cmdproc = GetCurrentCommandProcessor();
if ( !cmdproc )
{
event.Enable( doc->GetCommandProcessor()->CanRedo() );
doc->GetCommandProcessor()->SetMenuStrings();
event.Enable(false);
return;
}
event.Enable(cmdproc->CanRedo());
cmdproc->SetMenuStrings();
}
wxView *wxDocManager::GetCurrentView() const
@@ -1328,11 +1329,14 @@ bool wxDocManager::FlushDoc(wxDocument *WXUNUSED(doc))
wxDocument *wxDocManager::GetCurrentDocument() const
{
wxView *view = GetCurrentView();
if (view)
return view->GetDocument();
else
return NULL;
wxView * const view = GetCurrentView();
return view ? view->GetDocument() : NULL;
}
wxCommandProcessor *wxDocManager::GetCurrentCommandProcessor() const
{
wxDocument * const doc = GetCurrentDocument();
return doc ? doc->GetCommandProcessor() : NULL;
}
// Make a default name for a new document
@@ -1480,12 +1484,10 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
long WXUNUSED(flags),
bool WXUNUSED(save))
{
// We can only have multiple filters in Windows and GTK
#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXMAC__)
#ifdef wxHAS_MULTIPLE_FILEDLG_FILTERS
wxString descrBuf;
int i;
for (i = 0; i < noTemplates; i++)
for (int i = 0; i < noTemplates; i++)
{
if (templates[i]->IsVisible())
{
@@ -1526,7 +1528,9 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
else
msgTitle = wxString(_("File error"));
(void)wxMessageBox(_("Sorry, could not open this file."), msgTitle, wxOK | wxICON_EXCLAMATION | wxCENTRE,
wxMessageBox(_("Sorry, could not open this file."),
msgTitle,
wxOK | wxICON_EXCLAMATION | wxCENTRE,
parent);
path = wxEmptyString;
@@ -1545,16 +1549,18 @@ wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates,
theTemplate = FindTemplateForPath(path);
if ( !theTemplate )
{
// Since we do not add files with non-default extensions to the FileHistory this
// can only happen if the application changes the allowed templates in runtime.
(void)wxMessageBox(_("Sorry, the format for this file is unknown."),
// Since we do not add files with non-default extensions to the
// file history this can only happen if the application changes the
// allowed templates in runtime.
wxMessageBox(_("Sorry, the format for this file is unknown."),
_("Open File"),
wxOK | wxICON_EXCLAMATION | wxCENTRE, wxFindSuitableParent());
wxOK | wxICON_EXCLAMATION | wxCENTRE,
parent);
}
}
else
{
path = wxEmptyString;
path.clear();
}
return theTemplate;
@@ -1564,7 +1570,7 @@ wxDocTemplate *wxDocManager::SelectDocumentType(wxDocTemplate **templates,
int noTemplates, bool sort)
{
wxArrayString strings;
wxDocTemplate **data = new wxDocTemplate *[noTemplates];
wxScopedArray<wxDocTemplate *> data(new wxDocTemplate *[noTemplates]);
int i;
int n = 0;
@@ -1631,13 +1637,11 @@ wxDocTemplate *wxDocManager::SelectDocumentType(wxDocTemplate **templates,
_("Select a document template"),
_("Templates"),
strings,
(void **)data,
(void **)data.get(),
wxFindSuitableParent()
);
}
delete[] data;
return theTemplate;
}
@@ -1645,7 +1649,7 @@ wxDocTemplate *wxDocManager::SelectViewType(wxDocTemplate **templates,
int noTemplates, bool sort)
{
wxArrayString strings;
wxDocTemplate **data = new wxDocTemplate *[noTemplates];
wxScopedArray<wxDocTemplate *> data(new wxDocTemplate *[noTemplates]);
int i;
int n = 0;
@@ -1708,13 +1712,12 @@ wxDocTemplate *wxDocManager::SelectViewType(wxDocTemplate **templates,
_("Select a document view"),
_("Views"),
strings,
(void **)data,
(void **)data.get(),
wxFindSuitableParent()
);
}
delete[] data;
return theTemplate;
}
@@ -1806,26 +1809,22 @@ void wxDocChildFrame::OnActivate(wxActivateEvent& event)
void wxDocChildFrame::OnCloseWindow(wxCloseEvent& event)
{
if (m_childView)
{
bool ans = event.CanVeto()
? m_childView->Close(false) // false means don't delete associated window
: true; // Must delete.
if ( !m_childView )
return;
if (ans)
// passing false to Close() means to not delete associated window
if ( event.CanVeto() && !m_childView->Close(false) )
{
event.Veto();
return;
}
m_childView->Activate(false);
delete m_childView;
m_childView = NULL;
m_childDocument = NULL;
this->Destroy();
}
else
event.Veto();
}
else
event.Veto();
Destroy();
}
// ----------------------------------------------------------------------------
@@ -1919,7 +1918,7 @@ void wxDocParentFrame::OnCloseWindow(wxCloseEvent& event)
{
if (m_docManager->Clear(!event.CanVeto()))
{
this->Destroy();
Destroy();
}
else
event.Veto();
@@ -1985,7 +1984,8 @@ bool wxDocPrintout::OnBeginDocument(int startPage, int endPage)
return true;
}
void wxDocPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo)
void wxDocPrintout::GetPageInfo(int *minPage, int *maxPage,
int *selPageFrom, int *selPageTo)
{
*minPage = 1;
*maxPage = 1;