X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a10ea8b13fd0851e71e6fa5ebbe5b93933be11e..9fd8f2dd3df305448a0c2d56508c04e26385a76d:/src/common/docview.cpp diff --git a/src/common/docview.cpp b/src/common/docview.cpp index 5e2cada2da..0e26b04b6b 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -21,22 +21,27 @@ #include "wx/wxprec.h" #ifdef __BORLANDC__ - #pragma hdrstop + #pragma hdrstop #endif #if wxUSE_DOC_VIEW_ARCHITECTURE +#include "wx/docview.h" + #ifndef WX_PRECOMP + #include "wx/list.h" #include "wx/string.h" #include "wx/utils.h" #include "wx/app.h" #include "wx/dc.h" #include "wx/dialog.h" #include "wx/menu.h" - #include "wx/list.h" #include "wx/filedlg.h" #include "wx/intl.h" #include "wx/log.h" + #include "wx/msgdlg.h" + #include "wx/mdi.h" + #include "wx/choicdlg.h" #endif #include "wx/ffile.h" @@ -45,34 +50,28 @@ #include "wx/filename.h" #endif -#ifdef __WXGTK__ - #include "wx/mdi.h" -#endif - #if wxUSE_PRINTING_ARCHITECTURE - #include "wx/prntbase.h" - #include "wx/printdlg.h" + #include "wx/prntbase.h" + #include "wx/printdlg.h" #endif -#include "wx/msgdlg.h" -#include "wx/choicdlg.h" -#include "wx/docview.h" #include "wx/confbase.h" #include "wx/file.h" #include "wx/cmdproc.h" +#include "wx/tokenzr.h" #include #include #if wxUSE_STD_IOSTREAM - #include "wx/ioswrap.h" - #if wxUSE_IOSTREAMH - #include - #else - #include - #endif + #include "wx/ioswrap.h" + #if wxUSE_IOSTREAMH + #include + #else + #include + #endif #else - #include "wx/wfstream.h" + #include "wx/wfstream.h" #endif // ---------------------------------------------------------------------------- @@ -303,7 +302,7 @@ bool wxDocument::SaveAs() wxFileNameFromPath(GetFilename()), docTemplate->GetDefaultExtension(), filter, - wxSAVE | wxOVERWRITE_PROMPT, + wxFD_SAVE | wxFD_OVERWRITE_PROMPT, GetDocumentWindow()); if (tmp.empty()) @@ -656,14 +655,18 @@ void wxView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint)) void wxView::OnChangeFilename() { - if (GetFrame() && GetDocument()) - { - wxString title; + // GetFrame can return wxWindow rather than wxTopLevelWindow due to + // generic MDI implementation so use SetLabel rather than SetTitle. + // It should cause SetTitle() for top level windows. + wxWindow *win = GetFrame(); + if (!win) return; - GetDocument()->GetPrintableName(title); + wxDocument *doc = GetDocument(); + if (!doc) return; - GetFrame()->SetTitle(title); - } + wxString name; + doc->GetPrintableName(name); + win->SetLabel(name); } void wxView::SetDocument(wxDocument *doc) @@ -792,6 +795,17 @@ wxView *wxDocTemplate::CreateView(wxDocument *doc, long flags) // that of the template bool wxDocTemplate::FileMatchesTemplate(const wxString& path) { + wxStringTokenizer parser (GetFileFilter(), wxT(";")); + wxString anything = wxT ("*"); + while (parser.HasMoreTokens()) + { + wxString filter = parser.GetNextToken(); + wxString filterExt = FindExtension (filter); + if ( filter.IsSameAs (anything) || + filterExt.IsSameAs (anything) || + filterExt.IsSameAs (FindExtension (path)) ) + return true; + } return GetDefaultExtension().IsSameAs(FindExtension(path)); } @@ -1909,6 +1923,11 @@ BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame) EVT_CLOSE(wxDocParentFrame::OnCloseWindow) END_EVENT_TABLE() +wxDocParentFrame::wxDocParentFrame() +{ + m_docManager = NULL; +} + wxDocParentFrame::wxDocParentFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, @@ -1922,6 +1941,19 @@ wxDocParentFrame::wxDocParentFrame(wxDocManager *manager, m_docManager = manager; } +bool wxDocParentFrame::Create(wxDocManager *manager, + wxFrame *frame, + wxWindowID id, + const wxString& title, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name) +{ + m_docManager = manager; + return base_type::Create(frame, id, title, pos, size, style, name); +} + void wxDocParentFrame::OnExit(wxCommandEvent& WXUNUSED(event)) { Close(); @@ -2441,4 +2473,3 @@ bool wxTransferStreamToFile(wxInputStream& stream, const wxString& filename) #endif // wxUSE_STD_IOSTREAM/!wxUSE_STD_IOSTREAM #endif // wxUSE_DOC_VIEW_ARCHITECTURE -