mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-25 16:48:44 +02:00
Merge branch 'master'
This commit is contained in:
commit
6d0043860e
@ -337,6 +337,11 @@ void FileDialog::ShowWindowModal()
|
|||||||
|
|
||||||
void FileDialog::DoOnFilterSelected(int index)
|
void FileDialog::DoOnFilterSelected(int index)
|
||||||
{
|
{
|
||||||
|
if (index == wxNOT_FOUND)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
NSArray* types = GetTypesFromExtension(m_filterExtensions[index],m_currentExtensions);
|
NSArray* types = GetTypesFromExtension(m_filterExtensions[index],m_currentExtensions);
|
||||||
NSSavePanel* panel = (NSSavePanel*) GetWXWindow();
|
NSSavePanel* panel = (NSSavePanel*) GetWXWindow();
|
||||||
[panel setAllowedFileTypes:types];
|
[panel setAllowedFileTypes:types];
|
||||||
@ -551,13 +556,15 @@ int FileDialog::ShowModal()
|
|||||||
|
|
||||||
m_useFileTypeFilter = m_filterExtensions.GetCount() > 0;
|
m_useFileTypeFilter = m_filterExtensions.GetCount() > 0;
|
||||||
|
|
||||||
|
#if defined(we_always_want_the_types)
|
||||||
if( HasFlag(wxFD_OPEN) )
|
if( HasFlag(wxFD_OPEN) )
|
||||||
{
|
{
|
||||||
if ( !(wxSystemOptions::HasOption( wxOSX_FILEDIALOG_ALWAYS_SHOW_TYPES ) && (wxSystemOptions::GetOptionInt( wxOSX_FILEDIALOG_ALWAYS_SHOW_TYPES ) == 1)) )
|
if ( !(wxSystemOptions::HasOption( wxOSX_FILEDIALOG_ALWAYS_SHOW_TYPES ) && (wxSystemOptions::GetOptionInt( wxOSX_FILEDIALOG_ALWAYS_SHOW_TYPES ) == 1)) )
|
||||||
m_useFileTypeFilter = false;
|
m_useFileTypeFilter = false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
m_firstFileTypeFilter = -1;
|
m_firstFileTypeFilter = wxNOT_FOUND;
|
||||||
|
|
||||||
if ( m_useFileTypeFilter
|
if ( m_useFileTypeFilter
|
||||||
&& m_filterIndex >= 0 && m_filterIndex < m_filterExtensions.GetCount() )
|
&& m_filterIndex >= 0 && m_filterIndex < m_filterExtensions.GetCount() )
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#define FLAC__ALIGN_MALLOC_DATA 1
|
#define FLAC__ALIGN_MALLOC_DATA 1
|
||||||
|
|
||||||
/* define if building for ia32/i386 */
|
/* define if building for ia32/i386 */
|
||||||
/* #undef FLAC__CPU_IA32 */
|
#define FLAC__CPU_IA32 1
|
||||||
|
|
||||||
/* define if building for PowerPC */
|
/* define if building for PowerPC */
|
||||||
/* #undef FLAC__CPU_PPC */
|
/* #undef FLAC__CPU_PPC */
|
||||||
@ -26,7 +26,7 @@
|
|||||||
/* #undef FLAC__CPU_SPARC */
|
/* #undef FLAC__CPU_SPARC */
|
||||||
|
|
||||||
/* define if building for x86_64 */
|
/* define if building for x86_64 */
|
||||||
#define FLAC__CPU_X86_64 1
|
/* #undef FLAC__CPU_X86_64 */
|
||||||
|
|
||||||
/* define if you have docbook-to-man or docbook2man */
|
/* define if you have docbook-to-man or docbook2man */
|
||||||
/* #undef FLAC__HAS_DOCBOOK_TO_MAN */
|
/* #undef FLAC__HAS_DOCBOOK_TO_MAN */
|
||||||
@ -168,7 +168,7 @@
|
|||||||
#define SIZEOF_OFF_T 8
|
#define SIZEOF_OFF_T 8
|
||||||
|
|
||||||
/* The size of `void*', as computed by sizeof. */
|
/* The size of `void*', as computed by sizeof. */
|
||||||
#define SIZEOF_VOIDP 8
|
#define SIZEOF_VOIDP 4
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
#define STDC_HEADERS 1
|
#define STDC_HEADERS 1
|
||||||
|
@ -1159,14 +1159,14 @@ bool AudacityApp::OnInit()
|
|||||||
|
|
||||||
#ifdef AUDACITY_NAME
|
#ifdef AUDACITY_NAME
|
||||||
wxString appName = wxT(AUDACITY_NAME);
|
wxString appName = wxT(AUDACITY_NAME);
|
||||||
wxString vendorName = wxT(AUDACITY_NAME);
|
|
||||||
#else
|
#else
|
||||||
wxString vendorName = wxT("Audacity");
|
|
||||||
wxString appName = wxT("Audacity");
|
wxString appName = wxT("Audacity");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxTheApp->SetVendorName(vendorName);
|
|
||||||
wxTheApp->SetAppName(appName);
|
wxTheApp->SetAppName(appName);
|
||||||
|
// Explicitly set since OSX will use it for the "Quit" menu item
|
||||||
|
wxTheApp->SetAppDisplayName(wxT("Audacity"));
|
||||||
|
wxTheApp->SetVendorName(wxT("Audacity"));
|
||||||
|
|
||||||
// Unused strings that we want to be translated, even though
|
// Unused strings that we want to be translated, even though
|
||||||
// we're not using them yet...
|
// we're not using them yet...
|
||||||
@ -1465,10 +1465,14 @@ bool AudacityApp::OnInit()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// As of wx3, there's no need to process the filename arguments as they
|
||||||
|
// will be sent view the MacOpenFile() method.
|
||||||
|
#if !defined(__WXMAC__)
|
||||||
for (size_t i = 0, cnt = parser->GetParamCount(); i < cnt; i++)
|
for (size_t i = 0, cnt = parser->GetParamCount(); i < cnt; i++)
|
||||||
{
|
{
|
||||||
MRUOpen(parser->GetParam(i));
|
MRUOpen(parser->GetParam(i));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
delete parser;
|
delete parser;
|
||||||
@ -1596,7 +1600,7 @@ bool AudacityApp::CreateSingleInstanceChecker(wxString dir)
|
|||||||
mChecker = new wxSingleInstanceChecker();
|
mChecker = new wxSingleInstanceChecker();
|
||||||
|
|
||||||
#if defined(__UNIX__)
|
#if defined(__UNIX__)
|
||||||
wxString sockFile(defaultTempDir + wxT("/.audacity.sock"));
|
wxString sockFile(dir + wxT("/.audacity.sock"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxString runningTwoCopiesStr = _("Running two copies of Audacity simultaneously may cause\ndata loss or cause your system to crash.\n\n");
|
wxString runningTwoCopiesStr = _("Running two copies of Audacity simultaneously may cause\ndata loss or cause your system to crash.\n\n");
|
||||||
|
@ -192,6 +192,7 @@
|
|||||||
#define EXPERIMENTAL_TWO_TONE_TIME_RULER
|
#define EXPERIMENTAL_TWO_TONE_TIME_RULER
|
||||||
|
|
||||||
// Define to include crash reporting
|
// Define to include crash reporting
|
||||||
|
#include <wx/defs.h>
|
||||||
#define EXPERIMENTAL_CRASH_REPORT
|
#define EXPERIMENTAL_CRASH_REPORT
|
||||||
#if !defined(wxUSE_DEBUGREPORT) || !wxUSE_DEBUGREPORT
|
#if !defined(wxUSE_DEBUGREPORT) || !wxUSE_DEBUGREPORT
|
||||||
#undef EXPERIMENTAL_CRASH_REPORT
|
#undef EXPERIMENTAL_CRASH_REPORT
|
||||||
|
@ -1667,6 +1667,12 @@ bool LabelTrack::OnKeyDown(SelectedRegion &newSel, wxKeyEvent & event)
|
|||||||
int keyCode = event.GetKeyCode();
|
int keyCode = event.GetKeyCode();
|
||||||
int mods = event.GetModifiers();
|
int mods = event.GetModifiers();
|
||||||
|
|
||||||
|
// Check for modifiers and only allow shift
|
||||||
|
if (mods != wxMOD_NONE && mods != wxMOD_SHIFT) {
|
||||||
|
event.Skip();
|
||||||
|
return updated;
|
||||||
|
}
|
||||||
|
|
||||||
// All editing keys are only active if we're currently editing a label
|
// All editing keys are only active if we're currently editing a label
|
||||||
if (mSelIndex >= 0) {
|
if (mSelIndex >= 0) {
|
||||||
switch (keyCode) {
|
switch (keyCode) {
|
||||||
@ -1907,11 +1913,23 @@ bool LabelTrack::OnKeyDown(SelectedRegion &newSel, wxKeyEvent & event)
|
|||||||
/// by OnKeyDown.
|
/// by OnKeyDown.
|
||||||
bool LabelTrack::OnChar(SelectedRegion &WXUNUSED(newSel), wxKeyEvent & event)
|
bool LabelTrack::OnChar(SelectedRegion &WXUNUSED(newSel), wxKeyEvent & event)
|
||||||
{
|
{
|
||||||
|
// Check for modifiers and only allow shift.
|
||||||
|
//
|
||||||
|
// We still need to check this or we will eat the top level menu accelerators
|
||||||
|
// on Windows if our capture or key down handlers skipped the event.
|
||||||
|
int mods = event.GetModifiers();
|
||||||
|
if (mods != wxMOD_NONE && mods != wxMOD_SHIFT) {
|
||||||
|
event.Skip();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Only track true changes to the label
|
// Only track true changes to the label
|
||||||
bool updated = false;
|
bool updated = false;
|
||||||
|
|
||||||
// Cache the character
|
// Cache the character
|
||||||
wxChar charCode = event.GetUnicodeKey();
|
wxChar charCode = event.GetUnicodeKey();
|
||||||
|
|
||||||
|
// Skip if it's not a valid unicode character or a control character
|
||||||
if (charCode == 0 || wxIscntrl(charCode)) {
|
if (charCode == 0 || wxIscntrl(charCode)) {
|
||||||
event.Skip();
|
event.Skip();
|
||||||
return false;
|
return false;
|
||||||
|
@ -825,6 +825,8 @@ void AudacityProject::CreateMenusAndCommands()
|
|||||||
#endif
|
#endif
|
||||||
c->AddItem(wxT("RescanDevices"), _("R&escan Audio Devices"), FN(OnRescanDevices));
|
c->AddItem(wxT("RescanDevices"), _("R&escan Audio Devices"), FN(OnRescanDevices));
|
||||||
|
|
||||||
|
c->EndMenu();
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Tracks Menu (formerly Project Menu)
|
// Tracks Menu (formerly Project Menu)
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -1123,7 +1123,7 @@ bool Sequence::Read(samplePtr buffer, sampleFormat format,
|
|||||||
|
|
||||||
if (result != len)
|
if (result != len)
|
||||||
{
|
{
|
||||||
wxLogWarning(wxT("Expected to read %d samples, got %d samples."), len, result);
|
wxLogWarning(wxT("Expected to read %ld samples, got %d samples."), len, result);
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
result = 0;
|
result = 0;
|
||||||
ClearSamples(buffer, format, result, len-result);
|
ClearSamples(buffer, format, result, len-result);
|
||||||
|
@ -6126,10 +6126,29 @@ void TrackPanel::HandleWheelRotation(wxMouseEvent & event)
|
|||||||
Track *const pTrack = FindTrack(event.m_x, event.m_y, true, false, &rect);
|
Track *const pTrack = FindTrack(event.m_x, event.m_y, true, false, &rect);
|
||||||
if (pTrack && event.m_x >= GetVRulerOffset()) {
|
if (pTrack && event.m_x >= GetVRulerOffset()) {
|
||||||
if (pTrack->GetKind() == Track::Wave) {
|
if (pTrack->GetKind() == Track::Wave) {
|
||||||
HandleWaveTrackVZoom(
|
WaveTrack *const wt = static_cast<WaveTrack*>(pTrack);
|
||||||
mTracks, rect, event.m_y, event.m_y,
|
if (event.CmdDown() &&
|
||||||
static_cast<WaveTrack*>(pTrack), false, (event.m_wheelRotation < 0),
|
wt->GetWaveformSettings().scaleType == WaveformSettings::stLogarithmic) {
|
||||||
true);
|
// Vary the bottom of the dB scale, but only if the midline is visible
|
||||||
|
float min, max;
|
||||||
|
wt->GetDisplayBounds(&min, &max);
|
||||||
|
if (min < 0.0 && max > 0.0) {
|
||||||
|
WaveformSettings &settings = wt->GetIndependentWaveformSettings();
|
||||||
|
if (event.m_wheelRotation < 0)
|
||||||
|
// Zoom out
|
||||||
|
settings.NextLowerDBRange();
|
||||||
|
else
|
||||||
|
settings.NextHigherDBRange();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
HandleWaveTrackVZoom(
|
||||||
|
mTracks, rect, event.m_y, event.m_y,
|
||||||
|
wt, false, (event.m_wheelRotation < 0),
|
||||||
|
true);
|
||||||
|
}
|
||||||
UpdateVRuler(pTrack);
|
UpdateVRuler(pTrack);
|
||||||
Refresh(false);
|
Refresh(false);
|
||||||
MakeParentModifyState(true);
|
MakeParentModifyState(true);
|
||||||
|
@ -179,36 +179,46 @@ public:
|
|||||||
|
|
||||||
int FilterEvent(wxEvent& event)
|
int FilterEvent(wxEvent& event)
|
||||||
{
|
{
|
||||||
|
// Quickly bail if this isn't something we want.
|
||||||
wxEventType type = event.GetEventType();
|
wxEventType type = event.GetEventType();
|
||||||
if (type != wxEVT_CHAR_HOOK && type != wxEVT_KEY_UP)
|
if (type != wxEVT_CHAR_HOOK && type != wxEVT_KEY_UP)
|
||||||
{
|
{
|
||||||
return Event_Skip;
|
return Event_Skip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We must have a project since we will be working with the Command Manager
|
||||||
|
// and capture handler, both of which are (currently) tied to individual projects.
|
||||||
|
//
|
||||||
|
// Shouldn't they be tied to the application instead???
|
||||||
AudacityProject *project = GetActiveProject();
|
AudacityProject *project = GetActiveProject();
|
||||||
if (!project || !project->IsEnabled())
|
if (!project || !project->IsEnabled())
|
||||||
{
|
{
|
||||||
return Event_Skip;
|
return Event_Skip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make a copy of the event and (possibly) make it look like a key down
|
||||||
|
// event.
|
||||||
wxKeyEvent key = (wxKeyEvent &) event;
|
wxKeyEvent key = (wxKeyEvent &) event;
|
||||||
if (type == wxEVT_CHAR_HOOK)
|
if (type == wxEVT_CHAR_HOOK)
|
||||||
{
|
{
|
||||||
key.SetEventType(wxEVT_KEY_DOWN);
|
key.SetEventType(wxEVT_KEY_DOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Give the capture handler first dibs at the event.
|
||||||
wxWindow *handler = project->GetKeyboardCaptureHandler();
|
wxWindow *handler = project->GetKeyboardCaptureHandler();
|
||||||
if (handler && HandleCapture(handler, key))
|
if (handler && HandleCapture(handler, key))
|
||||||
{
|
{
|
||||||
return Event_Processed;
|
return Event_Processed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Capture handler didn't want it, so ask the Command Manager.
|
||||||
CommandManager *manager = project->GetCommandManager();
|
CommandManager *manager = project->GetCommandManager();
|
||||||
if (manager && manager->FilterKeyEvent(project, key))
|
if (manager && manager->FilterKeyEvent(project, key))
|
||||||
{
|
{
|
||||||
return Event_Processed;
|
return Event_Processed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Give it back to WX for normal processing.
|
||||||
return Event_Skip;
|
return Event_Skip;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,6 +233,7 @@ private:
|
|||||||
}
|
}
|
||||||
wxEvtHandler *handler = target->GetEventHandler();
|
wxEvtHandler *handler = target->GetEventHandler();
|
||||||
|
|
||||||
|
// We make a copy of the event because the capture handler may modify it.
|
||||||
wxKeyEvent temp = event;
|
wxKeyEvent temp = event;
|
||||||
|
|
||||||
#if defined(__WXGTK__)
|
#if defined(__WXGTK__)
|
||||||
@ -235,24 +246,35 @@ private:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Ask the capture handler if the key down/up event is something they it
|
||||||
|
// might be interested in handling.
|
||||||
wxCommandEvent e(EVT_CAPTURE_KEY);
|
wxCommandEvent e(EVT_CAPTURE_KEY);
|
||||||
e.SetEventObject(&temp);
|
e.SetEventObject(&temp);
|
||||||
e.StopPropagation();
|
e.StopPropagation();
|
||||||
|
|
||||||
if (!handler->ProcessEvent(e))
|
if (!handler->ProcessEvent(e))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Now, let the handler process the normal key event.
|
||||||
|
bool keyDown = temp.GetEventType() == wxEVT_KEY_DOWN;
|
||||||
temp.WasProcessed();
|
temp.WasProcessed();
|
||||||
temp.StopPropagation();
|
temp.StopPropagation();
|
||||||
wxEventProcessInHandlerOnly onlyDown(temp, handler);
|
wxEventProcessInHandlerOnly onlyDown(temp, handler);
|
||||||
if (!handler->ProcessEvent(temp))
|
bool processed = handler->ProcessEvent(temp);
|
||||||
|
|
||||||
|
// Don't go any further if the capture handler didn't process
|
||||||
|
// the key down event.
|
||||||
|
if (!processed && keyDown)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (temp.GetEventType() == wxEVT_KEY_DOWN)
|
// At this point the capture handler has either processed a key down event
|
||||||
|
// or we're dealing with a key up event.
|
||||||
|
//
|
||||||
|
// So, only generate the char events for key down events.
|
||||||
|
if (keyDown)
|
||||||
{
|
{
|
||||||
wxString chars = GetUnicodeString(temp);
|
wxString chars = GetUnicodeString(temp);
|
||||||
for (size_t i = 0, cnt = chars.Length(); i < cnt; i++)
|
for (size_t i = 0, cnt = chars.Length(); i < cnt; i++)
|
||||||
@ -267,9 +289,12 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We get here for processed key down events or for key up events, whether
|
||||||
|
// processed or not.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert the key down event to a unicode string.
|
||||||
wxString GetUnicodeString(const wxKeyEvent & event)
|
wxString GetUnicodeString(const wxKeyEvent & event)
|
||||||
{
|
{
|
||||||
wxString chars;
|
wxString chars;
|
||||||
@ -425,7 +450,7 @@ void CommandManager::PurgeData()
|
|||||||
/// Names it according to the passed-in string argument.
|
/// Names it according to the passed-in string argument.
|
||||||
///
|
///
|
||||||
/// If the menubar already exists, simply returns it.
|
/// If the menubar already exists, simply returns it.
|
||||||
wxMenuBar *CommandManager::AddMenuBar(wxString sMenu)
|
wxMenuBar *CommandManager::AddMenuBar(const wxString & sMenu)
|
||||||
{
|
{
|
||||||
wxMenuBar *menuBar = GetMenuBar(sMenu);
|
wxMenuBar *menuBar = GetMenuBar(sMenu);
|
||||||
if (menuBar)
|
if (menuBar)
|
||||||
@ -445,7 +470,7 @@ wxMenuBar *CommandManager::AddMenuBar(wxString sMenu)
|
|||||||
///
|
///
|
||||||
/// Retrieves the menubar based on the name given in AddMenuBar(name)
|
/// Retrieves the menubar based on the name given in AddMenuBar(name)
|
||||||
///
|
///
|
||||||
wxMenuBar * CommandManager::GetMenuBar(wxString sMenu) const
|
wxMenuBar * CommandManager::GetMenuBar(const wxString & sMenu) const
|
||||||
{
|
{
|
||||||
for(unsigned int i = 0; i < mMenuBarList.GetCount(); i++)
|
for(unsigned int i = 0; i < mMenuBarList.GetCount(); i++)
|
||||||
{
|
{
|
||||||
@ -470,29 +495,26 @@ wxMenuBar * CommandManager::CurrentMenuBar() const
|
|||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// This makes a new menu and adds it to the 'CurrentMenuBar'
|
/// This starts a new menu
|
||||||
///
|
///
|
||||||
/// If the menu already exists, all of the items in it are
|
void CommandManager::BeginMenu(const wxString & tName)
|
||||||
/// cleared instead.
|
|
||||||
///
|
|
||||||
void CommandManager::BeginMenu(wxString tNameIn)
|
|
||||||
{
|
{
|
||||||
wxString tName = tNameIn;
|
|
||||||
|
|
||||||
wxMenu *tmpMenu = new wxMenu();
|
wxMenu *tmpMenu = new wxMenu();
|
||||||
|
|
||||||
mCurrentMenu = tmpMenu;
|
mCurrentMenu = tmpMenu;
|
||||||
mCurrentMenuName = tName;
|
mCurrentMenuName = tName;
|
||||||
|
|
||||||
CurrentMenuBar()->Append(mCurrentMenu, tName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// This ends a menu by setting the pointer to it
|
/// This attaches a menu to the menubar and ends the menu
|
||||||
/// to NULL. It is still attached to the CurrentMenuBar()
|
///
|
||||||
void CommandManager::EndMenu()
|
void CommandManager::EndMenu()
|
||||||
{
|
{
|
||||||
|
// Add the menu to the menubard after all menu items have been
|
||||||
|
// added to the menu to allow OSX to rearrange special menu
|
||||||
|
// items like Preferences, About, and Quit.
|
||||||
|
CurrentMenuBar()->Append(mCurrentMenu, mCurrentMenuName);
|
||||||
mCurrentMenu = NULL;
|
mCurrentMenu = NULL;
|
||||||
mCurrentMenuName = COMMAND;
|
mCurrentMenuName = COMMAND;
|
||||||
}
|
}
|
||||||
@ -501,10 +523,8 @@ void CommandManager::EndMenu()
|
|||||||
///
|
///
|
||||||
/// This starts a new submenu, and names it according to
|
/// This starts a new submenu, and names it according to
|
||||||
/// the function's argument.
|
/// the function's argument.
|
||||||
wxMenu* CommandManager::BeginSubMenu(wxString tNameIn)
|
wxMenu* CommandManager::BeginSubMenu(const wxString & tName)
|
||||||
{
|
{
|
||||||
wxString tName = tNameIn;
|
|
||||||
|
|
||||||
SubMenuListEntry *tmpEntry = new SubMenuListEntry;
|
SubMenuListEntry *tmpEntry = new SubMenuListEntry;
|
||||||
|
|
||||||
tmpEntry->menu = new wxMenu();
|
tmpEntry->menu = new wxMenu();
|
||||||
@ -572,12 +592,12 @@ wxMenu * CommandManager::CurrentMenu() const
|
|||||||
///
|
///
|
||||||
/// Add a menu item to the current menu. When the user selects it, the
|
/// Add a menu item to the current menu. When the user selects it, the
|
||||||
/// given functor will be called
|
/// given functor will be called
|
||||||
void CommandManager::InsertItem(wxString name, wxString label_in,
|
void CommandManager::InsertItem(const wxString & name,
|
||||||
CommandFunctor *callback, wxString after,
|
const wxString & label_in,
|
||||||
|
CommandFunctor *callback,
|
||||||
|
const wxString & after,
|
||||||
int checkmark)
|
int checkmark)
|
||||||
{
|
{
|
||||||
wxString label = label_in;
|
|
||||||
|
|
||||||
wxMenuBar *bar = GetActiveProject()->GetMenuBar();
|
wxMenuBar *bar = GetActiveProject()->GetMenuBar();
|
||||||
wxArrayString names = ::wxStringTokenize(after, wxT(":"));
|
wxArrayString names = ::wxStringTokenize(after, wxT(":"));
|
||||||
size_t cnt = names.GetCount();
|
size_t cnt = names.GetCount();
|
||||||
@ -624,9 +644,9 @@ void CommandManager::InsertItem(wxString name, wxString label_in,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandListEntry *entry = NewIdentifier(name, label, menu, callback, false, 0, 0);
|
CommandListEntry *entry = NewIdentifier(name, label_in, menu, callback, false, 0, 0);
|
||||||
int ID = entry->id;
|
int ID = entry->id;
|
||||||
label = GetLabel(entry);
|
wxString label = GetLabel(entry);
|
||||||
|
|
||||||
if (checkmark >= 0) {
|
if (checkmark >= 0) {
|
||||||
menu->InsertCheckItem(pos, ID, label);
|
menu->InsertCheckItem(pos, ID, label);
|
||||||
@ -702,7 +722,8 @@ void CommandManager::AddItem(const wxChar *name,
|
|||||||
/// with its position in the list as the index number.
|
/// with its position in the list as the index number.
|
||||||
/// When you call Enable on this command name, it will enable or disable
|
/// When you call Enable on this command name, it will enable or disable
|
||||||
/// all of the items at once.
|
/// all of the items at once.
|
||||||
void CommandManager::AddItemList(wxString name, wxArrayString labels,
|
void CommandManager::AddItemList(const wxString & name,
|
||||||
|
const wxArrayString & labels,
|
||||||
CommandFunctor *callback)
|
CommandFunctor *callback)
|
||||||
{
|
{
|
||||||
for (size_t i = 0, cnt = labels.GetCount(); i < cnt; i++) {
|
for (size_t i = 0, cnt = labels.GetCount(); i < cnt; i++) {
|
||||||
|
@ -90,21 +90,25 @@ class AUDACITY_DLL_API CommandManager: public XMLTagHandler
|
|||||||
// Creating menus and adding commands
|
// Creating menus and adding commands
|
||||||
//
|
//
|
||||||
|
|
||||||
wxMenuBar *AddMenuBar(wxString sMenu);
|
wxMenuBar *AddMenuBar(const wxString & sMenu);
|
||||||
|
|
||||||
void BeginMenu(wxString tName);
|
void BeginMenu(const wxString & tName);
|
||||||
void EndMenu();
|
void EndMenu();
|
||||||
|
|
||||||
wxMenu* BeginSubMenu(wxString tName);
|
wxMenu* BeginSubMenu(const wxString & tName);
|
||||||
void EndSubMenu();
|
void EndSubMenu();
|
||||||
void SetToMenu( wxMenu * menu ){
|
void SetToMenu( wxMenu * menu ){
|
||||||
mCurrentMenu = menu;
|
mCurrentMenu = menu;
|
||||||
};
|
};
|
||||||
|
|
||||||
void InsertItem(wxString name, wxString label, CommandFunctor *callback,
|
void InsertItem(const wxString & name,
|
||||||
wxString after, int checkmark = -1);
|
const wxString & label,
|
||||||
|
CommandFunctor *callback,
|
||||||
|
const wxString & after,
|
||||||
|
int checkmark = -1);
|
||||||
|
|
||||||
void AddItemList(wxString name, wxArrayString labels,
|
void AddItemList(const wxString & name,
|
||||||
|
const wxArrayString & labels,
|
||||||
CommandFunctor *callback);
|
CommandFunctor *callback);
|
||||||
|
|
||||||
void AddCheck(const wxChar *name,
|
void AddCheck(const wxChar *name,
|
||||||
@ -267,7 +271,7 @@ protected:
|
|||||||
//
|
//
|
||||||
|
|
||||||
wxMenuBar * CurrentMenuBar() const;
|
wxMenuBar * CurrentMenuBar() const;
|
||||||
wxMenuBar * GetMenuBar(wxString sMenu) const;
|
wxMenuBar * GetMenuBar(const wxString & sMenu) const;
|
||||||
wxMenu * CurrentSubMenu() const;
|
wxMenu * CurrentSubMenu() const;
|
||||||
wxMenu * CurrentMenu() const;
|
wxMenu * CurrentMenu() const;
|
||||||
wxString GetLabel(const CommandListEntry *entry) const;
|
wxString GetLabel(const CommandListEntry *entry) const;
|
||||||
|
@ -1282,6 +1282,11 @@ bool Effect::Process()
|
|||||||
CopyInputTracks(Track::All);
|
CopyInputTracks(Track::All);
|
||||||
bool bGoodResult = true;
|
bool bGoodResult = true;
|
||||||
|
|
||||||
|
// It's possible that the number of channels the effect expects changed based on
|
||||||
|
// the parameters (the Audacity Reverb effect does when the stereo width is 0).
|
||||||
|
mNumAudioIn = GetAudioInCount();
|
||||||
|
mNumAudioOut = GetAudioOutCount();
|
||||||
|
|
||||||
mPass = 1;
|
mPass = 1;
|
||||||
if (InitPass1())
|
if (InitPass1())
|
||||||
{
|
{
|
||||||
|
@ -151,12 +151,12 @@ EffectType EffectReverb::GetType()
|
|||||||
|
|
||||||
int EffectReverb::GetAudioInCount()
|
int EffectReverb::GetAudioInCount()
|
||||||
{
|
{
|
||||||
return 2;
|
return mParams.mStereoWidth ? 2 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int EffectReverb::GetAudioOutCount()
|
int EffectReverb::GetAudioOutCount()
|
||||||
{
|
{
|
||||||
return 2;
|
return mParams.mStereoWidth ? 2 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BLOCK 16384
|
#define BLOCK 16384
|
||||||
|
@ -53,6 +53,12 @@ enum
|
|||||||
CommentColumn
|
CommentColumn
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(__WXMAC__)
|
||||||
|
#define CTRL _("Command")
|
||||||
|
#else
|
||||||
|
#define CTRL _("Ctrl")
|
||||||
|
#endif
|
||||||
|
|
||||||
/// Constructor
|
/// Constructor
|
||||||
MousePrefs::MousePrefs(wxWindow * parent)
|
MousePrefs::MousePrefs(wxWindow * parent)
|
||||||
: PrefsPanel(parent, _("Mouse"))
|
: PrefsPanel(parent, _("Mouse"))
|
||||||
@ -105,11 +111,11 @@ void MousePrefs::CreateList()
|
|||||||
AddItem(_("Shift-Left-Click"), _("Select"), _("Extend Selection Range"));
|
AddItem(_("Shift-Left-Click"), _("Select"), _("Extend Selection Range"));
|
||||||
AddItem(_("Left-Double-Click"), _("Select"), _("Select Clip or Entire Track"));
|
AddItem(_("Left-Double-Click"), _("Select"), _("Select Clip or Entire Track"));
|
||||||
#ifdef EXPERIMENTAL_SCRUBBING_BASIC
|
#ifdef EXPERIMENTAL_SCRUBBING_BASIC
|
||||||
AddItem(_("Ctrl-Left-Click"), _("Select"), _("Scrub"));
|
AddItem(CTRL + _("-Left-Click"), _("Select"), _("Scrub"));
|
||||||
AddItem(_("Ctrl-Left-Drag"), _("Select"), _("Seek"));
|
AddItem(CTRL + _("-Left-Drag"), _("Select"), _("Seek"));
|
||||||
#endif
|
#endif
|
||||||
#ifdef EXPERIMENTAL_SCRUBBING_SMOOTH_SCROLL
|
#ifdef EXPERIMENTAL_SCRUBBING_SMOOTH_SCROLL
|
||||||
AddItem(_("Ctrl-Left-Double-Click"), _("Select"), _("Scroll-scrub"));
|
AddItem(CTRL + _("-Left-Double-Click"), _("Select"), _("Scroll-scrub"));
|
||||||
#endif
|
#endif
|
||||||
#ifdef EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL
|
#ifdef EXPERIMENTAL_SCRUBBING_SCROLL_WHEEL
|
||||||
AddItem(_("Wheel-Rotate"), _("Select"), _("Change scrub speed"));
|
AddItem(_("Wheel-Rotate"), _("Select"), _("Change scrub speed"));
|
||||||
@ -131,7 +137,7 @@ void MousePrefs::CreateList()
|
|||||||
|
|
||||||
AddItem(_("Left-Drag"), _("Time-Shift"),_("Time shift clip or move up/down between tracks"));
|
AddItem(_("Left-Drag"), _("Time-Shift"),_("Time shift clip or move up/down between tracks"));
|
||||||
AddItem(_("Shift-Left-Drag"), _("Time-Shift"),_("Time shift all clips in track"));
|
AddItem(_("Shift-Left-Drag"), _("Time-Shift"),_("Time shift all clips in track"));
|
||||||
AddItem(_("Ctrl-Left-Drag"), _("Time-Shift"),_("Move clip up/down between tracks"));
|
AddItem(CTRL + _("-Left-Drag"),_("Time-Shift"),_("Move clip up/down between tracks"));
|
||||||
|
|
||||||
AddItem(_("Left-Drag"),
|
AddItem(_("Left-Drag"),
|
||||||
/* i18n-hint: The envelope is a curve that controls the audio loudness.*/
|
/* i18n-hint: The envelope is a curve that controls the audio loudness.*/
|
||||||
@ -141,7 +147,7 @@ void MousePrefs::CreateList()
|
|||||||
AddItem(_("Left-Click"), _("Pencil"), _("Change Sample"));
|
AddItem(_("Left-Click"), _("Pencil"), _("Change Sample"));
|
||||||
AddItem(_("Alt-Left-Click"), _("Pencil"), _("Smooth at Sample"));
|
AddItem(_("Alt-Left-Click"), _("Pencil"), _("Smooth at Sample"));
|
||||||
AddItem(_("Left-Drag"), _("Pencil"), _("Change Several Samples"));
|
AddItem(_("Left-Drag"), _("Pencil"), _("Change Several Samples"));
|
||||||
AddItem(_("Ctrl-Left-Drag"), _("Pencil"), _("Change ONE Sample only"));
|
AddItem(CTRL + _("-Left-Drag"),_("Pencil"), _("Change ONE Sample only"));
|
||||||
|
|
||||||
AddItem(_("Left-Click"), _("Multi"), _("Set Selection Point"), _("same as select tool"));
|
AddItem(_("Left-Click"), _("Multi"), _("Set Selection Point"), _("same as select tool"));
|
||||||
AddItem(_("Left-Drag"), _("Multi"), _("Set Selection Range"), _("same as select tool"));
|
AddItem(_("Left-Drag"), _("Multi"), _("Set Selection Range"), _("same as select tool"));
|
||||||
@ -157,7 +163,7 @@ void MousePrefs::CreateList()
|
|||||||
|
|
||||||
AddItem(_("Wheel-Rotate"), _("Any"), _("Scroll up or down"));
|
AddItem(_("Wheel-Rotate"), _("Any"), _("Scroll up or down"));
|
||||||
AddItem(_("Shift-Wheel-Rotate"),_("Any"), _("Scroll left or right"));
|
AddItem(_("Shift-Wheel-Rotate"),_("Any"), _("Scroll left or right"));
|
||||||
AddItem(_("Ctrl-Wheel-Rotate"), _("Any"), _("Zoom in or out on Mouse Pointer"));
|
AddItem(CTRL + _("-Wheel-Rotate"), _("Any"), _("Zoom in or out on Mouse Pointer"));
|
||||||
|
|
||||||
mList->SetColumnWidth(BlankColumn, 0);
|
mList->SetColumnWidth(BlankColumn, 0);
|
||||||
mList->SetColumnWidth(ToolColumn, wxLIST_AUTOSIZE);
|
mList->SetColumnWidth(ToolColumn, wxLIST_AUTOSIZE);
|
||||||
|
@ -162,8 +162,10 @@ PrefsDialog::Factories
|
|||||||
&waveformPrefsFactory,
|
&waveformPrefsFactory,
|
||||||
&spectrumPrefsFactory,
|
&spectrumPrefsFactory,
|
||||||
|
|
||||||
&importExportPrefsFactory,
|
// Group one other page
|
||||||
|
PrefsNode(&importExportPrefsFactory, 1, true),
|
||||||
&extImportPrefsFactory,
|
&extImportPrefsFactory,
|
||||||
|
|
||||||
&projectsPrefsFactory,
|
&projectsPrefsFactory,
|
||||||
#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || !defined(DISABLE_DYNAMIC_LOADING_LAME)
|
#if !defined(DISABLE_DYNAMIC_LOADING_FFMPEG) || !defined(DISABLE_DYNAMIC_LOADING_LAME)
|
||||||
&libraryPrefsFactory,
|
&libraryPrefsFactory,
|
||||||
|
@ -126,10 +126,25 @@ void WaveformSettings::ConvertToActualDBRange()
|
|||||||
wxArrayString codes;
|
wxArrayString codes;
|
||||||
GUIPrefs::GetRangeChoices(NULL, &codes);
|
GUIPrefs::GetRangeChoices(NULL, &codes);
|
||||||
long value = 0;
|
long value = 0;
|
||||||
codes[dBRange].ToLong(&value);
|
codes[std::max(0, std::min(int(codes.size()) - 1, dBRange))]
|
||||||
|
.ToLong(&value);
|
||||||
dBRange = int(value);
|
dBRange = int(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WaveformSettings::NextLowerDBRange()
|
||||||
|
{
|
||||||
|
ConvertToEnumeratedDBRange();
|
||||||
|
++dBRange;
|
||||||
|
ConvertToActualDBRange();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WaveformSettings::NextHigherDBRange()
|
||||||
|
{
|
||||||
|
ConvertToEnumeratedDBRange();
|
||||||
|
--dBRange;
|
||||||
|
ConvertToActualDBRange();
|
||||||
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
wxArrayString &scaleNamesArray()
|
wxArrayString &scaleNamesArray()
|
||||||
|
@ -47,6 +47,8 @@ public:
|
|||||||
|
|
||||||
void ConvertToEnumeratedDBRange();
|
void ConvertToEnumeratedDBRange();
|
||||||
void ConvertToActualDBRange();
|
void ConvertToActualDBRange();
|
||||||
|
void NextLowerDBRange();
|
||||||
|
void NextHigherDBRange();
|
||||||
|
|
||||||
enum ScaleType {
|
enum ScaleType {
|
||||||
stLinear,
|
stLinear,
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MaxSpeed</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib-src\libflac\src\libFLAC\include;..\..\..\lib-src\libflac\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib-src\libflac\src\libFLAC\include;..\..\..\lib-src\libflac\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>FLAC__NO_DLL;NDEBUG;WIN32;_LIB;VERSION="1.0.4";FLAC__CPU_IA32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;WIN32;_LIB;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.1";FLAC__NO_DLL;FLaC__INLINE=_inline;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
@ -66,7 +66,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\..\lib-src\libflac\src\libFLAC\include;..\..\..\lib-src\libflac\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\..\lib-src\libflac\src\libFLAC\include;..\..\..\lib-src\libflac\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>FLAC__NO_DLL;_DEBUG;WIN32;_LIB;VERSION="1.0.4";FLAC__CPU_IA32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_LIB;WIN32;DEBUG;FLAC__CPU_IA32;FLAC__SSE_OS;FLAC__HAS_X86INTRIN;FLAC__ALIGN_MALLOC_DATA;VERSION="1.3.1";FLAC__NO_DLL;FLAC__OVERFLOW_DETECT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user