Commit Graph

1174 Commits

Author SHA1 Message Date
Paul Licameli dc39f22442 AudacityMessageBox takes TranslatableString message and caption 2019-12-20 21:32:50 -05:00
Paul Licameli 71e9e38083 AudacityMessageDialog takes TranslatableString message and caption 2019-12-20 13:40:20 -05:00
Paul Licameli 1b726f4f09 More TranslatableString in dialog wrapper classes...
... All of the dialog names, and the messages for File and directory dialog
wrappers
2019-12-20 13:40:20 -05:00
Paul Licameli a70524446e TranslatableString for title prefix in PrefsDialog...
... and the title strings do not include a trailing space
2019-12-19 22:37:21 -05:00
Paul Licameli 5e26ef1eba Define and use non-mutating TranslatableString::Stripped 2019-12-19 16:41:45 -05:00
Paul Licameli 6b812791a6 TranslatableString in popup menu tables 2019-12-16 15:10:35 -05:00
Paul Licameli 503ccabdd8 TranslatableString caption & message in MessageBoxException 2019-12-16 10:58:05 -05:00
Paul Licameli e875adaa6f AButton::SetToolTip takes TranslatableString 2019-12-16 10:58:05 -05:00
Paul Licameli 681950fc61 TranslatableString for names, labels, tooltips of wxPanelWrapper...
... and Grabber too
2019-12-16 10:58:05 -05:00
Paul Licameli 53ee9c9800 TranslatableString for titles, names, labels of wxDialogWrappers...
... Found one missed translation in CommandTargets.cpp
2019-12-16 10:58:05 -05:00
Paul Licameli 5639f834c8 CommandManager stores labels as TranslatableString 2019-12-16 10:58:05 -05:00
Paul Licameli 0021a98091 Remove another unnecessary stripping of accelerators from labels 2019-12-16 07:09:04 -05:00
Paul Licameli 9a609fe1fe TranslatableString in ProgressDialog 2019-12-14 01:48:15 -05:00
Paul Licameli a8de4d9e50 Construct MenuItem with untranslated label, so it can be static...
... and other storage of TranslatableString instead of naked wxString, for
management of menu items, in CommandManager
2019-12-12 15:49:00 -05:00
Paul Licameli 0cf90d65e6 S.GetParent() for all windows passed to ShuttleGui::AddWindow()...
... Verified that this makes no real change.
2019-12-10 09:58:38 -05:00
Paul Licameli d49ac8bad3 Remove obsolete code 2019-12-10 09:58:38 -05:00
James Crook 5a3e9cd063 Fix dialog naming
For nicer Doxygen results, we need consistency in naming of classes.
Dialag classes are now called SomethingDialog.
2019-12-06 10:39:07 +00:00
Paul Licameli 15260c2c95 TranslatableString can store a context and format arguments...
... Format arguments are substituted into the translation of the msgid, which
may not be known at the time the format arguments are captured (because locale
may change).  This allows TranslatableString with arguments to be constructed
at static initialization time.

There is also a special "verbatim" or null context which makes no translations
of msgids.

There is not yet any use of other contexts besides default or null.
2019-12-05 11:34:06 -05:00
Paul Licameli 96291c5476 Remove second argument of AddWindow(), use Position() instead 2019-12-02 22:01:22 -05:00
Paul Licameli d98e41aad1 Define and use ShuttleGui::Disable; remove EnableCtrl 2019-12-02 17:54:07 -05:00
Paul Licameli c72dbf5b51 Define and use ShuttleGui::Focus 2019-12-02 17:26:40 -05:00
Paul Licameli 1bfbfb9640 ShuttleGui::Style analogous to other functions 2019-12-02 17:23:34 -05:00
Paul Licameli 9eeef4713d Define and use ShuttleGui::Name and NameSuffix...
... For radio buttons, the name will default to the same as the prompt if not
otherwise specified
2019-12-02 16:55:46 -05:00
Paul Licameli 3ea0209e5c Define and use ShuttleGui::ToolTip 2019-12-02 11:41:51 -05:00
Paul Licameli 1d32824e02 Define and use ShuttleGui::Validator 2019-12-02 11:21:40 -05:00
Paul Licameli 0b6618e491 Use TranslatableString in NumericTextCtrl...
... Fixing a minor error in TimerRecordDialog, where translation of format was
done too soon
2019-12-01 18:08:56 -05:00
Paul Licameli 089b46ab64 Specify initial radio button state in ShuttleGui method arguments 2019-11-28 14:24:44 -05:00
Paul Licameli bca0afd52e ShuttleGui lets you specify whether a button is default. Use that. 2019-11-28 14:24:43 -05:00
Paul Licameli 7ccd35d219 wxWidgets docs recommend: don't SetSizeHints on non-top-level windows 2019-11-28 14:24:43 -05:00
Paul Licameli 87a9e7ccbb Use global ChoiceSettings variables, not coincidental string literals 2019-11-27 13:38:17 -05:00
James Crook 80ef424338 Bug 169 - Welcome Message: Local links to "Quick Help" and "Manual" do nothing if help is not installed. 2019-08-20 22:29:18 +01:00
James Crook aee4e5deaa Bug 1411 - Multiple non-modal "Help from the Internet" windows 2019-07-30 12:30:57 +01:00
David Bailes 5b277dc9f8 Bug 1723 - Keyboard Preferences: Closing subtrees.
Closing sub trees can leave the wrong item selected.
If a node near the bottom of the tree is closed, the node may move
down, and no longer be under the mouse pointer. If further processing
is allowed, then the line at the mouse position is incorrectly selected.

Fix: Don't allow further processing and call SetFocus() ourselves.
2019-07-30 11:35:46 +01:00
Paul Licameli c98ab0aec9 Make RecordingPrefs.cpp independent of Warning 2019-07-13 19:54:41 -04:00
Paul Licameli 908228b431 ProgressDialog does not depend on ErrorDialog 2019-07-13 18:10:11 -04:00
Paul Licameli 3a1456bf53 Make OverlayPanel independent of AColor 2019-07-13 16:08:29 -04:00
Paul Licameli fb713a5339 ASlider wasn't using Ruler 2019-07-12 22:52:34 -04:00
Paul Licameli d6317ae6af Merge LinkingHtmlWindow into HelpSystem...
... they cooperated closely in a cycle of two not worth breaking
2019-07-10 10:34:04 -04:00
Paul Licameli 7e1c469d7f Remove some unnecessary #include directives 2019-07-09 12:45:50 -04:00
Paul Licameli 8c59f66583 ScrubbingToolBar eats less idle time after commit 192530d 2019-07-05 13:30:11 -04:00
David Bailes f327fef80b Bug 2146: Keyboard preferences: mouse can select wrong item
My previous fix for this bug, commit 4b437b8, did not work on Mac.
This bug was introduced by my commit b62ed73. This commit was to ensure that when the keyview was the focus, there was always one item selected. This ensures that the focus is indicated visually, and that the Narrator screen reader reads the keyview.

The failed fix, selected an item if necessary when the keyview became the focus.

The current fix reverts b62ed73 and 4b437b8, and ensures that an item is selected each time the items are updated.
2019-07-05 12:16:04 +01:00
Paul Licameli e2362bc25a Move project status string management to new attached object class 2019-07-02 21:01:34 -04:00
Paul Licameli 2a06b10884 Make objects attached to AudacityProject non-copyable...
... except for Tags; also some uses of final and explicit

This caught a mistake in Scrubbing.cpp
2019-07-02 19:51:24 -04:00
Paul Licameli 6adb2abc98 Keep EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT compilable...
... while not reintroducing bad dependencies, which explains the movement
of the definition of some constants
2019-07-02 12:35:40 -04:00
David Bailes 4b437b8cb9 Bug 2146: Keyboard preferences: mouse can select wrong item
Steps to reproduce:
1. Open preferences
2. Select the keyboard category
3. Scroll down the list by any amount
4. Select an item using the mouse. The list scrolls to the top and the wrong item is selected.

The problem occurs because if the list of shortcuts is currently not the focus, then after a left mouse click, KeyView::OnSetFocus() is called, and setting the selection in that function interferes with the mouse selection.

Fix: In KeyView::OnSetFocus(), if there has been a left down event, don't select anything.
2019-07-01 11:48:56 +01:00
Paul Licameli 0b897c81b0 ToolManager.cpp does not depend on Meter 2019-06-16 01:24:29 -04:00
David Bailes 2c2cf587b4 Bug 496 - NumericTextCtrls shouldn't accept numbers when any modifier keys are pressed
Problem:
NumericTextCtrls act on numeric keys, even when modifier keys are pressed.
This shouldn't be the case, and has the knock on effect that shortcuts like ctrl + 1, don't work when a NumericTextCtrl is the focus.

Fix:
Check that there are no modifier keys pressed.
2019-06-11 14:38:34 +01:00
Paul Licameli 758e9813f1 Move MeterPanelBase to new files...
... which frees AudioIOBase, QualityPrefs, and ProjectAudioIO from cycles
2019-06-10 20:48:39 -04:00
Paul Licameli 17c04d1749 Separate an abstract base class from MeterPanel...
... to break its cycle with AudioIO
2019-06-10 20:48:38 -04:00
Paul Licameli 42a4f55ffe Prepare to split AudioIOBase from AudioIO...
... New files, but (almost) empty; don't use the global variable gAudioIO,
but use one of two accessor function names (which are the same function for
now).

AudioIOBase will have fewer dependencies than AudioIO -- in particular, no
dependency on tracks.

It won't include StartStream.  It will contain functions to query the
present state of streams, and device capabilities.
2019-06-10 20:48:38 -04:00
Paul Licameli 46bf5a82fc Don't pass whole TimeTrack to Ruler or Mixer...
... they need only the information in a (Bounded)Envelope.
2019-06-10 20:48:38 -04:00
Paul Licameli d979a8959b New files for ProjectAudioManager...
... This eliminates some inclusions of ProjectManager, helping to free it from
cycles into a higher level
2019-06-09 12:10:47 -04:00
Paul Licameli 4f940c855d New files for ProjectWindow 2019-06-03 01:43:26 -04:00
Paul Licameli fee5582826 New files for ProjectManager 2019-06-03 01:21:12 -04:00
Paul Licameli 850628275b AudioIO.cpp does not depend on ProjectAudioIO.h and GetActiveProject 2019-06-03 01:18:11 -04:00
Paul Licameli 05efeeb5bd New files for ProjectSettings 2019-06-03 01:13:13 -04:00
Paul Licameli dd10e00a2d New attached structure ProjectSettings stores rate, snap-to, et al. 2019-06-02 14:42:00 -04:00
Paul Licameli ac04a34d42 Move #include of Experimental.h upward in two files 2019-06-02 14:03:32 -04:00
Paul Licameli 82663892dc Accessors to get the project window...
... as a preparation for splitting up class AudacityProject.

Use ProjectWindow as an alias for AudacityProject, and fetch it from the
project with a static member function, where certain of its services are used;
pretending they are not the same class.

Use global accessor functions to get wxFrame from the project where only
wxFrame's member functions are needed, so there will be less dependency on
ProjectWindow when it becomes a distinct class.
2019-05-28 23:18:13 -04:00
Paul Licameli 02afcbca8c Redo TP_UpdateStatusMessage...
... Rename it as SetStatus; make it part of AudacityProject not
TrackPanelListener; and use a roundabout event signalling to cause the timer
restart.

Because SetStatus will be one of very few things left in AudacityProject, but
the timer handling will be part of another class decoupled from it.

And TrackPanelListener won't really be needed: TrackPanel will not need to
pretend it doesn't know what an AudacityProject is.
2019-05-28 19:36:47 -04:00
Paul Licameli 35892fc869 Rearrange setting time & freq formats for numeric controls...
... Just one low-level function for each that simply sets; just one high-level
function for each that also pushes notifications; and to make that work,
toolbars need some rewriting to avoid recursion when the notifications they
post come back to them.
2019-05-28 19:23:42 -04:00
Paul Licameli 62899a32f4 All things with an UpdatePrefs() message listen for an event...
... Still to do, improve the handling of updates of only subsets of the prefs
2019-05-20 21:38:13 -04:00
Paul Licameli 227fb315ea Drawing sequence for overlays independent of insertion call sequence 2019-05-20 21:38:08 -04:00
Paul Licameli f86403378b Move AudacityMessageBox to its own files...
... breaking cycles among low-level files introduced by 273ba9f
2019-05-20 14:48:36 -04:00
Paul Licameli d68db39b5c HelpSystem.cpp has fewer dependencies...
... There was no reason to store the help location preferences as per-project
state.  Also move the dialog for quick fixes near its only use in
HelpMenus.cpp.

This takes 22 files out of the big strongly connected component, notably
the much used lower level utilities, ErrorDialog and AudacityException.

HelpSystem itself is still in a small cycle with LinkingHtmlWindow.
2019-05-18 20:29:25 -04:00
Paul Licameli db8c4c5e5a Global keyboard capture handling into new files, better comments...
... and break its compile dependency on CommandManager.h by letting it install
callbacks.

This also removes Objective-C mixed code from CommmandManager.

This also eliminates four inclusions of Project.h!

Capture handler state is also global, not per project, though the
CommandManager's callbacks still do depend on the active project.
2019-05-18 15:14:18 -04:00
Paul Licameli 8da6529329 Remove AudacityApp::GetLogger() & HelpActions::DoShowLog() 2019-05-17 16:29:04 -04:00
Paul Licameli a047fa6e7a Missing alias file tracking out of AudacityApp, into new files...
... which reduces the need for including AudacityApp.h
2019-05-17 16:28:50 -04:00
Paul Licameli 0ab29d21e9 Some naming consistency...
Prefer "MissingAliasFiles" not other permutations of the words
2019-05-17 06:47:53 -04:00
Paul Licameli 2d8c287384 Do not require AudacityApp.h when using global file history 2019-05-17 06:47:53 -04:00
David Bailes ca13f08ff8 Grid accessibility: incorrect focus can be read
Problem: this affects NVDA and Narrator, but not Jaws. If a user moves to the Delete button and presses it to delete a label, a label is incorrectly read as the new focus - the focus remains on the Delete button.
GridAx::SetCurrentCell() can be called when the Grid is not the focus, and send a focus event.

Fix: In GridAx::SetCurrentCell() only send an focus event if the Grid is the focus.
2019-05-17 11:06:49 +01:00
David Bailes 6da84b0adc Keyboard prefs accessibility: Narrator can misread the radio buttons.
Problem. If an item in the list is selected, then if a different view by radio button is selected, Narrator reads the selected item rather than the radio button.
KeyViewAx::SetCurrentLine(int line) can be called when the KeyView is not the focus, and send a focus event.

Fix: In KeyViewAx::SetCurrentLine(int line), only send focus event if the KeyView is the focus.
2019-05-17 08:33:33 +01:00
Paul Licameli ddaadfb7e7 Remove NumericTextCtrl.h from other headers or comment why you can't 2019-05-16 19:01:00 -04:00
Paul Licameli ced9be588b Remove ImageRoll.h from other headers or comment why you can't 2019-05-16 18:30:22 -04:00
Paul Licameli 6c57948d8f Remove unnecessary #include-s from .cpp files...
... Unnecessary because transitively included.

But each .cpp file still includes its own .h file near the top to ensure
that it compiles indenendently, even if it is reincluded transitively later.
2019-05-16 17:21:00 -04:00
Paul Licameli 548192fcf3 Remove redundant #include-s from .h files...
Redundant, because transitively implied.  But don't do this for inclusions of
Audacity.h or Experimental.h.
2019-05-16 14:58:34 -04:00
Paul Licameli 56f51d8176 Revert "Remove redundant #include-s from .h files..."
This reverts commit b7fe62d170.
2019-05-16 14:33:55 -04:00
Paul Licameli b7fe62d170 Remove redundant #include-s from .h files...
Redundant, because transitively implied.  But don't do this for inclusions of
Audacity.h or Experimental.h.
2019-05-16 14:15:05 -04:00
Paul Licameli 9bf29f5582 CommandManager keys by CommandId, not plain wxString 2019-05-16 12:30:29 -04:00
Paul Licameli 11c8377460 NormalizedKeyString redefined as TaggedIdentifier 2019-05-16 12:30:29 -04:00
Paul Licameli f6adeed47b Remove some unnecessary #include directives 2019-05-15 14:14:18 -04:00
Paul Licameli 2b32884596 Remove some unnecessary toolbar related declarations, fix comments 2019-04-23 17:02:04 -04:00
Steve Daulton aad117051a Fix bug 1534
On Linux, width and height of TipPanel must not be reset in SetPos().
2019-04-23 19:31:55 +01:00
David Bailes 78cb554883 2092: Linux: first typed char lost when using dialog for label name
Fix: Move the insertion point to the end of the text after the dialog is shown.
2019-04-13 12:38:41 +01:00
Paul Licameli ba467b3632 some override 2019-04-04 12:35:17 -04:00
Paul Licameli 0c39c1292e Remove wx/dc.h from ImageRoll.h ...
... I wish I could just forward-declare the enumeration wxRasterOperationMode,
but it's not defined as a sized enum
2019-04-04 11:00:43 -04:00
Paul Licameli 5f218a4ab4 Revert "Remove wx/dc.h from ImageRoll.h ..."
This reverts commit 8078aa8547.
2019-04-04 10:52:31 -04:00
Paul Licameli 8078aa8547 Remove wx/dc.h from ImageRoll.h ...
... I wish I could just forward-declare the enumeration wxRasterOperationMode,
but it's not defined as a sized enum
2019-04-04 10:40:02 -04:00
David Bailes c531fde6b8 ASlider.cpp: correction to event table
Fix error in ASlider's event table spotted by Paul. The error wasn't causing any known problems.
2019-04-04 15:19:07 +01:00
Paul Licameli 2e1fe80601 Remove or comment wxPanelWrapper.h in headers 2019-04-04 10:13:23 -04:00
David Bailes 95e2264d24 Bug 1248: Tab does not navigate out of ASlider if clicked
Problem:
If an ASlider in the main window is clicked, then you can't TAB away from the control.

Fix:
Keyboard shortcuts are handled using key down events. However, ASlider was handling char events for reasons unknown. I'm unsure why this was causing a problem, but changing ASlider to handle key down events fixes the bug.
2019-04-03 13:25:04 +01:00
David Bailes ecdb6d0a07 Fix previous commit: 4e37d93
Reinstated .h file, with corrected path. Without this include, there were numerous intellisense errors in the .cpp file.
2019-04-03 12:54:52 +01:00
David Bailes 4e37d93cd9 ASlider.h removed unnecessary .h file with incorrect path 2019-04-03 12:23:45 +01:00
Paul Licameli 0f3723e221 comment BackedPanel.h, HtmlWindow.h, ASlider.h in .h files 2019-03-31 15:25:34 -04:00
Paul Licameli 2d8abe6b74 Remove FileHistory.h, KeyView.h from .h files 2019-03-31 15:21:02 -04:00
Paul Licameli a10196eb91 Fix some comments 2019-03-31 15:14:26 -04:00
Paul Licameli e2c5444c1d Move class HtmlTextHelpDialog out of header 2019-03-31 14:58:33 -04:00
Paul Licameli b83ed90cfb Remove or comment Ruler.h, Overlay.h, OverlayPanel.h in other headers 2019-03-31 14:44:24 -04:00
Paul Licameli ed29ab89f8 Many WindowAccessible subclasses moved out of header files 2019-03-31 13:27:18 -04:00
Paul Licameli 10568f8a46 Move class SliderAx into WindowAccessible.* ...
... so ScienFilter.cpp doesn't depend on Equalization.h
2019-03-31 13:27:18 -04:00
Paul Licameli 4714d72b3f Can't remove remaining wx headers from other headers, comment that 2019-03-31 01:41:16 -04:00
Paul Licameli ef98cfd74f Remove wx/{docview,datetime,datectrl,cursor}.h from *.h 2019-03-30 13:32:44 -04:00
Paul Licameli 77f747daeb Remove wx/{checklst,wfstream,version,variant,types}.h from *.h 2019-03-30 12:59:21 -04:00
Paul Licameli 34f318cd41 Remove wx/{imaglist,generic/dragimgg,gauge,dynarray}.h from *.h 2019-03-30 12:51:12 -04:00
Paul Licameli 2587a4adba Remove wx/panel.h from headers 2019-03-30 12:26:59 -04:00
Paul Licameli 2e05d2d884 Remove wx/{radiobut,ownerdrw,menuitem,menu,listbox}.h from *.h 2019-03-30 12:15:53 -04:00
Paul Licameli d28ae40399 Remove wx/dialog.h from headers 2019-03-30 12:01:39 -04:00
Paul Licameli 4d29686116 Remove wx/gdicmn.h from headers 2019-03-30 11:52:48 -04:00
Paul Licameli c982cf6a41 Remove wx/intl.h, wx/brush.h, wx/bitmap.h from headers 2019-03-30 11:45:20 -04:00
Paul Licameli 870c08ac06 Remove wx/{log.h, image.h, listctrl.h, utils.h} from headers 2019-03-30 11:21:51 -04:00
Paul Licameli 08c16b6eb7 Remove wx/{html/htmlwin,fileconf,dragimag,debug,dcclient}.h from *.h 2019-03-30 10:53:22 -04:00
Paul Licameli ec2f26e48c Remove wx/pen.h, wx/thread.h from headers 2019-03-30 10:17:18 -04:00
Paul Licameli 3a7324984c wx/hashmap.h no longer used anywhere 2019-03-30 10:06:52 -04:00
Paul Licameli de60edc62f Remove wx/{app,statbmp,spinctrl,scrolbar,dynlib,dcmemory}.h from *.h 2019-03-30 07:57:37 -04:00
Paul Licameli 3760db9dff Remove wx/wxchar.h from headers 2019-03-29 15:56:54 -04:00
James Crook d994860311 Bug 2087 - Mixer Board gain control dialog is ridiculously over-long vertically 2019-03-29 19:24:25 +00:00
David Bailes 62f1711cdd KeyView: fix focus issue
Problem: A user can tab to the list, and none of the items is the focus. The list itself is still the focus. As a result, there is no visual indication of the focus, and an additional keystroke is needed to make any item the focus.

Fix: When the list gains focus, if no items are selected, select the first item, if there is one.
2019-03-29 11:10:14 +00:00
Paul Licameli 4e9c3cfb5f Remove wx/{dc,tokenzr,tglbtn,statusbr,simplebook}.h from *.h 2019-03-29 06:29:35 -04:00
Paul Licameli 70e88782fe Remove wx/{grid,font,ffile,colour,button,bmpbuttn}.h from headers 2019-03-28 12:27:10 -04:00
Paul Licameli bcc2e0d13b Remove wx/frame.h, wx/sizer.h, wx/access.h from headers 2019-03-28 11:21:15 -04:00
Paul Licameli 803d8b9559 Remove wx/filename.h, wx/choice.h, wxFileNameWrapper.h from headers 2019-03-28 03:12:42 -04:00
Paul Licameli 8cf6874555 Remove wx/textctrl.h from headers 2019-03-28 01:43:53 -04:00
Paul Licameli b1ce24c087 Remove wx/window.h from headers 2019-03-27 14:43:06 -04:00
Paul Licameli b8aea73c91 Remove wx/stattext.h from headers 2019-03-27 14:33:46 -04:00
Paul Licameli 7766d9a192 AddCheckBox takes a bool for initial state, not string 2019-03-27 12:58:40 -04:00
Paul Licameli c3aad2e026 Remove wx/event.h from headers 2019-03-27 04:36:51 -04:00
Paul Licameli 40b4361732 Remove wx/arrstr.h from headers 2019-03-26 12:41:44 -04:00
Paul Licameli 1d0247607a Remove wx/string.h from headers 2019-03-26 11:33:55 -04:00
Paul Licameli 51f0362e9f Remove wx/wx.h from headers 2019-03-26 11:17:41 -04:00
David Bailes 8c10682145 Accessibility: make Grid accessible using Narrator
Problem:
Using the Narrator screen reader on Windows 10:
1. Narrator does not read the uneditable cells in the tag column of the Metadata editor.
2. In one or more versions of Windows 10 prior to 1809, Narrator's focus was incorrect after editing a cell.

Fixes:
1. Fixed by adding wxACC_STATE_SYSTEM_FOCUSED to the state.
2. Corrected GridAx::GetFocus().
2019-03-25 11:54:12 +00:00
Paul Licameli f2e2d35ad7 Make numeric validators work with ComboBoxes too...
... as was the intention in the wxWidgets code from which these files were
adapted

More importantly this removes the mischievous #define (added at 08c94d5) from
valnum.h, which made it impossible to #include that header before
<wx/combobox.h>.

Note that (the real type) wxTextEntry is not a kind of wxWindow, but a class
from which wxTextCtrl and wxComboBox both inherit, while they inherit wxWindow
too along other paths.

So in some places, use the protected variable m_ValidatorWindow instead to
access the validator's window.
2019-03-23 20:52:37 -04:00
Paul Licameli a915a510bd include <wx/setup.h> in all files where wxUSE* macros are used...
... even if it's redundant; improving on what was done at b47e2f9
2019-03-23 14:56:02 -04:00
Paul Licameli 1af342ff64 one function can return reference instead of value 2019-03-23 11:51:00 -04:00
Paul Licameli 0dd0a5cb5a Remove <wx/menu.h> from CommandManager.h, moving inline functions out 2019-03-23 10:56:43 -04:00
Paul Licameli a0d9e31c42 Consistently use <> not "" in inclusions of wx headers 2019-03-23 10:27:25 -04:00
Paul Licameli f45300f032 This is only comments, in files where USE_ macros are tested...
... following the comment convention used in the preceding commit.
2019-03-22 12:38:30 -04:00
Paul Licameli 8dcf725e4c Fix leaks. wxEvtHandler::SetClientData() doesn't take ownership! 2019-03-21 10:46:48 -04:00
David Bailes 069e34df77 Accessibility: make NumericTextCtrl accessible using Narrator
Problem:
Using the Narrator screen reader on Windows 10, there are a couple of problems:
1. When using the left/right arrow keys, Narrator reads the current field, rather than the digit which is now the focus.
2. Using up/down arrow keys, Narrator is silent.

Fixes:
1. The existing code assumes that NumericTextCtrlAx::GetName() is called only once after left/right arrow is pressed. However, Narrator causes this function to be called more than once. Solution: handle the case where the function is called, and neither the focus or the digits have changed, and use a cached value of the name.

2. If the focus has not changed, then after a focus event, Narrator does not read the name, even if the name has changed. Solution: add a name change event. (The focus event has been retained to keep Window-Eyes happy until we stop supporting it.)

Note:
One of the focus events has been removed from NumericTextCtrl::SetFieldFocus(), as it no longer appears to be necessary.
2019-03-21 13:48:23 +00:00
Paul Licameli b47e2f91e2 Make header dependencies for wxUSE_ACCESSIBILITY explicit 2019-03-18 12:14:16 -04:00
Paul Licameli 5e7d41ec07 Each .cpp/.mm file includes corresponding header before any other...
... except Audacity.h

This forces us to make each header contain all forward declarations or nested
headers that it requires, rather than depend on context.
2019-03-17 22:54:52 -04:00
Paul Licameli 906e55f047 Experimental.h in all .h or .cpp files that directly use EXPERIMENTALs...
... except Audacity.h; and in no others.

Do so even if Experimental.h gets multiply included, as in both the .h and
.cpp files.

This makes it easier to do a text scan to be sure there are no unintended quiet
changes of meaning because of omission of Experimental.h when the flag is
an enabled one.

Also move inclusions of Experimental.h earlier.

Also don't require Experimental.h to be preceded by Audacity.h to define
EXPERIMENTAL_MIDI_OUT correctly.
2019-03-17 22:54:00 -04:00
Paul Licameli 173a300427 Include nothing before Audacity.h, as comments say we should...
... and remove some duplicated inclusions
2019-03-17 21:41:39 -04:00
Paul Licameli f7162d3326 OverlayPanel uses weak_ptr to Overlay, which simplifies other dtors 2019-03-16 08:21:03 -04:00
Paul Licameli a73970d864 Rewrite the quick exit test in OverlayPanel::DrawOverlays 2019-03-16 08:07:09 -04:00
Paul Licameli e6324e86ac Fix cross-platform one-pixel differences in line drawing...
... Make all line drawing go through our AColor which wraps the wxDC
line-drawing functions.

Despite what wxWidgets documentation says, the functions still don't
consistently include the first point and omit the last point of a line.  I
observed inclusion of both on Mac, while on Windows, omission sometimes of the
first point instead of the last.

Discrepancies could be observed in 2.3.0 between Windows and Mac, using the
Window magnifier or command+alt+ +, zooming in closely on the ends of the
shadow lines below and right of tracks, or at the bottom-right corners of the
bevels drawn around vertical rulers.

So where there is an observable one-pixel difference of drawing between
platforms, there is the question, which was the intent when the drawing code
was written?  Should the coordinates be corrected by one or not?

I reviewed each case and used my judgment.

Most of the calls are in drawing rulers.  Major tick lines were drawn five
pixels long, and minor, three, on Mac.  I keep this behavior, but you might
argue for making them four and two.

On the other hand the drawing of ruler grid lines, which you can see in
the equalization and frequency analysis windows, did need a one-pixel correction
to avoid straying out of bounds.
2019-03-16 07:51:28 -04:00
Paul Licameli 5fd6965925 Use type aliases CommandID, CommandIDs...
... for identifiers of menu commands and macros, and for vectors thereof
2019-03-15 15:18:11 -04:00
Paul Licameli a30000cf74 Use type aliases FilePath, FilePaths...
... for wxString and wxArrayStringEx, holding file paths (absolute or relative,
directory or plain file); to be replaced later with different types

(not yet using std::vector, becase of some uses of wxArrayString::Index with
two arguments)
2019-03-15 15:18:11 -04:00
Paul Licameli 06b3b42794 Remove unnecessary initializers for empty wxString 2019-03-15 15:18:11 -04:00
Paul Licameli 135c2a71ce Replace "" and wxEmptyString with {} in default argument values 2019-03-15 15:18:11 -04:00
Paul Licameli dfeb7e18aa Type aliases for some uses of ComponentInterfaceSymbol...
... to be replaced later with distinct types

Also changing FamilyId => Family in function names

Also NumericFormatId => NumericFormatSymbol
2019-03-14 17:26:20 -04:00
Paul Licameli b8c0125143 Replace comparisons against wxEmptyString with empty() 2019-03-14 16:20:18 -04:00
Paul Licameli 50074f2cfe Replace comparisons against "" with empty() 2019-03-14 13:23:41 -04:00
Paul Licameli 6d5bc21d50 Define and use wxArrayStringEx...
reducing verbosity where there were repeated calls of Add(), and defining
move construction and assignment for efficient returns from functions
2019-03-10 16:23:44 -04:00
Paul Licameli 795b6a2e42 More std:: style for wxString and wxArrayString...
... Replacing:

Insert => insert
RemoveAt => erase
Remove => erase
IsSameAs => operator == or operator !=
   (but only when second argument was true or default)
2019-03-10 14:45:12 -04:00
Paul Licameli dd8eb9e3d9 Less use of wxArrayString::Index() ...
... instead use the utility make_iterator_range and its index() or contains()
method.  This generic utility works with any container defining begin() and
end().

This further lessens dependency on wxWidgets container idioms.
2019-03-10 14:45:06 -04:00
Paul Licameli c68e336247 More use of std:: style members of wxString...
... replacing:

Length => length
Len => length
2019-03-10 14:44:54 -04:00
Paul Licameli 2db49dc1f0 Use standard library style members of wxArrayString (and wxString) ...
... which will make it easier to change the types of those containers to
std::vectors of other string-like classes

for wxString,

IsEmpty => empty
Clear => clear
Alloc => reserve

for wxArrayString,

Count => size
GetCount => size
IsEmpty => empty
Add => push_back
Clear => clear
Empty => clear
Sort => std::sort (only with default comparator)
SetCount => resize
Last => back
Item => operator []
Alloc => reserve
2019-03-10 14:43:57 -04:00
James Crook 5a87d5ea67 Bug 2040 - Linux: Assert on recording or generating when main Window minimised 2018-12-02 16:58:17 +00:00
Paul Licameli 6e14dab4f4 Fix a clang compiler warning 2018-11-15 11:23:16 -05:00
James Crook 7030c9fc4f More doxygen 2018-11-03 13:18:26 +00:00
James Crook 466e9c179e Create ComponentInterface
It combines the old IdentInterface with the ParamsInterface, providing an identifier and parameters (if needed).
The main purpose of the change is to make the class hierarchy (as viewed via doxygen) much easier to follow.
2018-11-02 17:04:43 +00:00
Paul Licameli 5b01f57919 Update comments about TrackPanel and TrackArtist...
... Remove mention of obsolete plans for TrackPanel refactor, superseded by a
different refactor now accomplished.

Remove detailed mention of names of functions and data members that implement
drawing.

Move most of Roger's comments about drawing into Overlay.h which is now the
more relevant place.

Commented more correctly what TrackPanelListener is.
2018-10-31 08:06:18 -04:00
Paul Licameli 303553ae4e Take class AdornedRulerPanel out of src/widgets...
... It's not a utility widget like RulerPanel.  It has a lot of application
specific logic in it.
2018-10-24 15:04:41 -04:00
Paul Licameli 64b6493bec Help Menus 2018-10-24 12:16:45 -04:00
Paul Licameli 903b42f84a Transport Menus 2018-10-24 12:16:35 -04:00
Paul Licameli 2792faa114 Edit and Label Menus 2018-10-24 12:14:05 -04:00
James Crook e8762a478f Add 'Quick Fix' menu item to Help.
This helps with 3 of the stuck-in-a-mode problems, adding fix buttons for the issues.
2018-10-19 18:31:44 +01:00
Paul Licameli 9ad88e091c Use weak pointers to simplify MenuCreator 2018-10-18 15:43:21 -04:00
Paul Licameli aa81f9af57 Fix Linux build 2018-10-18 10:59:22 -04:00
Paul Licameli 16ab48079b Don't include CommandManager.h in other headers 2018-10-18 09:25:14 -04:00
Paul Licameli ce9f2e2538 Include Menus.h directly, only where needed, not via Project.h 2018-10-16 16:45:26 -04:00
scootergrisen b4f7946e9b Remove some double space 2018-10-14 10:42:01 +01:00
James Crook 657159d542 Fix C4189 and C4100 Warnings
C4189 is 'Local variable initialised but not used'
C4100 is 'Unreferenced parameter'

Fixed some other warnings, e.g. about empty if, too.
2018-10-10 19:46:24 +01:00
David Bailes 348e7868b8 1991: On Windows, nyquist effects and analysers slower than on 2.2.2
Problem: profiled the limiter effect, and found that wxGetLocalTimeMillis() in ProgressDilaog::Update was taking up a lot of time.
The slow down of the nyquist effects and analysers was introduced by the switch to wxWidgets 3.1.1, so presumably there was some change to the implementation of wxGetLocalTimeMillis()

Fix: Use wxGetUTCTimeMillis() instead of wxLocalTimeMillis() in ProgressDialog.cpp. This is much faster on Windows, and wxWidgets recommend its use to due wxGetLocalTimeMillis() being affected by start/end summer time (daylight saving time).
2018-10-03 19:18:41 +01:00
Paul Licameli 7ab97c969c Use std::numeric_limits<...>::lowest...
... not the negation of max(), which is wrong for unsigned types, and not
min(), which gives least normalized positive value for floating point types.

lowest() wasn't available before C++11.
2018-09-29 12:57:53 -04:00
Paul Licameli d852bd3783 Translated time (& freq & bandwidth) formats in numeric controls...
... This had been done correctly in the popup menu to change the format, but
not in the control itself.
2018-09-29 12:10:27 -04:00
Paul Licameli 9481587fa8 Move menu handling functions out of class AudacityProject 2018-09-29 12:10:27 -04:00
James Crook e4bdd68c70 Bug 1981 - Mac: Background of pan/gain sliders wrong color in Light theme. 2018-09-19 16:48:52 +01:00
James Crook e724ef0793 Bug 1970 - Missing tick marks in Timeline 2018-09-09 12:33:10 +01:00
Paul Licameli af276ac4f9 Now implement scrubbing default to unpinned, see commit ac1017e...
... This was motivated by punch and roll recording:  it appears most convenient
to pin the head for recording purposes, and drag it near the right, but when
stopping and finding the splice point for the correction, it is better to
scrub unpinned.
2018-08-31 10:46:08 -04:00
James Crook 41959d4d54 Bug 1952 - Windows: Timer Record - debug failure msg
Now we show "11:07:29 +" for a time 100 years, 11 hours, 7 mins and 29 seconds in the future, rather than ASSERTing.
The + should probably be mentioned in the manual.  "In the countdown, times more than 24 hours ahead aren't shown fully.  A '+' sign after the time indicates that it is more than a day ahead."
2018-08-29 15:14:28 +01:00
Paul-Licameli 932734c89a Windows: don't crash if double-clicking on ruler during playback 2018-08-12 14:43:45 -04:00
Paul Licameli 04a69f0a4c Bug1931 -- Dbl-click ruler in Windows shouldn't violate assertion...
... This change isn't needed for Mac, but is harmless there.
2018-08-12 14:16:16 -04:00
Paul Licameli 3f1d9ab8c1 P & R recording: change color of pin button, as for play indicator 2018-08-11 00:26:34 -04:00
Paul Licameli c95532012a Correctly update hot zones for quick-play cursor at button up 2018-08-10 12:05:25 -04:00
James Crook 3d6f3f1866 Fix our custom NumericText controls are scrambled in RTL layout.
Fix is to force them to be LTR (for now).
2018-08-09 19:01:45 +01:00
Paul Licameli 2472b128d3 Fix compilation of EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT 2018-08-08 17:08:54 -04:00
James Crook 0fe2659a7b Bug 1916 - Play at Speed - scrub widget appears unnecessarily 2018-08-08 17:59:18 +01:00
James Crook 0c73bc1356 Bug 1897 - Export corrupts/clears the Recent Files list 2018-08-07 15:53:09 +01:00
Paul Licameli 22f85f244b Bug1917: TrackPanel should keep focus after click or drag...
... though ruler won't, and if you start to drag in TrackPanel but abort it
with the ESC key, that too returns focus
2018-08-07 10:42:38 -04:00
Paul Licameli 27dc8ffead Draggable pinned play head, double click to re-center 2018-08-06 21:58:42 -04:00
Paul Licameli 2c28af05e8 Don't hit any TrackPanel or Ruler cells when mouse is out of window 2018-08-06 21:52:46 -04:00
Paul Licameli 7cfda551dd Move scrub click handling into a UIHandle, eliminate OnMouseEvents...
... And the one-shot hack can be simplified away.
2018-08-05 17:18:25 -04:00
Paul Licameli 153eb63b3e Rest of quick play mouse handling is invoked from UIHandle...
... and ESC key aborts the drag of play region
2018-08-05 17:18:25 -04:00
Paul Licameli 9491605cfc CellularPanel handles save/restore of focus for clicks in ruler...
... This lets the ESC key really work to abort drags
2018-08-05 17:18:25 -04:00
Paul Licameli c85d2cdfa0 UIHandle objects now implement the context menus for the Ruler 2018-08-05 17:18:25 -04:00
Paul Licameli 0ae7f55fea Manage showing and hiding of quick play guide in CellularPanel base 2018-08-05 17:18:25 -04:00
Paul Licameli af17e1ff95 Quick-play handle object manages lifetime of SnapManager 2018-08-05 17:18:24 -04:00
Paul Licameli a70e2284b0 Manage ruler status messages and tooltips in CellularPanel base class 2018-08-05 17:18:24 -04:00
Paul Licameli ba4ae4f7bd Manage ruler cursor changes in CellularPanel base class 2018-08-05 17:18:24 -04:00
Paul Licameli ce48ac6307 Enable hit tests; let base class manage capture & release of mouse...
... also make popup menus at right up, not down, for consistency with other
popup menus in TrackPanel

Base class also does the event propagation "hack" for ScrubPoller
2018-08-05 17:18:24 -04:00
Paul Licameli a853b7a3b4 Skeletal hit test and handle objects for quick play and scrubbing 2018-08-05 17:18:23 -04:00
Paul Licameli bccb135e30 AdornedRulerPanel inherits from CellularPanel -- hit testing, still to do 2018-08-05 17:18:23 -04:00
James Crook d3e6e92440 Fix Sizer Error. 2018-08-05 21:34:23 +01:00
Paul Licameli aeece118e8 Rewrite the handling of quick play indicators...
... All updates of position are done in DoGetRectangle().  Ruler need only
expose one function, DrawOverlays().

Don't redraw indicators twice when dragging (hiding and showing again), making
some flicker.  Just do one update.
2018-08-04 15:35:36 -04:00
James Crook 4318cb6780 Bug 1886 - Sluggish behaviour caused by the large time taken to draw the Track Control Panel
All backing bitmaps (not just the one in track panel) now are set to 24 bits.
Big thanks to David Bailes for tracking down the root cause of slow BitBlts, and the comments at https://trac.wxwidgets.org/ticket/14403 which led to the fix.

In testing the bitmaps, I also fixed the sizer errors reported for Export.cpp that wxWidgets now reports as ASSERTS when running in debug builds.
2018-08-03 18:29:49 +01:00
Paul Licameli 0dddcf44cb Some uses of wxWindowRef, a weak pointer that won't become dangling 2018-08-01 22:49:37 -04:00
Paul Licameli 5f27ae905c Changed misleading terminology in scrubber...
... It was confusing that HasStartedScrubbing() could be true
while also not IsScrubbing()
2018-07-29 14:20:11 -04:00
Paul Licameli b33d3516f0 Rename a function in AdornedRulerPanel...
... Avoid confustion of "capture" meaning recording, with "capture" of the
mouse during drag
2018-07-29 14:18:08 -04:00
Paul Licameli 98a72acfb8 Remove unnecessary moves of return values 2018-07-24 21:25:22 -04:00
Paul Licameli e432883dec Fix deprecation warnings with wxFont, wxPen, wxBrush ctors...
... Replace some enum constants with the equivalent values from the more
special-purpose enums, as the wx header files recommend, so overloading
selects the ctors with non-int arguments.

In a full rebuild of the debug project on Mac, this reduces the count of
warnings from 264 to 274.
2018-07-23 13:21:15 -04:00
James Crook 6325b443d6 Possible fix for Bug 42 (Timer Record does not stop, moonphase)
This possible fix is based on the idea that YieldFor is flaky, and is holding up events that we SHOULD process.
Therefore we process ALL events, not just some, and we do two yields, in case we are getting behind on the queue.
2018-07-22 20:13:15 +01:00
James Crook 2115e9b5ac Play at speed pop-up dialog changes speed dynamically too.
In fact all the slider pop up dialogs now dynamically change their parent's value.
2018-07-21 18:20:14 +01:00
Paul Licameli 70f27d41d3 Rewrite AdornedRulerPanel with one less friend 2018-07-06 21:11:48 -04:00
James Crook 356fdeba40 Show Pin/Unpin button in red, if recording. 2018-06-29 17:00:25 +01:00
James Crook 20178b15e1 Fix some 'declaration hides' warnings.
We were for example getting many of these:
\audacity\src\widgets\numerictextctrl.h(171): warning C4458: declaration of 'value' hides class member

MSVC2013 didn't warn about these, but MSVC2017 does.
2018-06-27 12:36:13 +01:00
Henric Jungheim 68b7330b69 Avoid MSVC trying to use wxTabTraversalWrapper's move ctor. 2018-06-26 06:53:47 -07:00
David Bailes 4221549ec9 NumericTextCtrl: fix minor bug with NVDA screen reader
Problem: with using up/down arrow NVDA reads the updated field twice.

Fix: remove generation of an unnecessary event.
2018-05-16 14:10:53 +01:00
David Bailes a13e7191c4 Add an option to use a dialog to enter the name of a new label
Motivation:
1. The text boxes in the label track are not fully accessible for users of screen readers, and I don't think that they can be made to be fully accessible using the accessibility API used by wxWidgets. When such an edit box becomes the focus, this is not announced, and for NVDA users typed characters are not echoed.

2. Provides a work around for bugs 1778 (cannot type diacritics into text label), and 1804 (Windows: Labels do not accept IME (Chinese/Japanese) input).

Fix: Provide an option for a dialog for entering the name. The text box in the dialog is accessible for screen readers. On windows the text box receives wm_keydown and wm_char messages and so is a work around for bug 1804. Being a standard text box, it will presumably be a work around for bug 1778.

1. There is a new option in track behaviors: "Use dialog for the name of new label", which is off by default.

2. When using the commands "Add label at selection" and "Add label at playback position", when the dialog closes, focus is returned to the track which was the focus before the dialog opened. I think this is more convenient for users of screen readers.
2018-05-11 10:23:48 +01:00
Paul Licameli a9e7a7e5d5 movable_ptr(_with_deleter) -> std::unique_ptr 2018-05-10 00:56:37 -04:00
Paul Licameli b8a8712ba0 make_movable -> std::make_unique 2018-05-10 00:56:36 -04:00
Paul Licameli 7a0475e39f Remove most uses of AUDACITY_OLD_STD 2018-05-10 00:56:36 -04:00
Steve Daulton 0d5fb01c97 Can't call Fit() on (negative) wxDefaultSize
and SetSizeHints will call Fit()
2018-05-02 16:11:35 +01:00
James Crook 121fdc5703 Fix non-ASCII characters in wxLogDebug
The LogDebugs aren't needed now, as we can get the info via Scripting.
2018-04-15 15:09:15 +01:00
James Crook 933c86dce3 Draw slider background in correct colour on MixerBoard. 2018-04-15 13:46:03 +01:00
James Crook 35d24bbed5 Tweak spacing in vertical rulers.
This is most relevant in MixerBoard.
2018-04-15 11:48:51 +01:00
James Crook 5120a9dfc6 Fine tune spacing between minor ticks in rulers.
The main point of this is not to ask for overcrowded rulers.

We already handle overcrowded rulers well, by not showing the minor ticks.
This change means that we are more likely to ask for a spacing that works.
In turn that means that we are less likely to have anomalies where numbers disappear due to overcrowding and reappear again as you resize the ruler.
2018-04-14 15:44:56 +01:00
James Crook 8344a2bae9 Bug 1867 - Jumping numbers on meter resizing
They jumped because of overcrowding.  Now when overcrowded, don't show
any minor numbers.
2018-04-13 19:26:56 +01:00
James Crook 5fd1f7e606 Bug 1866 - Mac: Sliders have black backgrounds when building on wx3.1.1
Also fixes flicker of sliders on dragging the slider.
2018-04-13 17:24:02 +01:00
James Crook 7178879397 Flicker-Free Grabbers and Mic/Speaker icons.
Previously we were clearing in Erase Background, giving lots of flicker when resizing some toolbar.
Also fixed a mac Slider background painting issue.
2018-04-13 09:48:20 +01:00
James Crook 8ff80bde11 Bug 262 - Enh: Mixer Board: Track strip and border colours to match those in current TrackPanel 2018-04-12 14:45:08 +01:00
David Bailes 0e25f65eb4 Modification to fix for Bug 875 - NumericTextCtrl
Modification to commit 7ab4b8c. The first non-zero digit only becomes the focus on the first visit to the control. On subsequent visits, the focus is the previous focus. Example use case: modifying start and end times by a tenth of a second. The user can move between the controls without loosing his "place".
2018-04-12 11:46:08 +01:00
James Crook 7ab4b8c6df Bug 875 - First character is highlighted when tabbing into TimeText controls, not first non-zero character. 2018-04-09 15:51:18 +01:00
James Crook 98bbb3436d Fix sizers in WarningDialog
AddUnits is only allowed in a HorizontalLay or MultiColumn.
EndVerticalLay was missing.
2018-04-08 19:51:09 +01:00
James Crook b60fae4470 Fix some warnings on mac
These are mostly missing 'overrides'
2018-04-07 20:28:27 +01:00
James Crook c0e1c82be9 Add missing files to Mac build.
Also moved the constructor into the .cpp file, so that wxWindow is a fully defined class.
2018-04-04 14:14:59 +01:00
David Bailes f027708fe1 Fix an issue caused by the accessibility changes in wxWidgets 3.1.1
The main change in wx accessibility is this:
7dab555f71 (diff-04f5191d86f95b1c4d5d9c979da65878)

However wxWindowAccessible has not been updated to take into account of that change. In particular wxWindowAccessible::GetParent() was always wrong, but it was consistent with the rest of the framework. Now it's wrong and inconsistent. This function should return an object with role window, and which has the same name.

The fix is to introduce class WindowAccessible, which is effectively our own version of wxWindowAccessible. This class does not override GetParent(), and so just relies on a standard accessible object to to the right thing in wxIAccessible::get_accParent() (which is does). This class also allows us to have our own version of GetName(), which allows us to set the accessibility names of buttons.

These changes will break the accessibility of Audacity if it is built with wxWidgets 3.0.X. If this is a problem, then there could be some #if stuff in WindowAccessible.h to turn the WindowAccessible class into one which simply inherits from wxWindowAccessible, and doesn't override anything.
2018-04-03 14:57:59 +01:00
James Crook 1f0061ba79 Fix sizing bug in InfoDialog (misuse of wxALIGN_BOTTOM) 2018-03-31 21:08:16 +01:00
James Crook 4ae394ff5e Fix some warnings (MSVC) 2018-03-31 19:47:16 +01:00
Paul Licameli 0fb02a8024 IdentInterfaceSymbol in NumericTextCtrl; don't persist translated 2018-03-28 14:00:17 -04:00
James Crook 545102b168 Bug 1680 - Pan / Gain dialog sliders do not update on text entry 2018-03-25 18:02:14 +01:00
James Crook d5a2e3af2e Bug 616 - First ampersand in file name removed from File > Recent Files and import dialogues 2018-03-25 16:28:27 +01:00
James Crook 8ce8e7bcce Bug 521 - Lower half of Waveform (dB) vertical scale does not show dB level.
Added a DbMirrorValue for two sided dB scale on Waveform VRuler when in dB view mode.
2018-03-24 20:35:08 +00:00
James Crook a47df37ea4 Bug 1533 - Selection in label track offset from selection in audio Track
The problem was actually more general, and involves misalignment between selections
in clips and selections in the background and in the ruler - so could be seen with just
audio tracks and no label tracks.
2018-03-17 19:17:53 +00:00
Paul Licameli 9b7ccc4dff Use TranslatedInternalString for tips of toolbar buttons 2018-03-15 20:13:19 -04:00
James Crook fb8b797d63 Layout changes
- Progress bar now less likely to obscure a small window that invokes it.
- Check boxes grouped together in TrackPrefs
2018-03-03 12:53:41 +00:00
James Crook 8991fe7521 Fix incorrect https and translation markings.
- DarkAudacity website does not support https, so don't specify https in strings.
- Don't translate text about DarkAudacity.
2018-02-26 14:09:07 +00:00
Paul Licameli e5052a1973 Use a type distinction for key strings in normalized form...
... Such are not for display to the user.  They are appended to menu item
names to identify accelerators, and wxWidgets transforms them appropriately
for the operating system.
2018-02-25 14:56:17 -05:00
James Crook e3ef968d57 Add DragCommand. Default Y/N on optional fields. Open/Save project items.
- More Y/N in Optional, making it easier to omit parameters.
- AT removed from Envelope, since T already gives it.
2018-02-24 14:20:29 -05:00
James Crook 1c988b4e3a Automation: AudacityCommand
This is a squash of 50 commits.

This merges the capabilities of BatchCommands and Effects using a new
AudacityCommand class.  AudacityCommand provides one function to specify the
parameters, and then we leverage that one function in automation, whether by chains,
mod-script-pipe or (future) Nyquist.

- Now have AudacityCommand which is using the same mechanism as Effect
- Has configurable parameters
- Has data-entry GUI (built using shuttle GUI)
- Registers with PluginManager.
- Menu commands now provided in chains, and to python batch.
   - Tested with Zoom Toggle.

- ShuttleParams now can set, get, set defaults, validate and specify
the parameters.
- Bugfix: Don't overwrite values with defaults first time out.
- Add DefineParams function for all built-in effects.
- Extend CommandContext to carry output channels for results.

We abuse EffectsManager.  It handles both Effects and
AudacityCommands now.  In time an Effect should become a special case of
AudacityCommand and we'll split and rename the EffectManager class.

- Don't use 'default' as a parameter name.
- Massive renaming for CommandDefinitionInterface
- EffectIdentInterface becomes EffectDefinitionInterface
- EffectAutomationParameters becomes CommandAutomationParameters
- PluginType is now a bit field.

This way we can search for related types at the same time.

- Most old batch commands made into AudacityCommands.
The ones that weren't are for a reason.  They are used by mod-script-pipe
to carry commands and responses across from a non-GUI thread to the GUI
thread.

- Major tidy up of ScreenshotCommand
- Reworking of SelectCommand
- GetPreferenceCommand and SetPreferenceCommand
- GetTrackInfo and SetTrackInfo
- GetInfoCommand
- Help, Open, Save, Import and Export commands.
- Removed obsolete commands ExecMenu, GetProjectInfo and SetProjectInfo
  which are now better handled by other commands.

- JSONify "GetInfo: Commands" output, i.e. commas in the right places.

- General work on better Doxygen.
    - Lyrics -> LyricsPanel
    - Meter -> MeterPanel
- Updated Linux makefile.
- Scripting commands added into Extra menu.
- Distinct names for previously duplicated find-clipping parameters.
- Fixed longstanding error with erroneous status field number which
  previously caused an ASSERT in debug.
- Sensible formatting of numbers in Chains, 0.1 not 0.1000000000137
2018-02-24 14:20:22 -05:00