Compare commits


721 Commits

Author SHA1 Message Date
Mia Herkt a87d03c9e8
Icons based on Breeze 2023-12-30 15:35:13 +01:00
Mia Herkt fea5ca3520
Properly skip events
So the mouse doesn’t get trapped because the button release event is
swallowed up.
2023-12-30 15:35:12 +01:00
Mia Herkt 71fb001d25
audio display: limit mouse event rate
Same as with visual typesetting.
2023-12-30 15:35:11 +01:00
Mia Herkt ca1ac8bcea
visual typesetting: limit event frequency
This change makes Aegisub a lot more responsive on platforms like X11
where mouse events may come in at very high frequencies and/or in bursts.
2023-12-30 15:35:10 +01:00
Mia Herkt d40eb355dd
Visual tools: Make X/Y rotation less sensitive 2023-12-30 15:35:09 +01:00
Mia Herkt 6c67b9970b
Hack shortcuts to set colors from video display 2023-12-30 15:35:08 +01:00
Mia Herkt a5232bc49e
Remove annoying modal dialogs 2023-12-30 15:35:07 +01:00
Mia Herkt 791fd4cf43
Fix video toolbox keyframe color 2023-12-30 15:35:06 +01:00
arch1t3cht 6af7c6bddf Merge branches 'workarounds' and 'bestsource' into feature 2023-12-27 06:53:22 +01:00
0tkl 167b4add50 bestsource: Update ffmpeg API usage for keyframes 2023-12-27 06:52:56 +01:00
0tkl 29c8054b50 Update ffmpeg wrap to 6.1 2023-12-27 06:50:37 +01:00
arch1t3cht b0c77beef6 Merge branch 'bugfixes' into feature 2023-12-26 16:54:47 +01:00
arch1t3cht 8650e12364 Download hunspell dictionaries from GH repo
Since the download from SourceForge frequently fails,
the English dictionaries are now hosted in a TypesettingTools
2023-12-26 16:53:32 +01:00
arch1t3cht eca52e4166 Merge branch 'workarounds' into feature 2023-12-26 16:20:07 +01:00
arch1t3cht 8e60a46c01 Work around double buffering issue in wx master
See .
This patch reverts commit fb4f0b590c42a66263debf926617c00b157c9a in
2023-12-26 16:16:12 +01:00
arch1t3cht 1eea4ca69c Remove stray BOM in dav1d patch 2023-12-26 16:15:39 +01:00
arch1t3cht 7f928e8d6d Merge branch 'bugfixes' into feature 2023-12-02 18:08:47 +01:00
arch1t3cht 592bd993d7 Remove iconv's stdbool.h
This was breaking things (libass) and doesn't seem to be
needed any more.
2023-12-02 18:08:36 +01:00
arch1t3cht 160cf46b98 Merge branch 'bugfixes' into feature 2023-12-02 17:27:55 +01:00
arch1t3cht df9d442102 Fix AviSynth paths for portable build (again) 2023-12-02 17:26:00 +01:00
arch1t3cht ce557d98e4 Use crash_writer_minidump on Windows
This was done in Aegisub/Aegisub.
2023-12-02 17:21:11 +01:00
arch1t3cht 786f082673 Merge branch 'workarounds' into feature 2023-11-24 23:10:07 +01:00
arch1t3cht ffb95f1375 Bump wxWidgets wrap back down to 3.1.4
Fixes arch1t3cht/Aegisub#99 .
Of course one day icon scaling should be sorted out properly,
but for now let's just revert.
2023-11-24 23:08:49 +01:00
arch1t3cht 8947e20dbb Merge branch 'bugfixes' into feature 2023-11-24 21:02:09 +01:00
arch1t3cht 18d088c479 Fix hunspell include and wrap 2023-11-24 20:53:07 +01:00
arch1t3cht 20caaabc07 Merge branch 'vapoursynth' into feature 2023-11-23 11:32:41 +01:00
arch1t3cht 928a2d4c6c vapoursynth: Fix lwindex parsing when video is not the first stream
SubKt my beloved...
This was broken in 0d281af269 and is fixed
in a more robust way in this commit.
2023-11-23 10:00:11 +01:00
arch1t3cht 07fa563fa6 vapoursynth: Ignore __aegi_timecodes on single-frame clips
The vfr class (understandably) does not like timecode lists with only
one element, so the current default script breaks when opening images.
So to not bloat the default script too much we just ignore
__aegi_timecodes in the provider in these cases.
2023-11-23 09:40:04 +01:00
arch1t3cht 5ceaa45f3a Merge branch 'bugfixes' into feature 2023-11-21 21:20:52 +01:00
arch1t3cht 4576ac0638 luajit: Remove checkdef for SSE
This isn't actually set in luajit's Makefile. Maybe it was at some
point in the past, but there's no trace of it now.

Fixes arch1t3cht/Aegisub#98 .
2023-11-21 21:19:06 +01:00
arch1t3cht 693959801f ci: Add manual trigger option 2023-11-15 19:04:50 +01:00
arch1t3cht 752a14cc25 Merge branch 'bugfixes' into feature 2023-11-06 22:45:06 +01:00
arch1t3cht 24c8144e91 meson: luajit: Set correct LUAJIT_TARGET for buildvm
On native builds this is derived automatically, but on cross builds
it needs to be set explicitly.
2023-11-06 22:44:18 +01:00
arch1t3cht 1ba7979ff4 meson: luajit: Remove unused readline dependency 2023-11-06 22:44:03 +01:00
arch1t3cht d728ce0e78 meson: Don't run tests on cross builds
This can be made into an option or whatever when cross builds that
can/need to run tests show up, but for now this is enough.
2023-11-06 22:12:30 +01:00
arch1t3cht fd753c58a5 Merge branch 'vapoursynth' into feature 2023-11-03 02:27:20 +01:00
Setsugennoao 568597bddc vapoursynth: Fix VSScript DLL loading
We do this by first trying to fetch its location from the registry, then PATH
2023-11-03 02:24:46 +01:00
arch1t3cht 95500b84fd Merge branch 'vapoursynth' into feature 2023-11-01 20:35:21 +01:00
arch1t3cht 0d281af269 vapoursynth: Fix lwindex parsing for files with multiple video streams 2023-11-01 20:32:32 +01:00
arch1t3cht fac664ad10 Merge branch 'workarounds' into feature 2023-10-27 16:41:40 +02:00
arch1t3cht 6dda04da9f Revert "Parially revert fffb138b8175b4838b6a063863756b7c6b2db547"
This reverts commit c487dd2bdb.

Revert the commit that
partially reverted fffb138b81 ...
It turns out that this very much did break IME input, so reverting
this for now. This does make Aegisub use private symbols in wx again,
but the CI builds build wx from the wrap now. Still, this is why
this is on the workarounds branch. If this breaks for too many
people this could either go behind a meson option or be fixed in
some better magical way that I have yet to find.

Fixes arch1t3cht/Aegisub#90
Fixes arch1t3cht/Aegisub#91
2023-10-27 16:40:21 +02:00
arch1t3cht dd303b1c9d Merge branch 'misc' into feature 2023-10-25 20:20:55 +02:00
arch1t3cht 2ac3bdf870 Allow reading compressed subtitles from mkv
The error handling inside of read_subtitles is a bit clumsy here,
but it's probably the best we can get without bigger refactors.
2023-10-25 20:20:04 +02:00
arch1t3cht 795dffc072 Merge branch 'bugfixes' into feature 2023-10-18 23:30:11 +02:00
arch1t3cht 45fdaecd72 ci: Install setuptools
After Python 3.12 released, meson doesn't seem to like the python
installed by actions/setup-python any more.
2023-10-18 23:29:20 +02:00
arch1t3cht 4a939d1954 Merge branches 'vapoursynth' and 'fixes' into feature 2023-10-18 21:22:54 +02:00
arch1t3cht 47b10e5ffc Fix progress dialog when switching from indeterminate to setting progress 2023-10-18 21:21:37 +02:00
arch1t3cht 2dbee37ad8 vapoursynth: Copy to build folder for testing 2023-10-18 14:51:28 +02:00
arch1t3cht a1b3e0d9f1 vapoursynth: Allow scripts to control the progress dialog
This happens via VapourSynth's message logger.
Also add wrapper functions for this to and add progress
updates everywhere - both to improve UX and to help with debugging for
when scripts get stuck somewhere.
2023-10-18 14:51:28 +02:00
arch1t3cht 79b3f4ccb0 vapoursynth: Add option to enable/disable user plugin loading
On Windows, plugins are shipped with Aegisub now and loaded from, so user plugins installed out of Aegisub are more
likely to just interfere with that (like when the user has an
old version of libvslsmashsource installed).
So this option defaults to off on Windows, but to on everywhere else
since VS plugins aren't shipped with Aegisub there.

Note that this option only disables autoloading of user plugins.
VapourSynth loads system plugins no matter what.
2023-10-18 13:31:47 +02:00
arch1t3cht 4ebdc2b82c Merge branches 'bugfixes', 'video_provider_rework' and 'avisynth' into feature 2023-10-17 18:31:11 +02:00
arch1t3cht fabc6e436f osx: Sign executable and libraries after bundling 2023-10-17 18:26:49 +02:00
arch1t3cht 858f4acf35 avisynth: Decrease refcount again when constructor fails
Proper fix to the issue that f5a730fa45
was trying to fix.

Fixes arch1t3cht/Aegisub#61 .
2023-10-15 23:08:39 +02:00
arch1t3cht a9eed184c2 Revert "avisynth: Only increase refcount when fully initialized"
This reverts commit f5a730fa45.
2023-10-15 22:58:23 +02:00
arch1t3cht dd3016a89d Further fixes to audio/video provider selection
- Fix selection not aborting when the preferred provider returns null
- Fix the default video provider being "ffmpegsource" (lowercase)
  instead of "FFmpegSource", which would trip up provider selection
- More generally, make sure the preferred video provider actually exists
  and fall back to the default (FFmpegSource) if not.

Fixes arch1t3cht/Aegisub#23 .
Fixes arch1t3cht/Aegisub#61 .
Fixes arch1t3cht/Aegisub#83 .
2023-10-15 22:27:21 +02:00
arch1t3cht 07c4f26a8e ci: Install nasm for Ubuntu AppImage build
Ubuntu doesn't have ffmpeg 6.0 yet, but we want to bundle ffms2 master
since the distro version still has seeking issues. Compiling the ffmpeg
wrap needs nasm.
2023-10-14 00:51:32 +02:00
arch1t3cht b3eb182259 Merge branch 'bugfixes' into feature 2023-10-13 23:56:15 +02:00
arch1t3cht ee247419b6 Merge branch 'workarounds' into feature 2023-10-13 23:55:52 +02:00
arch1t3cht b8f4c98c4c Move iconv include to charset_conv.h
On newer mac sdks iconv_t is defined differently, so it's harder to
just have a typedef for it.
2023-10-13 23:52:26 +02:00
arch1t3cht c67ba9f70c Update ffmpeg wrap to 6.0 following ffms2 updates
Also bump libdav1d and turn the wrap patches into diffs. This requires
bumping the minimum meson version to 0.63, but meson 1.0 is available
pretty much everywhere now so this should be fine.
2023-10-13 23:46:11 +02:00
arch1t3cht 9bc3cad79e Add remaining dasm flags in luajit wrap
This now matches the makefile. Also stop hardcoding the flags
for MSVC, since cc.get_define seems to work properly there now.
2023-10-13 23:26:01 +02:00
arch1t3cht 82b7e96cea Merge branches 'bugfixes' and 'fixes' into feature 2023-10-13 00:36:09 +02:00
arch1t3cht a631bf192c lua: Fix dialog dropdowns that are empty by default on Mac 2023-10-13 00:32:36 +02:00
arch1t3cht ad92ccf01a Fix cleantags with \k tags with noninteger durations
Fixes arch1t3cht/Aegisub#92 .
2023-10-13 00:26:26 +02:00
arch1t3cht 4e6af75db4 Add proper endianness flag for dasm in luajit wrap
Fixes luajit almost completely breaking on aarch64 and probably
other non-x86 architectures.
2023-10-12 23:04:22 +02:00
arch1t3cht 61ec2bc3e7 Merge branch 'fixes' into feature 2023-09-17 18:49:10 +02:00
arch1t3cht edae653584 Deduplicate automation autoload path, for real this time
Replaces the incorrect fix in 642251b
Fixes arch1t3cht/Aegisub#15
2023-09-17 18:47:42 +02:00
arch1t3cht 8fb8e90006 Merge branches 'bugfixes' and 'workarounds' into feature 2023-09-12 16:18:00 +02:00
arch1t3cht 49139f0a22 Fix OSX library wrangling when libs use @rpath or @loader_path
Fixes arch1t3cht/Aegisub#77
2023-09-12 16:16:40 +02:00
arch1t3cht d10ffebe35 Fix dictionary download on mac when osx-bundle is run more than once 2023-09-12 14:57:42 +02:00
arch1t3cht 9acb673457 Also add Dark Mode option on OSX
While it's not actually exposed there, it's used internally in various
GUI code.
2023-09-12 14:55:21 +02:00
arch1t3cht 1fde843630 Merge branches 'fixes' and 'bugfixes' into feature 2023-09-10 14:04:30 +02:00
arch1t3cht 4a97bb0dd2 meson: Update luajit wrap for luajit's rolling releases 2023-09-10 14:04:04 +02:00
Alex James 4f67db8dd7 libaegisub: Avoid calling iconv_close(iconv_invalid)
IsConversionSupported unconditionally calls iconv_close on the
descriptor returned by iconv_open. This may result in crashes if
iconv_open returns iconv_invalid.
2023-09-07 19:38:59 +02:00
arch1t3cht 41ef3fa56a vapoursynth: Remove old and incorrect docstring sentence 2023-09-05 00:21:11 +02:00
arch1t3cht 11fece4c03 Merge branch 'vapoursynth' into feature 2023-08-15 16:05:01 +02:00
arch1t3cht b2ee8ac036 vapoursynth: Make loading error messages a bit more helpful 2023-08-15 16:04:53 +02:00
arch1t3cht a867f0cc30 Merge branch 'workarounds' into feature 2023-08-09 18:30:51 +02:00
arch1t3cht 418514456e Disable sunken or raised borders for dark mode
Co-authored-by: arch1t3cht <>
2023-08-09 18:29:04 +02:00
sepro 061a860e2e Add option to enable experimental dark mode 2023-08-09 18:07:52 +02:00
sepro 5944d7999c Add option to build on wxWidgets master 2023-08-09 18:07:13 +02:00
sepro 0f897ba0eb Add nasm fallback url 2023-08-09 18:03:11 +02:00
arch1t3cht 4659bb2802 Merge branch 'bugfixes' into feature 2023-08-09 18:02:46 +02:00
sepro 0637bcdc7f Add nasm fallback url 2023-08-09 18:01:09 +02:00
arch1t3cht 0b7ea58cd6 meson: Add libresrc headers as dependencies
These are included in the Aegisub source files, so they need to be
generated before compiling.
2023-08-01 14:07:56 +02:00
arch1t3cht 239d585512 Merge branches 'vapoursynth' and 'fixes' into feature 2023-07-31 23:55:51 +02:00
arch1t3cht c61f149a37 Merge branch 'fixes' into feature 2023-07-31 23:48:14 +02:00
arch1t3cht 47c923d4ed unicode-monkeypatch: use tostring() in error handling
msg can be nil, which would previously error out when trying to print it.
2023-07-31 23:41:43 +02:00
arch1t3cht 263c2b9189 vapoursynth: Make askyesno method configurable
In particular, don't always import tkinter.messagebox since not all
Python distributions include tkinter.
2023-07-29 20:08:54 +02:00
arch1t3cht 66127f8c40 Merge branch 'bugfixes' into feature 2023-07-18 16:02:24 +02:00
0tkl 0fd12795da fix typo in meson wrap file 2023-07-18 16:01:59 +02:00
arch1t3cht a957af9a12 Merge branch 'bugfixes' into feature 2023-07-16 19:51:16 +02:00
arch1t3cht 6754ff8775 installer: Update paths to Avisynth libraries 2023-07-16 19:51:05 +02:00
arch1t3cht f9be4a854f Merge branches 'workarounds' and 'video_provider_rework' into feature 2023-07-16 17:57:09 +02:00
arch1t3cht d97c16cb7c Disable icu subproject in harfbuzz
Harfbuzz updated its ICU detection, which now picks up our subproject,
but isn't actually compatible with it.
2023-07-16 17:56:23 +02:00
arch1t3cht d3325eef6c Revert "meson: revert icu detection in harfbuzz"
This reverts commit 36a18e5ba3.
2023-07-16 17:55:32 +02:00
arch1t3cht dbe30b4da5 Revert "Point Yutils to fixed fork"
This reverts commit 12a5050365.
2023-07-16 17:55:19 +02:00
arch1t3cht 02567c2265 Rework the audio/video provider system
This became necessary now that more providers were added. Providers can
be proritized for certain file types (e.g. .vpy files will always be
opened with VapourSynth), and when the default provider fails on a file,
the user will be notified and be asked to pick an alternative provider.
2023-07-16 17:52:21 +02:00
arch1t3cht 7ca8b4c008 Merge branch 'misc' into feature 2023-07-14 00:06:52 +02:00
arch1t3cht 644a4ca9f7 Allow fractional frame rates in dummy video
The validation code for the dummy video dialog is kind of dirty but I've
had this lying around for months and just want to get it done...
2023-07-14 00:05:46 +02:00
arch1t3cht 96123cb6da Merge branch 'xa2-ds' into feature 2023-07-12 02:52:58 +02:00
arch1t3cht 42c71c4775 Add XAudio2 redistributable DLL for older Windows versions
The CI builds link against XAudio2_9, which isn't available on Windows 8
and lower. As a quick and dirty workaround, this commit ships the
XAudio2 redistributable on those older Windows versions. Simply renaming
the redistributable to XAudio2_9.dll isn't strictly allowed by the
documentation, but it works and is probably an acceptable hack to
support an outdated operating system...

Fixes arch1t3cht/Aegisub#16 .
2023-07-12 02:49:09 +02:00
arch1t3cht 0479b310e8 Merge branch 'video_panning_option' into feature 2023-06-27 02:15:54 +02:00
arch1t3cht 3f017bc29c video zoom: Add pan_reset command to video context menu 2023-06-27 02:15:18 +02:00
arch1t3cht eb6f31c077 Merge branch 'lua_api' into feature 2023-06-21 21:31:03 +02:00
arch1t3cht e483c5e48f lua: Fix crash after 79050df
Replacing all uses of LuaToAssEntry with LuaToTrackedAssEntry
also replaced its use in LuaParseKaraokeData, which would cause a double
free when canceling a script after calling parse_karaoke_data.
2023-06-21 21:29:23 +02:00
arch1t3cht 9e8ac83998 Merge branches 'vapoursynth' and 'info' into feature 2023-06-11 01:22:14 +02:00
arch1t3cht 1f6684823c vapoursynth: Add "ask" mode for get_keyframe 2023-06-11 01:22:06 +02:00
arch1t3cht fd401f059a README: Clarify where to find builds and some other updates 2023-06-10 02:08:45 +02:00
arch1t3cht d06a31968d vapoursynth: Add buttons to set default scripts to default 2023-06-08 18:41:12 +02:00
arch1t3cht 7bc18fec26 Merge branch 'folding' into feature 2023-06-01 23:35:39 +02:00
arch1t3cht b41f6bde71 Don't immediately delete unused extradata entries
Instead, count how many consecutive times the entry has been found to be
unused and delete it once that count exceeds a limit. This will prevent
excessive reallocating of extradata ID's in applications like folding.
2023-06-01 23:35:26 +02:00
arch1t3cht 58d6ab520b folding: Also update counterpart for fold operations
This wasn't necessary before since the internal representation of
folds is be checked for consistency after each commit, but after the
switch to extradata fold operations would leave the extradata in an
invalid state. This isn't technically a problem, but it does leave more
extradata entries lying around than necessary, and it can trip up
automation scripts that aren't prepared for inconsistent fold state.
2023-06-01 23:01:32 +02:00
arch1t3cht 58c0130d81 Fix default hotkeys commands for splitting lines
These commands were revamped in 0ef9963 but the default hotkeys were
never updated. The hotkeys were automatically migrated, but resetting
the settings back to defaults would still set invalid settings.
2023-05-30 01:45:53 +02:00
arch1t3cht dba4f4924e Merge branches 'lua_api' and 'bugfixes' into feature 2023-05-29 14:52:31 +02:00
arch1t3cht f3d6eea3b9 Fix AppImage build on CI 2023-05-29 14:43:34 +02:00
wangqr 055c87cd21 Reallocate static ranges for wxMenuItem
Previously different menus may use conflict ids in range 10000~.

Fix TypesettingTools/Aegisub#53
See also Aegisub/Aegisub#131
2023-05-25 23:13:05 +02:00
arch1t3cht 42f7e53e92 lua: Don't check_stack in LuaCheckStack destructor
This would cause an assertion failure in functions like lua_for_each
when the given closure throws an error and thus leaves some  values on
the stack. This can make Aegisub crash entirely instead of just catching
and reporting the error. Instead, these stack_checks can be done
2023-05-22 09:23:22 +02:00
arch1t3cht 79050dfdfb lua: Fix memory leak on aegisub.cancel() 2023-05-21 20:26:33 +02:00
arch1t3cht 64b92a95ac folding: Simplify fold operation code 2023-05-19 18:45:40 +02:00
arch1t3cht 5e51c59e8e Merge branch 'vector_clip_actions' into feature 2023-05-18 23:40:56 +02:00
arch1t3cht c8f8e8ac42 visual tools: Add setting for shape handle size 2023-05-18 23:39:00 +02:00
arch1t3cht 4365b16524 Merge branch 'pr_at_po-de' into feature 2023-05-01 17:33:48 +02:00
arch1t3cht b150b6bfc7 po/de: Add missing space 2023-05-01 17:08:33 +02:00
Oneric a6cf70ba59 po/make_pot: also update PO files
While meson already provides the aegisub-update-po target
for this exact purpose, it insists on also running meson’s
aegisub-pot target first, leading to missing translation strings.
2023-04-30 18:09:48 +02:00
Ananji Peixoto da Costa 0e9dd4b311 po/pt_BR: fix antes/depois confusion
pt_PT already uses the correct translation.
Cherry-picked-from: d771fb21af
2023-04-30 17:56:05 +02:00
Oneric 2f4258a8b4 po/de: add some trivial translations 2023-04-30 17:56:05 +02:00
Oneric 5b66d473d2 po/de: fix a few errors
Implements suggestions by arch1t3cht.
2023-04-30 17:56:05 +02:00
Oneric da9842b70c po/de: import German translation from wangqr’s fork
This fixes a bunch of misspellings, borked C format strings and
increases translation coverage from 1288/1612 to 1516/1612
where still missing strings mostly don’t exists in wangqr’s build.

Original commit:
2023-04-30 17:56:05 +02:00
Oneric 6b3cb7ec63 po: regenerate pot and po files
Using and
  msgmerge --no-fuzzy-matching --sort-by-file $i.po aegisub.pot
since meson’s aegisub-pot target are still not covering all
translatable strings yet.
2023-04-30 17:56:05 +02:00
Oneric bc3358fcfe po/make_pot: increase portability across shells
Base POSIX leaves the handling of backslahes in the operand
implementation defined. The XSI extension specifies several
escape sequences, like e.g. \n, which shall be transformed
upon printing.
Current expects XSI behaviour and indeed e.g.
dash’s echo builtin implements this. echo builtins of other common
shells such as bash however, do not (by default). Avoid this portability
pitfall by just using printf at all relevant places. See:

This also allows us to stop substituting each backslash with four
backslashes before piping to maybe_append. This substituion existed
to safely pass backslahes through maybe_append’s two layers of echo.

Also improve quoting. For consistency prefer single-quote quoting over
shell backslash escapes. QUote the unguarded *.lua to ensure it will
continue to work if there happen to be any lua files in the scripts
working directory.

This supersedes commits from wangqr/Aegisub which adjusted quoting and
echo usage to work with different shells. This is more throughout and
doesn't introduce semi-broken intermediate states.
(Note the second commit actually didn't manage to achieve the intended
portability, since several echo usages remained and it forgot to adjust
the backslash substitution, which was then fixed in the third commit.)
2023-04-30 17:46:20 +02:00
Oneric f417f6f1ad po/Make_pot: replace xmlstarelet+jq with gettext
gettext can deal with AppData (and other XML files)
since version 0.19.6 (2015). We already depend on gettext anyway so
let’s utilise this, to get rid of two build dependencies and simplify
the extraction logic.
This depends on the removal of underscore prefixes
as done in a prior commit.

After this the developer name "Aegisub Group"
is now also treated as a translateable string.
2023-04-30 17:40:55 +02:00
Oneric 6d9901ee3c po/make_pot: use gettext to process desktop file
gettext understands desktop files since 0.19 (2014),
so there’s no need for custom grep logic. This change
matches meson’s i18n which also uses gettext for this.

As a side efffect of this some long strings now get
broken into multiple lines (cosmetic only) and some
blank line gaps are normalised by gettext.

Cherry picks: 0e29c8d0e4
With fixups from: e98b7292f1
2023-04-30 17:38:28 +02:00
Oneric afa290ecfb po/make_pot: don't silently omit strings if utilities are missing
Instead abort the script on any errors, which
also helps detecting other unexpected errors.

Adopts parts of: 940181c7bc
  and 4aee271d03
2023-04-30 17:10:27 +02:00
Oneric 87d810254c po/make_pot: sort lua files in POT
find may output matching files in any order.
To avoid unnecessary changes between regeneration
sort its output. For C++ sources xgettext’s --sort-by-file
already has an equivalent effect. All other files are already
statically listed in a fixed order.

Adopts part of: 4aee271d03
2023-04-30 17:10:27 +02:00
Oneric 5c00368e85 build: consider all translation keywords for C++
And document which aprts are still missing.
The keyword list is are copied from
Sorting by file helps keeping future PO(T) update diffs small'ish
and is also done in wangqr’s PO-file update procedure. (POT file
generation also sorts, but by preapplying `LC_ALL=C sort` to the
file list instead of using xgettext’s sorting option.)

Without this, meson’s aegisub-pot missed the majority of translatable
strings from C++ sources. While this brings the target much closerto, the remaining strings aren't straigthforward to integrate
unfortunately. At the time of writing meson has no support for iss files
and uses custom logic to select only specific strings
from Lua and JSON files.

Even after this commit, POT updates should
thus still continue to use
2023-04-30 17:10:24 +02:00
Oneric 8c35b1d642 Integrate appdata.xml into meson build
It used to be genrated and installed by the old custom build system,
but apparently got lost in switching to meson.

Rename to instead of, since i18n otherwise gets
utterly confused failing to recognise the file type and both erroring
out with "no ITS rules found" during merge_file and failing to extract
any translatable strings.
Also drop underscores which were previously processed by intltool.

This doesn't yet automatically replace the release version and date
in the appdata file, but neither did the old build.

Note: while this slightly improves the situation, meson’s aegisub-pot
target is still missing many strings. should be used.
2023-04-30 03:09:56 +02:00
Oneric 2b33e45f23 Update links in appdata.xml 2023-04-30 03:09:56 +02:00
Oneric 66efa84eed Integrate desktop file translation into meson
meson’s i18n module get’s confused by .template and fails
to extract translatable strings, thus rename to

Note: while this slightly improves the situation, meson’s aegisub-pot
target is still missing many strings. should be used.
2023-04-30 03:09:56 +02:00
Oneric 429455263f Fix generation and translation of desktop file
a91c4f70c3 switched processing of the
desktop file from intltool to gettext-backed i18n.merge_file and dropped
leading underscores which used to be processed by intltool.

However, this commit omitted dropping the underscore from Keywords,
resulting in this field being stripped from the installed version.

Furthermore, was broken since it too relied on the
underscore meaning POT regeneration will now remove the desktop files
strings from translation files.
Since it was not added to po/POTFILES meson’s native aegisub-pot target
also doesn't add desktop file strings to the translation pool. Though,
this target still misses a lot of other strings as well and shouldn't be
used yet anyway.

This commit removes leftover underscores and reintegrates desktop file
strings into both Integration into aegisub-pot is done in a
follow-up commit.
2023-04-30 03:09:56 +02:00
arch1t3cht db0e79323f Merge branch 'vapoursynth' into feature 2023-04-29 21:28:36 +02:00
arch1t3cht 3d278547fe vapoursynth: Add Mac support 2023-04-29 21:24:14 +02:00
arch1t3cht ff20805ae6 Merge branch 'vector_clip_actions' into feature 2023-04-29 01:16:08 +02:00
arch1t3cht 20cc0b8077 perspective tool: Support drawings
This will not work in more complex cases like lines containing both text
and drawings, but it's correct in simpler ones.
2023-04-29 01:11:38 +02:00
arch1t3cht 9c2d6169c6 perspective tool: Fix uninitialized variable 2023-04-29 01:11:15 +02:00
arch1t3cht 82dffcb9f9 Disallow negative spacing in style editor again
Since it turns out that this is not supported by the renderer anyway,
see arch1t3cht/Aegisub#48 .
2023-04-27 16:02:26 +02:00
arch1t3cht 00e241d74b Merge branches 'video_panning_option' and 'bestsource' into feature 2023-04-23 15:39:41 +02:00
arch1t3cht 0c057ebddb bestsource: Unify some messages with ffms2's 2023-04-23 15:39:11 +02:00
arch1t3cht 0f13a75a42 video zoom: Fix reset command capitalization 2023-04-21 22:59:02 +02:00
arch1t3cht 18fd966bd9 Merge branch 'bugfixes' into feature 2023-04-21 16:38:55 +02:00
arch1t3cht 165cb14879 Add AppImage build on linux
This consists of a meson option that
- sets a flag to make Aegisub read paths relative to the executable
- makes meson set up the symlinks like AppRun and .DirIcon as following
  the AppDir format

and a CI workflow that builds with this option, installs to an AppDir
directory, and bundles it as an AppImage.

Modified from arch1t3cht/Aegisub#12 .

Co-authored-by: Fred Brennan <>
2023-04-21 16:23:01 +02:00
arch1t3cht 43d65b906b Also detect fonts used in drawings in font collector 2023-04-07 18:49:09 +02:00
arch1t3cht 26a5f00c8a Merge branch 'bugfixes' into feature 2023-03-28 08:40:58 +02:00
arch1t3cht 8633e2c4ae mac: Statically link ffms2
This is to make sure we're building the git version that fixes the
PAFF seeking regression and contains the workarounds for VPX/AV1.
2023-03-28 08:39:04 +02:00
arch1t3cht 1de8d04a43 Merge branches 'bugfixes' and 'vapoursynth' into feature 2023-03-24 20:31:07 +01:00
arch1t3cht 883a1b2a73 installer and ci: Throw more errors on failure
This makes it easier to notice when installer generation failed.
2023-03-24 20:30:17 +01:00
arch1t3cht 0d5063bf79 Ship en_US hunspell dictionaries on Windows and OSX
For now, this uses the same OpenOffice dictionaries that were used in
previous official releases, downloaded from
In the future this could be updated to some newer dictionary like

Fixes arch1t3cht/Aegisub#21.
2023-03-24 20:30:17 +01:00
LightArrowsEXE 178551071e make_keyframes: Set default format to GRAY8
This will allow clips with non-standard resolutions to be downscaled without any concerns.
2023-03-24 01:01:29 +01:00
arch1t3cht 9a7314015f vapoursynth: Unify capitalization 2023-03-24 01:01:29 +01:00
arch1t3cht af9d659c93 vapoursynth: Add try_get_keyframes function to 2023-03-24 01:01:29 +01:00
LightArrowsEXE 84d67c73b0 make_keyframes: Set default format to GRAY8
This will allow clips with non-standard resolutions to be downscaled without any concerns.
2023-03-16 15:14:08 +01:00
arch1t3cht 256ddab369 vapoursynth: Ship plugins on windows and add ensure_plugin function 2023-03-16 02:26:10 +01:00
arch1t3cht 61b8a16cd8 vapoursynth: Unify capitalization 2023-03-16 02:26:10 +01:00
arch1t3cht 041e9fc70c vapoursynth: Add try_get_keyframes function to 2023-03-16 02:26:10 +01:00
arch1t3cht e7e56ef5e0 Fix validation for perspective/lock_outer 2023-03-04 13:32:55 +01:00
arch1t3cht 5050bad8ac lua: Scroll large dialogs automatically 2023-03-04 12:52:46 +01:00
arch1t3cht d2c46f5dca bestsource: Forward error messages 2023-02-28 15:17:11 +01:00
arch1t3cht 798262ff1c Merge branch 'fixes' into feature 2023-02-25 12:33:15 +01:00
arch1t3cht 15d215f36d lua: Interact with clipboard on main gui thread
Fixes arch1t3cht/Aegisub#22 .
2023-02-25 12:31:27 +01:00
arch1t3cht fde3dd0dbf Merge branch 'fixes' into feature 2023-02-25 02:24:28 +01:00
arch1t3cht 7f52346f06 lua: Handle file dialogs completely on main gui thread
wx doesn't seem to like the dialogs being created on some other worker
thread, which makes file dialogs opened by lua scripts crash in various
ways on Linux. Doing everything on the main thread hopefully fixes this.

Fixes TypesettingTools/Aegisub#51 .
2023-02-25 02:22:13 +01:00
arch1t3cht 6f073c6a31 Merge branch 'vapoursynth' into feature 2023-02-24 01:42:58 +01:00
arch1t3cht 1f2eaaf6e4 vapoursynth: Show logged messages in progress window 2023-02-24 01:42:30 +01:00
arch1t3cht 097a0f45be vapoursynth: Remove file access checks
These are broken in some edge cases, such as smb mounts on Windows.
Paired with d96fc1f70d.
2023-02-24 01:42:30 +01:00
arch1t3cht 628d740108 vapoursynth: Add status dialog when running script 2023-02-24 01:42:30 +01:00
arch1t3cht ad38400ab9 vapoursynth: Improve default scripts and add utility functions
Add a utility library that wraps LWLibavSource and can parse its .lwi
file to obtain timecodes and keyframes. It also contains a function to
generate and save keyframes using WWXD or Scxvid. Update the default
scripts to use these functions.
2023-02-24 01:42:30 +01:00
arch1t3cht b5a646de66 Merge branch 'vapoursynth' (early part) into feature 2023-02-24 00:30:21 +01:00
arch1t3cht 8b605c8fb5 Merge branches 'workarounds', 'bestsource', 'misc', 'info', 'wangqr_gui', 'fixes' and 'avisynth' into feature 2023-02-24 00:29:28 +01:00
wangqr bf240c9770 Add Apply button to select lines dialog
Allow modifying selection without closing dialog.

Fix wangqr/Aegisub#49
2023-02-24 00:13:22 +01:00
wangqr c7d757b91e Save state of "show original"
Fix wangqr/Aegisub#41
2023-02-24 00:11:12 +01:00
arch1t3cht e425ce4d9e vapoursynth: Allow __aegi_timecodes to be a path to a timecodes file 2023-02-23 23:55:00 +01:00
arch1t3cht 29ba61e55d vapoursynth: Allow __aegi_keyframes to be a path to a keyframes file 2023-02-23 23:55:00 +01:00
arch1t3cht 384fc69208 vapoursynth: Allow script to supply timecodes, keyframes, and audio flag
These are read from the __aegi_timecodes, __aegi_keyframes, and
__aegi_hasaudio variables respectively.
2023-02-23 23:54:56 +01:00
arch1t3cht e994934e24 Link ffmpeg with dav1d to enable AV1 support.
The patched for dav1d just changes the include_directories
from 'include/dav1d' to 'include' and, while we're at it, removes the
pkg_config stuff to avoid a deprecation warning.

AV1 decoding is pretty broken in upstream ffms2, so point the wrap to a
fork that has some hack patches for it. BestSource works fine out of the
box, though.
2023-02-20 17:16:23 +01:00
arch1t3cht d399e44061 bestsource: Always get exact duration
Fixes arch1t3cht/Aegisub#27.
2023-02-13 17:05:05 +01:00
arch1t3cht 7485ae46a1 bestsource: Fix timecode computation

Fixes arch1t3cht/Aegisub#27.
2023-02-13 13:34:08 +01:00
arch1t3cht 1734f00d8a Don't assume a max length in fs::ShortName 2023-02-12 15:05:21 +01:00
arch1t3cht 6874419564 Make touch pad scroll in the subtitle grid smoother 2023-02-10 00:55:44 +01:00
arch1t3cht 9a9cc66b27 README: Add required vapoursynth plugins for default script 2023-02-09 12:50:49 +01:00
arch1t3cht d7e7c3a7f0 Set longPathAware in manifest 2023-02-09 02:36:39 +01:00
arch1t3cht 464c4f9f4e Add manifest as regen dependency 2023-02-09 02:36:39 +01:00
arch1t3cht 6704a8e57d avisynth: Remove file access checks
These are broken in some edge cases, such as smb mounts on Windows.
Paired with d96fc1f70d.
2023-02-08 17:41:31 +01:00
arch1t3cht d96fc1f70d Don't try other providers after FileNotFound error
Otherwise this can cause confusing error messages from unrelated
providers when simply opening an invalid path.
2023-02-08 17:37:44 +01:00
wangqr e4f0a9a510 Fix initial state of AudioTimingControllerDialogue
It should not be in alt-dragging mode by default.

Fix TypesettingTools/Aegisub#32
2023-02-08 00:50:48 +01:00
arch1t3cht c348f8582a vapoursynth: Add a preferred cache directory and clean it when necessary 2023-02-05 02:32:57 +01:00
arch1t3cht 32aaf6372c vapoursynth: Set path variables and import path in python 2023-02-05 02:28:06 +01:00
arch1t3cht 15f4da61d3 bestsource: Clean index cache when necessary 2023-01-31 02:47:02 +01:00
arch1t3cht 5dfa94d22d Fix missing comma in videoList
... ever wondered why you can't drag .webm files into Aegisub?
This is why.
2023-01-31 02:06:54 +01:00
arch1t3cht e2fb3a7e43 bestsource: Pin wrap
This is to fix upstream not compiling against ffmpeg 4.4 anymore.
2023-01-30 17:22:43 +01:00
arch1t3cht 66c90b7ed8 vfr: Ensure nonzero denominator 2023-01-30 01:56:52 +01:00
arch1t3cht 88867d402c vapoursynth: Default to 25fps when no clip fps set
This matches the behavior of the FFMS video provider.
2023-01-30 01:55:22 +01:00
arch1t3cht 79a0655eb8 Merge branch 'folding' into feature 2023-01-27 02:55:50 +01:00
arch1t3cht 57572e5686 Merge branch 'vector_clip_actions' into feature 2023-01-26 23:34:27 +01:00
arch1t3cht a632f5f7ee Revert "Merge branch 'vector_clip_actions' into feature"
This reverts commit bd4e79fdf9, reversing
changes made to 9d4a67b523.
2023-01-26 23:34:14 +01:00
arch1t3cht c6b901dfbe Merge branches 'bugfixes', 'workarounds', 'fixes', 'gui', 'xa2-ds', 'avisynth', 'vapoursynth' and 'video_panning_option' into feature 2023-01-26 23:12:07 +01:00
arch1t3cht 86dfadb852 Merge branch 'misc' into feature 2023-01-26 23:11:37 +01:00
arch1t3cht cd8169bdf2 Merge branch 'cibuilds' into feature 2023-01-26 23:05:17 +01:00
arch1t3cht 0485c1aaf0 ci: Run on every push
There's no monthly time limit anymore, so there's no harm in just
building on feature.
2023-01-26 23:02:49 +01:00
arch1t3cht 12a5050365 Point Yutils to fixed fork 2023-01-26 23:02:11 +01:00
arch1t3cht d860c710c0 Throw shit at the wall until it builds with boost 1.81
This is nothing more than duct tape, do not pull.
In the long run boost::filesystem should just be replaced with
std::filesystem (as done in tgoyne/Aegisub:cmake), but this would
complicate the history and cause merge conflicts for a bunch of pulls.
Hence this horrible temporary solution.
2023-01-26 22:56:53 +01:00
arch1t3cht 0d16753d0a Patch ffmpeg wrap to make it find the zlib subproject 2023-01-26 22:56:53 +01:00
arch1t3cht 5c065dc74e Revert "Patch ffmpeg wrap to compile with simd extensions"
Support for these has been added upstream now.
This reverts commit 77cc1a6b22.
2023-01-26 22:56:53 +01:00
arch1t3cht 5dd001388b Revert "ffmpeg wrap: pin version"
This reverts commit 74d75a568e.
2023-01-26 22:56:53 +01:00
arch1t3cht f6954ab903 Point ffi-experiments to fixed fork 2023-01-26 22:56:53 +01:00
arch1t3cht 36a18e5ba3 meson: revert icu detection in harfbuzz 2023-01-26 22:56:53 +01:00
arch1t3cht 60897b2327 meson: Set NDEBUG on release builds
The old MSVC build system also set this:
6f546951b4/build/standard-settings.props (L62)
2023-01-26 21:04:04 +01:00
arch1t3cht 642251b2dd Deduplicate automation autoload path
Fixes TypesettingTools/Aegisub#168
Fixes arch1t3cht/Aegisub#15
2023-01-26 20:52:20 +01:00
arch1t3cht 36e5275418 visual tools: Add perspective tool 2023-01-25 23:24:11 +01:00
arch1t3cht 352e41f19b video zoom: Fix zoom when script_res != video_res 2023-01-20 00:18:51 +01:00
arch1t3cht 4c2b47d5de visual tools: Fix grid in RotateXY tool
Fix the grid scaling when the video is not at 100% zoom, and scale the
grid with \fscx / \fscy .
2023-01-14 14:20:24 +01:00
arch1t3cht ddfd4501f0 visual tools: Add more tag get functions
Add getters for alignment, outline, shadow, font size, and the raw
extents of the text. Also handle overriding \xbord and \ybord correctly.
2023-01-14 14:18:04 +01:00
arch1t3cht 9cfc72bd83 visual tools: Add RemoveOverride function 2023-01-14 14:16:05 +01:00
arch1t3cht 8b142a05e5 visual tools: Add EndDrag and EndHold hooks 2023-01-14 14:14:42 +01:00
arch1t3cht bfdf01df9a visual tools: Add general interface for setting subtools 2023-01-14 13:56:21 +01:00
arch1t3cht f5a730fa45 avisynth: Only increase refcount when fully initialized
When Avisynth is not installed or not functional, this would otherwise
cause a crash when trying to initialize Avisynth more than once, since
after the first time the refcount would have been incrased anyway.
2023-01-14 00:13:47 +01:00
arch1t3cht 0d0ed49546 vapoursynth: Only set loaded when fully initialized 2023-01-13 23:52:27 +01:00
arch1t3cht 8fc301fad4 ci: Use GITHUB_TOKEN if available 2023-01-12 13:36:39 +01:00
arch1t3cht d08726606f meson: Also add regen dependencies for bitmaps 2023-01-10 21:47:29 +01:00
arch1t3cht c0f337a992 Allow '+' and 'E' in numbers when tokenizing drawings 2023-01-07 14:42:52 +01:00
arch1t3cht 74b9353038 Allow higher decimal precision in style editor
Also, allow negative fsp.
This doesn't change the behaviour of the SpinCtrl increment/decrement
buttons, just the precision that can manually be set. Small values of
fsp can be useful as a hack to disable all ligatures. Precise values of
fscx/fscy can be useful to compensate for anamorphic resolutions. The
other fields were made more precise for consistency.
2023-01-07 14:42:52 +01:00
arch1t3cht 15cca59679 Validate wxVariant type in hotkey CommandRenderer
This fixes a crash on Windows when double-clicking the draggable
separator between the column headers "Command" and "Description" in the
hotkey configuration dialog.
2023-01-02 15:29:00 +01:00
arch1t3cht 1bd426f69a folding: Switch to extradata for storage
This makes the internal juggling of fold data even more complicated, but
it has a number of advantages:
- Folds will preserved even when opening the file with Aegisub builds
  that don't know about folding.
- Folds will be preserved by automation scripts that re-insert every
- Folds do not break when adding or deleting lines in a text editor or
  some other editor, as long as the lines involving folds aren't
- In particular, merging changes using tools like git will not break
- Copy/pasting folds also keeps the folds to some extent. This is
  impossible to solve in full generality, but simple cases like
  cut/pasting a folded section somewhere else work, as long as the file
  isn't saved in between.
- This will give automation scripts full access to folding without
  needing to set up any additional API functions.
2023-01-02 02:40:19 +01:00
arch1t3cht 3b02a199f0 vapoursynth: Fix default argument for color range
Unlike the other arguments for the resize function, "range_in" does not
use the same format as in the frame props. A frame prop _Range=1 means
limited, while an argument range_in=1 means full range.
2023-01-02 02:13:04 +01:00
arch1t3cht abe2a81c99 folding: Fix crash when clicking fold column header 2022-12-11 18:53:36 +01:00
arch1t3cht 6d83aa9101 Update CI actions versions 2022-12-01 21:36:09 +01:00
arch1t3cht 74d75a568e ffmpeg wrap: pin version 2022-11-30 22:58:08 +01:00
arch1t3cht 3b7cb30e1f Raise size limit of dummy video in config dialog
This is to facilitate some tricks with tracing rendered subtitles in
programs like GIMP with higher accuracy. Use at your own risk.
2022-11-30 22:35:27 +01:00
arch1t3cht cba8d3644f Remove "Video Panning" option
It's probably stable enough at this point, and hiding it behind an
option just creates more confusion than it prevents.
2022-11-17 17:29:18 +01:00
arch1t3cht b3b4b96238 Fix HDD audio cache provider when channels > 1 2022-11-15 18:31:19 +01:00
arch1t3cht c0edbb2710 Fix syntax highlighting with empty clip 2022-11-09 09:36:45 +01:00
arch1t3cht c8ff1bc960 Clear column width cache after updating grid style
Fixes arch1t3cht/Aegisub#11
2022-11-08 00:49:42 +01:00
arch1t3cht fca902b0a1 CI-Build 2022-11-04 2022-11-04 00:48:42 +01:00
arch1t3cht bd4e79fdf9 Merge branch 'vector_clip_actions' into feature 2022-11-04 00:46:15 +01:00
arch1t3cht b1a9867f16 Visual perspective tool: First functioning version 2022-11-04 00:45:32 +01:00
arch1t3cht 277d1e15cd CI-Build 2022-11-02 2022-11-03 00:03:36 +01:00
arch1t3cht 9d4a67b523 Merge branches 'info', 'video_panning_option', 'fixes', 'misc', 'vapoursynth' and 'wangqr_gui' into feature 2022-11-03 00:03:23 +01:00
arch1t3cht 7ddfef7517 Add syntax highlighting for drawings and vector clips
The highlighting distinguishes drawing commands from coordinates, and
colors x and y coordinates in different colors to make coordinates
easier to visually parse. Furthermore, in cubic Bezier curves, it
underlines the coordinates which corresponds to endpoints of the curves.
2022-11-02 23:58:01 +01:00
arch1t3cht b7f3e19e00 vapoursynth: Don't update script colorspace if colorspace unknown
Aegisub will automatically override the YCbCr Matrix field of the
current file's Script Properties with the video's reported color space.
The FFMS2 provider guesses a color space for all videos, but we don't
do this for Vapoursynth. Thus, we now disable this overriding whenever
the colorspace isn't known.
2022-11-02 23:51:15 +01:00
arch1t3cht a3b131a312 vapoursynth: Reset locale after initializing
On Windows, Python changes the application's locale upon being called,
which will break wxwidgets, causing various assertion error dialogs or
even crashes (for example when interacting with any sort of float edit
control). Saving the locale and restoring it afterwards seems to be
the only really possible way to remedy this.
2022-11-02 23:51:10 +01:00
arch1t3cht 399042e9e9 Revert "fix"
This was a test commit I never meant to push...

This reverts commit cc9d13d21a.
2022-11-02 23:48:59 +01:00
arch1t3cht 4edd619229 README: Typo fix 2022-11-02 23:08:36 +01:00
arch1t3cht 28db5d31ce video zoom: Fix crash on windows when making detached video too small 2022-11-02 23:07:55 +01:00
arch1t3cht 6cc22750c1 Revert "video zoom: Fix crash on windows when making detached video too small"
This reverts commit b38493ee68.
2022-11-02 23:07:03 +01:00
arch1t3cht 2ee6f6e904 Fix overscan mask being half as thick as it should be
The percent values used for the overscan masks follow the BBC's
guidelines, as in .
However, these measure the per-side width as opposed to the total
percentage of width/height being cut off. Thus, they should not be
divided by two when drawing the mask.
2022-11-02 21:57:57 +01:00
arch1t3cht 04ccc15fd4 Fix overscan mask with DPI scaling 2022-11-02 21:57:57 +01:00
arch1t3cht a0d381019f README: wangqr_gui and some general info 2022-11-02 19:50:25 +01:00
arch1t3cht 245cc68afa Fix FrameAtTime computation for CFR
The new formula is just the inverse function of the CFR part of
the TimeAtFrame function.

To see how the previous implementation was faulty, see either the added
tests, or
- In Aegisub, open a dummy video with a frame rate of 23.976
- Make a subtitle event with start time 04:44.41
- Double-click the line to (supposedly) seek to its first frame
- This will seek one frame earlier than it should, and the event will
  not be displayed on the resulting frame.
2022-11-02 02:19:38 +01:00
arch1t3cht 3583e57ddc vapoursynth: use exact fraction for frame rate 2022-11-02 02:18:52 +01:00
arch1t3cht 962295cf1e vapoursynth: Fix offset in audio block's first frame 2022-11-02 02:18:52 +01:00
arch1t3cht a5aa4eca29 vapoursynth: Properly pass through script errors 2022-11-02 02:18:52 +01:00
arch1t3cht 231706239f CI-Build 2022-10-11 2022-10-11 19:09:43 +02:00
arch1t3cht 2bcf0c7555 Merge branch 'video_panning_option' into feature 2022-10-11 18:55:11 +02:00
arch1t3cht b38493ee68 video zoom: Fix crash on windows when making detached video too small 2022-10-11 18:54:55 +02:00
arch1t3cht 0e89f32cfb video zoom: Fix detached video with DPI scaling 2022-10-11 18:31:46 +02:00
arch1t3cht 17831ca0f4 video zoom: Fix visual tools with DPI scaling 2022-10-11 15:15:40 +02:00
arch1t3cht b8b85eb580 Merge branch 'wangqr_gui' into feature 2022-10-10 01:43:27 +02:00
IbarakiKasen 049c1c08d1 Fix wxFlexGridSizer flex grow
Fix wangqr/Aegisub#143
2022-10-10 01:17:35 +02:00
wangqr e69c4e9a86 Expand all widgets in SubsEditBox to get a consistent height 2022-10-10 01:17:35 +02:00
wangqr 53cc316e6f Expand layer SpinCtrl a little
to compensate wxMac bug with GetSizeFromText
2022-10-10 01:17:35 +02:00
wangqr d55922d3cf Don't shrink the size of layer SpinCtrl on GTK3 2022-10-10 01:17:35 +02:00
wangqr 7fe4382d38 Remove hardcoded height of the slider
Before this the slider is only partially displayed
2022-10-10 01:17:35 +02:00
wangqr ed15252d69 Add workaround for wrong initial wxTextCtrl size in about dialog

Fix wangqr/Aegisub#19
2022-10-10 01:17:35 +02:00
wangqr af7cbb7730 Set the height of sub box to the same as secondary_editor
The secondary_editor is a wxTextCtrl, whose height is calculated from 2 rows of text. Using this height gives better consistency on screens with different DPIs, instead of using hard coded value like 50px
2022-10-10 01:17:35 +02:00
wangqr 0e0e04c943 Set the height of sub box back to 50px
Revert the change made in ad15c53fb1.
As a temporary solution for wangqr/Aegisub#4.
2022-10-10 01:17:35 +02:00
wangqr 6cb1a49943 Fix High DPI issue on GTK
* Use icon size in the config
2022-10-10 01:17:35 +02:00
wangqr 5f3757525a Add DPI awareness
* Removed most hard coded wxSize
* Sub edit box now have DPI aware icons

Co-authored-by: sepro <>
2022-10-10 01:17:34 +02:00
sepro e2ef1eb77f windows: enable DPI awareness in manifest 2022-10-10 01:17:34 +02:00
arch1t3cht cc9d13d21a fix 2022-10-10 01:17:34 +02:00
sepro 1469f1499b meson: apply custom manifest on windows
Co-authored-by: arch1t3cht <>
2022-10-09 01:30:39 +02:00
arch1t3cht 2f31bfc565 CI-Build 2022-09-27 2022-09-27 23:50:14 +02:00
arch1t3cht ccc5f44a5f Merge branches 'info', 'bugfixes', 'workarounds', 'fixes', 'folding', 'bestsource', 'avisynth' and 'vapoursynth' into feature 2022-09-27 23:37:18 +02:00
arch1t3cht 40a9344d44 vapoursynth: Check if file exists before creating provider
Since FileNotFound exceptions don't abort the provider search, opening
an invalid path would show errors such as "vapoursynth not found" when
VapourSynth wasn't installed, even if VapourSynth wasn't selected as the
default video provider.
2022-09-27 23:17:54 +02:00
arch1t3cht febce3ecdc vapoursynth: Add configurable default script
This default script will be executed to load any file whose file name
extension is not .py or .vpy .

The gui code for setting the default script is still a bit wonky as it
doesn't fit the rest of the preferences pages nicely, but it works for
2022-09-27 23:14:30 +02:00
arch1t3cht fe77a1a0b8 avisynth: Check if file exists before creating provider
Since FileNotFound exceptions don't abort the provider search, opening
an invalid path would show errors such as "avisynth not found" when
Avisynth wasn't installed, even if Avisynth wasn't selected as the video
2022-09-27 22:59:01 +02:00
arch1t3cht 961b3dfbee README: workarounds branch 2022-09-27 22:40:04 +02:00
arch1t3cht 22fb4c6e8c Move luabins back to vendor
Workaround for TypesettingTools/Aegisub#162
2022-09-27 16:54:15 +02:00
arch1t3cht 38efde92e3 folding: Fix selections jumping around 2022-09-14 11:31:50 +02:00
arch1t3cht a394aefd1a Fix crash when cancelling automation scripts
When cancelling an automation macro from the progress dialog, the dialog
throws a UserCancelException. If the macro still runs to the end
afterwards (instead of calling aegisub.cancel or causing an exception),
the two return values are left on the stack. This causes assertion errors
due to check_stack when those are enabled.
2022-09-13 22:41:18 +02:00
arch1t3cht 7ea1d650a9 bestsource: Fixes to fps and colorspace conversion
Some of these got lost in the process before.
For now, default to 709 if the colorspace is unkown. More detailed
colorspace guessing can be added in the future.
2022-08-29 11:11:05 +02:00
arch1t3cht 3fedc88641 Include strings.rc as resource file on Windows
This was included here:
6f546951b4/build/Aegisub/Aegisub.vcxproj.filters (L1094)
in the MSVC build.
2022-08-28 01:38:41 +02:00
arch1t3cht fb7f4bdd9a installer: Bump VCRedist to 17 (2015 - 2022)
The windows-latest platform in the CI already uses VS2022, so let's bump
the VCRedist to match.
2022-08-28 00:36:51 +02:00
arch1t3cht 7721ae689f Fix Avisynth paths for portable build
Also apply the change in 75db50b to the portable build.
The .mo files, on the other hand, already work as they are.
2022-08-26 15:17:59 +02:00
arch1t3cht 0dddddf96b CI-Build 2022-08-23 2022-08-23 20:21:29 +02:00
arch1t3cht bb16cdf7fe Merge branches 'folding', 'misc' and 'bestsource' into feature 2022-08-23 20:16:55 +02:00
arch1t3cht 9ea7808a30 bestsource: Mark video provider as slow
Looks like this wasn't clear enough, so let's make it clear to users
that BestVideoSource should only be used if absolutely necessary.
2022-08-23 20:13:45 +02:00
arch1t3cht 6b43e643cb Merge branch 'wangqr_time_video' into feature 2022-08-23 19:59:24 +02:00
arch1t3cht c7c874acc4 Add commands to reload audio or video
This is mostly useful for reloading Avisyth or VapourSynth scripts.
2022-08-23 19:53:40 +02:00
arch1t3cht b2fbc84335 AlignToVideo: Reexport the new icon files
Some metadata of these files was triggering the assertion errors in #6 .
Reexporting the icons using ffmpeg fixed this.

Fixes #6 .
2022-08-23 19:30:41 +02:00
arch1t3cht c8d4df1355 Add option to sort subtitles by text 2022-08-23 16:11:23 +02:00
arch1t3cht 9b920c7892 folding: Always write fold data to file 2022-08-23 15:55:26 +02:00
arch1t3cht ec23330b09 CI-Build 2022-08-22 2022-08-23 04:54:35 +02:00
arch1t3cht 2e78b9cfde Merge branch 'video_panning_option' into feature 2022-08-23 04:51:41 +02:00
arch1t3cht 98d476102e video zoom: Fix aspect ratio forcing
Do this by partially reverting the changes to UpdateSize in favor of
just multiplying by videoZoomValue *after* setting all the window sizes.
2022-08-23 04:48:33 +02:00
arch1t3cht 1d1a1d2ad7 CI-Build 2022-08-22 2022-08-22 02:26:38 +02:00
arch1t3cht 1dbd3b3cc7 Merge branches 'fixes' and 'ffmpeg_build' into feature 2022-08-22 02:26:03 +02:00
arch1t3cht 77cc1a6b22 Patch ffmpeg wrap to compile with simd extensions
This is very hacky and only intended to get these extensions working on
the Windows CI builds.
2022-08-22 02:25:25 +02:00
arch1t3cht 5a0bfdd775 Remove unnecessary flags in SelectedChoices dialog
These alignment flags would cause an assertion error
"Horizontal alignment flags are ignored in horizontal sizers"
when opening the dialog (mainly when importing styles from another
As the assertion error says, the flags are ignored anyway, so they're
safe to remove.
2022-08-21 02:31:33 +02:00
arch1t3cht 7f7f5c8385 Merge branch 'misc' into feature 2022-08-19 21:18:48 +02:00
arch1t3cht 732c5c7654 Copy subitles: Fix wxBitmap usage
UseAlpha turned out to be unnecessary and doesn't even exist in some
wxWidgets ports.
2022-08-19 21:17:29 +02:00
arch1t3cht b52d1d0973 CI-Build 2022-08-19 v2 2022-08-19 02:35:05 +02:00
arch1t3cht 3b8cc6deb1 Merge branches 'misc', 'xa2-ds' and 'info' into feature 2022-08-19 02:31:59 +02:00
arch1t3cht 918c1e23a3 README: misc branch and compile instructions 2022-08-19 02:28:27 +02:00
arch1t3cht aadf6b32b9 Add option to copy or save subtitles with transparent background 2022-08-19 01:46:19 +02:00
arch1t3cht 819d90e9b0 Stereo playback on Linux audio players
After the audio provider rework, adjust the audio players to not
use the int16 mono downmixed audio unless necessary. Furthermore,
the pulseaudio-based player now controls the volume directly through
pulseaudio instead of by modifying the buffer. This also reduces latency
when changing the volume.

The entire set of GetAudio functions is quite messy now. After wangqr's
audio rework, it was split into GetAudio and GetInt16MonoAudio
functions, but now volume scaling is also necessary. Really, this should
go back to a type constructor based system with audio players being
allowed to choose what properties out of mono / 16 bytes / int samples /
volume they need.
2022-08-18 22:48:40 +02:00
arch1t3cht 34d339c187 CI-Build 2022-08-18 2022-08-18 18:12:06 +02:00
arch1t3cht 8169f0c6dc Merge branch 'xa2-ds' into feature 2022-08-18 18:10:26 +02:00
arch1t3cht 144860eb59 Remove format assertion after audio rework 2022-08-18 18:09:32 +02:00
arch1t3cht 00ee2b1ab8 CI-Build 2022-08-16 v2 2022-08-17 03:12:56 +02:00
arch1t3cht 50fb12d433 Merge branches 'fixes' and 'info' into feature 2022-08-17 03:09:39 +02:00
arch1t3cht 1e958cd1a1 Typo fix 2022-08-17 02:59:15 +02:00
arch1t3cht b697ad6ca0 Remove access checks in windows fs operations
These were giving false negatives on samba shares, which broke the font
collector. Windows also recommends to not use access checks in these
cases, and instead just see if the operations succeeds or not.
2022-08-17 02:54:09 +02:00
arch1t3cht 860a090de8 CI-Build 2022-08-16 2022-08-16 21:10:03 +02:00
arch1t3cht 3e5b985c7b Merge branch 'info' into feature 2022-08-16 21:04:46 +02:00
arch1t3cht e7e87f5584 Merge branch 'xa2-ds' into feature 2022-08-16 21:04:44 +02:00
arch1t3cht 0b8f5ad8fa XAudio PR: Revert some changes and fix on linux
Mostly synchronizing with the updates made to the ffmpeg audio provider
and removing the CMakeLists.txt
2022-08-16 21:03:59 +02:00
arch1t3cht afbd626e40 README: New audio+video interfaces 2022-08-16 20:54:49 +02:00
arch1t3cht 17d827c88a Merge branch 'misc_dc' into feature 2022-08-16 19:59:42 +02:00
arch1t3cht 6cdf360e76 Add downmix option on OSX
This fixes wangqr's commit dabd9f that adds an option to enable or
disable downmixing
2022-08-16 19:58:11 +02:00
arch1t3cht 24ac0647ac Merge branch 'vapoursynth' into feature 2022-08-16 19:57:22 +02:00
arch1t3cht ff43f3d601 vapoursynth: Add audio source 2022-08-16 19:22:54 +02:00
arch1t3cht 4a5a212f35 bestsource: Switch to GetPackedAudio()
After vapoursynth/bestsource#7 , BestSource now has a function to
get the packed audio instead, so we just use that directly.
2022-08-16 19:22:54 +02:00
arch1t3cht 3f298bf03a Add vapoursynth video provider 2022-08-16 19:22:54 +02:00
arch1t3cht 6af0b41f47 bestsource: Add audio provider 2022-08-16 19:22:54 +02:00
arch1t3cht 70fd08aabe bestsource: Expose some options 2022-08-16 19:22:54 +02:00
arch1t3cht e41647c78c bestsource: Detect audio and color space 2022-08-16 19:22:54 +02:00
arch1t3cht 4c6e3527d4 bestsource: Switch to manual sws_scale
This was to work with ffmpeg 4.4, but it also saves one frame copy
operation. It does, however, lose the slice threading.
2022-08-16 19:22:54 +02:00
arch1t3cht e4261faf73 bestsource: Add jannson wrap 2022-08-16 19:22:54 +02:00
arch1t3cht 33b9a6e395 Add bestsource video provider
Co-authored-by: Asada shinon <>
2022-08-16 19:22:54 +02:00
arch1t3cht 44888d9b70 Merge branch 'color_picker_fix2' into feature 2022-08-16 16:09:13 +02:00
arch1t3cht 25bd040494 Fix color picker option 2022-08-16 16:07:25 +02:00
arch1t3cht 64ecc490be Merge branch 'fixes' into feature 2022-08-16 15:51:37 +02:00
arch1t3cht fb24bcda6d Delete CMakeLists
The file was mistakenly added when pulling wangqr's "time to video"
feature. I fixed the branch, but instead of merging the whole branch
again, let's just delete the file here.
2022-08-15 21:23:42 +02:00
wangqr d75e49653a Fix syntax error in e2ea84541f 2022-08-15 21:01:09 +02:00
Oneric 57841a0a34 AlignToVideo: Handle tolerance = 0 correctly
Checking if the diff is '>' instead of '>=' will always fail if
tolerance=0, even if the colours are identical. This will cause the line
to get a startime greter than its end time, which is not desireable.

Rounding errors and limits of floating type precision might still affect
the comparison. An additional sanity check before calculation is added
to ensure the selected position and colour match within tolerance.
This allows us to refactor the search code to never check the starting
frame and guanrantees valid timings with start<end even with
rounding errors.
2022-08-15 21:01:09 +02:00
Oneric f1cfd480c4 AlignToVideo: Improve rgb->lab precision 2022-08-15 21:01:09 +02:00
Oneric 2300988613 dialog_align: Remove point at the end of the tooltips
No other tooltips end with points, even if they're a sentence.These
ones aren't even sentences.
Also updates all *.po files accordingly, with an hacked in
POT-Creation-Date due to issues with
2022-08-15 21:01:09 +02:00
wangqr b2ba1feb28 Submit "align to video" on double click
Fix wangqr/Aegisub#34
2022-08-15 21:01:09 +02:00
wangqr 60dcc35830 Remove the trailing period in help text of time/align
Fix wangqr/Aegisub#7
2022-08-15 21:01:09 +02:00
wangqr 2b3df72c75 Fix missing config option for Align on macOS 2022-08-15 21:01:09 +02:00
wangqr 37380658bb Fix errors in AlignToVideo
* Call TimeAtFrame with correct parameter
* Fix syntax error
2022-08-15 21:01:09 +02:00
Charlie Jiang cc8e857849 Merge remote-tracking branch 'origind-dev/master'
Add align to video function
2022-08-15 21:01:09 +02:00
arch1t3cht 9ebe154964 Fix width of lua float edits
Float edits with a spinner are by default sized to fit their full
min-max range of possible values, so this makes min and max default to 0
and 100 (like it'd done internally in wx) instead of -DOUBLE_MAX and

Note that this does change the behavior of lua dialogs, but does not
contradict existing documentation or specification. It should only
affect scripts who either disobey the specification by specifying only
one value out of max/min, or scripts displaying these large float edits
by specifing a step, but no max or min.
2022-08-14 16:24:50 +02:00
arch1t3cht 3fb2eacf95 CI-Build 2022-08-13 2022-08-13 23:04:01 +02:00
arch1t3cht 53466be0ca Merge branch 'avisynth' into feature 2022-08-13 23:03:33 +02:00
arch1t3cht ad443dd118 avisynth: Properly destruct the IScriptEnvironment
Starting with AVISYNTH_INTERFACE_VERSION=5, this is how script
environments should be deleted. The previous code was causing crashes
when unloading AviSynth in certain scenarios, such as when failing to
open a file due to an incorrect path.
2022-08-13 22:53:58 +02:00
arch1t3cht 95bd0edbdd Merge branch 'lua_api' into feature 2022-08-13 21:00:21 +02:00
arch1t3cht 0376c56a95 Lua docs: Typo fix 2022-08-13 21:00:13 +02:00
arch1t3cht ce1b3a0158 avisynth: Validate downmix option
Because... let's maybe not let users make Aegisub call arbitrary
symbols in avisynth.dll/so just by editing the config.json.
2022-08-13 01:06:24 +02:00
arch1t3cht fe285678a3 avisynth: Allow compilation on Linux
Co-authored-by: wangqr <>
2022-08-13 01:06:24 +02:00
Ristellise 6906b6e5d7 [Shinon] Enable Directsound2 player to use more than 1 channel audio.
- DS2 Player has a similar structure to XAudio, so I don't see any reason why not to enable 1 channel+ audio.
 - Haven't tried with 5.1 channel sources but I believe it should be the same as 2 channel (As in, Directsound will downmix the audio to 2 channel)
 - Moved the volume setting to using the player directly and from some quick audio tests, -10000 is too soft. I tried with -5000 instead which seems to be alright.
2022-08-11 12:28:35 +08:00
Ristellise 994e50048a Finish up XAudio with a round of bugfixes 2022-08-10 21:23:56 +08:00
Ristellise fd28458ed8 Implement wangqr Audio Changes:
- To allow for XAudio2 to work properly, we need to rework how does provider work since they only are used to be able to take in mono audio.
 - Other providers have been dumbed down to accept single channel audio since originally aegisub only accepted 1 channel audio.
 - has been modified to accommodate for xaudio, as we currently don't accept redistributable forms of xaudio, we need to work around the WinNT version.
 - There has been 1 more fix to res.rc to allow for compiling on non tagged releases.
2022-08-10 21:09:41 +08:00
Ristellise 3dfea0c315 Add XAudio2 2022-08-10 16:31:02 +08:00
arch1t3cht 80e8ad0103 Merge branch 'folding' into feature 2022-08-08 16:40:24 +02:00
arch1t3cht 663112ba03 folding: Don't drop folds starting at the very first line 2022-08-08 16:38:43 +02:00
arch1t3cht 31271676b3 CI-Build 2022-08-07 2022-08-08 02:21:40 +02:00
arch1t3cht 17d50d49ef Merge branch 'lua_api' into feature 2022-08-08 02:19:40 +02:00
wangqr e2a49b3313 Avisynth audio provider: add option to allow no downmix 2022-08-08 01:38:20 +02:00
wangqr 691ab820b8 Handle exceptions from AviSynthWrapper ctor 2022-08-08 01:38:01 +02:00
sepro 8e1cc6228e Add automation function to get frame 2022-08-08 01:30:15 +02:00
arch1t3cht bde149fd30 lua: Function returning if the file is modified 2022-08-08 01:00:08 +02:00
arch1t3cht 4e8c02d38f CI-Build 2022-08-01 2022-08-01 23:24:30 +02:00
arch1t3cht e8493975e2 Merge branch 'lua_api' into feature 2022-08-01 23:24:16 +02:00
arch1t3cht 64ba5b1e36 Merge branch 'info' into feature 2022-08-01 22:15:34 +02:00
arch1t3cht 8dbf6a4fb7 README: lua_api, wangqr_time_video, and the zlib linker bug 2022-08-01 22:15:22 +02:00
arch1t3cht 69d79ac0cf Merge branch 'wangqr_time_video' into feature 2022-08-01 22:09:29 +02:00
arch1t3cht 84d90ce80b Merge branch 'video_panning_option' into feature 2022-08-01 21:56:24 +02:00
wangqr c232ef6bb6 Fix syntax error in e2ea84541f 2022-08-01 21:43:26 +02:00
Oneric 61c6303a14 AlignToVideo: Handle tolerance = 0 correctly
Checking if the diff is '>' instead of '>=' will always fail if
tolerance=0, even if the colours are identical. This will cause the line
to get a startime greter than its end time, which is not desireable.

Rounding errors and limits of floating type precision might still affect
the comparison. An additional sanity check before calculation is added
to ensure the selected position and colour match within tolerance.
This allows us to refactor the search code to never check the starting
frame and guanrantees valid timings with start<end even with
rounding errors.
2022-08-01 21:43:26 +02:00
Oneric 7a729532b4 AlignToVideo: Improve rgb->lab precision 2022-08-01 21:43:26 +02:00
Oneric e098342f54 dialog_align: Remove point at the end of the tooltips
No other tooltips end with points, even if they're a sentence.These
ones aren't even sentences.
Also updates all *.po files accordingly, with an hacked in
POT-Creation-Date due to issues with
2022-08-01 21:43:24 +02:00
wangqr b5e7bbc5ad Submit "align to video" on double click
Fix wangqr/Aegisub#34
2022-08-01 21:43:17 +02:00
wangqr 42248eabad Remove the trailing period in help text of time/align
Fix wangqr/Aegisub#7
2022-08-01 21:43:17 +02:00
wangqr 68166c7581 Fix missing config option for Align on macOS 2022-08-01 21:43:17 +02:00
wangqr c71e140c41 Fix errors in AlignToVideo
* Call TimeAtFrame with correct parameter
* Fix syntax error
2022-08-01 21:43:17 +02:00
Charlie Jiang 3dcab8b9bd Merge remote-tracking branch 'origind-dev/master'
Add align to video function
2022-08-01 21:43:15 +02:00
arch1t3cht c07a648270 Add options to commit or reverse video zoom 2022-08-01 21:21:24 +02:00
arch1t3cht fa33b07c7f Add option toggling behaviour of Ctrl+Zoom 2022-08-01 21:00:53 +02:00
arch1t3cht feab1a5663 Add documentation for text selection api 2022-08-01 20:48:15 +02:00
arch1t3cht b61f8946c1 Merge branch 'folding' into feature 2022-08-01 20:06:24 +02:00
arch1t3cht fd1a92d627 Folding: Fix default hotkeys 2022-08-01 20:05:55 +02:00
arch1t3cht c0fa794e45 Lua: Functions to set text selection and cursor
Putting this logic for delaying changes in the TextSelectionController
isn't the cleanest, but all attempts at saving this state somewhere in
the Lua API instead turned out even worse. Also, the logic for inverted
selections probably does belong in there.
2022-08-01 19:56:53 +02:00
arch1t3cht 4a928674cd Merge branch 'folding' into feature 2022-07-31 21:31:44 +02:00
arch1t3cht 7c92e6bbd6 Folding: Dont error on missing _foldinfo 2022-07-31 21:31:34 +02:00
arch1t3cht d0c8ffd1af CI-Build 2022-07-30 2022-07-30 13:47:56 +02:00
arch1t3cht 4b9c50a702 Merge branch 'vector_clip_actions' into feature 2022-07-30 13:46:04 +02:00
arch1t3cht af009c4ce7 Make line tool the default vector clip tool again 2022-07-30 13:45:49 +02:00
arch1t3cht 32dda63971 Merge branch 'misc_dc' into feature 2022-07-30 13:07:42 +02:00
arch1t3cht a6af313cf2 Merge branch 'info' into feature 2022-07-30 13:06:58 +02:00
arch1t3cht a37f84215d Typo fix 2022-07-30 03:36:33 +02:00
arch1t3cht 9177943c76 Update README: ffms2 and misc_dc 2022-07-30 01:51:46 +02:00
Asada shinon ba3a3dc80a Parse mixin lines as template lines 2022-07-30 00:57:15 +02:00
arch1t3cht aeaab655eb Fix segfault when stereo downmixing 2022-07-30 00:45:49 +02:00
Ristellise f06e42a82e [Shinon] Change Mono Downmixing to Stereo Downmixing 2022-07-29 23:21:55 +02:00
wangqr dabd9f699f Add option to downmix FFMS audio
When enabled, restore FFMS to old behavior, downmixing auduo to S16 mono. This can reduce cache usage.

Fix wangqr/Aegisub#31
2022-07-29 23:18:56 +02:00
Asada shinon d0efa0494a Save vector clips with two decimal places
Co-authored-by: arch1t3cht <>
2022-07-29 21:50:10 +02:00
Asada shinon 58a6cf4793 Added new hotkey command to reload current font provider. 2022-07-29 20:51:37 +02:00
arch1t3cht 32fc7abd2d Explain the problems with adding new forks 2022-07-27 17:06:32 +02:00
arch1t3cht 58d6fa456e CI-Build 2022-07-27 2022-07-27 15:28:12 +02:00
arch1t3cht 11b5a80618 Merge branch 'folding' into feature 2022-07-27 15:27:04 +02:00
arch1t3cht ca462c2a24 Merge branch 'info' into feature 2022-07-27 15:26:37 +02:00
arch1t3cht 0926f84d0e Merge branch 'spectrum-frequency-mapping' into feature 2022-07-27 15:26:36 +02:00
arch1t3cht 8ca6ec1884 Merge branches 'vector_clip_actions' and 'color_picker_fix2' into feature 2022-07-27 15:26:34 +02:00
arch1t3cht 9cc3fe9e71 Merge branches 'video_panning_option', 'bugfixes' and 'avisynth' into feature 2022-07-27 15:26:33 +02:00
arch1t3cht e65e55833c Fix compilation for older C++ 2022-07-27 15:23:47 +02:00
arch1t3cht 818fcd51f4 Folding: Toggling folds by clicking the indicator 2022-07-27 15:23:47 +02:00
arch1t3cht 2176954aee Folding: Pass fold data through Lua
This way, automation scripts won't nuke the fold data on any lines they
This is done as userdata for now, so scripts that don't know what
they're doing don't break the folds even further. If scripts get more
access to folds, it should be with a safer and simpler API.
2022-07-27 15:23:47 +02:00
arch1t3cht 56cc1a6873 Add line folding
Line folds are managed using metadata of AssDialogue elements, and
saved in the project properties. They only affect the appearance of the
subtitle grid, and have no impact on other line operations.
2022-07-27 15:23:47 +02:00
arch1t3cht 1772dd17ae Use std::this_thread everywhere
The previous logic wouldn't compile on linux using clang.

With the meson build requiring c++14, there's no need for platform
specific code. Really, the entire agi::util::sleep_for function could be
removed entirely, but I'll keep the patch minimal for now.
2022-07-27 15:20:03 +02:00
arch1t3cht 4f9b23ab1f Readme 2022-07-27 02:00:23 +02:00
arch1t3cht 2234068202 Allow vertical audio zoom with Shift+Mouse Wheel 2022-07-26 23:38:27 +02:00
arch1t3cht ff46b860a2 Add option toggling behaviour of Ctrl+Zoom 2022-07-20 14:38:31 +02:00
arch1t3cht 7ea9b95fe0 Clean up pointer code
The previous one was remnant of scrapped code.
2022-07-19 02:45:04 +02:00
arch1t3cht 2c296afdb8 Add option to restrict color picker to window 2022-07-19 02:41:50 +02:00
arch1t3cht 238dbb386d Restrict color picker's screenshot to window
This fixes issues like Aegisub/Aegisub#264 with taking
screenshots on linux, especially with wxgtk3 or wayland.
2022-07-18 20:21:04 +02:00
arch1t3cht eb07b3f9b8 Show hotkeys for vector clip tools
Move the function to generate toolbar tooltips listing hotkeys to the
command class, so it can be used outside of toolbar.cpp .
2022-07-12 16:54:04 +02:00
arch1t3cht 7da4493a0f Use command metadata for vector clip toolbar
This cuts down on the data duplication for the command names and help
texts, at the expense of copying a bit of code from the general toolbar

Modifying the toolbar Populate() function to also add additional buttons
appears very hard or impossible.
2022-07-12 16:49:22 +02:00
arch1t3cht 10d233d3e2 Add bindable commands for visual vector clip tools 2022-07-12 16:49:22 +02:00
arch1t3cht 77af0c40dc Use public enum for visual clip tool modes 2022-07-12 16:49:22 +02:00
arch1t3cht 86354050f3 meson: Use depend_files for files in respack manifest 2022-07-10 23:00:52 +02:00
arch1t3cht ba0db4da70 Also add Video Pan option on OSX 2022-07-10 22:57:55 +02:00
arch1t3cht 21591b3e88 meson: Use depend_files for files in respack manifest 2022-07-07 10:33:36 +02:00
Eli Schwartz 8336c7d97c meson: use best practices lookup for iconv support
Meson 0.60.0 adds support for an "iconv" dependency that always does the
right thing for you, so that you don't need to think about it. It also
has some side advantages:
- you can do dependency fallback, and --force-fallback-for=iconv works
- it logs one line, not two, and that is "dependency found? yes or no"

Since Aegisub doesn't mandate the use of such new versions of Meson, we
cannot assume the dependency works. Instead, adapt to the version of
Meson being used: on new enough versions of Meson, use the new
dependency, but on older versions of Meson, use the pre-existing logic,
which isn't as nice but has been producing correct results so far.
2022-07-07 00:08:24 -07:00
arch1t3cht e644227e95 avisynth: Remove option to allow ancient versions
- This refers to AviSynth < 2.5.6, which is from before 2005
- With the current setup (using GetAVSLinkage, these versions wouldn't
  work anyway)
- The latest AviSynthPlus is bundled with the installer anyway
2022-07-05 02:01:35 +02:00
arch1t3cht 635503affe meson: Add files in manifest as input
This makes meson detect changes to files like default_config.json
and rebuild libresrc.cpp when necessary.
2022-07-05 01:35:08 +02:00
arch1t3cht e240a5fdc2 avisynth: Update headers and fix playback
- Build the latest AviSynth headers using CMake, as proposed in #134
- Add and initialize AVS_Linkage to fix video loading

Video and audio playback now works in most cases, but still crashes for
some files.
2022-07-05 01:12:10 +02:00
arch1t3cht 142605cf41 meson: Add files in manifest as input
This makes meson detect changes to files like default_config.json
and rebuild libresrc.cpp when necessary.
2022-07-04 22:22:01 +02:00
arch1t3cht fdcb0ee75f meson: Fix compliation with avisynth enabled
Still crashes when loading a video.
2022-07-03 17:49:46 +02:00
arch1t3cht 5bde34ff3e macos: attempt to fix the installer build
Try and fix an issue when a symlink would link to a path with the same
basename, without actually having a mac system available to test.
2022-07-02 19:58:43 -07:00
arch1t3cht 2bf4f17e58 ci: Don't abort if one of the matrix runs fails 2022-07-02 19:58:43 -07:00
arch1t3cht cfd93ce81b meson: Use latest git version for ffms2
This is to include the fix for FFMS/ffms2#394 .
2022-07-02 19:58:43 -07:00
arch1t3cht 6e811ef6a7 Fix compile error on linux 2022-07-02 19:58:43 -07:00
arch1t3cht 9fef97a5bb installer: update paths to mo files
Meson's i18n module changed its output paths here:
2022-07-02 19:58:43 -07:00
arch1t3cht 75db50b6ed installer: update paths to Avisynth libaries
The folder structure of the release archives changed with
AviSynth+ 3.7.1.
2022-07-02 19:58:43 -07:00
TRAMBO 4776ca9dd1
Fix errors when automation scripts being loaded and os.execute not working (#156)
* fix errors when automation scripts being loaded and os.execute not working

* Update unicode-monkeypatch.lua
2022-06-08 08:36:49 -07:00
Oneric e5dee3fbe2 meson: bump ffmpeg wrap
meson-4.4 contains a fix regarding the prefix kwarg
with newer Meson versions not present in the 4.3 branch.
2022-06-08 01:10:11 -07:00
Oneric 85ce9663a6 Pass storage size to libass to fix rendering
Since ASS rendering depends on the storage size of the video libass
needs to know about it to render the subtitles correctly. If it isn't
told about the storage size libass uses the value from PlayRes{X,Y} as
a guess, but this isn't always correct.
With Aegisub currently always rendering at storage resolution
this ends up the same as the frame size.
2022-06-08 01:10:11 -07:00
Sodra 03ffce8a89 Fixing zoom when panning is off 2022-03-02 19:02:21 -08:00
Sodra bb5081189e Fix video panning option. Oops teehee ptep~ 2022-03-02 18:36:38 -08:00
Sodra b332181937 Added option to enable video panning 2022-03-02 18:24:17 -08:00
moex3 36f7e102e2 Revert "Add reset hotkey as Ctrl-R" / Not needed
This reverts commit 3d525d9938790211b02a31a16d716498957891fc.
The default hotkey is not required. People can just add a custom one
from the hotkey settings if they want this.
2022-03-02 15:02:02 -08:00
moex3 0b8586e90d Add reset hotkey as Ctrl-R
I'm not entirely sure, that this is how it's supposed to be added.
This requires editing the already existing hotkey.json file (shows path
in log, if it exists).
Should this also be added to hotkey.cpp?
2022-03-02 15:02:01 -08:00
moex3 14d078fb9f Fix a zooming bug on linux
The preview window would change in width, when the video was being zoomed.
Possibly, because on windows, zooming only calls UpdateSize once, but on
linux, it gets called multiple, like 8 times.
Rounding fixed it.
2022-03-02 15:02:01 -08:00
moex3 09ea0f54d3 Make zooming feel more linear
with a "good enough" implementation
2022-03-02 15:02:00 -08:00
moex3 db6297c8c3 Make zooming center around the cursor position 2022-03-02 15:01:59 -08:00
moex3 4f6836da9c Make video zoom different from preview window zoom 2022-03-02 15:01:59 -08:00
moex3 70ddf3c7f5 Respect min. zoom value when changing pan coords 2022-03-02 15:01:58 -08:00
moex3 d73dfe9c18 Change pan values with the zoom level changes 2022-03-02 15:01:58 -08:00
moex3 808ead65bf Fix crosshair drawing
I'm not sure about that scale_factor, i don't know how to test that
2022-03-02 15:01:57 -08:00
moex3 0ec0f20695 Fix mouse position bug when videoAr > displayAr
Crosshair drawing is broken when videoAr != displayAr
2022-03-02 15:01:56 -08:00
moex3 5f95f76671 Change tab to spaces 2022-03-02 15:01:55 -08:00
moex3 f3d796a3e3 Add menu item for resetting the video pan 2022-03-02 15:01:54 -08:00
moex3 e3949cdaa1 Add video panning 2022-03-02 15:01:48 -08:00
EleonoreMizo bfcd8a3e2c
Merge branch 'master' into spectrum-frequency-mapping 2021-11-29 22:27:26 +01:00
Oleg Oshmyan f21d8a3607 meson: use OpenAL.framework on macOS
It is not picked up by the existing dependency() check because its
version is unknown to Meson, which fails the version constraint.
Besides, dependency('openal') seems to try "openal.framework",
which may or may not work on case-sensitive file systems.
2021-11-10 20:12:21 -07:00
Oleg Oshmyan 1d01f8adc8 meson: allow unconstrained dependency version to be "unknown"
And allow for compound version constraints in the future.
2021-11-10 20:12:21 -07:00
Oleg Oshmyan 18503946d5 meson: don't check disabled dependencies at all
Don't search for the dependency and set up fallback
only to throw it away if the option is disabled.
This is a waste, and this gives the user the illusion
that the request to disable the feature was ignored.
2021-11-10 20:12:21 -07:00
woclass e58e4a9149
Fix Mac dmg build (#138)
* [mac/build] update build steps

* [macos] bundle app

* [macos] build dmg

* [ci] setup macOS CI

* [i18n] TODO: rm WX locale files

* [deps] set main branch to main

* Fix

Create symbolic links, to make libicu happy
Rewrite the script in python3, as python2 is deprecated

* Add write permission before install_name_tool when doing osx-bundle

Fix wangqr/Aegisub#39

* Handle @loader_path in libboost on macOS

See wangqr/Aegisub#39

* [tools/mac] use python3

* [ci/mac] install & using system deps

* [ci/win] don't build fribidi:docs

* [ci/mac]  trying openal-soft

* [ci/mac] use pulseaudio in CI

* [ci/win] only run aeg's test

* [ci/win] fix CI

* [ci/win] fix CI: not use dict `{}`

* [ci] run ci

* [ci/win] don't build docs

* [ci/win] remove args tail newline

* [ci/win] false->disabled

* Use md title format

Co-authored-by: Ryan Lucia <>

* Recover file permissions.

* [ci/win] disable fontconfig

Co-Authored-By: Ryan Lucia <>

* [ci/win] disable libass:fontconfig

Co-authored-by: wangqr <>
Co-authored-by: Ryan Lucia <>
2021-10-12 03:37:49 -04:00
woclass 0dffcec461
Fix meson warning (#126)
* [git] ignore IDE setting, Meson subprojects

* [win_installer] rename *.mo -> *.gmo

* [win_installer] only add aeg translations

* [win_installer] split aeg/wx translations

* [win_installer] gen & pack translations

* [git] ignore hunspell source dir

* [git] ignore uchardet source dir

* [test] Generate the test executable

run with `meson test`

* [test] add tools to remove test data files

`unset.bat FULL_PATH`

* [test] set to correct Error type

* [test] Set Source character sets to UTF-8 for MSVC

* [test] move test data files to build_root

* [meson/wxWidgets] fix warning: deprecated feature `cmake_options`

* [meson] fix warning:  msvc does not support C++11

* [meson/fribidi] add original file

* [meson/fribidi] merge pr-151
"meson: add fribidi_static_cargs to extra_cflags"

* [meson/fribidi] fix DEPRECATION

"Library fribidi was passed to the "libraries" keyword argument of a previous call to generate() method instead of first positional argument."

* [git]  rm IDE dir

* [meson] remove old flags

* [meson] fixed in upstream
2021-05-24 09:47:34 -04:00
woclass 7e9c7d7aa0
Run tests (#125)
* [git] ignore IDE setting, Meson subprojects

* [win_installer] rename *.mo -> *.gmo

* [win_installer] only add aeg translations

* [win_installer] split aeg/wx translations

* [win_installer] gen & pack translations

* [git] ignore hunspell source dir

* [git] ignore uchardet source dir

* [test] Generate the test executable

run with `meson test`

* [test] add tools to remove test data files

`unset.bat FULL_PATH`

* [test] set to correct Error type

* [test] Set Source character sets to UTF-8 for MSVC

* [test] move test data files to build_root

* [git] remove IDE dir

* [git] ignore gtest subprojects

* [ci] run test in ci

* [meson/test] use more meaningful name

* [test] Add more comments and help msg
2021-05-23 23:33:33 -04:00
Myaamori dfb0a1ca99 meson: don't use deprecated get_pkgconfig_variable 2021-05-23 18:37:36 -04:00
Myaamori 2c927bac32 meson: make --force-fallback-for=luajit work
This option makes the dependency() call resolve to the subproject
which breaks the Lua 5.2 compatibility check.
This change just ignores the result of the dependency() call
if it resolves to the subproject and then re-fetches it
with a subproject() call later.
Alternatively we could explicitly handle the case where dependency()
resolves to the subproject, but that's just extra code for no
observable difference in behaviour.
2021-05-23 18:37:36 -04:00
clr134 28e3e75c44
Polish translation corrections (#130) 2021-05-23 17:33:04 -04:00
Vardë 3c17671ad0
Updates French translation (#121)
* Updates French translation

* Missing spelling mistake

* Additional adjustments

* Improvements (#1)

Co-authored-by: Vardë <>

Co-authored-by: anne-o-pixel <>
2021-05-23 04:54:46 -04:00
woclass 52c8fef28c
Generate Win (#124)
* [git] ignore IDE setting, Meson subprojects

* [win_installer] rename *.mo -> *.gmo

* [win_installer] only add aeg translations

* [win_installer] split aeg/wx translations

* [win_installer] gen & pack translations

* [git] ignore hunspell source dir

* [git] ignore uchardet source dir

* [win_installer\portable] add new target `meson win-portable`

+ meson install copy `include/unicode-monkeypatch.lua`

* [win_installer\portable] make

+ remove WinRAR deps

* [win_installer\portable] using powershell

* [git] upload

* [win_installer\portable] rm freetype

* [repo] remove Optional dependencies: WinRAR

* [repo] Update, add cmd to gen zip file

* [repo] use recommended build command

* [git] remove IDE dir

* [ci] add Windows portable installer build step
2021-05-23 04:37:54 -04:00
Yi-Jyun Pan 761194025f meson: luajit: allow to build in ARM64
Meson thought that a ARM64 cpu is aarch64, while
luajit only provided a file for "arm64". Since there is
no difference but the name between aarch64 and arm64, I
choose to bind aarch64 -> arm64.

Signed-off-by: Yi-Jyun Pan <>
2021-05-23 04:32:54 -04:00
woclass 62c3acb666
Fix localization file generation on Windows (#119)
* [git] ignore IDE setting, Meson subprojects

* [win_installer] rename *.mo -> *.gmo

* [win_installer] only add aeg translations

* [win_installer] split aeg/wx translations

* [win_installer] gen & pack translations

* [git] ignore hunspell source dir

* [git] ignore uchardet source dir

* [git] remove IDE dir

* [git] remove unused subprojects
2021-05-23 02:06:10 -04:00
Ryan Lucia aeba7a390e Re-enable MacOS CI 2021-05-22 02:48:27 -04:00
Ryan Lucia a856030078 Switch to new boost tarball hosting 2021-05-21 21:52:18 -04:00
Myaamori 84ac716972 meson: add uchardet port
Meson port instead of using CMake as I ran into issues with the
src directory (where uchardet.h is located) not being appended
to the include path, and on Windows I ran into a Meson issue
where a -D macro definition was being interpreted as a filename.
In the end a Meson port seemed simpler than working out the CMake
issues, as the CMakeLists.txt files were straightforward and easy
to port.

Note that because of the directory structure of the uchardet source
I had to change the include directive from uchardet/uchardet.h
to just uchardet.h. This is actually more in line with the uchardet
pkg-config file, which appends /usr/include/uchardet to the include path.
2021-05-21 21:09:36 -04:00
Myaamori c43e4fba3c meson: add Hunspell port
This moves the visibility logic (HUNSPELL_STATIC/BUILDING_LIBHUNSPELL)
to the build system. Only relevant on Windows.
2021-05-21 21:09:36 -04:00
Myaamori 0f95589d0a meson: Fix Windows artifacts 2021-05-21 21:07:22 -04:00
Myaamori b00f5dd58e meson: add option to specify wxWidgets version 2021-04-09 18:00:01 -04:00
Ryan 696a732840 Add new unicode script to installer 2021-03-27 14:56:04 -04:00
Ryan 7def61d46f Update README for Windows 2021-03-27 14:55:52 -04:00
Myaamori 3dfc553880 Fix faux bold logic in font collector for Fontconfig
Based on libass's logic (a requested weight of over 150 more than
the matching font).
2021-03-27 12:38:50 -04:00
Myaamori 4b2cd7f170 Convert OpenType weight to Fontconfig weight in font collector
Fixes #108
2021-03-27 12:38:50 -04:00
Ryan 7a27ee7823 meson: add -DLUAJIT_UNWIND_EXTERNAL for MacOS/Linux 2021-03-27 12:34:18 -04:00
Ryan 9d1b28f5a7 Delete luajit patch files 2021-03-27 12:34:18 -04:00
Ryan 51494a07d9 lua: run unicode-monkeypatch on Windows when loading scripts 2021-03-27 12:34:18 -04:00
Ryan 8394f1adca Monkeypatch script fixes 2021-03-27 12:34:18 -04:00
Ryan e929e4a75c meson: copy monkeypatch script 2021-03-27 12:34:18 -04:00
Ryan 4648e8cc5b meson: add new luajit string buffer files 2021-03-27 12:34:18 -04:00
Ryan Lucia b7f6ac42e4 Add lua monkeypatch for Unicode support on Windows 2021-03-27 12:34:18 -04:00
Ryan Lucia 84beba20cb meson: fix luajit 64-bit builds
Upstream defines ENDIAN_LE or ENDIAN_BE always, so assume little endian. x86_64 defaulting to x86 seems to just be a mistake
2021-03-27 12:34:18 -04:00
Ryan ef64307ba1 Switch to upstream LuaJIT
This does not yet handle the patching, but should build without issue
2021-03-27 12:34:18 -04:00
Ryan 48c3acd3aa actions: disable MacOS
The LTO change broke this somehow, but disable until I can investigate why
2021-03-27 09:31:10 -04:00
Ryan f5122a3927 meson: copy automation files to build directory
This enables running Moonscript on Windows builds without relying on system files
2021-03-27 09:30:21 -04:00
Ryan d32ef75cba meson: move executable to the root directory 2021-03-27 09:29:37 -04:00
Ryan 1246534b7b Move AddSeparator to VisualTool::SetToolbar
Co-authored-by: wangqr <>
2021-03-27 08:09:11 -04:00
Ryan Lucia c218db6f34 meson: disable LTO by default 2021-03-06 14:57:27 -05:00
petzku 19429b0f6e