Update of /cvsroot/audacity/audacity-src/src/commands
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv28460/src/commands

Modified Files:
        CommandManager.cpp CommandManager.h 
Log Message:
Separate the menu/command text and the associated shortcut keycombo.  This
is a fix for keycombos being translated and not being recognized by the
command mananger and wxWidgets as valid key identifiers.


Index: CommandManager.h
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/commands/CommandManager.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- CommandManager.h    25 Apr 2009 19:19:39 -0000      1.25
+++ CommandManager.h    30 May 2009 19:54:12 -0000      1.26
@@ -17,6 +17,7 @@
 #include <wx/menu.h>
 #include <wx/hashmap.h>
 
+#include "../AudacityApp.h"
 #include "../xml/XMLTagHandler.h"
 
 class CommandFunctor
@@ -92,17 +93,44 @@
    void InsertItem(wxString name, wxString label, CommandFunctor *callback,
                    wxString after, int checkmark = -1);
 
-   void AddItem(wxString name, wxString label, CommandFunctor *callback,
-                int checkmark = -1);
    void AddItemList(wxString name, wxArrayString labels,
                     CommandFunctor *callback, bool plugins = false);
 
+   void AddCheck(const wxChar *name,
+                 const wxChar *label,
+                 CommandFunctor *callback,
+                 int checkmark = 0);
+
+   void AddItem(const wxChar *name,
+                const wxChar *label,
+                CommandFunctor *callback,
+                int flags = NoFlagsSpecifed,
+                int mask = NoFlagsSpecifed);
+
+   void AddItem(const wxChar *name,
+                const wxChar *label_in,
+                CommandFunctor *callback,
+                const wxChar *accel,
+                int flags = NoFlagsSpecifed,
+                int mask = NoFlagsSpecifed,
+                int checkmark = -1);
 
    void AddSeparator();
 
    // A command doesn't actually appear in a menu but might have a
    // keyboard shortcut.
-   void AddCommand(wxString name, wxString label, CommandFunctor *callback);
+   void AddCommand(const wxChar *name,
+                   const wxChar *label,
+                   CommandFunctor *callback,
+                   int flags = NoFlagsSpecifed,
+                   int mask = NoFlagsSpecifed);
+
+   void AddCommand(const wxChar *name,
+                   const wxChar *label,
+                   CommandFunctor *callback,
+                   const wxChar *accel,
+                   int flags = NoFlagsSpecifed,
+                   int mask = NoFlagsSpecifed);
 
    //
    // Command masks

Index: CommandManager.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/commands/CommandManager.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- CommandManager.cpp  30 May 2009 15:15:02 -0000      1.70
+++ CommandManager.cpp  30 May 2009 19:54:12 -0000      1.71
@@ -439,13 +439,34 @@
    mbSeparatorAllowed = true;
 }
 
-///
-/// Add a menu item to the current menu.  When the user selects it, the
-/// given functor will be called
-void CommandManager::AddItem(wxString name, wxString label_in,
-                             CommandFunctor *callback, int checkmark)
+void CommandManager::AddCheck(const wxChar *name,
+                              const wxChar *label,
+                              CommandFunctor *callback,
+                              int checkmark)
 {
-   wxString label = label_in;
+   AddItem(name, label, callback, wxT(""), NoFlagsSpecifed, NoFlagsSpecifed, 
checkmark);
+}
+
+void CommandManager::AddItem(const wxChar *name,
+                             const wxChar *label,
+                             CommandFunctor *callback,
+                             int flags,
+                             int mask)
+{
+   AddItem(name, label, callback, wxT(""), flags, mask);
+}                  
+
+void CommandManager::AddItem(const wxChar *name,
+                             const wxChar *label_in,
+                             CommandFunctor *callback,
+                             const wxChar *accel,
+                             int flags,
+                             int mask,
+                             int checkmark)
+{
+   wxString label(label_in);
+   label += wxT("\t");
+   label += accel;
 
    if (ItemShouldBeHidden(label)) {
       delete callback;
@@ -454,6 +475,10 @@
 
    int ID = NewIdentifier(name, label, CurrentMenu(), callback, false, 0, 0);
 
+   if (flags != NoFlagsSpecifed || mask != NoFlagsSpecifed) {
+      SetCommandFlags(name, flags, mask);
+   }
+
    // Replace the accel key with the one from the preferences
    label = label.BeforeFirst(wxT('\t'));
 
@@ -464,20 +489,18 @@
    // made-up name (just an ID number string) but with the accelerator
    // we want, then immediately change the label to the correct string.
    // -DMM
-   mHiddenID++;
-   wxString dummy, newLabel;
-   dummy.Printf(wxT("%s%08d"), label.c_str(), mHiddenID);
-   newLabel = label;
+   wxString newLabel;
+   newLabel.Printf(wxT("%s%08d"), label.c_str(), ++mHiddenID);
 
    if (checkmark >= 0) {
-      CurrentMenu()->AppendCheckItem(ID, dummy);
-      CurrentMenu()->Check(ID, checkmark !=0);
+      CurrentMenu()->AppendCheckItem(ID, newLabel);
+      CurrentMenu()->Check(ID, checkmark != 0);
    }
    else {
-      CurrentMenu()->Append(ID, dummy);
+      CurrentMenu()->Append(ID, newLabel);
    }
 
-   CurrentMenu()->SetLabel(ID, newLabel);
+   CurrentMenu()->SetLabel(ID, label);
    mbSeparatorAllowed = true;
 }
 
@@ -542,10 +565,31 @@
 ///
 /// Add a command that doesn't appear in a menu.  When the key is pressed, the
 /// given function pointer will be called (via the CommandManagerListener)
-void CommandManager::AddCommand(wxString name, wxString label,
-                                CommandFunctor *callback)
+void CommandManager::AddCommand(const wxChar *name,
+                                const wxChar *label,
+                                CommandFunctor *callback,
+                                int flags,
+                                int mask)
 {
-   NewIdentifier(name, label, NULL, callback, false, 0, 0);
+   AddCommand(name, label, callback, wxT(""), flags, mask);
+}                  
+
+void CommandManager::AddCommand(const wxChar *name,
+                                const wxChar *label_in,
+                                CommandFunctor *callback,
+                                const wxChar *accel,
+                                int flags,
+                                int mask)
+{
+   wxString label(label_in);
+   label += wxT("\t");
+   label += accel;
+
+   NewIdentifier(name, label_in, NULL, callback, false, 0, 0);
+
+   if (flags != NoFlagsSpecifed || mask != NoFlagsSpecifed) {
+      SetCommandFlags(name, flags, mask);
+   }
 }
 
 void CommandManager::AddSeparator()


------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT 
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian 
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com 
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to