Finally removes occurences of OnMenuCommand and closes bug #1164678

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36189 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2005-11-16 17:27:38 +00:00
parent 582ca3535a
commit 5e06d749ed
9 changed files with 44 additions and 83 deletions

View File

@@ -38,10 +38,7 @@ individually. This event handler class also holds a label string.
The DiagramCommand class is the key to implementing Undo/Redo. Each instance of DiagramCommand The DiagramCommand class is the key to implementing Undo/Redo. Each instance of DiagramCommand
stores enough information about an operation (create, delete, change colour etc.) to allow stores enough information about an operation (create, delete, change colour etc.) to allow
it to carry out (or undo) its command. In DiagramView::OnMenuCommand, when the user initiates the it to carry out (or undo) its command.
command, a new DiagramCommand instance is created which is then sent to the document's
command processor (see wxWindows manual for more information about doc/view and command
processing).
Apart from menu commands, another way commands are initiated is by the user left-clicking on Apart from menu commands, another way commands are initiated is by the user left-clicking on
the canvas or right-dragging on a node. MyCanvas::OnLeftClick in view.cpp shows how the canvas or right-dragging on a node. MyCanvas::OnLeftClick in view.cpp shows how

View File

@@ -51,7 +51,7 @@ class DiagramView: public wxView
public: public:
wxFrame *frame; wxFrame *frame;
MyCanvas *canvas; MyCanvas *canvas;
DiagramView(void) { canvas = NULL; frame = NULL; }; DiagramView(void) { canvas = NULL; frame = NULL; };
~DiagramView(void) {}; ~DiagramView(void) {};
@@ -62,8 +62,6 @@ class DiagramView: public wxView
wxShape *FindSelectedShape(void); wxShape *FindSelectedShape(void);
// void OnMenuCommand(int cmd);
void OnCut(wxCommandEvent& event); void OnCut(wxCommandEvent& event);
void OnChangeBackgroundColour(wxCommandEvent& event); void OnChangeBackgroundColour(wxCommandEvent& event);
void OnEditLabel(wxCommandEvent& event); void OnEditLabel(wxCommandEvent& event);

View File

@@ -30,8 +30,6 @@ public:
cbSimpleCustomizationPlugin* mpBackRef; cbSimpleCustomizationPlugin* mpBackRef;
public: public:
void OnMenuCommand( wxCommandEvent& evt );
void OnCommandEvents( wxCommandEvent& evt ); void OnCommandEvents( wxCommandEvent& evt );
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
@@ -45,12 +43,12 @@ public:
BEGIN_EVENT_TABLE( cbContextMenuHandler, wxEvtHandler ) BEGIN_EVENT_TABLE( cbContextMenuHandler, wxEvtHandler )
// FIXME:: what is the right range for these ids ? so that they // FIXME:: what is the right range for these ids ? so that they
// would not collide with user commands? // would not collide with user commands?
EVT_COMMAND_RANGE( CB_CUSTOMIZE_MENU_FIRST_ITEM_ID, EVT_COMMAND_RANGE( CB_CUSTOMIZE_MENU_FIRST_ITEM_ID,
CB_CUSTOMIZE_MENU_FIRST_ITEM_ID + 300, CB_CUSTOMIZE_MENU_FIRST_ITEM_ID + 300,
wxEVT_COMMAND_MENU_SELECTED, wxEVT_COMMAND_MENU_SELECTED,
cbContextMenuHandler::OnCommandEvents ) cbContextMenuHandler::OnCommandEvents )
END_EVENT_TABLE() END_EVENT_TABLE()
@@ -121,7 +119,7 @@ void cbSimpleCustomizationPlugin::OnCustomizeLayout( cbCustomizeLayoutEvent& eve
#if 0 #if 0
pMenu->AppendSeparator(); pMenu->AppendSeparator();
pMenu->Append( id, "Customize...", "Show layout customization dialog", false ); pMenu->Append( id, "Customize...", "Show layout customization dialog", false );
#endif #endif
mCustMenuItemId = id; mCustMenuItemId = id;
cbContextMenuHandler* pHandler = new cbContextMenuHandler(); cbContextMenuHandler* pHandler = new cbContextMenuHandler();
@@ -190,9 +188,8 @@ void cbSimpleCustomizationPlugin::OnMenuItemSelected( wxCommandEvent& event )
mpLayout->SetBarState( pBar, newState, true ); mpLayout->SetBarState( pBar, newState, true );
if ( newState == wxCBAR_FLOATING ) if ( newState == wxCBAR_FLOATING )
mpLayout->RepositionFloatedBar( pBar ); mpLayout->RepositionFloatedBar( pBar );
} }
// menu-item-selected event is "eaten" // menu-item-selected event is "eaten"
} }

View File

@@ -1,3 +1,14 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: tdocview.tex
%% Purpose: Document/view overview
%% Author: wxWidgets Team
%% Modified by:
%% Created:
%% RCS-ID: $Id$
%% Copyright: (c) wxWidgets Team
%% License: wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Document/view overview}\label{docviewoverview} \section{Document/view overview}\label{docviewoverview}
Classes: \helpref{wxDocument}{wxdocument}, \helpref{wxView}{wxview}, \helpref{wxDocTemplate}{wxdoctemplate},\rtfsp Classes: \helpref{wxDocument}{wxdocument}, \helpref{wxView}{wxview}, \helpref{wxDocTemplate}{wxdoctemplate},\rtfsp
@@ -125,8 +136,7 @@ See the example application in {\tt samples/docview}.
To use the abstract wxView class, you need to derive a new class and override 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 will 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 want to respond to menu commands from the frame containing the view.
view.
Use the macros DECLARE\_DYNAMIC\_CLASS and IMPLEMENT\_DYNAMIC\_CLASS in order Use the macros DECLARE\_DYNAMIC\_CLASS and IMPLEMENT\_DYNAMIC\_CLASS in order
to allow the framework to create view objects on demand. When you create to allow the framework to create view objects on demand. When you create
@@ -170,7 +180,7 @@ a single document template is constructed, and dialogs will be appropriately
simplified. simplified.
wxDocTemplate is part of the document/view framework supported by wxWidgets, wxDocTemplate is part of the document/view framework supported by wxWidgets,
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. and \helpref{wxDocManager}{wxdocmanager} classes.
See the example application in {\tt samples/docview}. See the example application in {\tt samples/docview}.
@@ -194,7 +204,7 @@ The wxDocManager class is part of the document/view framework supported by wxWid
and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument}\rtfsp and cooperates with the \helpref{wxView}{wxview}, \helpref{wxDocument}{wxdocument}\rtfsp
and \helpref{wxDocTemplate}{wxdoctemplate} classes. and \helpref{wxDocTemplate}{wxdoctemplate} classes.
A wxDocManager instance coordinates documents, views and document templates. It keeps a list of document 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 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 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. derive a class and override some members to extend or change the functionality.
@@ -260,11 +270,11 @@ associate a file menu with the file history. The menu will then be used for
appending filenames that are added to the history. Please notice that currently appending filenames that are added to the history. Please notice that currently
if the history already contained filenames when UseMenu() is called (e.g. when if the history already contained filenames when UseMenu() is called (e.g. when
initializing a second MDI child frame), the menu is not automatically initializing a second MDI child frame), the menu is not automatically
initialized with the existing filenames in the history and so you need to call initialized with the existing filenames in the history and so you need to call
\helpref{AddFilesToMenu()}{wxfilehistoryaddfilestomenu} after UseMenu() \helpref{AddFilesToMenu()}{wxfilehistoryaddfilestomenu} after UseMenu()
explicitly in order to initialize the menu with the existing list of MRU files. explicitly in order to initialize the menu with the existing list of MRU files.
(otherwise an assertion failure is raised in debug builds). (otherwise an assertion failure is raised in debug builds).
The filenames are appended using menu identifiers in the range The filenames are appended using menu identifiers in the range
\texttt{wxID\_FILE1} to \texttt{wxID\_FILE9}. \texttt{wxID\_FILE1} to \texttt{wxID\_FILE9}.
In order to respond to a file load command from one of these identifiers, In order to respond to a file load command from one of these identifiers,
@@ -285,7 +295,7 @@ void wxDocParentFrame::OnExit(wxCommandEvent& WXUNUSED(event))
void wxDocParentFrame::OnMRUFile(wxCommandEvent& event) void wxDocParentFrame::OnMRUFile(wxCommandEvent& event)
{ {
wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1)); wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1));
if (f != "") if (!f.empty())
(void)m_docManager->CreateDocument(f, wxDOC_SILENT); (void)m_docManager->CreateDocument(f, wxDOC_SILENT);
} }
\end{verbatim} \end{verbatim}
@@ -295,9 +305,7 @@ void wxDocParentFrame::OnMRUFile(wxCommandEvent& event)
To allow communication between the application's menus and the To allow communication between the application's menus and the
document/view framework, several command identifiers are predefined for you document/view framework, several command identifiers are predefined for you
to use in menus. The framework recognizes them and processes them if you to use in menus.
forward commands from wxFrame::OnMenuCommand (or perhaps from toolbars and
other user interface constructs).
\begin{itemize}\itemsep=0pt \begin{itemize}\itemsep=0pt
\item wxID\_OPEN (5000) \item wxID\_OPEN (5000)
@@ -314,5 +322,3 @@ other user interface constructs).
\item wxID\_PRINT\_SETUP (5011) \item wxID\_PRINT\_SETUP (5011)
\item wxID\_PREVIEW (5012) \item wxID\_PREVIEW (5012)
\end{itemize} \end{itemize}

View File

@@ -1,8 +1,19 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name: view.tex
%% Purpose: wxView documentation
%% Author: wxWidgets Team
%% Modified by:
%% Created:
%% RCS-ID: $Id$
%% Copyright: (c) wxWidgets Team
%% License: wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxView}}\label{wxview} \section{\class{wxView}}\label{wxview}
The view class can be used to model the viewing and editing component of The view class can be used to model the viewing and editing component of
an application's file-based data. It is part of the document/view framework supported by wxWidgets, an application's file-based data. It is part of the document/view framework supported by wxWidgets,
and cooperates with the \helpref{wxDocument}{wxdocument}, \helpref{wxDocTemplate}{wxdoctemplate} and cooperates with the \helpref{wxDocument}{wxdocument}, \helpref{wxDocTemplate}{wxdoctemplate}
and \helpref{wxDocManager}{wxdocmanager} classes. and \helpref{wxDocManager}{wxdocmanager} classes.
\wxheading{Derived from} \wxheading{Derived from}
@@ -60,11 +71,10 @@ Destructor. Removes itself from the document's list of views.
Call this from your view frame's OnActivate member to tell the framework which view is Call this from your view frame's OnActivate member to tell the framework which view is
currently active. If your windowing system doesn't call OnActivate, you may need to currently active. If your windowing system doesn't call OnActivate, you may need to
call this function from OnMenuCommand or any place where you know the view must call this function from any place where you know the view must
be active, and the framework will need to get the current view. be active, and the framework will need to get the current view.
The prepackaged view frame wxDocChildFrame calls wxView::Activate from its OnActivate member The prepackaged view frame wxDocChildFrame calls wxView::Activate from its OnActivate member.
and from its OnMenuCommand member.
This function calls wxView::OnActivateView. This function calls wxView::OnActivateView.
@@ -199,5 +209,3 @@ between the ``Frame'' in the method name and the type of its parameter.
\func{void}{SetViewName}{\param{const wxString\& }{name}} \func{void}{SetViewName}{\param{const wxString\& }{name}}
Sets the view type name. Should only be called by the framework. Sets the view type name. Should only be called by the framework.

View File

@@ -138,7 +138,7 @@ Constructs a window, which can be a child of a frame, dialog or any other non-co
\docparam{parent}{Pointer to a parent window.} \docparam{parent}{Pointer to a parent window.}
\docparam{id}{Window identifier. If -1, will automatically create an identifier.} \docparam{id}{Window identifier. If wxID\_ANY, will automatically create an identifier.}
\docparam{pos}{Window position. wxDefaultPosition indicates that wxWidgets \docparam{pos}{Window position. wxDefaultPosition indicates that wxWidgets
should generate a default position for the window. If using the wxWindow class directly, supply should generate a default position for the window. If using the wxWindow class directly, supply
@@ -1031,7 +1031,7 @@ Returns the identifier of the window.
\wxheading{Remarks} \wxheading{Remarks}
Each window has an integer identifier. If the application has not provided one Each window has an integer identifier. If the application has not provided one
(or the default Id -1) an unique identifier with a negative value will be generated. (or the default wxID\_ANY) an unique identifier with a negative value will be generated.
\wxheading{See also} \wxheading{See also}
@@ -1815,28 +1815,6 @@ and not navigate to the next control.
%% %%
%% \helpref{wxValidator}{wxvalidator}, \helpref{wxWindow::TransferDataToWindow}{wxwindowtransferdatatowindow} %% \helpref{wxValidator}{wxvalidator}, \helpref{wxWindow::TransferDataToWindow}{wxwindowtransferdatatowindow}
%% %%
%% \membersection{wxWindow::OnMenuCommand}\label{wxwindowonmenucommand}
%%
%% \func{void}{OnMenuCommand}{\param{wxCommandEvent\& }{event}}
%%
%% Called when a menu command is received from a menu bar.
%%
%% \wxheading{Parameters}
%%
%% \docparam{event}{The menu command event. For more information, see \helpref{wxCommandEvent}{wxcommandevent}.}
%%
%% \wxheading{Remarks}
%%
%% A function with this name doesn't actually exist; you can choose any member function to receive
%% menu command events, using the EVT\_COMMAND macro for individual commands or EVT\_COMMAND\_RANGE for
%% a range of commands.
%%
%% \wxheading{See also}
%%
%% \helpref{wxCommandEvent}{wxcommandevent},\rtfsp
%% \helpref{wxWindow::OnMenuHighlight}{wxwindowonmenuhighlight},\rtfsp
%% \helpref{Event handling overview}{eventhandlingoverview}
%%
%% \membersection{wxWindow::OnMenuHighlight}\label{wxwindowonmenuhighlight} %% \membersection{wxWindow::OnMenuHighlight}\label{wxwindowonmenuhighlight}
%% %%
%% \func{void}{OnMenuHighlight}{\param{wxMenuEvent\& }{event}} %% \func{void}{OnMenuHighlight}{\param{wxMenuEvent\& }{event}}
@@ -1864,7 +1842,6 @@ and not navigate to the next control.
%% \wxheading{See also} %% \wxheading{See also}
%% %%
%% \helpref{wxMenuEvent}{wxmenuevent},\rtfsp %% \helpref{wxMenuEvent}{wxmenuevent},\rtfsp
%% \helpref{wxWindow::OnMenuCommand}{wxwindowonmenucommand},\rtfsp
%% \helpref{Event handling overview}{eventhandlingoverview} %% \helpref{Event handling overview}{eventhandlingoverview}
%% %%
%% %%

View File

@@ -199,7 +199,6 @@ See also <A HREF="wx305.htm#windowstyles">window styles overview</A>.<P>
<A HREF="#wxwindowonkillfocus">wxWindow::OnKillFocus</A><BR> <A HREF="#wxwindowonkillfocus">wxWindow::OnKillFocus</A><BR>
<A HREF="#wxwindowonidle">wxWindow::OnIdle</A><BR> <A HREF="#wxwindowonidle">wxWindow::OnIdle</A><BR>
<A HREF="#wxwindowoninitdialog">wxWindow::OnInitDialog</A><BR> <A HREF="#wxwindowoninitdialog">wxWindow::OnInitDialog</A><BR>
<A HREF="#wxwindowonmenucommand">wxWindow::OnMenuCommand</A><BR>
<A HREF="#wxwindowonmenuhighlight">wxWindow::OnMenuHighlight</A><BR> <A HREF="#wxwindowonmenuhighlight">wxWindow::OnMenuHighlight</A><BR>
<A HREF="#wxwindowonmouseevent">wxWindow::OnMouseEvent</A><BR> <A HREF="#wxwindowonmouseevent">wxWindow::OnMouseEvent</A><BR>
<A HREF="#wxwindowonmove">wxWindow::OnMove</A><BR> <A HREF="#wxwindowonmove">wxWindow::OnMove</A><BR>
@@ -1072,7 +1071,7 @@ Returns a 2-tuple, (width, height)
<TD VALIGN=TOP> <TD VALIGN=TOP>
Returns a Returns a
4-tuple, (width, height, descent, externalLeading) 4-tuple, (width, height, descent, externalLeading)
</TD></TR> </TD></TR>
@@ -1523,25 +1522,6 @@ the validator that each control has.<P>
<B><FONT COLOR="#FF0000">See also</FONT></B><P> <B><FONT COLOR="#FF0000">See also</FONT></B><P>
<A HREF="wx255.htm#wxvalidator">wxValidator</A>, <A HREF="wx260.htm#wxwindowtransferdatatowindow">wxWindow::TransferDataToWindow</A><P> <A HREF="wx255.htm#wxvalidator">wxValidator</A>, <A HREF="wx260.htm#wxwindowtransferdatatowindow">wxWindow::TransferDataToWindow</A><P>
<HR>
<A NAME="wxwindowonmenucommand"></A>
<H3>wxWindow::OnMenuCommand</H3>
<P>
<B>void</B> <B>OnMenuCommand</B>(<B>wxCommandEvent&amp; </B><I>event</I>)<P>
Called when a menu command is received from a menu bar.<P>
<B><FONT COLOR="#FF0000">Parameters</FONT></B><P>
<I>event</I><UL><UL>
The menu command event. For more information, see <A HREF="wx52.htm#wxcommandevent">wxCommandEvent</A>.</UL></UL>
<P>
<B><FONT COLOR="#FF0000">Remarks</FONT></B><P>
A function with this name doesn't actually exist; you can choose any member function to receive
menu command events, using the EVT_COMMAND macro for individual commands or EVT_COMMAND_RANGE for
a range of commands.<P>
<B><FONT COLOR="#FF0000">See also</FONT></B><P>
<A HREF="wx52.htm#wxcommandevent">wxCommandEvent</A>,
<A HREF="wx260.htm#wxwindowonmenuhighlight">wxWindow::OnMenuHighlight</A>,
<A HREF="wx299.htm#eventhandlingoverview">Event handling overview</A><P>
<HR> <HR>
<A NAME="wxwindowonmenuhighlight"></A> <A NAME="wxwindowonmenuhighlight"></A>
<H3>wxWindow::OnMenuHighlight</H3> <H3>wxWindow::OnMenuHighlight</H3>
@@ -1564,7 +1544,6 @@ This function was known as <B>OnMenuSelect</B> in earlier versions of wxWindows,
since a selection is normally a left-click action.<P> since a selection is normally a left-click action.<P>
<B><FONT COLOR="#FF0000">See also</FONT></B><P> <B><FONT COLOR="#FF0000">See also</FONT></B><P>
<A HREF="wx143.htm#wxmenuevent">wxMenuEvent</A>, <A HREF="wx143.htm#wxmenuevent">wxMenuEvent</A>,
<A HREF="wx260.htm#wxwindowonmenucommand">wxWindow::OnMenuCommand</A>,
<A HREF="wx299.htm#eventhandlingoverview">Event handling overview</A><P> <A HREF="wx299.htm#eventhandlingoverview">Event handling overview</A><P>

View File

@@ -44,7 +44,6 @@ class MyFrame: public wxFrame
{ public: { public:
wxTextCtrl *textWindow; wxTextCtrl *textWindow;
MyFrame(wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size); MyFrame(wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size);
void OnMenuCommand(int id);
void OnCloseWindow(wxCloseEvent& event); void OnCloseWindow(wxCloseEvent& event);
void OnExit(wxCommandEvent& event); void OnExit(wxCommandEvent& event);

View File

@@ -912,11 +912,11 @@ class View(wx.EvtHandler):
Call this from your view frame's OnActivate member to tell the Call this from your view frame's OnActivate member to tell the
framework which view is currently active. If your windowing system framework which view is currently active. If your windowing system
doesn't call OnActivate, you may need to call this function from doesn't call OnActivate, you may need to call this function from
OnMenuCommand or any place where you know the view must be active, and any place where you know the view must be active, and
the framework will need to get the current view. the framework will need to get the current view.
The prepackaged view frame wxDocChildFrame calls wxView.Activate from The prepackaged view frame wxDocChildFrame calls wxView.Activate from
its OnActivate member and from its OnMenuCommand member. its OnActivate member.
""" """
if self.GetDocument() and self.GetDocumentManager(): if self.GetDocument() and self.GetDocumentManager():
self.OnActivateView(activate, self, self.GetDocumentManager().GetCurrentView()) self.OnActivateView(activate, self, self.GetDocumentManager().GetCurrentView())