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