Despite special-casing zero-length input, wxString("") takes over four
times as long as wxString() - and on a 10k line script, this change cuts
AssFile's copy constructor's runtime in half.
Originally committed to SVN as r6401.
The macro processing function can now return a second value, which is
the index of the line to make active, which must be one of the lines in
the selection. If it is not, or if the value is not present, then the
active line is left unchanged if it is in the new selection, or set to
the first line of the new selection if it is not.
Closes#1435.
Originally committed to SVN as r6398.
Previously adding a word to the dictionary via the spell checker dialog
would not update the dictionary used by the subs edit box and
vice-versa.
Originally committed to SVN as r6396.
Remove the pointlessly hardcoded height of the checklist.
Set the parent correctly.
Set the initial focus to the OK button.
Originally committed to SVN as r6373.
Timing changes can potentially make all of the columns need to be
repainted (due to the collision line color), and the grid currently
isn't smart enough to know when this is actually the case, so just
always repaint the entire thing.
Originally committed to SVN as r6371.
Scintilla's modification notifications don't expose enough information
to do a very good job of deciding when to group changes with previous
ones, but it does expose when Scintilla thinks undo groups should end,
so just use that.
This should significantly improve the behavior of undo when editing
lines in the edit box.
Originally committed to SVN as r6370.
SubtitlesGrid::DuplicateLines iterated over the entire file multiple
times for each line duplicated, making duplicating large numbers of
lines extremely slow.
Originally committed to SVN as r6366.
Calling AssFile::Save/Load from multiple threads (even on different
objects) was not safe due to that is uses SubtitleFormat internally,
which was inheriently thread-unsafe. To fix this, change
SubtitleFormat's interface to support immutable implementations, and
make all of the current implementations immutable.
This isn't a perfect solution - making a subtitle format implemented in
lua immutable would be rather difficult - so at some point in the future
SubtitleFormat should probably be changed to a factory which returns new
objects from GetReader/GetWriter.
Originally committed to SVN as r6365.
Redesign how shift times history is saved. Previously it stored the
localized strings in the history file, which are not particularly
parsable as the format may differ between locales. Rather than doing
this, store the raw settings in a json file, and generate the history
strings on display. In addition to making it much easier to load old
settings, this makes it so that the history is always displayed using
the current locale, rather than the locale in which the shifting was
done.
Closes#1427.
Originally committed to SVN as r6363.
Combining Shift+Up/Down (or Home/End or Page Up/Page Down) with
shift-clicking had very odd results due to that they used separate
variables to decide where to extend from (and even when only one was
used they were handled incorrectly in some cases).
Closes#1311.
Originally committed to SVN as r6355.
If the second return value from the validate function exists and is a
non-empty string, replace the macro's help text with that string.
Revert r6327, as this is a better solution to the same problem.
Closes#1413.
Originally committed to SVN as r6352.
'UTF-16' is big-endian UTF-16, so returning it for UTF-16LE is incorrect
and results in line_iterator failing on UTF-16LE.
Originally committed to SVN as r6351.
Portaudio defaults to using the most stable widely available host API,
rather than the highest performance or quality, and as a result the
default host API on windows (MME) is really quite bad. As such, add
logic to select the best host API for the selected output device.
Closes#1375.
Originally committed to SVN as r6346.
If an entire group of commands in a toolbar is missing (such as with
AssDraw on non-windows), the duplicate separator should go as well to
avoid ugliness. A better solution here would be platform-specific
default toolbars, which should probably be done as part of #495.
Closes#1398.
Originally committed to SVN as r6337.
Creating an entire toolbar for one button in the drag mode is a
pointless waste of space and source of ugliness. The secondary toolbar
was more reasonable for the vector clip tool, but it's still a bit
pointless as there's enough space for it on the main toolbar at any
reasonable zoom level.
Closes#1401.
Originally committed to SVN as r6333.
VideoBox is down to one method so it doesn't actually need to be able to
reference most of the stuff it constructs.
Originally committed to SVN as r6331.
Rather than passing a string as the second argument to
aegisub.register_macro, they can now pass a function which will be
called (with no arguments) to get a help string.
Originally committed to SVN as r6327.
wxGTK doesn't generate spin events when the value of a spin control is
set programmatically, so generate the event ourseleves.
Originally committed to SVN as r6323.
Handle switching from placeholder/normal mode when the value is changed
externally (such as from the active line changing) in addition to on
focus/blur, and improve behavior when the user sets the text to the
placeholder text.
Originally committed to SVN as r6321.
With incomplete (or possibly incomplete for \r and \fn) tags at the end
of an override block, the text at the beginning of the next override
block was being incorrectly parsed as part of that tag.
Originally committed to SVN as r6317.
It's never used on Windows, but it's useful to have all of the files in
the project, and the other non-Windows audio players are already in the
project.
Originally committed to SVN as r6314.
The hotkey should only be Ctrl-J on OS X (where Ctrl-G is taken by Find
Next), but platform-specific hotkeys aren't implemented yet.
Originally committed to SVN as r6301.
Deriving from the more specialized renderes reduces the amount of code
required, but it depends on implementation details of the specific
implementations, resulting in the custom renderers not working with
wxGTK. In addition, this makes it possible to bypass the default
handling for 'Enter' which made it impossible to set it as a hotkey.
Originally committed to SVN as r6300.
The list of files to include was out of date and only included files
for dependencies which were actually enabled, and the script was
FreeBSD-specific.
Originally committed to SVN as r6298.
Continue moving all the reordering commands to grid (why were they in
three different categories?), and change swap to move to better reflect
what they do.
Originally committed to SVN as r6287.
Sorting lines doesn't effect the timing of them, and sorting by style
doesn't even involve time in any way. Moving lines up and down is
already in the grid category, so it seems logical to put sorting there
as well.
Originally committed to SVN as r6286.
The size of the contents is not updated until after SubsEditBox::OnSize
is called, so the wrapping logic was being done based on the previous
available area, rather than the new size.
Originally committed to SVN as r6284.
The fontconfig collector should now always pick the exact font files
used by libass rather than a giant mishmash of vaguely related files
which may or may not include the correct font.
Make the freetype font collector windows-only, as it's far inferior to
the fontconfig collector and is only present as a fallback.
Add option to copy the fonts to the script's folder.
Closes#1059.
Originally committed to SVN as r6279.
This still isn't a very good place for the functionality, but it breaks
SubsEditCtrl's dependency on SubtitlesGrid.
Originally committed to SVN as r6275.
Leaving macros in the order they're registered makes it possible to
group related macros. Once a UI for editing the menus has been added it
might make sense to default to sorting them, but for now it's just
unhelpful.
Closes#1381.
Originally committed to SVN as r6273.
This disables spell checking in drawing blocks and potential weird
behavior when right-clicking on drawing blocks.
Originally committed to SVN as r6272.