Thread: [Audacity-devel] Menu code committed
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Brian G. <bm...@ya...> - 2002-12-17 22:08:10
|
I have committed the menu code. It will most likely not compile on Linux because I have not updated the Linux Makefiles. Can someone edit the Linux Makefiles for me? Just add all the files in the src/commands directory. Brian Gunlogson __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
From: Dominic M. <do...@mi...> - 2002-12-18 09:10:16
|
Working on compiling it now. I've found one problem so far. gcc isn't happy with the following method prototypes in CommandsMenu.h: int GetUniqueIdentifier(wxString &sFunctions = wxString(""), wxString &sKeys = wxString("")); void SetIdentifierData(int nID, wxString &sFunctions = wxString(""), wxString &sKeys = wxString("")); I'm not an expert in C++ when it comes to cases like this, but I'm guessing it's easy to fix. If these arguments are not intended to be modified by the methods, get rid of the "&" and it will work fine. If they must be modified, probably use pointers: wxString *sFunctions = NULL instead. - Dominic Brian Gunlogson wrote: > I have committed the menu code. It will most likely not compile on Linux because I have not > updated the Linux Makefiles. Can someone edit the Linux Makefiles for me? Just add all the files > in the src/commands directory. > > Brian Gunlogson > > __________________________________________________ > Do you Yahoo!? > Yahoo! Mail Plus - Powerful. Affordable. Sign up now. > http://mailplus.yahoo.com > > > ------------------------------------------------------- > This sf.net email is sponsored by: > With Great Power, Comes Great Responsibility > Learn to use your power at OSDN's High Performance Computing Channel > http://hpc.devchannel.org/ > _______________________________________________ > Audacity-devel mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel |
From: Brian G. <bm...@ya...> - 2002-12-18 22:31:56
|
Try compiling it now. I have updated the Linux makefile and corrected the errors below. Brian Gunlogson --- Dominic Mazzoni <do...@mi...> wrote: > Working on compiling it now. > > I've found one problem so far. gcc isn't happy with the following > method prototypes in CommandsMenu.h: > > int GetUniqueIdentifier(wxString &sFunctions = wxString(""), > wxString &sKeys = wxString("")); > > void SetIdentifierData(int nID, wxString &sFunctions = wxString(""), > wxString &sKeys = wxString("")); > > I'm not an expert in C++ when it comes to cases like this, but > I'm guessing it's easy to fix. If these arguments are not > intended to be modified by the methods, get rid of the "&" and it > will work fine. If they must be modified, probably use pointers: > wxString *sFunctions = NULL instead. > > - Dominic __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
From: Dominic M. <do...@mi...> - 2002-12-19 00:00:14
|
Brian Gunlogson wrote: > Try compiling it now. I have updated the Linux makefile and corrected > the errors below. Great, thanks. I won't have a chance to look at it in detail until tomorrow; I'm going to see the Lord of the Rings II tonight right after work. :) Also, I've made great progress on the Mixer Toolbar and should be able to check that in soon. - Dominic > > Brian Gunlogson > > --- Dominic Mazzoni wrote: > > >Working on compiling it now. > > > >I've found one problem so far. gcc isn't happy with the following > >method prototypes in CommandsMenu.h: > > > > int GetUniqueIdentifier(wxString &sFunctions = wxString(""), > > wxString &sKeys = wxString("")); > > > > void SetIdentifierData(int nID, wxString &sFunctions = wxString(""), > > wxString &sKeys = wxString("")); > > > >I'm not an expert in C++ when it comes to cases like this, but > >I'm guessing it's easy to fix. If these arguments are not > >intended to be modified by the methods, get rid of the "&" and it > >will work fine. If they must be modified, probably use pointers: > >wxString *sFunctions = NULL instead. > > > >- Dominic > > > > __________________________________________________ > Do you Yahoo!? > Yahoo! Mail Plus - Powerful. Affordable. Sign up now. > http://mailplus.yahoo.com > > > ------------------------------------------------------- > This SF.NET email is sponsored by: Order your Holiday Geek Presents Now! > Green Lasers, Hip Geek T-Shirts, Remote Control Tanks, Caffeinated Soap, > MP3 Players, XBox Games, Flying Saucers, WebCams, Smart Putty. > T H I N K G E E K . C O M http://www.thinkgeek.com/sf/ > _______________________________________________ > Audacity-devel mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel |
From: Joshua H. <jo...@ha...> - 2002-12-19 01:29:05
|
Brian Gunlogson <bm...@ya...> wrote: > Try compiling it now. I have updated the Linux makefile and corrected the > errors below. There are errors every time you try to pass an rvalue (like a string constant) to a method that takes wxString&. AFAICS, there's no reason any of these methods should need to take wxString references, since wxString does reference counting already. When I changed all of these methods to take simple wxStrings it compiled correctly for me. But I didn't want to check in this change until I ran it by you first. Any reason not to do this? Could you give a brief overview of what your new code does? I'm interested in it but it's not immediately obvious to me what it does or how it works. Josh |
From: Brian G. <bm...@ya...> - 2002-12-19 04:09:16
|
Comments below. --- Joshua Haberman <jo...@ha...> wrote: > > There are errors every time you try to pass an rvalue (like a string > constant) to a method that takes wxString&. AFAICS, there's no reason > any of these methods should need to take wxString references, since > wxString does reference counting already. > > When I changed all of these methods to take simple wxStrings it compiled > correctly for me. But I didn't want to check in this change until I > ran it by you first. Any reason not to do this? No, I'll change them. It worked in MSVC++ but I have heard that it is more forgiving. > Could you give a brief overview of what your new code does? I'm interested > in it but it's not immediately obvious to me what it does or how it works. That's good, the changes were meant to be internal. Basically now Audacity reads the menu structure from ./commands.cfg (an XML file). A few more things like keys not associated with a menu, will also be included in that file (not done yet). I tried to make it easier (partially per Dominic's request) to modify the menu structure for both users and developers. You can have a menu item execute a list of functions instead of just one. The effect menus are dynamic, and may (in the future) support keybidings. I also made a None menu if there were no effects. Lastly, I tried to clean up the code a bit, eliminating hard coded identifiers. I am planning to write a simple GUI editor (might even fit on the preferences dialog) to edit the commands.cfg. I hope I was successful in at least one of the above goals, Brian Gunlogson > Josh __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
From: Joshua H. <jo...@ha...> - 2002-12-19 05:21:06
|
Brian Gunlogson <bm...@ya...> wrote: > --- Joshua Haberman <jo...@ha...> wrote: > > Could you give a brief overview of what your new code does? I'm interested > > in it but it's not immediately obvious to me what it does or how it works. > > That's good, the changes were meant to be internal. Basically now Audacity > reads the menu structure from ./commands.cfg (an XML file). A few more things > like keys not associated with a menu, will also be included in that file (not > done yet). It's great that it works so well that I didn't even notice the backend code was different. It sounds like you reimplemented a subset of the XRC system for wxWindows. It's not part of wx yet, but it allows you to load arbitrary GUIs from an XML file. Maybe you should investigate whether this might be a good next step for the menu code once XRC is in wx. More about it here: http://www.lpthe.jussieu.fr/~zeitlin/wxWindows/docs/wxwin480.htm Josh |
From: Brian G. <bm...@ya...> - 2002-12-19 07:27:50
|
I actually heard about XRC towards the end of implementing my code. The reason I did not use it is like you said, "It's not part of wx yet". Also, I don't want to just store GUI data in an XML file. The registry seems a bit cumbersome for storing key combos and similar data. (Maybe it is not as big of a deal on Linux where is uses configuration files). Maybe XRC accommodates for this? The CVS should compile on Linux now (hopefully). Brian Gunlogson --- Joshua Haberman <jo...@ha...> wrote: > > It's great that it works so well that I didn't even notice the backend > code was different. > > It sounds like you reimplemented a subset of the XRC system for wxWindows. > It's not part of wx yet, but it allows you to load arbitrary GUIs from an > XML file. Maybe you should investigate whether this might be a good next > step for the menu code once XRC is in wx. More about it here: > > http://www.lpthe.jussieu.fr/~zeitlin/wxWindows/docs/wxwin480.htm > > Josh __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
From: Hans-Georg F. <hg....@sn...> - 2002-12-19 08:09:39
|
On Wed, 18 Dec 2002, Brian Gunlogson wrote: > The CVS should compile on Linux now (hopefully). Almost but in src/Makefile.in there is a \ missing at the end of line 162. -- Hans-Georg Fischer |
From: Brian G. <bm...@ya...> - 2002-12-19 08:34:33
|
Fixed. Brian Gunlogson --- Hans-Georg Fischer <hg....@sn...> wrote: > > Almost but in src/Makefile.in there is a \ missing at the end of > line 162. > > -- > Hans-Georg Fischer __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
From: Joshua H. <jo...@ha...> - 2002-12-19 08:54:57
|
Hans-Georg Fischer <hg....@sn...> wrote: > > The CVS should compile on Linux now (hopefully). > > Almost but in src/Makefile.in there is a \ missing at the end of > line 162. And that one wasn't even his fault, it was mine. :-) That'll teach me to be "helpful." Josh |
From: Brian G. <bm...@ya...> - 2002-12-19 05:21:44
|
I forgot to give an overview of how it works. I am doing this from memory so I may be inaccurate. First, AudacityProject calls Commands to parse the commands.cfg XML file. Commands forewards this to CommandsReader. CommandsReader parses the XML and calls various methods in CommandsMenu. Most of the functions in CommandsMenu are simple. The intresting part is adding items and dynamic items. When adding items, GetUniqueIdentifier is called with the function list and key list. This associates the functions and keys with the identifier. When adding an effect it uses similar code that was used before and then calls the same function used to add items, with the function list set to "*@*@Effect" (Where the first * is the effect ID [integer], the second * is the type of effect [string]). Currently, all CommandsWriter does is write the default XML. When assigning defaults, the following happens. The default commands.cfg overwrites the current one. Then CommandsMenu is purged of all its data. CommandsReader then starts reading commands.cfg just like it did the first time. This could be optimized, but it doesn't seem to be a big issue. A lot of the code conversion was done by hand or using simple key macros. So there may be some code that is missing. I also checked for memory leaks on Windows and eliminated all that I could find. Brian Gunlogson __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
From: Dominic M. <do...@mi...> - 2002-12-18 09:13:23
|
Still lots of compile errors in Menus.cpp. Are you sure you checked in all of the necessary changes? (Maybe it's just me, though...I'm checking out a clean copy now.) - Dominic Brian Gunlogson wrote: > I have committed the menu code. It will most likely not compile on Linux because I have not > updated the Linux Makefiles. Can someone edit the Linux Makefiles for me? Just add all the files > in the src/commands directory. > > Brian Gunlogson > > __________________________________________________ > Do you Yahoo!? > Yahoo! Mail Plus - Powerful. Affordable. Sign up now. > http://mailplus.yahoo.com > > > ------------------------------------------------------- > This sf.net email is sponsored by: > With Great Power, Comes Great Responsibility > Learn to use your power at OSDN's High Performance Computing Channel > http://hpc.devchannel.org/ > _______________________________________________ > Audacity-devel mailing list > Aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel |
From: Brian G. <bm...@ya...> - 2002-12-18 22:46:21
|
Oh! I forgot! Remove Menus.cpp. See the log for audacity.dsp for details. I tested the clean CVS on Windows it works. Brian Gunlogson --- Dominic Mazzoni <do...@mi...> wrote: > Still lots of compile errors in Menus.cpp. Are you sure you checked in > all of the necessary changes? (Maybe it's just me, though...I'm > checking out a clean copy now.) > > - Dominic > > Brian Gunlogson wrote: > > I have committed the menu code. It will most likely not compile on Linux because I have not > > updated the Linux Makefiles. Can someone edit the Linux Makefiles for me? Just add all the > files > > in the src/commands directory. > > > > Brian Gunlogson __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |