]> git.saurik.com Git - wxWidgets.git/commitdiff
Cleaned up SetMenuStrings, factoring out redo and undo label accessors at the same...
authorJulian Smart <julian@anthemion.co.uk>
Fri, 20 Dec 2002 10:15:06 +0000 (10:15 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 20 Dec 2002 10:15:06 +0000 (10:15 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18369 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/cmdproc.tex
include/wx/cmdproc.h
src/common/cmdproc.cpp

index 922e97fa241cb837d2b5b67549f27868e29e62e6..cb8857b7cd889cf2dc1cd7a9b2a5be44800cbb4d 100644 (file)
@@ -76,12 +76,24 @@ Returns the edit menu associated with the command processor.
 
 Returns the string that will be appended to the Redo menu item.
 
+\membersection{wxCommandProcessor::GetRedoMenuLabel}\label{wxcommandprocessorgetredomenulabel}
+
+\constfunc{wxString}{GetRedoMenuLabel}{\void}
+
+Returns the string that will be shown for the redo menu item.
+
 \membersection{wxCommandProcessor::GetUndoAccelerator}\label{wxcommandprocessorgetundoaccelerator}
 
 \constfunc{const wxString\&}{GetUndoAccelerator}{\void}
 
 Returns the string that will be appended to the Undo menu item.
 
+\membersection{wxCommandProcessor::GetUndoMenuLabel}\label{wxcommandprocessorgetundomenulabel}
+
+\constfunc{wxString}{GetUndoMenuLabel}{\void}
+
+Returns the string that will be shown for the undo menu item.
+
 \membersection{wxCommandProcessor::Initialize}
 
 \func{virtual void}{Initialize}{\void}
@@ -99,6 +111,13 @@ menu as appropriate. Set this to NULL if the menu is about to be
 destroyed and command operations may still be performed, or the command
 processor may try to access an invalid pointer.
 
+\membersection{wxCommandProcessor::SetMenuStrings}
+
+\func{void}{SetMenuStrings}{\void}
+
+Sets the menu labels according to the currently set menu and the current
+command state.
+
 \membersection{wxCommandProcessor::SetRedoAccelerator}\label{wxcommandprocessorsetredoaccelerator}
 
 \func{void}{SetRedoAccelerator}{\param{const wxString\&}{accel}}
index b5b8b88b10a7867f92ac91858dd90102cab5ab55..4092fdffdae76654a99f5b108d8613afb0162865 100644 (file)
@@ -69,9 +69,18 @@ public:
     virtual bool CanUndo() const;
     virtual bool CanRedo() const;
 
+    // Initialises the current command and menu strings.
     virtual void Initialize();
+
+    // Sets the Undo/Redo menu strings for the current menu.
     virtual void SetMenuStrings();
 
+    // Gets the current Undo menu label.
+    wxString GetUndoMenuLabel() const;
+
+    // Gets the current Undo menu label.
+    wxString GetRedoMenuLabel() const;
+
 #if wxUSE_MENUS
     // Call this to manage an edit menu.
     void SetEditMenu(wxMenu *menu) { m_commandEditMenu = menu; }
index 79456425653bcf8b2d2c7302fabceebaa8df0c98..3dbefff13f1754a889e7d9f100a2c15c755c038c 100644 (file)
@@ -220,72 +220,82 @@ void wxCommandProcessor::Initialize()
     SetMenuStrings();
 }
 
-static void wxSetMenuLabel(wxMenu* menu, int id, const wxString& label)
-{
-    menu->SetLabel(id, label);
-}
-
 void wxCommandProcessor::SetMenuStrings()
 {
 #if wxUSE_MENUS
     if (m_commandEditMenu)
     {
-        wxString buf;
-        if (m_currentCommand)
+        wxString undoLabel = GetUndoMenuLabel();
+        wxString redoLabel = GetRedoMenuLabel();
+        
+        m_commandEditMenu->SetLabel(wxID_UNDO, undoLabel);
+        m_commandEditMenu->Enable(wxID_UNDO, CanUndo());
+
+        m_commandEditMenu->SetLabel(wxID_REDO, redoLabel);
+        m_commandEditMenu->Enable(wxID_REDO, CanRedo());
+    }
+#endif // wxUSE_MENUS
+}
+
+// Gets the current Undo menu label.
+wxString wxCommandProcessor::GetUndoMenuLabel() const
+{
+    wxString buf;
+    if (m_currentCommand)
+    {
+        wxCommand *command = (wxCommand *)m_currentCommand->Data();
+        wxString commandName(command->GetName());
+        if (commandName == wxT("")) commandName = _("Unnamed command");
+        bool canUndo = command->CanUndo();
+        if (canUndo)
+            buf = wxString(_("&Undo ")) + commandName + m_undoAccelerator;
+        else
+            buf = wxString(_("Can't &Undo ")) + commandName + m_undoAccelerator;
+    }
+    else
+    {
+        buf = _("&Undo") + m_undoAccelerator;
+    }
+    
+    return buf;
+}
+
+// Gets the current Undo menu label.
+wxString wxCommandProcessor::GetRedoMenuLabel() const
+{
+    wxString buf;
+    if (m_currentCommand)
+    {
+        // We can redo, if we're not at the end of the history.
+        if (m_currentCommand->Next())
         {
-            wxCommand *command = (wxCommand *)m_currentCommand->Data();
-            wxString commandName(command->GetName());
-            if (commandName == wxT("")) commandName = _("Unnamed command");
-            bool canUndo = command->CanUndo();
-            if (canUndo)
-                buf = wxString(_("&Undo ")) + commandName + m_undoAccelerator;
-            else
-                buf = wxString(_("Can't &Undo ")) + commandName + m_undoAccelerator;
-
-            wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, buf);
-            
-            m_commandEditMenu->Enable(wxID_UNDO, canUndo);
-
-            // We can redo, if we're not at the end of the history.
-            if (m_currentCommand->Next())
-            {
-                wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data();
-                wxString redoCommandName(redoCommand->GetName());
-                if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command");
-                buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator;
-                wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf);
-                m_commandEditMenu->Enable(wxID_REDO, TRUE);
-            }
-            else
-            {
-                wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator);
-                m_commandEditMenu->Enable(wxID_REDO, FALSE);
-            }
+            wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data();
+            wxString redoCommandName(redoCommand->GetName());
+            if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command");
+            buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator;
         }
         else
         {
-            wxSetMenuLabel(m_commandEditMenu, wxID_UNDO, _("&Undo") + m_undoAccelerator);
-            m_commandEditMenu->Enable(wxID_UNDO, FALSE);
-
-            if (m_commands.Number() == 0)
-            {
-                wxSetMenuLabel(m_commandEditMenu, wxID_REDO, _("&Redo") + m_redoAccelerator);
-                m_commandEditMenu->Enable(wxID_REDO, FALSE);
-            }
-            else
-            {
-                // currentCommand is NULL but there are commands: this means that
-                // we've undone to the start of the list, but can redo the first.
-                wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data();
-                wxString redoCommandName(redoCommand->GetName());
-                if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command");
-                buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator;
-                wxSetMenuLabel(m_commandEditMenu, wxID_REDO, buf);
-                m_commandEditMenu->Enable(wxID_REDO, TRUE);
-            }
+            buf = _("&Redo") + m_redoAccelerator;
         }
     }
-#endif // wxUSE_MENUS
+    else
+    {
+        if (m_commands.Number() == 0)
+        {
+            buf = _("&Redo") + m_redoAccelerator;
+        }
+        else
+        {
+            // currentCommand is NULL but there are commands: this means that
+            // we've undone to the start of the list, but can redo the first.
+            wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data();
+            wxString redoCommandName(redoCommand->GetName());
+            if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command");
+            buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator;
+        }
+    }
+    return buf;
 }
 
 void wxCommandProcessor::ClearCommands()