1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-23 17:30:17 +01:00
Commit Graph

72 Commits

Author SHA1 Message Date
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
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
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
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
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
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
ed29ab89f8 Many WindowAccessible subclasses moved out of header files 2019-03-31 13:27:18 -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
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
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
06b3b42794 Remove unnecessary initializers for empty wxString 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
50074f2cfe Replace comparisons against "" with empty() 2019-03-14 13:23:41 -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
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
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
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
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
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
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
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
Paul Licameli
2a08a3cc07 Fix windows build...
Defaulted move constructors and assignments introduced at 080dd34 are not
essential but might give a bit more efficiency in std::vector on non-Windows.

Previous compilation fix was incorrect!  Excpliticly defined move assignments
should not have had no-effect bodies!
2018-02-22 12:32:53 -05:00
James Crook
2ece1acae9 Fix build
These changes needed to build on MSVC 2013.
2018-02-22 17:19:14 +00:00
Paul Licameli
080dd34e61 Get rid of wx object arrays, use std::vector 2018-02-21 19:33:27 -05:00
Paul Licameli
8625df6814 More NumericTextCtrl constructor options 2018-02-21 19:21:02 -05:00
Paul Licameli
5724780be9 NumericTextControl ctor arguments...
... follow wxWidgets conventions for first two arguments; add Options
2018-02-21 19:21:02 -05:00
Paul Licameli
4d978bcefb Use wxPrintf not printf 2017-12-16 11:54:32 -05:00
Paul Licameli
08d63aa361 Fix roundoff bug in NumericTextCtrl 2017-11-19 11:04:08 -05:00
James Crook
c28be778e2 Linty fixes
This commit fixes a number of warnings shown in compilation with MSVC.  No behavioral changes intended.  I did not fix signed/unsigned warnings.
2017-11-07 14:23:30 +00:00
Paul Licameli
6a8bba0a99 Fix all remaining misuses of macro _ in static initializers...
... I found them using a rewritten macro _ that dynamically checked
that translations have been initialized.  But I do not commit that changed
macro.
2017-10-01 17:20:05 -04:00
Paul Licameli
761bd6bf83 Translation of time, frequency, and bandwidth format names 2017-09-07 19:42:22 -04:00
James Crook
354b17394f Add back units have coloured backgrounds.
This was broken by a theming change for HiContrast.
2017-04-26 22:33:12 +01:00
James Crook
80928bfe61 Increase upper limit for KHz format in spectral selection toolbar. 2017-04-16 18:51:42 +01:00
James Crook
a868d0c118 Add Hi-Contrast Theme 2017-04-10 12:09:38 +01:00
Paul Licameli
5036583549 Fewer inclusions of AudacityApp.h 2017-03-17 17:52:24 -04:00
David Bailes
f296c768d5 Fix for bug 1542 - setting of radio buttons in Selection bar
Problem: On Windows, if you set the "length" radio button in the selection bar, then tab round to it, this sets the "end" radio button.

This was caused by commit 7e49dc4.
The fix is to restore the previous code just for Windows.
2016-11-03 13:59:04 +00:00
Paul Licameli
f993f1eadf Regularize casts as (int), so they are easier to find and review 2016-09-20 08:42:11 -04:00
Paul Licameli
78be459fa1 Convert sampleCount <-> floating or -> long long explicitly ...
... A non-narrowing conversion out to long long is a necessity, but the
conversions to float and double are simply conveniences.

Conversion from floating is explicit, to avoid unintended consequences with
arithmetic operators, when later sampleCount ceases to be an alias for an
integral type.

Some conversions are not made explicit, where I expect to change the type of
the variable later to have mere size_t width.
2016-09-15 21:02:31 -04:00
James Crook
65c7e8051a ThomasFeher - Unused parameters clean up. 2016-09-11 20:31:49 +01:00
Paul Licameli
6043638e31 Another std::min, more auto & decltype, remove more casts 2016-08-29 20:07:43 -04:00
James Crook
5d0951c643 Bug 1497 - Time controls not accepting direct typed input
Caused by optimisation of NumericTextCtrl::ValueToControls().  It now only updates on a change, and because mValueStr was being updated without calling value to controls, the string was not being identified as having changed.
2016-08-25 11:33:59 +01:00
Paul Licameli
1189cfd62a Identify the few unsafe narrowing conversions from sampleCount...
... I believe this list of four places is exhaustive.

There are many, many more safe narrowings that I examined.

This resulted from changing the definition of sampleCount in my builds so that
narrowing conversions failed to compile without some fixes, and I examined and
fixed every place.

The rest of that work is not yet shared.
2016-08-21 15:28:32 -04:00
Paul Licameli
1cad18c479 Merge pull request #150 from RaphaelMarinier/optimize_selection_bar_update_master
Optimize the refresh of the selection bar while Audacity is playing.
2016-08-15 22:04:42 -04:00
Paul Licameli
71efb13161 Remove some naked new amd delete in: widgets 2016-08-08 07:51:26 -04:00
Raphaël Marinier
6a313a35bf Optimize the refresh of the selection bar while Audacity is playing.
This saves 3-4% CPU while Audacity is playing on Linux/64bits. This is
done by avoiding the update of NumerixTextCtrls that stay unchanged.
2016-07-28 00:12:32 +02:00
Paul Licameli
c3b4ea165f Bug1428: Don't make negative label start time from label edit dialog 2016-06-27 17:40:49 -04:00
Paul Licameli
db137ddf76 wxWindow takes ownership of its wxAccessible, so we can use safenew. 2016-05-06 21:03:37 -04:00