X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a660d684eda27638bca0384b2058911a31c8e845..1648d51bcb7633efde873b986b4a9e2af005f119:/docs/latex/wx/tdocview.tex?ds=sidebyside diff --git a/docs/latex/wx/tdocview.tex b/docs/latex/wx/tdocview.tex index 08d9cd7bf6..0cf6922896 100644 --- a/docs/latex/wx/tdocview.tex +++ b/docs/latex/wx/tdocview.tex @@ -2,6 +2,7 @@ Classes: \helpref{wxDocument}{wxdocument}, \helpref{wxView}{wxview}, \helpref{wxDocTemplate}{wxdoctemplate},\rtfsp \helpref{wxDocManager}{wxdocmanager}, \helpref{wxDocParentFrame}{wxdocparentframe}, \helpref{wxDocChildFrame}{wxdocchildframe}, +\rtfsp\helpref{wxDocMDIParentFrame}{wxdocmdiparentframe}, \helpref{wxDocMDIChildFrame}{wxdocmdichildframe}, \rtfsp\helpref{wxCommand}{wxcommand}, \helpref{wxCommandProcessor}{wxcommandprocessor} The document/view framework is found in most application frameworks, because it @@ -27,7 +28,7 @@ These are the overall steps involved in creating an application based on the doc \item Define your own document and view classes, overriding a minimal set of member functions e.g. for input/output, drawing and initialization. \item Define any subwindows -(such as a canvas) that are needed for the view(s). You may need to route some events +(such as a scrolled window) that are needed for the view(s). You may need to route some events to views or documents, for example OnPaint needs to be routed to wxView::OnDraw. \item Decide what style of interface you will use: Microsoft's MDI (multiple document child frames surrounded by an overall frame), SDI (a separate, unconstrained frame @@ -61,6 +62,15 @@ class, to provide multi-page document facilities. Note that to activate framework functionality, you need to use some or all of the wxWindows \helpref{predefined command identifiers}{predefinedids} in your menus. +\perlnote{The document/view framework is available in wxPerl. To use it, +you will need the following statements in your application code:\par +{\small +\begin{verbatim} +use Wx::DocView; +use Wx ':docview'; # import constants (optional) +\end{verbatim} +}} + \subsection{wxDocument overview}\label{wxdocumentoverview} \overview{Document/view framework overview}{docviewoverview} @@ -115,7 +125,7 @@ and \helpref{wxDocManager}{wxdocmanager} classes. See the example application in {\tt samples/docview}. To use the abstract wxView class, you need to derive a new class and override -at least the member functions OnCreate, OnDraw, OnUpdate and OnClose. You'll probably +at least the member functions OnCreate, OnDraw, OnUpdate and OnClose. You will probably want to override OnMenuCommand to respond to menu commands from the frame containing the view. @@ -163,7 +173,7 @@ a single document template is constructed, and dialogs will be appropriately simplified. wxDocTemplate is part of the document/view framework supported by wxWindows, -and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument} +and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument} and \helpref{wxDocManager}{wxdocmanager} classes. See the example application in {\tt samples/docview}. @@ -188,7 +198,7 @@ The wxDocManager class is part of the document/view framework supported by wxWin and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument}\rtfsp and \helpref{wxDocTemplate}{wxdoctemplate} classes. -A wxDocManager instance coordinates documents, views and document templates. It keeps a list of document and +A wxDocManager instance coordinates documents, views and document templates. It keeps a list of document and template instances, and much functionality is routed through this object, such as providing selection and file dialogs. The application can use this class `as is' or derive a class and override some members to extend or change the functionality. @@ -254,42 +264,28 @@ the file history, that will be used for appending the filenames. They are appended using menu identifiers in the range wxID\_FILE1 to wxID\_FILE9. In order to respond to a file load command from one of these identifiers, -you need to handle them in your wxFrame::OnMenuCommand. Below is the -code used by the default document/view parent frame. +you need to handle them using an event handler, for example: +{\small \begin{verbatim} -void wxDocParentFrame::OnMenuCommand(int id) +BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame) + EVT_MENU(wxID_EXIT, wxDocParentFrame::OnExit) + EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocParentFrame::OnMRUFile) +END_EVENT_TABLE() + +void wxDocParentFrame::OnExit(wxCommandEvent& WXUNUSED(event)) { - switch (id) - { - case wxID_EXIT: - { - if (GetEventHandler()->OnClose()) - delete this; - break; - } - case wxID_FILE1: - case wxID_FILE2: - case wxID_FILE3: - case wxID_FILE4: - case wxID_FILE5: - case wxID_FILE6: - case wxID_FILE7: - case wxID_FILE8: - case wxID_FILE9: - { - char *f = docManager->GetHistoryFile(id-wxID_FILE1); - if (f) - (void)docManager->CreateDocument(f, wxDOC_SILENT); - break; - } - default: - { - docManager->OnMenuCommand(id); - } - } + Close(); +} + +void wxDocParentFrame::OnMRUFile(wxCommandEvent& event) +{ + wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1)); + if (f != "") + (void)m_docManager->CreateDocument(f, wxDOC_SILENT); } \end{verbatim} +} \subsection{wxWindows predefined command identifiers}\label{predefinedids}