1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-14 07:10:24 +02:00

Add AutomationCommands class

- AutomationCommands replaces GetAllMenuCommands, and can provide
information about menus, buttons and toolbars to a script.
- BatchCommands can now return textual results to a script.
- There's a new GUID for mod-script-pipe and it is included in the .sln.
This commit is contained in:
James Crook 2017-12-20 21:19:23 +00:00
parent d22430c789
commit 27d2b7c51b
19 changed files with 485 additions and 148 deletions

View File

@ -11,7 +11,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{73BF0B4D-6EC3-49ED-87AE-E629F1CA2737}</ProjectGuid>
<ProjectGuid>{85774A29-EA2F-4A40-994F-6BE593D847A5}</ProjectGuid>
<RootNamespace>modscriptpipe</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

View File

@ -888,7 +888,6 @@
28BD8AB1101DF4C700686679 /* BatchEvalCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BD8AA9101DF4C600686679 /* BatchEvalCommand.cpp */; };
28BD8AB2101DF4C700686679 /* CommandDirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BD8AAA101DF4C600686679 /* CommandDirectory.cpp */; };
28BD8AB3101DF4C700686679 /* ExecMenuCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BD8AAC101DF4C600686679 /* ExecMenuCommand.cpp */; };
28BD8AB4101DF4C700686679 /* GetAllMenuCommands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28BD8AAE101DF4C600686679 /* GetAllMenuCommands.cpp */; };
28C3946D1818356800FDDAC9 /* AudacityLogger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28C3946B1818356800FDDAC9 /* AudacityLogger.cpp */; };
28C816BA131255790035BB10 /* Audacity.sh in Install wrapper */ = {isa = PBXBuildFile; fileRef = 28C816B81312555B0035BB10 /* Audacity.sh */; };
28C8211D1B5C661E00B53328 /* ViewInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 28C8211C1B5C661E00B53328 /* ViewInfo.cpp */; };
@ -1267,6 +1266,7 @@
5ED1D0B11CDE560C00471E3C /* BackedPanel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5ED1D0AF1CDE560C00471E3C /* BackedPanel.cpp */; };
5EF17C231D1F0A690090A642 /* ScrubbingToolBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EF17C211D1F0A690090A642 /* ScrubbingToolBar.cpp */; };
5EF958851DEB121800191280 /* InconsistencyException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EF958831DEB121800191280 /* InconsistencyException.cpp */; };
65BD96CF200150D5004090BD /* AutomationCommands.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65BD96CD200150D5004090BD /* AutomationCommands.cpp */; };
8406A93812D0F2510011EA01 /* EQDefaultCurves.xml in Resources */ = {isa = PBXBuildFile; fileRef = 8406A93712D0F2510011EA01 /* EQDefaultCurves.xml */; };
8484F31413086237002DF7F0 /* DeviceManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8484F31213086237002DF7F0 /* DeviceManager.cpp */; };
AA0084191EA8C6E70070CCE3 /* TracksBehaviorsPrefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA0084181EA8C6E70070CCE3 /* TracksBehaviorsPrefs.cpp */; };
@ -2696,8 +2696,6 @@
28BD8AAB101DF4C600686679 /* CommandDirectory.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = CommandDirectory.h; sourceTree = "<group>"; tabWidth = 3; };
28BD8AAC101DF4C600686679 /* ExecMenuCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; path = ExecMenuCommand.cpp; sourceTree = "<group>"; tabWidth = 3; };
28BD8AAD101DF4C600686679 /* ExecMenuCommand.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = ExecMenuCommand.h; sourceTree = "<group>"; tabWidth = 3; };
28BD8AAE101DF4C600686679 /* GetAllMenuCommands.cpp */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.cpp.cpp; path = GetAllMenuCommands.cpp; sourceTree = "<group>"; tabWidth = 3; };
28BD8AAF101DF4C600686679 /* GetAllMenuCommands.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = GetAllMenuCommands.h; sourceTree = "<group>"; tabWidth = 3; };
28BD8AB0101DF4C600686679 /* Validators.h */ = {isa = PBXFileReference; fileEncoding = 5; indentWidth = 3; lastKnownFileType = sourcecode.c.h; path = Validators.h; sourceTree = "<group>"; tabWidth = 3; };
28C3946B1818356800FDDAC9 /* AudacityLogger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudacityLogger.cpp; sourceTree = "<group>"; };
28C3946C1818356800FDDAC9 /* AudacityLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudacityLogger.h; sourceTree = "<group>"; };
@ -3164,6 +3162,8 @@
5EF17C221D1F0A690090A642 /* ScrubbingToolBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrubbingToolBar.h; sourceTree = "<group>"; };
5EF958831DEB121800191280 /* InconsistencyException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InconsistencyException.cpp; sourceTree = "<group>"; };
5EF958841DEB121800191280 /* InconsistencyException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InconsistencyException.h; sourceTree = "<group>"; };
65BD96CD200150D5004090BD /* AutomationCommands.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AutomationCommands.cpp; sourceTree = "<group>"; };
65BD96CE200150D5004090BD /* AutomationCommands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutomationCommands.h; sourceTree = "<group>"; };
82FF184D13CF01A600C1B664 /* dBTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dBTable.cpp; path = sbsms/src/dBTable.cpp; sourceTree = "<group>"; };
82FF184E13CF01A600C1B664 /* dBTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dBTable.h; path = sbsms/src/dBTable.h; sourceTree = "<group>"; };
82FF184F13CF01A600C1B664 /* slide.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = slide.cpp; path = sbsms/src/slide.cpp; sourceTree = "<group>"; };
@ -3751,6 +3751,7 @@
174D9025098C78AF00D5909F /* commands */ = {
isa = PBXGroup;
children = (
65BD96CD200150D5004090BD /* AutomationCommands.cpp */,
28D53FFA0FD1912A00FA7C75 /* AppCommandEvent.cpp */,
28BD8AA9101DF4C600686679 /* BatchEvalCommand.cpp */,
28851F9C1027F16400152EE1 /* Command.cpp */,
@ -3762,7 +3763,6 @@
28851F9F1027F16400152EE1 /* CommandType.cpp */,
28851FA11027F16400152EE1 /* CompareAudioCommand.cpp */,
28BD8AAC101DF4C600686679 /* ExecMenuCommand.cpp */,
28BD8AAE101DF4C600686679 /* GetAllMenuCommands.cpp */,
284249EA10D337CE004330A6 /* GetProjectInfoCommand.cpp */,
28851FA31027F16400152EE1 /* GetTrackInfoCommand.cpp */,
28851FA51027F16400152EE1 /* HelpCommand.cpp */,
@ -3777,6 +3777,7 @@
28851FA91027F16400152EE1 /* SelectCommand.cpp */,
284249EC10D337CE004330A6 /* SetProjectInfoCommand.cpp */,
28DE72AC10388583007E18EC /* SetTrackInfoCommand.cpp */,
65BD96CE200150D5004090BD /* AutomationCommands.h */,
28D53FFB0FD1912A00FA7C75 /* AppCommandEvent.h */,
28D53FFC0FD1912A00FA7C75 /* BatchEvalCommand.h */,
28D53FFD0FD1912A00FA7C75 /* Command.h */,
@ -3792,7 +3793,6 @@
28851FA01027F16400152EE1 /* CommandType.h */,
28851FA21027F16400152EE1 /* CompareAudioCommand.h */,
28BD8AAD101DF4C600686679 /* ExecMenuCommand.h */,
28BD8AAF101DF4C600686679 /* GetAllMenuCommands.h */,
284249EB10D337CE004330A6 /* GetProjectInfoCommand.h */,
28851FA41027F16400152EE1 /* GetTrackInfoCommand.h */,
28851FA61027F16400152EE1 /* HelpCommand.h */,
@ -7924,7 +7924,6 @@
28BD8AB2101DF4C700686679 /* CommandDirectory.cpp in Sources */,
5E10D9061EC8F81300B3AC57 /* PlayableTrackButtonHandles.cpp in Sources */,
28BD8AB3101DF4C700686679 /* ExecMenuCommand.cpp in Sources */,
28BD8AB4101DF4C700686679 /* GetAllMenuCommands.cpp in Sources */,
28948427101DF8FC005B0713 /* EffectsPrefs.cpp in Sources */,
287E207F102561F300BF47A2 /* PluginManager.cpp in Sources */,
5E7396501DAFD98400BA0A4D /* SliderHandle.cpp in Sources */,
@ -8009,6 +8008,7 @@
28884971131B6CF600B59735 /* vi.po in Sources */,
289D127A1B44D57F00B5B6AA /* VSTControlOSX.mm in Sources */,
28884972131B6CF600B59735 /* zh_TW.po in Sources */,
65BD96CF200150D5004090BD /* AutomationCommands.cpp in Sources */,
EDF3B7B01588C0D50032D35F /* Paulstretch.cpp in Sources */,
ED920CAF15B19F61008CA12C /* ModulePrefs.cpp in Sources */,
EDD2431416934A6100D9DEC2 /* BassTreble.cpp in Sources */,

View File

@ -27,8 +27,12 @@ def doCommand( command ) :
print( "Rcvd: " + response )
return response
def getStructure() :
doCommand( 'GetAllMenuCommands:' )
def do( command ) :
doCommand( command )
def getStructure() :
do( 'GetBoxes' )
#doCommand( 'Screenshot: CaptureMode=menus' )
do( 'GetMenusPlus' )
getStructure()

View File

@ -70,6 +70,7 @@ static const wxString MP3Conversion = wxT("MP3 Conversion");
BatchCommands::BatchCommands()
{
mMessage = "";
ResetChain();
wxArrayString names = GetNames();

View File

@ -61,6 +61,8 @@ class BatchCommands final {
wxString GetCommand(int index);
wxString GetParams(int index);
int GetCount();
wxString GetMessage(){ return mMessage;};
void AddToMessage(const wxString & msgIn ){ mMessage += msgIn;};
void SetWavToMp3Chain();
@ -74,6 +76,7 @@ class BatchCommands final {
wxArrayString mCommandChain;
wxArrayString mParamsChain;
bool mAbort;
wxString mMessage;
Exporter mExporter;
wxString mFileName;

View File

@ -275,6 +275,8 @@ audacity_SOURCES = \
wxFileNameWrapper.h \
commands/AppCommandEvent.cpp \
commands/AppCommandEvent.h \
commands/AutomationCommands.cpp \
commands/AutomationCommands.h \
commands/BatchEvalCommand.cpp \
commands/BatchEvalCommand.h \
commands/Command.cpp \
@ -299,8 +301,6 @@ audacity_SOURCES = \
commands/CompareAudioCommand.h \
commands/ExecMenuCommand.cpp \
commands/ExecMenuCommand.h \
commands/GetAllMenuCommands.cpp \
commands/GetAllMenuCommands.h \
commands/GetProjectInfoCommand.cpp \
commands/GetProjectInfoCommand.h \
commands/GetTrackInfoCommand.cpp \

View File

@ -338,6 +338,8 @@ am__audacity_SOURCES_DIST = BlockFile.cpp BlockFile.h DirManager.cpp \
VoiceKey.h WaveClip.cpp WaveClip.h WaveTrack.cpp WaveTrack.h \
WaveTrackLocation.h WrappedType.cpp WrappedType.h \
wxFileNameWrapper.h commands/AppCommandEvent.cpp \
commands/ExecMenuCommand.h commands/AutomationCommands.cpp \
commands/AutomationCommands.h \
commands/AppCommandEvent.h commands/BatchEvalCommand.cpp \
commands/BatchEvalCommand.h commands/Command.cpp \
commands/Command.h commands/CommandBuilder.cpp \
@ -350,8 +352,6 @@ am__audacity_SOURCES_DIST = BlockFile.cpp BlockFile.h DirManager.cpp \
commands/CommandTargets.h commands/CommandType.cpp \
commands/CommandType.h commands/CompareAudioCommand.cpp \
commands/CompareAudioCommand.h commands/ExecMenuCommand.cpp \
commands/ExecMenuCommand.h commands/GetAllMenuCommands.cpp \
commands/GetAllMenuCommands.h \
commands/GetProjectInfoCommand.cpp \
commands/GetProjectInfoCommand.h \
commands/GetTrackInfoCommand.cpp \
@ -671,7 +671,7 @@ am_audacity_OBJECTS = $(am__objects_1) audacity-AboutDialog.$(OBJEXT) \
commands/audacity-CommandType.$(OBJEXT) \
commands/audacity-CompareAudioCommand.$(OBJEXT) \
commands/audacity-ExecMenuCommand.$(OBJEXT) \
commands/audacity-GetAllMenuCommands.$(OBJEXT) \
commands/audacity-AutomationCommands.$(OBJEXT) \
commands/audacity-GetProjectInfoCommand.$(OBJEXT) \
commands/audacity-GetTrackInfoCommand.$(OBJEXT) \
commands/audacity-HelpCommand.$(OBJEXT) \
@ -1365,7 +1365,7 @@ audacity_SOURCES = $(libaudacity_la_SOURCES) AboutDialog.cpp \
commands/CommandTargets.h commands/CommandType.cpp \
commands/CommandType.h commands/CompareAudioCommand.cpp \
commands/CompareAudioCommand.h commands/ExecMenuCommand.cpp \
commands/ExecMenuCommand.h commands/GetAllMenuCommands.cpp \
commands/ExecMenuCommand.h commands/AutomationCommands.cpp \
commands/GetAllMenuCommands.h \
commands/GetProjectInfoCommand.cpp \
commands/GetProjectInfoCommand.h \
@ -1782,7 +1782,7 @@ commands/audacity-CompareAudioCommand.$(OBJEXT): \
commands/$(am__dirstamp) commands/$(DEPDIR)/$(am__dirstamp)
commands/audacity-ExecMenuCommand.$(OBJEXT): commands/$(am__dirstamp) \
commands/$(DEPDIR)/$(am__dirstamp)
commands/audacity-GetAllMenuCommands.$(OBJEXT): \
commands/audacity-AutomationCommands.$(OBJEXT): \
commands/$(am__dirstamp) commands/$(DEPDIR)/$(am__dirstamp)
commands/audacity-GetProjectInfoCommand.$(OBJEXT): \
commands/$(am__dirstamp) commands/$(DEPDIR)/$(am__dirstamp)
@ -2503,7 +2503,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-CommandType.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-CompareAudioCommand.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-ExecMenuCommand.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-GetAllMenuCommands.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-AutomationCommands.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-GetProjectInfoCommand.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-GetTrackInfoCommand.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@commands/$(DEPDIR)/audacity-HelpCommand.Po@am__quote@
@ -4356,19 +4356,19 @@ commands/audacity-ExecMenuCommand.obj: commands/ExecMenuCommand.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o commands/audacity-ExecMenuCommand.obj `if test -f 'commands/ExecMenuCommand.cpp'; then $(CYGPATH_W) 'commands/ExecMenuCommand.cpp'; else $(CYGPATH_W) '$(srcdir)/commands/ExecMenuCommand.cpp'; fi`
commands/audacity-GetAllMenuCommands.o: commands/GetAllMenuCommands.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT commands/audacity-GetAllMenuCommands.o -MD -MP -MF commands/$(DEPDIR)/audacity-GetAllMenuCommands.Tpo -c -o commands/audacity-GetAllMenuCommands.o `test -f 'commands/GetAllMenuCommands.cpp' || echo '$(srcdir)/'`commands/GetAllMenuCommands.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) commands/$(DEPDIR)/audacity-GetAllMenuCommands.Tpo commands/$(DEPDIR)/audacity-GetAllMenuCommands.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='commands/GetAllMenuCommands.cpp' object='commands/audacity-GetAllMenuCommands.o' libtool=no @AMDEPBACKSLASH@
commands/audacity-AutomationCommands.o: commands/AutomationCommands.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT commands/audacity-AutomationCommands.o -MD -MP -MF commands/$(DEPDIR)/audacity-AutomationCommands.Tpo -c -o commands/audacity-AutomationCommands.o `test -f 'commands/AutomationCommands.cpp' || echo '$(srcdir)/'`commands/AutomationCommands.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) commands/$(DEPDIR)/audacity-AutomationCommands.Tpo commands/$(DEPDIR)/audacity-AutomationCommands.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='commands/AutomationCommands.cpp' object='commands/audacity-AutomationCommands.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o commands/audacity-GetAllMenuCommands.o `test -f 'commands/GetAllMenuCommands.cpp' || echo '$(srcdir)/'`commands/GetAllMenuCommands.cpp
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o commands/audacity-AutomationCommands.o `test -f 'commands/AutomationCommands.cpp' || echo '$(srcdir)/'`commands/AutomationCommands.cpp
commands/audacity-GetAllMenuCommands.obj: commands/GetAllMenuCommands.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT commands/audacity-GetAllMenuCommands.obj -MD -MP -MF commands/$(DEPDIR)/audacity-GetAllMenuCommands.Tpo -c -o commands/audacity-GetAllMenuCommands.obj `if test -f 'commands/GetAllMenuCommands.cpp'; then $(CYGPATH_W) 'commands/GetAllMenuCommands.cpp'; else $(CYGPATH_W) '$(srcdir)/commands/GetAllMenuCommands.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) commands/$(DEPDIR)/audacity-GetAllMenuCommands.Tpo commands/$(DEPDIR)/audacity-GetAllMenuCommands.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='commands/GetAllMenuCommands.cpp' object='commands/audacity-GetAllMenuCommands.obj' libtool=no @AMDEPBACKSLASH@
commands/audacity-AutomationCommands.obj: commands/AutomationCommands.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT commands/audacity-AutomationCommands.obj -MD -MP -MF commands/$(DEPDIR)/audacity-AutomationCommands.Tpo -c -o commands/audacity-AutomationCommands.obj `if test -f 'commands/AutomationCommands.cpp'; then $(CYGPATH_W) 'commands/AutomationCommands.cpp'; else $(CYGPATH_W) '$(srcdir)/commands/AutomationCommands.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) commands/$(DEPDIR)/audacity-AutomationCommands.Tpo commands/$(DEPDIR)/audacity-AutomationCommands.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='commands/AutomationCommands.cpp' object='commands/audacity-AutomationCommands.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o commands/audacity-GetAllMenuCommands.obj `if test -f 'commands/GetAllMenuCommands.cpp'; then $(CYGPATH_W) 'commands/GetAllMenuCommands.cpp'; else $(CYGPATH_W) '$(srcdir)/commands/GetAllMenuCommands.cpp'; fi`
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -c -o commands/audacity-AutomationCommands.obj `if test -f 'commands/AutomationCommands.cpp'; then $(CYGPATH_W) 'commands/AutomationCommands.cpp'; else $(CYGPATH_W) '$(srcdir)/commands/AutomationCommands.cpp'; fi`
commands/audacity-GetProjectInfoCommand.o: commands/GetProjectInfoCommand.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(audacity_CPPFLAGS) $(CPPFLAGS) $(audacity_CXXFLAGS) $(CXXFLAGS) -MT commands/audacity-GetProjectInfoCommand.o -MD -MP -MF commands/$(DEPDIR)/audacity-GetProjectInfoCommand.Tpo -c -o commands/audacity-GetProjectInfoCommand.o `test -f 'commands/GetProjectInfoCommand.cpp' || echo '$(srcdir)/'`commands/GetProjectInfoCommand.cpp

View File

@ -565,6 +565,10 @@ protected:
bool mEnableTab{};
DECLARE_EVENT_TABLE()
// friending AutomationCommands allow automation to get sizes of the
// tracks, track control panel and such.
friend class AutomationCommands;
};
// See big pictorial comment in TrackPanel for explanation of these numbers

View File

@ -0,0 +1,336 @@
/**********************************************************************
Audacity - A Digital Audio Editor
Copyright 1999-2009 Audacity Team
License: wxWidgets
Dan Horgan
******************************************************************//**
\file AutomationCommands.cpp
\brief Contains definitions for AutomationCommands class.
This class now handles the GetAll script command, which can
- Get all keycodes
- Get all menus
- Get all boxes
*//*******************************************************************/
#include "AutomationCommands.h"
#include "../Project.h"
#include "CommandManager.h"
#include "../widgets/Overlay.h"
#include "../widgets/OverlayPanel.h"
#include "../TrackPanel.h"
wxString AutomationCommandsType::BuildName()
{
return mCustomName;
}
void AutomationCommandsType::BuildSignature(CommandSignature &signature)
{
auto infoTypeValidator = make_movable<OptionValidator>();
infoTypeValidator->AddOption(wxT("Menus"));
infoTypeValidator->AddOption(wxT("Menus+"));
infoTypeValidator->AddOption(wxT("Keycodes"));
infoTypeValidator->AddOption(wxT("Boxes"));
signature.AddParameter(wxT("Type"), "Menus", std::move(infoTypeValidator));
}
CommandHolder AutomationCommandsType::Create(std::unique_ptr<CommandOutputTarget> &&target)
{
return std::make_shared<AutomationCommands>(*this, std::move(target));
}
void AutomationCommands::ExploreMenu( wxMenu * pMenu, int Id, int depth ){
Id;//compiler food.
if( !pMenu )
return;
wxMenuItemList list = pMenu->GetMenuItems();
size_t lcnt = list.GetCount();
wxMenuItem * item;
wxString Label;
wxString Accel;
for (size_t lndx = 0; lndx < lcnt; lndx++) {
item = list.Item(lndx)->GetData();
Label = item->GetItemLabelText();
Accel = item->GetItemLabel();
if( Accel.Contains("\t") )
Accel = Accel.AfterLast('\t');
else
Accel = "";
if( item->IsSeparator() )
Label = "----";
int flags = 0;
if (item->IsSubMenu())
flags +=1;
if (item->IsCheck() && item->IsChecked())
flags +=2;
Status( wxString::Format(" [ %2i, %2i, \"%s\", \"%s\" ],", depth, flags, Label,Accel ));
if (item->IsSubMenu()) {
pMenu = item->GetSubMenu();
ExploreMenu( pMenu, item->GetId(), depth+1 );
}
}
}
bool AutomationCommands::SendMenusPlus(CommandExecutionContext context)
{
wxMenuBar * pBar = context.GetProject()->GetMenuBar();
if(!pBar ){
wxLogDebug("No menus");
return false;
}
size_t cnt = pBar->GetMenuCount();
size_t i;
wxString Label;
Status( "AudacityMenus[" );
for(i=0;i<cnt;i++)
{
Label = pBar->GetMenuLabelText( i );
Status( wxString::Format(" [ %2i, %2i, \"%s\", \"%s\" ],", 0, 0, Label, "" ));
ExploreMenu( pBar->GetMenu( i ), pBar->GetId(), 1 );
}
Status( "];" );
return true;
}
bool AutomationCommands::SendMenus(CommandExecutionContext context)
{
bool bShowStatus = true;
wxArrayString names;
CommandManager *cmdManager = context.GetProject()->GetCommandManager();
cmdManager->GetAllCommandNames(names, false);
wxArrayString::iterator iter;
for (iter = names.begin(); iter != names.end(); ++iter)
{
wxString name = *iter;
wxString out = name;
if (bShowStatus)
{
out += wxT("\t");
out += cmdManager->GetEnabled(name) ? wxT("Enabled") : wxT("Disabled");
}
Status(out);
}
return true;
}
bool AutomationCommands::SendClips(CommandExecutionContext context)
{
bool bShowStatus = true;
wxArrayString names;
CommandManager *cmdManager = context.GetProject()->GetCommandManager();
cmdManager->GetAllCommandNames(names, false);
wxArrayString::iterator iter;
for (iter = names.begin(); iter != names.end(); ++iter)
{
wxString name = *iter;
wxString out = name;
if (bShowStatus)
{
out += wxT("\t");
out += cmdManager->GetEnabled(name) ? wxT("Enabled") : wxT("Disabled");
}
Status(out);
}
return true;
}
bool AutomationCommands::SendKeycodes(CommandExecutionContext WXUNUSED(context))
{
Status("Keycodes");
return true;
}
void AutomationCommands::ExploreAdornments( CommandExecutionContext WXUNUSED(context),
wxPoint WXUNUSED(P), wxWindow * pWin, int WXUNUSED(Id), int depth )
{
// Dang! wxMenuBar returns bogus screen rect.
// We're going to have to fake it instead.
//wxMenuBar * pBar = context.GetProject()->GetMenuBar();
//wxRect R = pBar->GetScreenRect();
//R.SetPosition( R.GetPosition() - P );
wxRect R1 = pWin->GetScreenRect();
wxSize s = pWin->GetWindowBorderSize();
wxRect R( 2,32, R1.GetWidth() - s.GetWidth() * 2 -16, 22 );
Status( wxString::Format(" [ %2i, %3i, %3i, %3i, %3i, \"%s\" ],",
depth, R.GetLeft(), R.GetTop(), R.GetRight(), R.GetBottom(), "MenuBar" ));
}
void AutomationCommands::ExploreTrackPanel( CommandExecutionContext context,
wxPoint P, wxWindow * pWin, int WXUNUSED(Id), int depth )
{
AudacityProject * pProj = context.GetProject();
TrackPanel * pTP = pProj->GetTrackPanel();
wxRect trackRect = pWin->GetRect();
VisibleTrackIterator iter(pProj);
for (Track *t = iter.First(); t; t = iter.Next()) {
trackRect.y = t->GetY() - pTP->mViewInfo->vpos;
trackRect.height = t->GetHeight();
#if 0
// Work in progress on getting the TCP button positions and sizes.
wxRect rect = trackRect;
Track *l = t->GetLink();
if (t->GetLinked()) {
rect.height += l->GetHeight();
}
switch (t->GetKind()) {
case Track::Wave:
{
break;
}
#ifdef USE_MIDI
case Track::Note:
{
break;
}
#endif // USE_MIDI
case Track::Label:
break;
case Track::Time:
break;
}
{
// Start with whole track rect
wxRect R = trackRect;
// Now exclude left, right, and top insets
R.x += kLeftInset;
R.y += kTopInset;
R.width -= kLeftInset * 2;
R.height -= kTopInset;
int labelw = pTP->GetLabelWidth();
int vrul = pTP->GetVRulerOffset();
bool bIsWave = true;
//mTrackInfo.DrawBackground(dc, R, t->GetSelected(), bIsWave, labelw, vrul);
for (Overlay * pOverlay : pTP->mOverlays) {
auto R2(pOverlay->GetRectangle(trackRect.GetSize()).first);
Status( wxString::Format(" [ %2i, %3i, %3i, %3i, %3i, \"%s\" ],",
depth, R2.GetLeft(), R2.GetTop(), R2.GetRight(), R2.GetBottom(), "Overthing" ));
}
}
#endif
// The VRuler.
{
wxRect R = trackRect;
R.x += pTP->GetVRulerOffset();
R.y += kTopMargin;
R.width = pTP->GetVRulerWidth();
R.height -= (kTopMargin + kBottomMargin);
R.SetPosition( R.GetPosition() + P );
Status( wxString::Format(" [ %2i, %3i, %3i, %3i, %3i, \"%s\" ],",
depth, R.GetLeft(), R.GetTop(), R.GetRight(), R.GetBottom(), "VRuler" ));
}
}
}
void AutomationCommands::ExploreWindows( CommandExecutionContext context,
wxPoint P, wxWindow * pWin, int Id, int depth )
{
Id;//Compiler food.
if( pWin->GetName() == "Track Panel" )
{
wxRect R = pWin->GetScreenRect();
ExploreTrackPanel( context, R.GetPosition()-P, pWin, Id, depth );
return;
}
wxWindowList list = pWin->GetChildren();
size_t lcnt = list.GetCount();
for (size_t lndx = 0; lndx < lcnt; lndx++) {
wxWindow * item = list[lndx];
if( !item->IsShown() )
continue;
wxRect R = item->GetScreenRect();
R.SetPosition( R.GetPosition() - P );
wxString Name = item->GetName();
// Ignore staticLine and StaticBitmap.
if( Name.StartsWith( "static" ) )
continue;
// Ignore anonymous panels.
if( Name == "panel" )
continue;
if( Name.IsEmpty() )
Name = wxString("*") + item->GetToolTipText();
Status( wxString::Format(" [ %2i, %3i, %3i, %3i, %3i, \"%s\" ],",
depth, R.GetLeft(), R.GetTop(), R.GetRight(), R.GetBottom(), Name ));
ExploreWindows( context, P, item, item->GetId(), depth+1 );
}
}
bool AutomationCommands::SendBoxes(CommandExecutionContext context)
{
Status("Boxes");
wxWindow * pWin = context.GetProject();
Status( "AudacityBoxes[" );
wxRect R = pWin->GetScreenRect();
//R.SetPosition( wxPoint(0,0) );
//wxString Name = pWin->GetName();
Status( wxString::Format(" [ %2i, %3i, %3i, %3i, %3i, \"%s\" ],",
0, R.GetLeft(), R.GetTop(), R.GetRight(), R.GetBottom(), "Audacity Window" ));
ExploreAdornments( context, pWin->GetPosition()+wxSize( 6,-1), pWin, pWin->GetId(), 1 );
ExploreWindows( context, pWin->GetPosition()+wxSize( 6,-1), pWin, pWin->GetId(), 1 );
Status( "];" );
return true;
}
bool AutomationCommands::Apply(CommandExecutionContext context)
{
wxString mode = mMode;
bool bOK = false;
if (mode.IsSameAs(wxT("GetMenus")))
{
bOK = SendMenus( context );
}
if (mode.IsSameAs(wxT("GetMenusPlus")))
{
bOK = SendMenusPlus( context );
}
else if (mode.IsSameAs(wxT("GetClips")))
{
bOK = SendClips( context );
}
else if (mode.IsSameAs(wxT("GetKeycodes")))
{
bOK = SendKeycodes( context );
}
else if (mode.IsSameAs(wxT("GetBoxes")))
{
bOK = SendBoxes( context );
}
return bOK;
}

View File

@ -0,0 +1,70 @@
/**********************************************************************
Audacity - A Digital Audio Editor
Copyright 1999-2009 Audacity Team
License: wxWidgets
Dan Horgan
******************************************************************//**
\file AutomationCommands.h
\brief Contains declaration of AutomationCommands class.
\class AutomationCommands
\brief Command which outputs a list of available menu commands on the status
channel.
*//*******************************************************************/
#ifndef __GETALLMENUCOMMANDS__
#define __GETALLMENUCOMMANDS__
#include "Command.h"
#include "CommandType.h"
class wxMenuBar;
class wxPoint;
class AutomationCommandsType final : public CommandType
{
public:
AutomationCommandsType( const wxString & Name ) { mCustomName = Name;};
wxString mCustomName;
wxString BuildName() override;
void BuildSignature(CommandSignature &signature) override;
CommandHolder Create(std::unique_ptr<CommandOutputTarget> &&target) override;
};
class AutomationCommands final : public CommandImplementation
{
public:
AutomationCommands(CommandType &type,
std::unique_ptr<CommandOutputTarget> &&target)
: CommandImplementation(type, std::move(target))
{ mMode = type.BuildName();}
virtual ~AutomationCommands()
{ }
bool Apply(CommandExecutionContext context) override;
private:
wxString mMode;
bool SendMenus(CommandExecutionContext context);
bool SendMenusPlus(CommandExecutionContext context);
bool SendClips(CommandExecutionContext context);
bool SendKeycodes(CommandExecutionContext context);
bool SendBoxes(CommandExecutionContext context);
void ExploreMenu( wxMenu * pMenu, int Id, int depth );
void ExploreTrackPanel( CommandExecutionContext context,
wxPoint P, wxWindow * pWin, int Id, int depth );
void ExploreAdornments( CommandExecutionContext context,
wxPoint P, wxWindow * pWin, int Id, int depth );
void ExploreWindows( CommandExecutionContext context,
wxPoint P, wxWindow * pWin, int Id, int depth );
};
#endif /* End of include guard: __GETALLMENUCOMMANDS__ */

View File

@ -51,8 +51,12 @@ bool BatchEvalCommand::Apply(CommandExecutionContext WXUNUSED(context))
// Create a Batch that will have just one command in it...
BatchCommands Batch;
return Batch.ApplyCommand(cmdName, cmdParams);
bool bResult = Batch.ApplyCommand(cmdName, cmdParams);
// Relay messages, if any.
wxString Message = Batch.GetMessage();
if( !Message.IsEmpty() )
Status( Message );
return bResult;
}
BatchEvalCommand::~BatchEvalCommand()

View File

@ -9,7 +9,8 @@
******************************************************************//**
\file CommandDirectory.cpp
\brief Contains definitions for the CommandDirectory class
\brief A dictionary of supported scripting commands, including
functions to look up a command by name.
*//*******************************************************************/
@ -20,7 +21,7 @@
#include "ScreenshotCommand.h"
#include "BatchEvalCommand.h"
#include "ExecMenuCommand.h"
#include "GetAllMenuCommands.h"
#include "AutomationCommands.h"
#include "MessageCommand.h"
#include "GetTrackInfoCommand.h"
#include "GetProjectInfoCommand.h"
@ -42,11 +43,19 @@ CommandDirectory::CommandDirectory()
AddCommand(make_movable<ScreenshotCommandType>());
AddCommand(make_movable<BatchEvalCommandType>());
AddCommand(make_movable<ExecMenuCommandType>());
AddCommand(make_movable<GetAllMenuCommandsType>());
AddCommand(make_movable<MessageCommandType>());
AddCommand(make_movable<GetTrackInfoCommandType>());
AddCommand(make_movable<GetProjectInfoCommandType>());
// AutomationCommandsType will be renamed GenericCommand
// It can be customised in the constructor and so
// appear as many distinct commands.
AddCommand(make_movable<AutomationCommandsType>("GetAll"));
AddCommand(make_movable<AutomationCommandsType>("GetMenus"));
AddCommand(make_movable<AutomationCommandsType>("GetMenusPlus"));
AddCommand(make_movable<AutomationCommandsType>("GetBoxes"));
AddCommand(make_movable<AutomationCommandsType>("GetClips"));
AddCommand(make_movable<HelpCommandType>());
AddCommand(make_movable<SelectCommandType>());
AddCommand(make_movable<CompareAudioCommandType>());

View File

@ -1,55 +0,0 @@
/**********************************************************************
Audacity - A Digital Audio Editor
Copyright 1999-2009 Audacity Team
License: wxWidgets
Dan Horgan
******************************************************************//**
\file GetAllMenuCommands.cpp
\brief Contains definitions for GetAllMenuCommands class.
*//*******************************************************************/
#include "GetAllMenuCommands.h"
#include "../Project.h"
#include "CommandManager.h"
wxString GetAllMenuCommandsType::BuildName()
{
return wxT("GetAllMenuCommands");
}
void GetAllMenuCommandsType::BuildSignature(CommandSignature &signature)
{
auto showStatusValidator = make_movable<BoolValidator>();
signature.AddParameter(wxT("ShowStatus"), false, std::move(showStatusValidator));
}
CommandHolder GetAllMenuCommandsType::Create(std::unique_ptr<CommandOutputTarget> &&target)
{
return std::make_shared<GetAllMenuCommands>(*this, std::move(target));
}
bool GetAllMenuCommands::Apply(CommandExecutionContext context)
{
bool showStatus = GetBool(wxT("ShowStatus"));
wxArrayString names;
CommandManager *cmdManager = context.GetProject()->GetCommandManager();
cmdManager->GetAllCommandNames(names, false);
wxArrayString::iterator iter;
for (iter = names.begin(); iter != names.end(); ++iter)
{
wxString name = *iter;
wxString out = name;
if (showStatus)
{
out += wxT("\t");
out += cmdManager->GetEnabled(name) ? wxT("Enabled") : wxT("Disabled");
}
Status(out);
}
return true;
}

View File

@ -1,48 +0,0 @@
/**********************************************************************
Audacity - A Digital Audio Editor
Copyright 1999-2009 Audacity Team
License: wxWidgets
Dan Horgan
******************************************************************//**
\file GetAllMenuCommands.h
\brief Contains declaration of GetAllMenuCommands class.
\class GetAllMenuCommands
\brief Command which outputs a list of available menu commands on the status
channel.
*//*******************************************************************/
#ifndef __GETALLMENUCOMMANDS__
#define __GETALLMENUCOMMANDS__
#include "Command.h"
#include "CommandType.h"
class GetAllMenuCommandsType final : public CommandType
{
public:
wxString BuildName() override;
void BuildSignature(CommandSignature &signature) override;
CommandHolder Create(std::unique_ptr<CommandOutputTarget> &&target) override;
};
class GetAllMenuCommands final : public CommandImplementation
{
public:
GetAllMenuCommands(CommandType &type,
std::unique_ptr<CommandOutputTarget> &&target)
: CommandImplementation(type, std::move(target))
{ }
virtual ~GetAllMenuCommands()
{ }
bool Apply(CommandExecutionContext context) override;
};
#endif /* End of include guard: __GETALLMENUCOMMANDS__ */

View File

@ -240,6 +240,8 @@ Meter::Meter(AudacityProject *project,
mIcon{},
mAccSilent(false)
{
// i18n-hint: Noun (the meter is used for playback or record level monitoring)
SetName( _("Meter") );
// Suppress warnings about the header file
wxUnusedVar(SpeakerMenu_xpm);
wxUnusedVar(MicMenu_xpm);

View File

@ -45,6 +45,7 @@ private:
DECLARE_EVENT_TABLE()
friend class AutomationCommands;
};
#endif

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
@ -399,7 +399,7 @@
<ClCompile Include="..\..\..\src\commands\CommandType.cpp" />
<ClCompile Include="..\..\..\src\commands\CompareAudioCommand.cpp" />
<ClCompile Include="..\..\..\src\commands\ExecMenuCommand.cpp" />
<ClCompile Include="..\..\..\src\commands\GetAllMenuCommands.cpp" />
<ClCompile Include="..\..\..\src\commands\AutomationCommands.cpp" />
<ClCompile Include="..\..\..\src\commands\GetProjectInfoCommand.cpp" />
<ClCompile Include="..\..\..\src\commands\GetTrackInfoCommand.cpp" />
<ClCompile Include="..\..\..\src\commands\HelpCommand.cpp" />
@ -749,7 +749,7 @@
<ClInclude Include="..\..\..\src\commands\CommandType.h" />
<ClInclude Include="..\..\..\src\commands\CompareAudioCommand.h" />
<ClInclude Include="..\..\..\src\commands\ExecMenuCommand.h" />
<ClInclude Include="..\..\..\src\commands\GetAllMenuCommands.h" />
<ClInclude Include="..\..\..\src\commands\AutomationCommands.h" />
<ClInclude Include="..\..\..\src\commands\GetProjectInfoCommand.h" />
<ClInclude Include="..\..\..\src\commands\GetTrackInfoCommand.h" />
<ClInclude Include="..\..\..\src\commands\HelpCommand.h" />
@ -1218,4 +1218,4 @@
<ImportGroup Label="ExtensionTargets">
<Import Project="..\..\ny.targets" />
</ImportGroup>
</Project>
</Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="src">
@ -683,9 +683,6 @@
<ClCompile Include="..\..\..\src\commands\ExecMenuCommand.cpp">
<Filter>src\commands</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\commands\GetAllMenuCommands.cpp">
<Filter>src\commands</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\commands\GetProjectInfoCommand.cpp">
<Filter>src\commands</Filter>
</ClCompile>
@ -1061,6 +1058,9 @@
<ClCompile Include="..\..\..\src\tracks\playabletrack\notetrack\ui\NoteTrackSliderHandles.cpp">
<Filter>src\tracks\playabletrack\notetrack\ui</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\commands\AutomationCommands.cpp">
<Filter>src\commands</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\AboutDialog.h">
@ -1669,9 +1669,6 @@
<ClInclude Include="..\..\..\src\commands\ExecMenuCommand.h">
<Filter>src\commands</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\commands\GetAllMenuCommands.h">
<Filter>src\commands</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\commands\GetProjectInfoCommand.h">
<Filter>src\commands</Filter>
</ClInclude>
@ -2116,6 +2113,9 @@
<ClInclude Include="..\..\..\src\tracks\playabletrack\notetrack\ui\NoteTrackSliderHandles.h">
<Filter>src\tracks\playabletrack\notetrack\ui</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\commands\AutomationCommands.h">
<Filter>src\commands</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\..\audacity.ico">
@ -2339,4 +2339,4 @@
<Filter>plug-ins</Filter>
</copy>
</ItemGroup>
</Project>
</Project>

View File

@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
# Visual Studio Express 2013 for Windows Desktop
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Audacity", "Projects\Audacity\Audacity.vcxproj", "{1D64095C-F936-4FCF-B609-56E9DDF941FA}"
@ -53,6 +53,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lv2", "Projects\lv2\lv2.vcx
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "expat", "Projects\expat\expat.vcxproj", "{A939AAF8-44F1-4CE7-9DD0-7A6E99814856}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod-script-pipe", "..\lib-src\mod-script-pipe\mod-script-pipe.vcxproj", "{85774A29-EA2F-4A40-994F-6BE593D847A5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@ -155,6 +157,10 @@ Global
{A939AAF8-44F1-4CE7-9DD0-7A6E99814856}.Release|Win32.ActiveCfg = Release|Win32
{A939AAF8-44F1-4CE7-9DD0-7A6E99814856}.Release|Win32.Build.0 = Release|Win32
{A939AAF8-44F1-4CE7-9DD0-7A6E99814856}.Release|Win32.Deploy.0 = Release|Win32
{85774A29-EA2F-4A40-994F-6BE593D847A5}.Debug|Win32.ActiveCfg = Debug|Win32
{85774A29-EA2F-4A40-994F-6BE593D847A5}.Debug|Win32.Build.0 = Debug|Win32
{85774A29-EA2F-4A40-994F-6BE593D847A5}.Release|Win32.ActiveCfg = Release|Win32
{85774A29-EA2F-4A40-994F-6BE593D847A5}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE