Remove a lot of pointless headers for dialogs
Most of the dialogs in Aegisub have a public interface consisting of a single function, so there's really no need to expose the actual dialog classes to the rest of the program. Add dialogs.h with the declarations of all of those functions (most of which are just ShowFooDialog()), and kill a million other headers.
This commit is contained in:
parent
49357eec20
commit
2bf23af00a
64 changed files with 1023 additions and 1953 deletions
|
@ -142,38 +142,15 @@
|
||||||
<ClInclude Include="$(SrcDir)command\command.h" />
|
<ClInclude Include="$(SrcDir)command\command.h" />
|
||||||
<ClInclude Include="$(SrcDir)compat.h" />
|
<ClInclude Include="$(SrcDir)compat.h" />
|
||||||
<ClInclude Include="$(SrcDir)crash_writer.h" />
|
<ClInclude Include="$(SrcDir)crash_writer.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_about.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_attachments.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_automation.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_autosave.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_colorpicker.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_detached_video.h" />
|
<ClInclude Include="$(SrcDir)dialog_detached_video.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_dummy_video.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_export.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_export_ebu3264.h" />
|
<ClInclude Include="$(SrcDir)dialog_export_ebu3264.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_fonts_collector.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_jumpto.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_kara_timing_copy.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_log.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_manager.h" />
|
<ClInclude Include="$(SrcDir)dialog_manager.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_paste_over.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_progress.h" />
|
<ClInclude Include="$(SrcDir)dialog_progress.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_properties.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_resample.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_search_replace.h" />
|
<ClInclude Include="$(SrcDir)dialog_search_replace.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_selected_choices.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_selection.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_shift_times.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_spellchecker.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_style_editor.h" />
|
<ClInclude Include="$(SrcDir)dialog_style_editor.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_style_manager.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_styling_assistant.h" />
|
<ClInclude Include="$(SrcDir)dialog_styling_assistant.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_text_import.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_timing_processor.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_translation.h" />
|
<ClInclude Include="$(SrcDir)dialog_translation.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_version_check.h" />
|
<ClInclude Include="$(SrcDir)dialogs.h" />
|
||||||
<ClInclude Include="$(SrcDir)dialog_video_details.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_video_properties.h" />
|
|
||||||
<ClInclude Include="$(SrcDir)export_fixstyle.h" />
|
<ClInclude Include="$(SrcDir)export_fixstyle.h" />
|
||||||
<ClInclude Include="$(SrcDir)export_framerate.h" />
|
<ClInclude Include="$(SrcDir)export_framerate.h" />
|
||||||
<ClInclude Include="$(SrcDir)factory_manager.h" />
|
<ClInclude Include="$(SrcDir)factory_manager.h" />
|
||||||
|
|
|
@ -219,18 +219,6 @@
|
||||||
<ClInclude Include="$(SrcDir)fft.h">
|
<ClInclude Include="$(SrcDir)fft.h">
|
||||||
<Filter>Audio</Filter>
|
<Filter>Audio</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_attachments.h">
|
|
||||||
<Filter>Features\Attachments</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_jumpto.h">
|
|
||||||
<Filter>Video\UI</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_video_details.h">
|
|
||||||
<Filter>Video\UI</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_style_manager.h">
|
|
||||||
<Filter>Features\Style editor</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_style_editor.h">
|
<ClInclude Include="$(SrcDir)dialog_style_editor.h">
|
||||||
<Filter>Features\Style editor</Filter>
|
<Filter>Features\Style editor</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -240,18 +228,9 @@
|
||||||
<ClInclude Include="$(SrcDir)font_file_lister_fontconfig.h">
|
<ClInclude Include="$(SrcDir)font_file_lister_fontconfig.h">
|
||||||
<Filter>Features\Font collector</Filter>
|
<Filter>Features\Font collector</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_fonts_collector.h">
|
|
||||||
<Filter>Features\Font collector</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_dummy_video.h">
|
|
||||||
<Filter>Video\UI</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_detached_video.h">
|
<ClInclude Include="$(SrcDir)dialog_detached_video.h">
|
||||||
<Filter>Video\UI</Filter>
|
<Filter>Video\UI</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_export.h">
|
|
||||||
<Filter>Features\Export</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_export_ebu3264.h">
|
<ClInclude Include="$(SrcDir)dialog_export_ebu3264.h">
|
||||||
<Filter>Features\Export</Filter>
|
<Filter>Features\Export</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -267,27 +246,12 @@
|
||||||
<ClInclude Include="$(SrcDir)auto4_lua_factory.h">
|
<ClInclude Include="$(SrcDir)auto4_lua_factory.h">
|
||||||
<Filter>Automation\Lua</Filter>
|
<Filter>Automation\Lua</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_automation.h">
|
|
||||||
<Filter>Automation\UI</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_paste_over.h">
|
|
||||||
<Filter>Features\Paste Over</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_shift_times.h">
|
|
||||||
<Filter>Features\Shift Times</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_translation.h">
|
<ClInclude Include="$(SrcDir)dialog_translation.h">
|
||||||
<Filter>Features\Translation Assistant</Filter>
|
<Filter>Features\Translation Assistant</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)colorspace.h">
|
<ClInclude Include="$(SrcDir)colorspace.h">
|
||||||
<Filter>Features\Colour picker</Filter>
|
<Filter>Features\Colour picker</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_colorpicker.h">
|
|
||||||
<Filter>Features\Colour picker</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_kara_timing_copy.h">
|
|
||||||
<Filter>Features\Karaoke copier</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)gl_wrap.h">
|
<ClInclude Include="$(SrcDir)gl_wrap.h">
|
||||||
<Filter>Video\UI</Filter>
|
<Filter>Video\UI</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -324,30 +288,15 @@
|
||||||
<ClInclude Include="$(SrcDir)subtitle_format_ttxt.h">
|
<ClInclude Include="$(SrcDir)subtitle_format_ttxt.h">
|
||||||
<Filter>Subtitle formats</Filter>
|
<Filter>Subtitle formats</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_spellchecker.h">
|
|
||||||
<Filter>Features\Spell checker</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)spellchecker_hunspell.h">
|
<ClInclude Include="$(SrcDir)spellchecker_hunspell.h">
|
||||||
<Filter>Features\Spell checker</Filter>
|
<Filter>Features\Spell checker</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)thesaurus.h">
|
<ClInclude Include="$(SrcDir)thesaurus.h">
|
||||||
<Filter>Features\Thesaurus</Filter>
|
<Filter>Features\Thesaurus</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_resample.h">
|
|
||||||
<Filter>Features\Resolution resampler</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_text_import.h">
|
|
||||||
<Filter>Features\Import</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_timing_processor.h">
|
|
||||||
<Filter>Features\Timing post-processor</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_styling_assistant.h">
|
<ClInclude Include="$(SrcDir)dialog_styling_assistant.h">
|
||||||
<Filter>Features\Styling assistant</Filter>
|
<Filter>Features\Styling assistant</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_version_check.h">
|
|
||||||
<Filter>Features\Update checker</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)video_controller.h">
|
<ClInclude Include="$(SrcDir)video_controller.h">
|
||||||
<Filter>Video</Filter>
|
<Filter>Video</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -510,36 +459,21 @@
|
||||||
<ClInclude Include="$(SrcDir)version.h">
|
<ClInclude Include="$(SrcDir)version.h">
|
||||||
<Filter>Features\About box</Filter>
|
<Filter>Features\About box</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_about.h">
|
|
||||||
<Filter>Features\About box</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_selection.h">
|
|
||||||
<Filter>Features\Conditional select lines</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_search_replace.h">
|
<ClInclude Include="$(SrcDir)dialog_search_replace.h">
|
||||||
<Filter>Features\Search-replace</Filter>
|
<Filter>Features\Search-replace</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_selected_choices.h">
|
|
||||||
<Filter>Utilities\UI utilities</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)dialog_progress.h">
|
<ClInclude Include="$(SrcDir)dialog_progress.h">
|
||||||
<Filter>Utilities\UI utilities</Filter>
|
<Filter>Utilities\UI utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)persist_location.h">
|
<ClInclude Include="$(SrcDir)persist_location.h">
|
||||||
<Filter>Utilities\UI utilities</Filter>
|
<Filter>Utilities\UI utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_log.h">
|
|
||||||
<Filter>Utilities\Logging</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)crash_writer.h">
|
<ClInclude Include="$(SrcDir)crash_writer.h">
|
||||||
<Filter>Utilities\Logging</Filter>
|
<Filter>Utilities\Logging</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)utils.h">
|
<ClInclude Include="$(SrcDir)utils.h">
|
||||||
<Filter>Utilities</Filter>
|
<Filter>Utilities</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_properties.h">
|
|
||||||
<Filter>Features\File properties</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)ass_karaoke.h">
|
<ClInclude Include="$(SrcDir)ass_karaoke.h">
|
||||||
<Filter>ASS</Filter>
|
<Filter>ASS</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -591,9 +525,6 @@
|
||||||
<ClInclude Include="$(SrcDir)placeholder_ctrl.h">
|
<ClInclude Include="$(SrcDir)placeholder_ctrl.h">
|
||||||
<Filter>Controls</Filter>
|
<Filter>Controls</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_autosave.h">
|
|
||||||
<Filter>Features\Autosave</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)ass_info.h">
|
<ClInclude Include="$(SrcDir)ass_info.h">
|
||||||
<Filter>ASS</Filter>
|
<Filter>ASS</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
@ -618,15 +549,15 @@
|
||||||
<ClInclude Include="$(SrcDir)subtitle_format_ssa.h">
|
<ClInclude Include="$(SrcDir)subtitle_format_ssa.h">
|
||||||
<Filter>Subtitle formats</Filter>
|
<Filter>Subtitle formats</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)dialog_video_properties.h">
|
|
||||||
<Filter>Features\Resolution resampler</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="$(SrcDir)async_video_provider.h">
|
<ClInclude Include="$(SrcDir)async_video_provider.h">
|
||||||
<Filter>Video\Providers</Filter>
|
<Filter>Video\Providers</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="$(SrcDir)project.h">
|
<ClInclude Include="$(SrcDir)project.h">
|
||||||
<Filter>Main UI</Filter>
|
<Filter>Main UI</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="$(SrcDir)dialogs.h">
|
||||||
|
<Filter>Features</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="$(SrcDir)ass_dialogue.cpp">
|
<ClCompile Include="$(SrcDir)ass_dialogue.cpp">
|
||||||
|
@ -1192,4 +1123,4 @@
|
||||||
<ResourceCompile Include="$(SrcDir)res\res.rc" />
|
<ResourceCompile Include="$(SrcDir)res\res.rc" />
|
||||||
<ResourceCompile Include="$(SrcDir)res\strings.rc" />
|
<ResourceCompile Include="$(SrcDir)res\strings.rc" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -17,7 +17,7 @@
|
||||||
#include "colour_button.h"
|
#include "colour_button.h"
|
||||||
|
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "dialog_colorpicker.h"
|
#include "dialogs.h"
|
||||||
|
|
||||||
#include <boost/gil/gil_all.hpp>
|
#include <boost/gil/gil_all.hpp>
|
||||||
|
|
||||||
|
|
|
@ -37,11 +37,9 @@
|
||||||
#include <libaegisub/make_unique.h>
|
#include <libaegisub/make_unique.h>
|
||||||
|
|
||||||
#include "../compat.h"
|
#include "../compat.h"
|
||||||
#include "../dialog_about.h"
|
|
||||||
#include "../dialog_detached_video.h"
|
#include "../dialog_detached_video.h"
|
||||||
#include "../dialog_log.h"
|
|
||||||
#include "../dialog_manager.h"
|
#include "../dialog_manager.h"
|
||||||
#include "../dialog_version_check.h"
|
#include "../dialogs.h"
|
||||||
#include "../frame_main.h"
|
#include "../frame_main.h"
|
||||||
#include "../include/aegisub/context.h"
|
#include "../include/aegisub/context.h"
|
||||||
#include "../libresrc/libresrc.h"
|
#include "../libresrc/libresrc.h"
|
||||||
|
@ -62,7 +60,7 @@ struct app_about final : public Command {
|
||||||
STR_HELP("About Aegisub")
|
STR_HELP("About Aegisub")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
AboutScreen(c->parent).ShowModal();
|
ShowAboutDialog(c->parent);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -186,7 +184,7 @@ struct app_log final : public Command {
|
||||||
STR_HELP("View the event log")
|
STR_HELP("View the event log")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->dialog->Show<LogWindow>(c);
|
ShowLogWindow(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,7 @@
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
|
||||||
#include "../auto4_base.h"
|
#include "../auto4_base.h"
|
||||||
#include "../dialog_automation.h"
|
#include "../dialogs.h"
|
||||||
#include "../dialog_manager.h"
|
|
||||||
#include "../frame_main.h"
|
#include "../frame_main.h"
|
||||||
#include "../include/aegisub/context.h"
|
#include "../include/aegisub/context.h"
|
||||||
#include "../libresrc/libresrc.h"
|
#include "../libresrc/libresrc.h"
|
||||||
|
@ -80,7 +79,7 @@ struct open_manager final : public Command {
|
||||||
STR_HELP("Open automation manager")
|
STR_HELP("Open automation manager")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->dialog->Show<DialogAutomation>(c);
|
ShowAutomationDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,9 +36,8 @@
|
||||||
#include "../ass_karaoke.h"
|
#include "../ass_karaoke.h"
|
||||||
#include "../ass_style.h"
|
#include "../ass_style.h"
|
||||||
#include "../compat.h"
|
#include "../compat.h"
|
||||||
#include "../dialog_colorpicker.h"
|
|
||||||
#include "../dialog_paste_over.h"
|
|
||||||
#include "../dialog_search_replace.h"
|
#include "../dialog_search_replace.h"
|
||||||
|
#include "../dialogs.h"
|
||||||
#include "../include/aegisub/context.h"
|
#include "../include/aegisub/context.h"
|
||||||
#include "../initial_line_state.h"
|
#include "../initial_line_state.h"
|
||||||
#include "../libresrc/libresrc.h"
|
#include "../libresrc/libresrc.h"
|
||||||
|
@ -138,7 +137,7 @@ void paste_lines(agi::Context *c, bool paste_over, Paster&& paste_line) {
|
||||||
|
|
||||||
AssDialogue *paste_over(wxWindow *parent, std::vector<bool>& pasteOverOptions, AssDialogue *new_line, AssDialogue *old_line) {
|
AssDialogue *paste_over(wxWindow *parent, std::vector<bool>& pasteOverOptions, AssDialogue *new_line, AssDialogue *old_line) {
|
||||||
if (pasteOverOptions.empty()) {
|
if (pasteOverOptions.empty()) {
|
||||||
if (DialogPasteOver(parent).ShowModal()) return nullptr;
|
if (!ShowPasteOverDialog(parent)) return nullptr;
|
||||||
pasteOverOptions = OPT_GET("Tool/Paste Lines Over/Fields")->GetListBool();
|
pasteOverOptions = OPT_GET("Tool/Paste Lines Over/Fields")->GetListBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,8 @@
|
||||||
#include "../ass_dialogue.h"
|
#include "../ass_dialogue.h"
|
||||||
#include "../ass_file.h"
|
#include "../ass_file.h"
|
||||||
#include "../compat.h"
|
#include "../compat.h"
|
||||||
#include "../dialog_attachments.h"
|
|
||||||
#include "../dialog_autosave.h"
|
|
||||||
#include "../dialog_manager.h"
|
|
||||||
#include "../dialog_properties.h"
|
|
||||||
#include "../dialog_search_replace.h"
|
#include "../dialog_search_replace.h"
|
||||||
#include "../dialog_spellchecker.h"
|
#include "../dialogs.h"
|
||||||
#include "../include/aegisub/context.h"
|
#include "../include/aegisub/context.h"
|
||||||
#include "../libresrc/libresrc.h"
|
#include "../libresrc/libresrc.h"
|
||||||
#include "../options.h"
|
#include "../options.h"
|
||||||
|
@ -85,7 +81,7 @@ struct subtitle_attachment final : public Command {
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->videoController->Stop();
|
c->videoController->Stop();
|
||||||
DialogAttachments(c->parent, c->ass.get()).ShowModal();
|
ShowAttachmentsDialog(c->parent, c->ass.get());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -255,9 +251,9 @@ struct subtitle_open_autosave final : public Command {
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
if (c->subsController->TryToClose() == wxCANCEL) return;
|
if (c->subsController->TryToClose() == wxCANCEL) return;
|
||||||
DialogAutosave dialog(c->parent);
|
auto file = PickAutosaveFile(c->parent);
|
||||||
if (dialog.ShowModal() == wxID_OK)
|
if (!file.empty())
|
||||||
c->project->LoadSubtitles(dialog.ChosenFile());
|
c->project->LoadSubtitles(file);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -307,7 +303,7 @@ struct subtitle_properties final : public Command {
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->videoController->Stop();
|
c->videoController->Stop();
|
||||||
DialogProperties(c).ShowModal();
|
ShowPropertiesDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -417,7 +413,7 @@ struct subtitle_spellcheck final : public Command {
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->videoController->Stop();
|
c->videoController->Stop();
|
||||||
c->dialog->Show<DialogSpellChecker>(c);
|
ShowSpellcheckerDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,8 +36,7 @@
|
||||||
#include "../async_video_provider.h"
|
#include "../async_video_provider.h"
|
||||||
#include "../audio_controller.h"
|
#include "../audio_controller.h"
|
||||||
#include "../audio_timing.h"
|
#include "../audio_timing.h"
|
||||||
#include "../dialog_manager.h"
|
#include "../dialogs.h"
|
||||||
#include "../dialog_shift_times.h"
|
|
||||||
#include "../include/aegisub/context.h"
|
#include "../include/aegisub/context.h"
|
||||||
#include "../libresrc/libresrc.h"
|
#include "../libresrc/libresrc.h"
|
||||||
#include "../options.h"
|
#include "../options.h"
|
||||||
|
@ -156,7 +155,7 @@ struct time_shift final : public Command {
|
||||||
STR_HELP("Shift subtitles by time or frames")
|
STR_HELP("Shift subtitles by time or frames")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->dialog->Show<DialogShiftTimes>(c);
|
ShowShiftTimesDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -32,16 +32,10 @@
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
|
|
||||||
#include "../compat.h"
|
#include "../compat.h"
|
||||||
#include "../dialog_export.h"
|
|
||||||
#include "../dialog_fonts_collector.h"
|
|
||||||
#include "../dialog_kara_timing_copy.h"
|
|
||||||
#include "../dialog_manager.h"
|
#include "../dialog_manager.h"
|
||||||
#include "../dialog_resample.h"
|
|
||||||
#include "../dialog_selection.h"
|
|
||||||
#include "../dialog_style_manager.h"
|
|
||||||
#include "../dialog_styling_assistant.h"
|
#include "../dialog_styling_assistant.h"
|
||||||
#include "../dialog_timing_processor.h"
|
|
||||||
#include "../dialog_translation.h"
|
#include "../dialog_translation.h"
|
||||||
|
#include "../dialogs.h"
|
||||||
#include "../include/aegisub/context.h"
|
#include "../include/aegisub/context.h"
|
||||||
#include "../libresrc/libresrc.h"
|
#include "../libresrc/libresrc.h"
|
||||||
#include "../options.h"
|
#include "../options.h"
|
||||||
|
@ -79,7 +73,7 @@ struct tool_export final : public Command {
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->videoController->Stop();
|
c->videoController->Stop();
|
||||||
DialogExport(c).ShowModal();
|
ShowExportDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -91,7 +85,7 @@ struct tool_font_collector final : public Command {
|
||||||
STR_HELP("Open fonts collector")
|
STR_HELP("Open fonts collector")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->dialog->Show<DialogFontsCollector>(c);
|
ShowFontsCollectorDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -103,7 +97,7 @@ struct tool_line_select final : public Command {
|
||||||
STR_HELP("Select lines based on defined criteria")
|
STR_HELP("Select lines based on defined criteria")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->dialog->Show<DialogSelection>(c);
|
ShowSelectLinesDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -117,7 +111,7 @@ struct tool_resampleres final : public Command {
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->videoController->Stop();
|
c->videoController->Stop();
|
||||||
ResampleSettings settings;
|
ResampleSettings settings;
|
||||||
if (DialogResample(c, settings).ShowModal() == wxID_OK)
|
if (PromptForResampleSettings(c, settings))
|
||||||
ResampleResolution(c->ass.get(), settings);
|
ResampleResolution(c->ass.get(), settings);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -172,7 +166,7 @@ struct tool_style_manager final : public Command {
|
||||||
STR_HELP("Open the styles manager")
|
STR_HELP("Open the styles manager")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->dialog->Show<DialogStyleManager>(c);
|
ShowStyleManagerDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -184,7 +178,7 @@ struct tool_time_kanji final : public Command {
|
||||||
STR_HELP("Open the Kanji timer copier")
|
STR_HELP("Open the Kanji timer copier")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
DialogKanjiTimer(c).ShowModal();
|
ShowKanjiTimerDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -196,7 +190,7 @@ struct tool_time_postprocess final : public Command {
|
||||||
STR_HELP("Post-process the subtitle timing to add lead-ins and lead-outs, snap timing to scene changes, etc.")
|
STR_HELP("Post-process the subtitle timing to add lead-ins and lead-outs, snap timing to scene changes, etc.")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
DialogTimingProcessor(c).ShowModal();
|
ShowTimingProcessorDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,10 +36,8 @@
|
||||||
#include "../async_video_provider.h"
|
#include "../async_video_provider.h"
|
||||||
#include "../compat.h"
|
#include "../compat.h"
|
||||||
#include "../dialog_detached_video.h"
|
#include "../dialog_detached_video.h"
|
||||||
#include "../dialog_dummy_video.h"
|
|
||||||
#include "../dialog_jumpto.h"
|
|
||||||
#include "../dialog_manager.h"
|
#include "../dialog_manager.h"
|
||||||
#include "../dialog_video_details.h"
|
#include "../dialogs.h"
|
||||||
#include "../frame_main.h"
|
#include "../frame_main.h"
|
||||||
#include "../include/aegisub/context.h"
|
#include "../include/aegisub/context.h"
|
||||||
#include "../include/aegisub/subtitles_provider.h"
|
#include "../include/aegisub/subtitles_provider.h"
|
||||||
|
@ -270,7 +268,7 @@ struct video_details final : public validator_video_loaded {
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->videoController->Stop();
|
c->videoController->Stop();
|
||||||
DialogVideoDetails(c).ShowModal();
|
ShowVideoDetailsDialog(c);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -529,7 +527,7 @@ struct video_jump final : public validator_video_loaded {
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
c->videoController->Stop();
|
c->videoController->Stop();
|
||||||
DialogJumpTo(c).ShowModal();
|
ShowJumpToDialog(c);
|
||||||
c->videoSlider->SetFocus();
|
c->videoSlider->SetFocus();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -584,7 +582,7 @@ struct video_open_dummy final : public Command {
|
||||||
STR_HELP("Open a placeholder video clip with solid color")
|
STR_HELP("Open a placeholder video clip with solid color")
|
||||||
|
|
||||||
void operator()(agi::Context *c) override {
|
void operator()(agi::Context *c) override {
|
||||||
std::string fn = DialogDummyVideo::CreateDummyVideo(c->parent);
|
std::string fn = CreateDummyVideo(c->parent);
|
||||||
if (!fn.empty())
|
if (!fn.empty())
|
||||||
c->project->LoadVideo(fn);
|
c->project->LoadVideo(fn);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,12 +27,11 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_about.cpp
|
#include "libresrc/libresrc.h"
|
||||||
/// @brief About-dialogue box
|
#include "version.h"
|
||||||
/// @ingroup configuration_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/panel.h>
|
#include <wx/panel.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/statbmp.h>
|
#include <wx/statbmp.h>
|
||||||
|
@ -40,110 +39,114 @@
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
#include "dialog_about.h"
|
namespace {
|
||||||
#include "libresrc/libresrc.h"
|
struct AboutScreen : wxDialog {
|
||||||
#include "version.h"
|
AboutScreen(wxWindow *parent)
|
||||||
|
: wxDialog(parent, -1, _("About Aegisub"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX, _("About Aegisub"))
|
||||||
AboutScreen::AboutScreen(wxWindow *parent)
|
{
|
||||||
: wxDialog (parent, -1, _("About Aegisub"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX , _("About Aegisub"))
|
// Generate library string
|
||||||
{
|
wxString libString = "Aegisub includes portions from the following other projects:\n";
|
||||||
// Generate library string
|
libString += " wxWidgets - Copyright (c) Julian Smart, Robert Roebling et al;\n";
|
||||||
wxString libString = "Aegisub includes portions from the following other projects:\n";
|
libString += " wxStyledTextCtrl - Copyright (c) Robin Dunn, Neil Hodgson;\n";
|
||||||
libString += " wxWidgets - Copyright (c) Julian Smart, Robert Roebling et al;\n";
|
libString += " Scintilla - Copyright (c) Neil Hodgson;\n";
|
||||||
libString += " wxStyledTextCtrl - Copyright (c) Robin Dunn, Neil Hodgson;\n";
|
libString += " Boost - Copyright (c) Beman Dawes, David Abrahams et al;\n";
|
||||||
libString += " Scintilla - Copyright (c) Neil Hodgson;\n";
|
libString += " UniversalCharDet - Copyright (c) Netscape Communications Corp.;\n";
|
||||||
libString += " Boost - Copyright (c) Beman Dawes, David Abrahams et al;\n";
|
libString += " ICU - Copyright (c) International Business Machines Corp.;\n";
|
||||||
libString += " UniversalCharDet - Copyright (c) Netscape Communications Corp.;\n";
|
libString += " Lua - Copyright (c) Lua.org, PUC-Rio;\n";
|
||||||
libString += " ICU - Copyright (c) International Business Machines Corp.;\n";
|
libString += " LuaJIT - Copyright (c) Mike Pall;\n";
|
||||||
libString += " Lua - Copyright (c) Lua.org, PUC-Rio;\n";
|
libString += " luabins - Copyright (c) Alexander Gladysh;\n";
|
||||||
libString += " LuaJIT - Copyright (c) Mike Pall;\n";
|
|
||||||
libString += " luabins - Copyright (c) Alexander Gladysh;\n";
|
|
||||||
#ifdef WITH_HUNSPELL
|
#ifdef WITH_HUNSPELL
|
||||||
libString += " Hunspell - Copyright (c) Kevin Hendricks;\n";
|
libString += " Hunspell - Copyright (c) Kevin Hendricks;\n";
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PORTAUDIO
|
#ifdef WITH_PORTAUDIO
|
||||||
libString += " PortAudio - Copyright (c) Ross Bencina, Phil Burk;\n";
|
libString += " PortAudio - Copyright (c) Ross Bencina, Phil Burk;\n";
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_FFMS2
|
#ifdef WITH_FFMS2
|
||||||
libString += " FFmpeg - Copyright (c) Fabrice Bellard;\n";
|
libString += " FFmpeg - Copyright (c) Fabrice Bellard;\n";
|
||||||
libString += " FFMS2 - Copyright (c) Fredrik Mellbin;\n";
|
libString += " FFMS2 - Copyright (c) Fredrik Mellbin;\n";
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_AVISYNTH
|
#ifdef WITH_AVISYNTH
|
||||||
libString += " Avisynth 2.5 - Copyright (c) Ben Rudiak-Gould et al;\n";
|
libString += " Avisynth 2.5 - Copyright (c) Ben Rudiak-Gould et al;\n";
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_CSRI
|
#ifdef WITH_CSRI
|
||||||
libString += " csri - Copyright (c) David Lamparter;\n";
|
libString += " csri - Copyright (c) David Lamparter;\n";
|
||||||
# ifdef __WINDOWS__
|
# ifdef __WINDOWS__
|
||||||
libString += " vsfilter - Copyright (c) Gabest et al;\n";
|
libString += " vsfilter - Copyright (c) Gabest et al;\n";
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
libString += " libass - Copyright (c) Evgeniy Stepanov, Grigori Goronzy;\n";
|
libString += " libass - Copyright (c) Evgeniy Stepanov, Grigori Goronzy;\n";
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
libString += " Matroska Parser - Copyright (c) Mike Matsnev;\n";
|
libString += " Matroska Parser - Copyright (c) Mike Matsnev;\n";
|
||||||
#endif
|
#endif
|
||||||
libString += " Freetype - Copyright (c) David Turner, Robert Wilhelm, Werner Lemberg;\n";
|
libString += " Freetype - Copyright (c) David Turner, Robert Wilhelm, Werner Lemberg;\n";
|
||||||
libString += " Fontconfig - Copyright (c) Keith Packard et al;\n";
|
libString += " Fontconfig - Copyright (c) Keith Packard et al;\n";
|
||||||
#ifdef WITH_FFTW3
|
#ifdef WITH_FFTW3
|
||||||
libString += " FFTW - Copyright (c) Matteo Frigo, Massachusetts Institute of Technology;\n";
|
libString += " FFTW - Copyright (c) Matteo Frigo, Massachusetts Institute of Technology;\n";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxString translatorCredit = _("Translated into LANGUAGE by PERSON\n");
|
wxString translatorCredit = _("Translated into LANGUAGE by PERSON\n");
|
||||||
if (translatorCredit == "Translated into LANGUAGE by PERSON\n") translatorCredit.Clear();
|
if (translatorCredit == "Translated into LANGUAGE by PERSON\n") translatorCredit.Clear();
|
||||||
|
|
||||||
// Generate about string
|
// Generate about string
|
||||||
wxString aboutString;
|
wxString aboutString;
|
||||||
aboutString += wxString("Aegisub ") + GetAegisubShortVersionString() + ".\n";
|
aboutString += wxString("Aegisub ") + GetAegisubShortVersionString() + ".\n";
|
||||||
aboutString += "Copyright (c) 2005-2014 Rodrigo Braz Monteiro, Niels Martin Hansen, Thomas Goyne et al.\n\n";
|
aboutString += "Copyright (c) 2005-2014 Rodrigo Braz Monteiro, Niels Martin Hansen, Thomas Goyne et al.\n\n";
|
||||||
aboutString += "Programmers:\n";
|
aboutString += "Programmers:\n";
|
||||||
aboutString += " Alysson Souza e Silva\n";
|
aboutString += " Alysson Souza e Silva\n";
|
||||||
aboutString += " Amar Takhar\n";
|
aboutString += " Amar Takhar\n";
|
||||||
aboutString += " Dan Donovan\n";
|
aboutString += " Dan Donovan\n";
|
||||||
aboutString += " Daniel Moscoviter\n";
|
aboutString += " Daniel Moscoviter\n";
|
||||||
aboutString += " David Conrad\n";
|
aboutString += " David Conrad\n";
|
||||||
aboutString += " David Lamparter\n";
|
aboutString += " David Lamparter\n";
|
||||||
aboutString += " Eric Batalitzky\n";
|
aboutString += " Eric Batalitzky\n";
|
||||||
aboutString += " Evgeniy Stepanov\n";
|
aboutString += " Evgeniy Stepanov\n";
|
||||||
aboutString += " Fredrik Mellbin\n";
|
aboutString += " Fredrik Mellbin\n";
|
||||||
aboutString += " Grigori Goronzy\n";
|
aboutString += " Grigori Goronzy\n";
|
||||||
aboutString += " Karl Blomster\n";
|
aboutString += " Karl Blomster\n";
|
||||||
aboutString += " Mike Matsnev\n";
|
aboutString += " Mike Matsnev\n";
|
||||||
aboutString += " Moritz Brunner\n";
|
aboutString += " Moritz Brunner\n";
|
||||||
aboutString += " Muhammad Lukman Nasaruddin\n";
|
aboutString += " Muhammad Lukman Nasaruddin\n";
|
||||||
aboutString += " Niels Martin Hansen\n";
|
aboutString += " Niels Martin Hansen\n";
|
||||||
aboutString += " Patryk Pomykalski\n";
|
aboutString += " Patryk Pomykalski\n";
|
||||||
aboutString += " Ravi Pinjala\n";
|
aboutString += " Ravi Pinjala\n";
|
||||||
aboutString += " Rodrigo Braz Monteiro\n";
|
aboutString += " Rodrigo Braz Monteiro\n";
|
||||||
aboutString += " Simone Cociancich\n";
|
aboutString += " Simone Cociancich\n";
|
||||||
aboutString += " Thomas Goyne\n";
|
aboutString += " Thomas Goyne\n";
|
||||||
aboutString += "User manual written by:\n";
|
aboutString += "User manual written by:\n";
|
||||||
aboutString += " Karl Blomster\n";
|
aboutString += " Karl Blomster\n";
|
||||||
aboutString += " Niels Martin Hansen\n";
|
aboutString += " Niels Martin Hansen\n";
|
||||||
aboutString += " Rodrigo Braz Monteiro\n";
|
aboutString += " Rodrigo Braz Monteiro\n";
|
||||||
aboutString += "Icons by:\n";
|
aboutString += "Icons by:\n";
|
||||||
aboutString += " Philip Cash\n";
|
aboutString += " Philip Cash\n";
|
||||||
aboutString += "Additional thanks to:\n";
|
aboutString += "Additional thanks to:\n";
|
||||||
aboutString += " Mentar\n";
|
aboutString += " Mentar\n";
|
||||||
aboutString += " Sigurd Tao Lyngse\n";
|
aboutString += " Sigurd Tao Lyngse\n";
|
||||||
aboutString += " Everyone in the Aegisub IRC channel\n";
|
aboutString += " Everyone in the Aegisub IRC channel\n";
|
||||||
aboutString += " Everyone who ever reported a bug\n";
|
aboutString += " Everyone who ever reported a bug\n";
|
||||||
aboutString += translatorCredit;
|
aboutString += translatorCredit;
|
||||||
aboutString += "\n" + libString;
|
aboutString += "\n" + libString;
|
||||||
aboutString += _("\nSee the help file for full credits.\n");
|
aboutString += _("\nSee the help file for full credits.\n");
|
||||||
aboutString += wxString::Format(_("Built by %s on %s."), GetAegisubBuildCredit(), GetAegisubBuildTime());
|
aboutString += wxString::Format(_("Built by %s on %s."), GetAegisubBuildCredit(), GetAegisubBuildTime());
|
||||||
|
|
||||||
// Replace copyright symbol
|
// Replace copyright symbol
|
||||||
wxChar copySymbol = 0xA9;
|
wxChar copySymbol = 0xA9;
|
||||||
aboutString.Replace("(c)",wxString(copySymbol));
|
aboutString.Replace("(c)", wxString(copySymbol));
|
||||||
|
|
||||||
wxTextCtrl *textctrl = new wxTextCtrl(this, -1, aboutString, wxDefaultPosition, wxSize(-1,200), wxTE_MULTILINE|wxTE_READONLY|wxBORDER_NONE);
|
wxTextCtrl *textctrl = new wxTextCtrl(this, -1, aboutString, wxDefaultPosition, wxSize(-1, 200), wxTE_MULTILINE | wxTE_READONLY | wxBORDER_NONE);
|
||||||
|
|
||||||
wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
|
wxSizer *MainSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
MainSizer->Add(new wxStaticBitmap(this, -1, GETIMAGE(splash)), 0, wxCENTER, 0);
|
MainSizer->Add(new wxStaticBitmap(this, -1, GETIMAGE(splash)), 0, wxCENTER, 0);
|
||||||
MainSizer->Add(new wxStaticLine(this, wxID_ANY), 0, wxEXPAND|wxALL, 0);
|
MainSizer->Add(new wxStaticLine(this, wxID_ANY), 0, wxEXPAND | wxALL, 0);
|
||||||
MainSizer->Add(textctrl, 0, wxEXPAND|wxALL, 0);
|
MainSizer->Add(textctrl, 0, wxEXPAND | wxALL, 0);
|
||||||
MainSizer->Add(new wxStaticLine(this, wxID_ANY), 0, wxEXPAND|wxALL, 0);
|
MainSizer->Add(new wxStaticLine(this, wxID_ANY), 0, wxEXPAND | wxALL, 0);
|
||||||
MainSizer->Add(CreateButtonSizer(wxOK), 0, wxEXPAND|wxALL, 6);
|
MainSizer->Add(CreateButtonSizer(wxOK), 0, wxEXPAND | wxALL, 6);
|
||||||
|
|
||||||
SetSizerAndFit(MainSizer);
|
SetSizerAndFit(MainSizer);
|
||||||
CentreOnParent();
|
CentreOnParent();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowAboutDialog(wxWindow *parent) {
|
||||||
|
AboutScreen(parent).ShowModal();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
// Copyright (c) 2005, Rodrigo Braz Monteiro
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_about.h
|
|
||||||
/// @see dialog_about.cpp
|
|
||||||
/// @ingroup configuration_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
/// @class AboutScreen
|
|
||||||
/// @brief About dialogue.
|
|
||||||
class AboutScreen: public wxDialog {
|
|
||||||
public:
|
|
||||||
AboutScreen(wxWindow *parent);
|
|
||||||
};
|
|
|
@ -27,19 +27,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_attachments.cpp
|
|
||||||
/// @brief Manage files attached to the subtitle file
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_attachments.h"
|
|
||||||
|
|
||||||
#include <wx/button.h>
|
|
||||||
#include <wx/filedlg.h>
|
|
||||||
#include <wx/dirdlg.h>
|
|
||||||
#include <wx/listctrl.h>
|
|
||||||
#include <wx/sizer.h>
|
|
||||||
|
|
||||||
#include "ass_attachment.h"
|
#include "ass_attachment.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
@ -48,6 +35,34 @@
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
|
#include <wx/filedlg.h>
|
||||||
|
#include <wx/dirdlg.h>
|
||||||
|
#include <wx/listctrl.h>
|
||||||
|
#include <wx/sizer.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class DialogAttachments final : public wxDialog {
|
||||||
|
AssFile *ass;
|
||||||
|
|
||||||
|
wxListView *listView;
|
||||||
|
wxButton *extractButton;
|
||||||
|
wxButton *deleteButton;
|
||||||
|
|
||||||
|
void OnAttachFont(wxCommandEvent &event);
|
||||||
|
void OnAttachGraphics(wxCommandEvent &event);
|
||||||
|
void OnExtract(wxCommandEvent &event);
|
||||||
|
void OnDelete(wxCommandEvent &event);
|
||||||
|
void OnListClick(wxListEvent &event);
|
||||||
|
|
||||||
|
void UpdateList();
|
||||||
|
void AttachFile(wxFileDialog &diag, wxString const& commit_msg);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogAttachments(wxWindow *parent, AssFile *ass);
|
||||||
|
};
|
||||||
|
|
||||||
DialogAttachments::DialogAttachments(wxWindow *parent, AssFile *ass)
|
DialogAttachments::DialogAttachments(wxWindow *parent, AssFile *ass)
|
||||||
: wxDialog(parent, -1, _("Attachment List"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
|
: wxDialog(parent, -1, _("Attachment List"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
|
||||||
, ass(ass)
|
, ass(ass)
|
||||||
|
@ -182,3 +197,8 @@ void DialogAttachments::OnListClick(wxListEvent &) {
|
||||||
extractButton->Enable(hasSel);
|
extractButton->Enable(hasSel);
|
||||||
deleteButton->Enable(hasSel);
|
deleteButton->Enable(hasSel);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowAttachmentsDialog(wxWindow *parent, AssFile *file) {
|
||||||
|
DialogAttachments(parent, file).ShowModal();
|
||||||
|
}
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
// Copyright (c) 2006, Rodrigo Braz Monteiro
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_attachments.h
|
|
||||||
/// @see dialog_attachments.cpp
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
class AssFile;
|
|
||||||
class wxFileDialog;
|
|
||||||
class wxListView;
|
|
||||||
class wxListEvent;
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
class DialogAttachments final : public wxDialog {
|
|
||||||
AssFile *ass;
|
|
||||||
|
|
||||||
wxListView *listView;
|
|
||||||
wxButton *extractButton;
|
|
||||||
wxButton *deleteButton;
|
|
||||||
|
|
||||||
void OnAttachFont(wxCommandEvent &event);
|
|
||||||
void OnAttachGraphics(wxCommandEvent &event);
|
|
||||||
void OnExtract(wxCommandEvent &event);
|
|
||||||
void OnDelete(wxCommandEvent &event);
|
|
||||||
void OnListClick(wxListEvent &event);
|
|
||||||
|
|
||||||
void UpdateList();
|
|
||||||
void AttachFile(wxFileDialog &diag, wxString const& commit_msg);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogAttachments(wxWindow *parent, AssFile *ass);
|
|
||||||
};
|
|
|
@ -27,16 +27,10 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_automation.cpp
|
|
||||||
/// @brief Manage loaded Automation scripts
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_automation.h"
|
|
||||||
|
|
||||||
#include "auto4_base.h"
|
#include "auto4_base.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "command/command.h"
|
#include "command/command.h"
|
||||||
|
#include "dialog_manager.h"
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
#include "libresrc/libresrc.h"
|
#include "libresrc/libresrc.h"
|
||||||
|
@ -44,16 +38,71 @@
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "subtitle_format.h"
|
#include "subtitle_format.h"
|
||||||
|
|
||||||
|
#include <libaegisub/signal.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <boost/range/algorithm.hpp>
|
#include <boost/range/algorithm.hpp>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/filedlg.h>
|
#include <wx/filedlg.h>
|
||||||
#include <wx/listctrl.h>
|
#include <wx/listctrl.h>
|
||||||
#include <wx/log.h>
|
#include <wx/log.h>
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
/// Struct to attach a flag for global/local to scripts
|
||||||
|
struct ExtraScriptInfo {
|
||||||
|
Automation4::Script *script;
|
||||||
|
bool is_global;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DialogAutomation final : public wxDialog {
|
||||||
|
agi::Context *context;
|
||||||
|
|
||||||
|
/// Currently loaded scripts
|
||||||
|
std::vector<ExtraScriptInfo> script_info;
|
||||||
|
|
||||||
|
/// File-local script manager
|
||||||
|
Automation4::ScriptManager *local_manager;
|
||||||
|
|
||||||
|
/// Listener for external changes to the local scripts
|
||||||
|
agi::signal::Connection local_scripts_changed;
|
||||||
|
|
||||||
|
/// Global script manager
|
||||||
|
Automation4::ScriptManager *global_manager;
|
||||||
|
|
||||||
|
/// Listener for external changes to the global scripts
|
||||||
|
agi::signal::Connection global_scripts_changed;
|
||||||
|
|
||||||
|
|
||||||
|
/// List of loaded scripts
|
||||||
|
wxListView *list;
|
||||||
|
|
||||||
|
/// Unload a local script
|
||||||
|
wxButton *remove_button;
|
||||||
|
|
||||||
|
/// Reload a script
|
||||||
|
wxButton *reload_button;
|
||||||
|
|
||||||
|
void RebuildList();
|
||||||
|
void AddScript(Automation4::Script *script, bool is_global);
|
||||||
|
void SetScriptInfo(int i, Automation4::Script *script);
|
||||||
|
void UpdateDisplay();
|
||||||
|
|
||||||
|
void OnAdd(wxCommandEvent &);
|
||||||
|
void OnRemove(wxCommandEvent &);
|
||||||
|
void OnReload(wxCommandEvent &);
|
||||||
|
|
||||||
|
void OnInfo(wxCommandEvent &);
|
||||||
|
void OnReloadAutoload(wxCommandEvent &);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogAutomation(agi::Context *context);
|
||||||
|
};
|
||||||
|
|
||||||
DialogAutomation::DialogAutomation(agi::Context *c)
|
DialogAutomation::DialogAutomation(agi::Context *c)
|
||||||
: wxDialog(c->parent, -1, _("Automation Manager"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
: wxDialog(c->parent, -1, _("Automation Manager"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
, context(c)
|
, context(c)
|
||||||
|
@ -261,3 +310,8 @@ void DialogAutomation::OnReloadAutoload(wxCommandEvent &)
|
||||||
{
|
{
|
||||||
global_manager->Reload();
|
global_manager->Reload();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowAutomationDialog(agi::Context *c) {
|
||||||
|
c->dialog->Show<DialogAutomation>(c);
|
||||||
|
}
|
||||||
|
|
|
@ -1,101 +0,0 @@
|
||||||
// Copyright (c) 2005, Niels Martin Hansen
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_automation.h
|
|
||||||
/// @see dialog_automation.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
#include <libaegisub/signal.h>
|
|
||||||
|
|
||||||
namespace Automation4 {
|
|
||||||
class ScriptManager;
|
|
||||||
class AutoloadScriptManager;
|
|
||||||
class Script;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
|
|
||||||
class wxButton;
|
|
||||||
class wxListEvent;
|
|
||||||
class wxListView;
|
|
||||||
|
|
||||||
class DialogAutomation final : public wxDialog {
|
|
||||||
agi::Context *context;
|
|
||||||
|
|
||||||
/// Struct to attach a flag for global/local to scripts
|
|
||||||
struct ExtraScriptInfo {
|
|
||||||
Automation4::Script *script;
|
|
||||||
bool is_global;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Currently loaded scripts
|
|
||||||
std::vector<ExtraScriptInfo> script_info;
|
|
||||||
|
|
||||||
/// File-local script manager
|
|
||||||
Automation4::ScriptManager *local_manager;
|
|
||||||
|
|
||||||
/// Listener for external changes to the local scripts
|
|
||||||
agi::signal::Connection local_scripts_changed;
|
|
||||||
|
|
||||||
/// Global script manager
|
|
||||||
Automation4::ScriptManager *global_manager;
|
|
||||||
|
|
||||||
/// Listener for external changes to the global scripts
|
|
||||||
agi::signal::Connection global_scripts_changed;
|
|
||||||
|
|
||||||
|
|
||||||
/// List of loaded scripts
|
|
||||||
wxListView *list;
|
|
||||||
|
|
||||||
/// Unload a local script
|
|
||||||
wxButton *remove_button;
|
|
||||||
|
|
||||||
/// Reload a script
|
|
||||||
wxButton *reload_button;
|
|
||||||
|
|
||||||
void RebuildList();
|
|
||||||
void AddScript(Automation4::Script *script, bool is_global);
|
|
||||||
void SetScriptInfo(int i, Automation4::Script *script);
|
|
||||||
void UpdateDisplay();
|
|
||||||
|
|
||||||
void OnAdd(wxCommandEvent &);
|
|
||||||
void OnRemove(wxCommandEvent &);
|
|
||||||
void OnReload(wxCommandEvent &);
|
|
||||||
|
|
||||||
void OnInfo(wxCommandEvent &);
|
|
||||||
void OnReloadAutoload(wxCommandEvent &);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogAutomation(agi::Context *context);
|
|
||||||
};
|
|
|
@ -14,24 +14,51 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
#include "dialog_autosave.h"
|
|
||||||
|
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "libresrc/libresrc.h"
|
#include "libresrc/libresrc.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
|
|
||||||
#include <libaegisub/path.h>
|
#include <libaegisub/path.h>
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
#include <boost/range/adaptor/map.hpp>
|
#include <boost/range/adaptor/map.hpp>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/dir.h>
|
#include <wx/dir.h>
|
||||||
#include <wx/filename.h>
|
#include <wx/filename.h>
|
||||||
#include <wx/listbox.h>
|
#include <wx/listbox.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/statbox.h>
|
#include <wx/statbox.h>
|
||||||
|
#include <wx/string.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
struct Version {
|
||||||
|
wxString filename;
|
||||||
|
wxDateTime date;
|
||||||
|
wxString display;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AutosaveFile {
|
||||||
|
wxString name;
|
||||||
|
std::vector<Version> versions;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DialogAutosave final : public wxDialog {
|
||||||
|
std::vector<AutosaveFile> files;
|
||||||
|
|
||||||
|
wxListBox *file_list;
|
||||||
|
wxListBox *version_list;
|
||||||
|
|
||||||
|
void Populate(std::map<wxString, AutosaveFile> &files_map, std::string const& path, wxString const& filter, wxString const& name_fmt);
|
||||||
|
void OnSelectFile(wxCommandEvent&);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogAutosave(wxWindow *parent);
|
||||||
|
std::string ChosenFile() const;
|
||||||
|
};
|
||||||
|
|
||||||
DialogAutosave::DialogAutosave(wxWindow *parent)
|
DialogAutosave::DialogAutosave(wxWindow *parent)
|
||||||
: wxDialog(parent, -1, _("Open autosave file"), wxDefaultPosition, wxSize(800, 350), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
: wxDialog(parent, -1, _("Open autosave file"), wxDefaultPosition, wxSize(800, 350), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
|
@ -138,3 +165,11 @@ std::string DialogAutosave::ChosenFile() const {
|
||||||
|
|
||||||
return from_wx(files[sel_file].versions[sel_version].filename);
|
return from_wx(files[sel_file].versions[sel_version].filename);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string PickAutosaveFile(wxWindow *parent) {
|
||||||
|
DialogAutosave dialog(parent);
|
||||||
|
if (dialog.ShowModal() == wxID_OK)
|
||||||
|
return dialog.ChosenFile();
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
// Copyright (c) 2012, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <map>
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
#include <wx/string.h>
|
|
||||||
|
|
||||||
class wxListBox;
|
|
||||||
|
|
||||||
class DialogAutosave final : public wxDialog {
|
|
||||||
struct Version {
|
|
||||||
wxString filename;
|
|
||||||
wxDateTime date;
|
|
||||||
wxString display;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct AutosaveFile {
|
|
||||||
wxString name;
|
|
||||||
std::vector<Version> versions;
|
|
||||||
};
|
|
||||||
|
|
||||||
std::vector<AutosaveFile> files;
|
|
||||||
|
|
||||||
wxListBox *file_list;
|
|
||||||
wxListBox *version_list;
|
|
||||||
|
|
||||||
void Populate(std::map<wxString, AutosaveFile> &files_map, std::string const& path, wxString const& filter, wxString const& name_fmt);
|
|
||||||
void OnSelectFile(wxCommandEvent&);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogAutosave(wxWindow *parent);
|
|
||||||
std::string ChosenFile() const;
|
|
||||||
};
|
|
|
@ -27,13 +27,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_colorpicker.cpp
|
|
||||||
/// @brief Custom colour-selection dialogue box
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_colorpicker.h"
|
|
||||||
|
|
||||||
#include "ass_style.h"
|
#include "ass_style.h"
|
||||||
#include "colorspace.h"
|
#include "colorspace.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
// Copyright (c) 2012, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_colorpicker.h
|
|
||||||
/// @see dialog_colorpicker.cpp
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <functional>
|
|
||||||
|
|
||||||
#include <libaegisub/color.h>
|
|
||||||
|
|
||||||
class wxWindow;
|
|
||||||
|
|
||||||
/// @brief Get a color from the user via a color picker dialog
|
|
||||||
/// @param parent Parent window
|
|
||||||
/// @param original Initial color to select
|
|
||||||
/// @param alpha Include controls for alpha
|
|
||||||
/// @param callback Function called whenever the selected color changes
|
|
||||||
/// @return Did the user accept the new color?
|
|
||||||
bool GetColorFromUser(wxWindow* parent, agi::Color original, bool alpha, std::function<void (agi::Color)> callback);
|
|
|
@ -14,15 +14,19 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_dummy_video.cpp
|
#include "ass_time.h"
|
||||||
/// @brief Set up dummy video provider
|
#include "colour_button.h"
|
||||||
/// @ingroup secondary_ui
|
#include "help_button.h"
|
||||||
///
|
#include "libresrc/libresrc.h"
|
||||||
|
#include "options.h"
|
||||||
|
#include "validators.h"
|
||||||
|
#include "video_provider_dummy.h"
|
||||||
|
|
||||||
#include "dialog_dummy_video.h"
|
#include <libaegisub/color.h>
|
||||||
|
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/combobox.h>
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/spinctrl.h>
|
#include <wx/spinctrl.h>
|
||||||
#include <wx/statline.h>
|
#include <wx/statline.h>
|
||||||
|
@ -32,15 +36,26 @@
|
||||||
#include <wx/valgen.h>
|
#include <wx/valgen.h>
|
||||||
#include <wx/valnum.h>
|
#include <wx/valnum.h>
|
||||||
|
|
||||||
#include "ass_time.h"
|
|
||||||
#include "colour_button.h"
|
|
||||||
#include "help_button.h"
|
|
||||||
#include "libresrc/libresrc.h"
|
|
||||||
#include "options.h"
|
|
||||||
#include "validators.h"
|
|
||||||
#include "video_provider_dummy.h"
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
struct DialogDummyVideo final : wxDialog {
|
||||||
|
double fps = OPT_GET("Video/Dummy/FPS")->GetDouble();
|
||||||
|
int width = OPT_GET("Video/Dummy/Last/Width")->GetInt();
|
||||||
|
int height = OPT_GET("Video/Dummy/Last/Height")->GetInt();
|
||||||
|
int length = OPT_GET("Video/Dummy/Last/Length")->GetInt();
|
||||||
|
agi::Color color = OPT_GET("Colour/Video Dummy/Last Colour")->GetColor();
|
||||||
|
bool pattern = OPT_GET("Video/Dummy/Pattern")->GetBool();
|
||||||
|
|
||||||
|
wxStaticText *length_display;
|
||||||
|
wxFlexGridSizer *sizer;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void AddCtrl(wxString const& label, T *ctrl);
|
||||||
|
|
||||||
|
void OnResolutionShortcut(wxCommandEvent &evt);
|
||||||
|
void UpdateLengthDisplay();
|
||||||
|
|
||||||
|
DialogDummyVideo(wxWindow *parent);
|
||||||
|
};
|
||||||
|
|
||||||
struct ResolutionShortcut {
|
struct ResolutionShortcut {
|
||||||
const char *name;
|
const char *name;
|
||||||
|
@ -82,16 +97,8 @@ wxComboBox *resolution_shortcuts(wxWindow *parent, int width, int height) {
|
||||||
return ctrl;
|
return ctrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
DialogDummyVideo::DialogDummyVideo(wxWindow *parent)
|
DialogDummyVideo::DialogDummyVideo(wxWindow *parent)
|
||||||
: wxDialog(parent, -1, _("Dummy video options"))
|
: wxDialog(parent, -1, _("Dummy video options"))
|
||||||
, fps(OPT_GET("Video/Dummy/FPS")->GetDouble())
|
|
||||||
, width(OPT_GET("Video/Dummy/Last/Width")->GetInt())
|
|
||||||
, height(OPT_GET("Video/Dummy/Last/Height")->GetInt())
|
|
||||||
, length(OPT_GET("Video/Dummy/Last/Length")->GetInt())
|
|
||||||
, color(OPT_GET("Colour/Video Dummy/Last Colour")->GetColor())
|
|
||||||
, pattern(OPT_GET("Video/Dummy/Pattern")->GetBool())
|
|
||||||
{
|
{
|
||||||
SetIcon(GETICON(use_dummy_video_menu_16));
|
SetIcon(GETICON(use_dummy_video_menu_16));
|
||||||
|
|
||||||
|
@ -154,8 +161,9 @@ void DialogDummyVideo::OnResolutionShortcut(wxCommandEvent &e) {
|
||||||
void DialogDummyVideo::UpdateLengthDisplay() {
|
void DialogDummyVideo::UpdateLengthDisplay() {
|
||||||
length_display->SetLabel(wxString::Format(_("Resulting duration: %s"), AssTime(length / fps * 1000).GetAssFormated(true)));
|
length_display->SetLabel(wxString::Format(_("Resulting duration: %s"), AssTime(length / fps * 1000).GetAssFormated(true)));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string DialogDummyVideo::CreateDummyVideo(wxWindow *parent) {
|
std::string CreateDummyVideo(wxWindow *parent) {
|
||||||
DialogDummyVideo dlg(parent);
|
DialogDummyVideo dlg(parent);
|
||||||
if (dlg.ShowModal() != wxID_OK)
|
if (dlg.ShowModal() != wxID_OK)
|
||||||
return "";
|
return "";
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
// Copyright (c) 2012, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_dummy_video.h
|
|
||||||
/// @see dialog_dummy_video.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
#include <libaegisub/color.h>
|
|
||||||
|
|
||||||
class wxFlexGridSizer;
|
|
||||||
class wxStaticText;
|
|
||||||
|
|
||||||
class DialogDummyVideo final : public wxDialog {
|
|
||||||
DialogDummyVideo(wxWindow *parent);
|
|
||||||
|
|
||||||
double fps;
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
int length;
|
|
||||||
agi::Color color;
|
|
||||||
bool pattern;
|
|
||||||
|
|
||||||
wxStaticText *length_display;
|
|
||||||
wxFlexGridSizer *sizer;
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
void AddCtrl(wxString const& label, T *ctrl);
|
|
||||||
|
|
||||||
void OnResolutionShortcut(wxCommandEvent &evt);
|
|
||||||
void UpdateLengthDisplay();
|
|
||||||
|
|
||||||
public:
|
|
||||||
static std::string CreateDummyVideo(wxWindow *parent);
|
|
||||||
};
|
|
|
@ -27,13 +27,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_export.cpp
|
|
||||||
/// @brief Export set-up dialogue box
|
|
||||||
/// @ingroup export
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_export.h"
|
|
||||||
|
|
||||||
#include "ass_exporter.h"
|
#include "ass_exporter.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
@ -49,8 +42,8 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <boost/filesystem/path.hpp>
|
#include <boost/filesystem/path.hpp>
|
||||||
#include <boost/tokenizer.hpp>
|
#include <boost/tokenizer.hpp>
|
||||||
|
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/checklst.h>
|
#include <wx/checklst.h>
|
||||||
#include <wx/choice.h>
|
#include <wx/choice.h>
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
|
@ -58,8 +51,39 @@
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class DialogExport final : public wxDialog {
|
||||||
|
agi::Context *c;
|
||||||
|
|
||||||
|
/// The export transform engine
|
||||||
|
AssExporter exporter;
|
||||||
|
|
||||||
|
/// The description of the currently selected export filter
|
||||||
|
wxTextCtrl *filter_description;
|
||||||
|
|
||||||
|
/// A list of all registered export filters
|
||||||
|
wxCheckListBox *filter_list;
|
||||||
|
|
||||||
|
/// A list of available target charsets
|
||||||
|
wxChoice *charset_list;
|
||||||
|
|
||||||
|
wxSizer *opt_sizer;
|
||||||
|
|
||||||
|
void OnProcess(wxCommandEvent &);
|
||||||
|
void OnChange(wxCommandEvent &);
|
||||||
|
|
||||||
|
/// Set all the checkboxes
|
||||||
|
void SetAll(bool new_value);
|
||||||
|
/// Update which options sizers are shown
|
||||||
|
void RefreshOptions();
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogExport(agi::Context *c);
|
||||||
|
~DialogExport();
|
||||||
|
};
|
||||||
|
|
||||||
// Swap the items at idx and idx + 1
|
// Swap the items at idx and idx + 1
|
||||||
static void swap(wxCheckListBox *list, int idx, int sel_dir) {
|
void swap(wxCheckListBox *list, int idx, int sel_dir) {
|
||||||
if (idx < 0 || idx + 1 == (int)list->GetCount()) return;
|
if (idx < 0 || idx + 1 == (int)list->GetCount()) return;
|
||||||
|
|
||||||
list->Freeze();
|
list->Freeze();
|
||||||
|
@ -76,12 +100,12 @@ static void swap(wxCheckListBox *list, int idx, int sel_dir) {
|
||||||
DialogExport::DialogExport(agi::Context *c)
|
DialogExport::DialogExport(agi::Context *c)
|
||||||
: wxDialog(c->parent, -1, _("Export"), wxDefaultPosition, wxSize(200, 100), wxCAPTION | wxCLOSE_BOX)
|
: wxDialog(c->parent, -1, _("Export"), wxDefaultPosition, wxSize(200, 100), wxCAPTION | wxCLOSE_BOX)
|
||||||
, c(c)
|
, c(c)
|
||||||
, exporter(agi::make_unique<AssExporter>(c))
|
, exporter(c)
|
||||||
{
|
{
|
||||||
SetIcon(GETICON(export_menu_16));
|
SetIcon(GETICON(export_menu_16));
|
||||||
SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
|
SetExtraStyle(wxWS_EX_VALIDATE_RECURSIVELY);
|
||||||
|
|
||||||
std::vector<std::string> filters = exporter->GetAllFilterNames();
|
std::vector<std::string> filters = exporter.GetAllFilterNames();
|
||||||
filter_list = new wxCheckListBox(this, -1, wxDefaultPosition, wxSize(200, 100), to_wx(filters));
|
filter_list = new wxCheckListBox(this, -1, wxDefaultPosition, wxSize(200, 100), to_wx(filters));
|
||||||
filter_list->Bind(wxEVT_CHECKLISTBOX, [=](wxCommandEvent&) { RefreshOptions(); });
|
filter_list->Bind(wxEVT_CHECKLISTBOX, [=](wxCommandEvent&) { RefreshOptions(); });
|
||||||
filter_list->Bind(wxEVT_LISTBOX, &DialogExport::OnChange, this);
|
filter_list->Bind(wxEVT_LISTBOX, &DialogExport::OnChange, this);
|
||||||
|
@ -135,7 +159,7 @@ DialogExport::DialogExport(agi::Context *c)
|
||||||
|
|
||||||
wxSizer *horz_sizer = new wxBoxSizer(wxHORIZONTAL);
|
wxSizer *horz_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
opt_sizer = new wxBoxSizer(wxVERTICAL);
|
opt_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
exporter->DrawSettings(this, opt_sizer);
|
exporter.DrawSettings(this, opt_sizer);
|
||||||
horz_sizer->Add(top_sizer, wxSizerFlags().Expand().Border(wxALL & ~wxRIGHT));
|
horz_sizer->Add(top_sizer, wxSizerFlags().Expand().Border(wxALL & ~wxRIGHT));
|
||||||
horz_sizer->Add(opt_sizer, wxSizerFlags(1).Expand().Border(wxALL & ~wxLEFT));
|
horz_sizer->Add(opt_sizer, wxSizerFlags(1).Expand().Border(wxALL & ~wxLEFT));
|
||||||
|
|
||||||
|
@ -166,13 +190,13 @@ void DialogExport::OnProcess(wxCommandEvent &) {
|
||||||
|
|
||||||
for (size_t i = 0; i < filter_list->GetCount(); ++i) {
|
for (size_t i = 0; i < filter_list->GetCount(); ++i) {
|
||||||
if (filter_list->IsChecked(i))
|
if (filter_list->IsChecked(i))
|
||||||
exporter->AddFilter(from_wx(filter_list->GetString(i)));
|
exporter.AddFilter(from_wx(filter_list->GetString(i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
wxBusyCursor busy;
|
wxBusyCursor busy;
|
||||||
c->ass->Properties.export_encoding = from_wx(charset_list->GetStringSelection());
|
c->ass->Properties.export_encoding = from_wx(charset_list->GetStringSelection());
|
||||||
exporter->Export(filename, from_wx(charset_list->GetStringSelection()), this);
|
exporter.Export(filename, from_wx(charset_list->GetStringSelection()), this);
|
||||||
}
|
}
|
||||||
catch (agi::UserCancelException const&) {
|
catch (agi::UserCancelException const&) {
|
||||||
}
|
}
|
||||||
|
@ -198,7 +222,7 @@ void DialogExport::OnProcess(wxCommandEvent &) {
|
||||||
void DialogExport::OnChange(wxCommandEvent &) {
|
void DialogExport::OnChange(wxCommandEvent &) {
|
||||||
wxString sel = filter_list->GetStringSelection();
|
wxString sel = filter_list->GetStringSelection();
|
||||||
if (!sel.empty())
|
if (!sel.empty())
|
||||||
filter_description->SetValue(to_wx(exporter->GetDescription(from_wx(sel))));
|
filter_description->SetValue(to_wx(exporter.GetDescription(from_wx(sel))));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogExport::SetAll(bool new_value) {
|
void DialogExport::SetAll(bool new_value) {
|
||||||
|
@ -212,9 +236,14 @@ void DialogExport::SetAll(bool new_value) {
|
||||||
|
|
||||||
void DialogExport::RefreshOptions() {
|
void DialogExport::RefreshOptions() {
|
||||||
for (size_t i = 0; i < filter_list->GetCount(); ++i) {
|
for (size_t i = 0; i < filter_list->GetCount(); ++i) {
|
||||||
if (wxSizer *sizer = exporter->GetSettingsSizer(from_wx(filter_list->GetString(i))))
|
if (wxSizer *sizer = exporter.GetSettingsSizer(from_wx(filter_list->GetString(i))))
|
||||||
opt_sizer->Show(sizer, filter_list->IsChecked(i), true);
|
opt_sizer->Show(sizer, filter_list->IsChecked(i), true);
|
||||||
}
|
}
|
||||||
Layout();
|
Layout();
|
||||||
GetSizer()->Fit(this);
|
GetSizer()->Fit(this);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowExportDialog(agi::Context *c) {
|
||||||
|
DialogExport(c).ShowModal();
|
||||||
|
}
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
// Copyright (c) 2005, Rodrigo Braz Monteiro, Niels Martin Hansen
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_export.h
|
|
||||||
/// @see dialog_export.cpp
|
|
||||||
/// @ingroup export
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
class AssExporter;
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class wxCheckListBox;
|
|
||||||
class wxChoice;
|
|
||||||
class wxSizer;
|
|
||||||
class wxTextCtrl;
|
|
||||||
|
|
||||||
class DialogExport final : public wxDialog {
|
|
||||||
agi::Context *c;
|
|
||||||
|
|
||||||
/// The export transform engine
|
|
||||||
std::unique_ptr<AssExporter> exporter;
|
|
||||||
|
|
||||||
/// The description of the currently selected export filter
|
|
||||||
wxTextCtrl *filter_description;
|
|
||||||
|
|
||||||
/// A list of all registered export filters
|
|
||||||
wxCheckListBox *filter_list;
|
|
||||||
|
|
||||||
/// A list of available target charsets
|
|
||||||
wxChoice *charset_list;
|
|
||||||
|
|
||||||
wxSizer *opt_sizer;
|
|
||||||
|
|
||||||
void OnProcess(wxCommandEvent &);
|
|
||||||
void OnChange(wxCommandEvent &);
|
|
||||||
|
|
||||||
/// Set all the checkboxes
|
|
||||||
void SetAll(bool new_value);
|
|
||||||
/// Update which options sizers are shown
|
|
||||||
void RefreshOptions();
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogExport(agi::Context *c);
|
|
||||||
~DialogExport();
|
|
||||||
};
|
|
|
@ -14,18 +14,12 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_fonts_collector.cpp
|
|
||||||
/// @brief Font collector dialogue box
|
|
||||||
/// @ingroup tools_ui font_collector
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_fonts_collector.h"
|
|
||||||
|
|
||||||
#include "font_file_lister.h"
|
#include "font_file_lister.h"
|
||||||
#include "font_file_lister_fontconfig.h"
|
#include "font_file_lister_fontconfig.h"
|
||||||
|
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
#include "dialog_manager.h"
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
#include "libresrc/libresrc.h"
|
#include "libresrc/libresrc.h"
|
||||||
|
@ -41,6 +35,7 @@
|
||||||
#include <libaegisub/make_unique.h>
|
#include <libaegisub/make_unique.h>
|
||||||
|
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/dirdlg.h>
|
#include <wx/dirdlg.h>
|
||||||
#include <wx/filedlg.h>
|
#include <wx/filedlg.h>
|
||||||
#include <wx/filename.h>
|
#include <wx/filename.h>
|
||||||
|
@ -54,6 +49,31 @@
|
||||||
#include <wx/wfstream.h>
|
#include <wx/wfstream.h>
|
||||||
#include <wx/zipstrm.h>
|
#include <wx/zipstrm.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class DialogFontsCollector final : public wxDialog {
|
||||||
|
AssFile *subs;
|
||||||
|
|
||||||
|
ScintillaTextCtrl *collection_log;
|
||||||
|
wxButton *close_btn;
|
||||||
|
wxButton *dest_browse_button;
|
||||||
|
wxButton *start_btn;
|
||||||
|
wxRadioBox *collection_mode;
|
||||||
|
wxStaticText *dest_label;
|
||||||
|
wxTextCtrl *dest_ctrl;
|
||||||
|
|
||||||
|
void OnStart(wxCommandEvent &);
|
||||||
|
void OnBrowse(wxCommandEvent &);
|
||||||
|
void OnRadio(wxCommandEvent &e);
|
||||||
|
|
||||||
|
/// Append text to log message from worker thread
|
||||||
|
void OnAddText(wxThreadEvent &event);
|
||||||
|
/// Collection complete notification from the worker thread to reenable buttons
|
||||||
|
void OnCollectionComplete(wxThreadEvent &);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogFontsCollector(agi::Context *c);
|
||||||
|
};
|
||||||
|
|
||||||
enum FcMode {
|
enum FcMode {
|
||||||
CheckFontsOnly = 0,
|
CheckFontsOnly = 0,
|
||||||
CopyToFolder = 1,
|
CopyToFolder = 1,
|
||||||
|
@ -386,3 +406,8 @@ void DialogFontsCollector::OnCollectionComplete(wxThreadEvent &) {
|
||||||
wxCommandEvent evt;
|
wxCommandEvent evt;
|
||||||
OnRadio(evt);
|
OnRadio(evt);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowFontsCollectorDialog(agi::Context *c) {
|
||||||
|
c->dialog->Show<DialogFontsCollector>(c);
|
||||||
|
}
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
// Copyright (c) 2012, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_fonts_collector.h
|
|
||||||
/// @see dialog_fonts_collector.cpp
|
|
||||||
/// @ingroup tools_ui font_collector
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
|
|
||||||
class AssFile;
|
|
||||||
class ScintillaTextCtrl;
|
|
||||||
class wxButton;
|
|
||||||
class wxRadioBox;
|
|
||||||
class wxStaticText;
|
|
||||||
class wxTextCtrl;
|
|
||||||
class wxThreadEvent;
|
|
||||||
|
|
||||||
class DialogFontsCollector final : public wxDialog {
|
|
||||||
AssFile *subs;
|
|
||||||
|
|
||||||
ScintillaTextCtrl *collection_log;
|
|
||||||
wxButton *close_btn;
|
|
||||||
wxButton *dest_browse_button;
|
|
||||||
wxButton *start_btn;
|
|
||||||
wxRadioBox *collection_mode;
|
|
||||||
wxStaticText *dest_label;
|
|
||||||
wxTextCtrl *dest_ctrl;
|
|
||||||
|
|
||||||
void OnStart(wxCommandEvent &);
|
|
||||||
void OnBrowse(wxCommandEvent &);
|
|
||||||
void OnRadio(wxCommandEvent &e);
|
|
||||||
|
|
||||||
/// Append text to log message from worker thread
|
|
||||||
void OnAddText(wxThreadEvent &event);
|
|
||||||
/// Collection complete notification from the worker thread to reenable buttons
|
|
||||||
void OnCollectionComplete(wxThreadEvent &);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogFontsCollector(agi::Context *c);
|
|
||||||
};
|
|
|
@ -27,13 +27,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_jumpto.cpp
|
|
||||||
/// @brief Dialogue box to enter a time to seek video to
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_jumpto.h"
|
|
||||||
|
|
||||||
#include "ass_time.h"
|
#include "ass_time.h"
|
||||||
#include "async_video_provider.h"
|
#include "async_video_provider.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
|
@ -44,10 +37,31 @@
|
||||||
#include "video_controller.h"
|
#include "video_controller.h"
|
||||||
|
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class DialogJumpTo final : public wxDialog {
|
||||||
|
agi::Context *c; ///< Project context
|
||||||
|
long jumpframe; ///< Target frame to jump to
|
||||||
|
TimeEdit *JumpTime; ///< Target time edit control
|
||||||
|
wxTextCtrl *JumpFrame; ///< Target frame edit control
|
||||||
|
|
||||||
|
/// Enter/OK button handler
|
||||||
|
void OnOK(wxCommandEvent &event);
|
||||||
|
/// Update target frame on target time changed
|
||||||
|
void OnEditTime(wxCommandEvent &event);
|
||||||
|
/// Update target time on target frame changed
|
||||||
|
void OnEditFrame(wxCommandEvent &event);
|
||||||
|
/// Dialog initializer to set default focus and selection
|
||||||
|
void OnInitDialog(wxInitDialogEvent&);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogJumpTo(agi::Context *c);
|
||||||
|
};
|
||||||
|
|
||||||
DialogJumpTo::DialogJumpTo(agi::Context *c)
|
DialogJumpTo::DialogJumpTo(agi::Context *c)
|
||||||
: wxDialog(c->parent, -1, _("Jump to"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxWANTS_CHARS)
|
: wxDialog(c->parent, -1, _("Jump to"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxWANTS_CHARS)
|
||||||
, c(c)
|
, c(c)
|
||||||
|
@ -112,3 +126,8 @@ void DialogJumpTo::OnEditFrame (wxCommandEvent &event) {
|
||||||
JumpFrame->GetValue().ToLong(&jumpframe);
|
JumpFrame->GetValue().ToLong(&jumpframe);
|
||||||
JumpTime->SetTime(c->videoController->TimeAtFrame(jumpframe));
|
JumpTime->SetTime(c->videoController->TimeAtFrame(jumpframe));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowJumpToDialog(agi::Context *c) {
|
||||||
|
DialogJumpTo(c).ShowModal();
|
||||||
|
}
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
// Copyright (c) 2005, Rodrigo Braz Monteiro
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_jumpto.h
|
|
||||||
/// @see dialog_jumpto.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class TimeEdit;
|
|
||||||
class wxTextCtrl;
|
|
||||||
|
|
||||||
class DialogJumpTo final : public wxDialog {
|
|
||||||
agi::Context *c; ///< Project context
|
|
||||||
long jumpframe; ///< Target frame to jump to
|
|
||||||
TimeEdit *JumpTime; ///< Target time edit control
|
|
||||||
wxTextCtrl *JumpFrame; ///< Target frame edit control
|
|
||||||
|
|
||||||
/// Enter/OK button handler
|
|
||||||
void OnOK(wxCommandEvent &event);
|
|
||||||
/// Update target frame on target time changed
|
|
||||||
void OnEditTime(wxCommandEvent &event);
|
|
||||||
/// Update target time on target frame changed
|
|
||||||
void OnEditFrame(wxCommandEvent &event);
|
|
||||||
/// Dialog initializer to set default focus and selection
|
|
||||||
void OnInitDialog(wxInitDialogEvent&);
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructor
|
|
||||||
/// @param c Project context
|
|
||||||
DialogJumpTo(agi::Context *c);
|
|
||||||
};
|
|
|
@ -28,13 +28,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_kara_timing_copy.cpp
|
|
||||||
/// @brief Karaoke timing copier dialogue box and logic
|
|
||||||
/// @ingroup tools_ui kara_timing_copy
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_kara_timing_copy.h"
|
|
||||||
|
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "ass_karaoke.h"
|
#include "ass_karaoke.h"
|
||||||
|
@ -53,10 +46,12 @@
|
||||||
#include <boost/locale/boundary.hpp>
|
#include <boost/locale/boundary.hpp>
|
||||||
#include <boost/range/algorithm_ext.hpp>
|
#include <boost/range/algorithm_ext.hpp>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
#include <list>
|
||||||
|
#include <vector>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/combobox.h>
|
#include <wx/combobox.h>
|
||||||
#include <wx/dcclient.h>
|
#include <wx/dcclient.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/listctrl.h>
|
#include <wx/listctrl.h>
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
#include <wx/settings.h>
|
#include <wx/settings.h>
|
||||||
|
@ -64,6 +59,7 @@
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/string.h>
|
#include <wx/string.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
#define TEXT_LABEL_SOURCE _("Source: ")
|
#define TEXT_LABEL_SOURCE _("Source: ")
|
||||||
#define TEXT_LABEL_DEST _("Dest: ")
|
#define TEXT_LABEL_DEST _("Dest: ")
|
||||||
|
|
||||||
|
@ -443,6 +439,39 @@ bool KaraokeLineMatchDisplay::UndoMatch()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DialogKanjiTimer final : public wxDialog {
|
||||||
|
AssFile *subs;
|
||||||
|
|
||||||
|
KaraokeLineMatchDisplay *display;
|
||||||
|
|
||||||
|
wxComboBox *SourceStyle, *DestStyle;
|
||||||
|
wxCheckBox *Interpolate;
|
||||||
|
|
||||||
|
std::vector<std::pair<AssDialogue*, std::string>> LinesToChange;
|
||||||
|
|
||||||
|
AssDialogue *currentSourceLine = nullptr;
|
||||||
|
AssDialogue *currentDestinationLine = nullptr;
|
||||||
|
|
||||||
|
void OnClose(wxCommandEvent &event);
|
||||||
|
void OnStart(wxCommandEvent &event);
|
||||||
|
void OnLink(wxCommandEvent &event);
|
||||||
|
void OnUnlink(wxCommandEvent &event);
|
||||||
|
void OnSkipSource(wxCommandEvent &event);
|
||||||
|
void OnSkipDest(wxCommandEvent &event);
|
||||||
|
void OnGoBack(wxCommandEvent &event);
|
||||||
|
void OnAccept(wxCommandEvent &event);
|
||||||
|
void OnKeyDown(wxKeyEvent &event);
|
||||||
|
|
||||||
|
void ResetForNewLine();
|
||||||
|
void TryAutoMatch();
|
||||||
|
|
||||||
|
AssDialogue *FindNextStyleMatch(AssDialogue *search_from, const std::string &search_style);
|
||||||
|
AssDialogue *FindPrevStyleMatch(AssDialogue *search_from, const std::string &search_style);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogKanjiTimer(agi::Context *context);
|
||||||
|
};
|
||||||
|
|
||||||
DialogKanjiTimer::DialogKanjiTimer(agi::Context *c)
|
DialogKanjiTimer::DialogKanjiTimer(agi::Context *c)
|
||||||
: wxDialog(c->parent, -1, _("Kanji timing"))
|
: wxDialog(c->parent, -1, _("Kanji timing"))
|
||||||
, subs(c->ass.get())
|
, subs(c->ass.get())
|
||||||
|
@ -685,3 +714,8 @@ AssDialogue *DialogKanjiTimer::FindPrevStyleMatch(AssDialogue *search_from, cons
|
||||||
if (!search_from) return search_from;
|
if (!search_from) return search_from;
|
||||||
return find_next(EntryList<AssDialogue>::reverse_iterator(subs->iterator_to(*search_from)), subs->Events.rend(), search_style);
|
return find_next(EntryList<AssDialogue>::reverse_iterator(subs->iterator_to(*search_from)), subs->Events.rend(), search_style);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowKanjiTimerDialog(agi::Context *c) {
|
||||||
|
DialogKanjiTimer(c).ShowModal();
|
||||||
|
}
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
// Copyright (c) 2006-2009, Dan Donovan (Dansolo), Niels Martin Hansen
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_kara_timing_copy.h
|
|
||||||
/// @see dialog_kara_timing_copy.cpp
|
|
||||||
/// @ingroup tools_ui kara_timing_copy
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <list>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class AssDialogue;
|
|
||||||
class AssFile;
|
|
||||||
class KaraokeLineMatchDisplay;
|
|
||||||
class wxComboBox;
|
|
||||||
class wxCheckBox;
|
|
||||||
|
|
||||||
class DialogKanjiTimer final : public wxDialog {
|
|
||||||
AssFile *subs;
|
|
||||||
|
|
||||||
KaraokeLineMatchDisplay *display;
|
|
||||||
|
|
||||||
wxComboBox *SourceStyle, *DestStyle;
|
|
||||||
wxCheckBox *Interpolate;
|
|
||||||
|
|
||||||
std::vector<std::pair<AssDialogue*, std::string>> LinesToChange;
|
|
||||||
|
|
||||||
AssDialogue *currentSourceLine = nullptr;
|
|
||||||
AssDialogue *currentDestinationLine = nullptr;
|
|
||||||
|
|
||||||
void OnClose(wxCommandEvent &event);
|
|
||||||
void OnStart(wxCommandEvent &event);
|
|
||||||
void OnLink(wxCommandEvent &event);
|
|
||||||
void OnUnlink(wxCommandEvent &event);
|
|
||||||
void OnSkipSource(wxCommandEvent &event);
|
|
||||||
void OnSkipDest(wxCommandEvent &event);
|
|
||||||
void OnGoBack(wxCommandEvent &event);
|
|
||||||
void OnAccept(wxCommandEvent &event);
|
|
||||||
void OnKeyDown(wxKeyEvent &event);
|
|
||||||
|
|
||||||
void ResetForNewLine();
|
|
||||||
void TryAutoMatch();
|
|
||||||
|
|
||||||
AssDialogue *FindNextStyleMatch(AssDialogue *search_from, const std::string &search_style);
|
|
||||||
AssDialogue *FindPrevStyleMatch(AssDialogue *search_from, const std::string &search_style);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogKanjiTimer(agi::Context *context);
|
|
||||||
};
|
|
|
@ -27,14 +27,8 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_log.cpp
|
|
||||||
/// @brief Log window.
|
|
||||||
/// @ingroup libaegisub
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_log.h"
|
|
||||||
|
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
#include "dialog_manager.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
|
|
||||||
#include <libaegisub/dispatch.h>
|
#include <libaegisub/dispatch.h>
|
||||||
|
@ -44,12 +38,13 @@
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
class EmitLog final : public agi::log::Emitter {
|
class EmitLog final : public agi::log::Emitter {
|
||||||
wxTextCtrl *text_ctrl;
|
wxTextCtrl *text_ctrl;
|
||||||
public:
|
public:
|
||||||
|
@ -93,6 +88,14 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LogWindow : public wxDialog {
|
||||||
|
agi::log::Emitter *emit_log;
|
||||||
|
|
||||||
|
public:
|
||||||
|
LogWindow(agi::Context *c);
|
||||||
|
~LogWindow();
|
||||||
|
};
|
||||||
|
|
||||||
LogWindow::LogWindow(agi::Context *c)
|
LogWindow::LogWindow(agi::Context *c)
|
||||||
: wxDialog(c->parent, -1, _("Log window"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER)
|
: wxDialog(c->parent, -1, _("Log window"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER)
|
||||||
{
|
{
|
||||||
|
@ -110,3 +113,8 @@ LogWindow::LogWindow(agi::Context *c)
|
||||||
LogWindow::~LogWindow() {
|
LogWindow::~LogWindow() {
|
||||||
agi::log::log->Unsubscribe(emit_log);
|
agi::log::log->Unsubscribe(emit_log);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowLogWindow(agi::Context *c) {
|
||||||
|
c->dialog->Show<LogWindow>(c);
|
||||||
|
}
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
// Copyright (c) 2010, Amar Takhar
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_log.h
|
|
||||||
/// @see dialog_log.cpp
|
|
||||||
/// @ingroup libaegisub
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi {
|
|
||||||
namespace log { class Emitter; }
|
|
||||||
struct Context;
|
|
||||||
}
|
|
||||||
|
|
||||||
class LogWindow: public wxDialog {
|
|
||||||
agi::log::Emitter *emit_log;
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// @brief Constructor
|
|
||||||
/// @param c Project context
|
|
||||||
LogWindow(agi::Context *c);
|
|
||||||
~LogWindow();
|
|
||||||
};
|
|
|
@ -11,17 +11,18 @@
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
//
|
||||||
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_manager.h
|
#include "utils.h"
|
||||||
/// @brief Manager for dialogs
|
|
||||||
/// @ingroup utility
|
#include <libaegisub/exception.h>
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
#include <wx/dialog.h>
|
||||||
|
|
||||||
#include "utils.h"
|
namespace agi { struct Context; }
|
||||||
|
|
||||||
/// @brief A manager for dialogs
|
/// @brief A manager for dialogs
|
||||||
///
|
///
|
||||||
|
|
|
@ -27,22 +27,29 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_paste_over.cpp
|
#include "help_button.h"
|
||||||
/// @brief Paste Over set-up dialogue box
|
#include "options.h"
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_paste_over.h"
|
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/checklst.h>
|
#include <wx/checklst.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
|
|
||||||
#include "help_button.h"
|
namespace {
|
||||||
#include "options.h"
|
class DialogPasteOver final : public wxDialog {
|
||||||
|
wxCheckListBox *ListBox;
|
||||||
|
|
||||||
|
void CheckAll(bool check);
|
||||||
|
|
||||||
|
void OnOK(wxCommandEvent &);
|
||||||
|
void OnTimes(wxCommandEvent &);
|
||||||
|
void OnText(wxCommandEvent &);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogPasteOver(wxWindow *parent);
|
||||||
|
};
|
||||||
|
|
||||||
DialogPasteOver::DialogPasteOver(wxWindow *parent)
|
DialogPasteOver::DialogPasteOver(wxWindow *parent)
|
||||||
: wxDialog(parent, -1, _("Select Fields to Paste Over"))
|
: wxDialog(parent, -1, _("Select Fields to Paste Over"))
|
||||||
|
@ -125,3 +132,8 @@ void DialogPasteOver::CheckAll(bool check) {
|
||||||
for (size_t i = 0; i < ListBox->GetCount(); ++i)
|
for (size_t i = 0; i < ListBox->GetCount(); ++i)
|
||||||
ListBox->Check(i, check);
|
ListBox->Check(i, check);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ShowPasteOverDialog(wxWindow *parent) {
|
||||||
|
return DialogPasteOver(parent).ShowModal() == wxID_OK;
|
||||||
|
}
|
||||||
|
|
|
@ -31,20 +31,3 @@
|
||||||
/// @see dialog_paste_over.cpp
|
/// @see dialog_paste_over.cpp
|
||||||
/// @ingroup secondary_ui
|
/// @ingroup secondary_ui
|
||||||
///
|
///
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
class wxCheckListBox;
|
|
||||||
|
|
||||||
class DialogPasteOver final : public wxDialog {
|
|
||||||
wxCheckListBox *ListBox;
|
|
||||||
|
|
||||||
void CheckAll(bool check);
|
|
||||||
|
|
||||||
void OnOK(wxCommandEvent &);
|
|
||||||
void OnTimes(wxCommandEvent &);
|
|
||||||
void OnText(wxCommandEvent &);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogPasteOver(wxWindow *parent);
|
|
||||||
};
|
|
||||||
|
|
|
@ -27,13 +27,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_properties.cpp
|
|
||||||
/// @brief Dialogue box to set subtitle meta-data
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_properties.h"
|
|
||||||
|
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "async_video_provider.h"
|
#include "async_video_provider.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
@ -46,14 +39,51 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <boost/algorithm/string/predicate.hpp>
|
#include <boost/algorithm/string/predicate.hpp>
|
||||||
|
#include <vector>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/combobox.h>
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class DialogProperties final : public wxDialog {
|
||||||
|
agi::Context *c; ///< Project this dialog is adjusting the properties of
|
||||||
|
|
||||||
|
/// Pairs of a script property and a text control for that property
|
||||||
|
std::vector<std::pair<std::string, wxTextCtrl*>> properties;
|
||||||
|
|
||||||
|
// Things that effect rendering
|
||||||
|
wxComboBox *WrapStyle; ///< Wrapping style for long lines
|
||||||
|
wxTextCtrl *ResX; ///< Script x resolution
|
||||||
|
wxTextCtrl *ResY; ///< Script y resolution
|
||||||
|
wxCheckBox *ScaleBorder; ///< If script resolution != video resolution how should borders be handled
|
||||||
|
wxComboBox *YCbCrMatrix;
|
||||||
|
|
||||||
|
/// OK button handler
|
||||||
|
void OnOK(wxCommandEvent &event);
|
||||||
|
/// Set script resolution to video resolution button
|
||||||
|
void OnSetFromVideo(wxCommandEvent &event);
|
||||||
|
/// Set a script info field
|
||||||
|
/// @param key Name of field
|
||||||
|
/// @param value New value
|
||||||
|
/// @return Did the value actually need to be changed?
|
||||||
|
int SetInfoIfDifferent(std::string const& key, std::string const& value);
|
||||||
|
|
||||||
|
/// Add a property with label and text box for updating the property
|
||||||
|
/// @param sizer Sizer to add the label and control to
|
||||||
|
/// @param label Label text to use
|
||||||
|
/// @param property Script info property name
|
||||||
|
void AddProperty(wxSizer *sizer, wxString const& label, std::string const& property);
|
||||||
|
|
||||||
|
public:
|
||||||
|
/// Constructor
|
||||||
|
/// @param c Project context
|
||||||
|
DialogProperties(agi::Context *c);
|
||||||
|
};
|
||||||
|
|
||||||
DialogProperties::DialogProperties(agi::Context *c)
|
DialogProperties::DialogProperties(agi::Context *c)
|
||||||
: wxDialog(c->parent, -1, _("Script Properties"))
|
: wxDialog(c->parent, -1, _("Script Properties"))
|
||||||
, c(c)
|
, c(c)
|
||||||
|
@ -176,3 +206,8 @@ void DialogProperties::OnSetFromVideo(wxCommandEvent &) {
|
||||||
ResX->SetValue(std::to_wstring(c->project->VideoProvider()->GetWidth()));
|
ResX->SetValue(std::to_wstring(c->project->VideoProvider()->GetWidth()));
|
||||||
ResY->SetValue(std::to_wstring(c->project->VideoProvider()->GetHeight()));
|
ResY->SetValue(std::to_wstring(c->project->VideoProvider()->GetHeight()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowPropertiesDialog(agi::Context *c) {
|
||||||
|
DialogProperties(c).ShowModal();
|
||||||
|
}
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
// Copyright (c) 2005, Rodrigo Braz Monteiro
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_properties.h
|
|
||||||
/// @see dialog_properties.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
class AssFile;
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class wxCheckBox;
|
|
||||||
class wxComboBox;
|
|
||||||
class wxTextCtrl;
|
|
||||||
|
|
||||||
class DialogProperties final : public wxDialog {
|
|
||||||
agi::Context *c; ///< Project this dialog is adjusting the properties of
|
|
||||||
|
|
||||||
/// Pairs of a script property and a text control for that property
|
|
||||||
std::vector<std::pair<std::string, wxTextCtrl*>> properties;
|
|
||||||
|
|
||||||
// Things that effect rendering
|
|
||||||
wxComboBox *WrapStyle; ///< Wrapping style for long lines
|
|
||||||
wxTextCtrl *ResX; ///< Script x resolution
|
|
||||||
wxTextCtrl *ResY; ///< Script y resolution
|
|
||||||
wxCheckBox *ScaleBorder; ///< If script resolution != video resolution how should borders be handled
|
|
||||||
wxComboBox *YCbCrMatrix;
|
|
||||||
|
|
||||||
/// OK button handler
|
|
||||||
void OnOK(wxCommandEvent &event);
|
|
||||||
/// Set script resolution to video resolution button
|
|
||||||
void OnSetFromVideo(wxCommandEvent &event);
|
|
||||||
/// Set a script info field
|
|
||||||
/// @param key Name of field
|
|
||||||
/// @param value New value
|
|
||||||
/// @return Did the value actually need to be changed?
|
|
||||||
int SetInfoIfDifferent(std::string const& key, std::string const& value);
|
|
||||||
|
|
||||||
/// Add a property with label and text box for updating the property
|
|
||||||
/// @param sizer Sizer to add the label and control to
|
|
||||||
/// @param label Label text to use
|
|
||||||
/// @param property Script info property name
|
|
||||||
void AddProperty(wxSizer *sizer, wxString const& label, std::string const& property);
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructor
|
|
||||||
/// @param c Project context
|
|
||||||
DialogProperties(agi::Context *c);
|
|
||||||
};
|
|
|
@ -11,13 +11,8 @@
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
//
|
||||||
/// @file dialog_resample.cpp
|
// Aegisub Project http://www.aegisub.org/
|
||||||
/// @brief Resample Resolution dialogue box and logic
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_resample.h"
|
|
||||||
|
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "async_video_provider.h"
|
#include "async_video_provider.h"
|
||||||
|
@ -32,12 +27,57 @@
|
||||||
#include <boost/range/size.hpp>
|
#include <boost/range/size.hpp>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/combobox.h>
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/spinctrl.h>
|
#include <wx/spinctrl.h>
|
||||||
#include <wx/statbox.h>
|
#include <wx/statbox.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/valgen.h>
|
#include <wx/valgen.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
/// @class DialogResample
|
||||||
|
/// @brief Configuration dialog for resolution resampling
|
||||||
|
///
|
||||||
|
/// Populate a ResampleSettings structure with data from the user
|
||||||
|
class DialogResample final : public wxDialog {
|
||||||
|
agi::Context *c; ///< Project context
|
||||||
|
|
||||||
|
int script_w;
|
||||||
|
int script_h;
|
||||||
|
YCbCrMatrix script_mat;
|
||||||
|
int video_w = 0;
|
||||||
|
int video_h = 0;
|
||||||
|
YCbCrMatrix video_mat;
|
||||||
|
|
||||||
|
wxSpinCtrl *source_x;
|
||||||
|
wxSpinCtrl *source_y;
|
||||||
|
wxSpinCtrl *dest_x;
|
||||||
|
wxSpinCtrl *dest_y;
|
||||||
|
wxComboBox *source_matrix;
|
||||||
|
wxComboBox *dest_matrix;
|
||||||
|
wxCheckBox *symmetrical;
|
||||||
|
wxRadioBox *ar_mode;
|
||||||
|
wxSpinCtrl *margin_ctrl[4];
|
||||||
|
|
||||||
|
wxButton *from_script;
|
||||||
|
wxButton *from_video;
|
||||||
|
|
||||||
|
void SetSourceFromScript(wxCommandEvent &);
|
||||||
|
/// Set the destination resolution to the video's resolution
|
||||||
|
void SetDestFromVideo(wxCommandEvent &);
|
||||||
|
/// Symmetrical checkbox toggle handler
|
||||||
|
void OnSymmetrical(wxCommandEvent &);
|
||||||
|
/// Copy margin values over if symmetrical is enabled
|
||||||
|
void OnMarginChange(wxSpinCtrl *src, wxSpinCtrl *dst);
|
||||||
|
void UpdateButtons();
|
||||||
|
|
||||||
|
public:
|
||||||
|
/// Constructor
|
||||||
|
/// @param context Project context
|
||||||
|
/// @param[out] settings Settings struct to populate
|
||||||
|
DialogResample(agi::Context *context, ResampleSettings &settings);
|
||||||
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
LEFT = 0,
|
LEFT = 0,
|
||||||
RIGHT = 1,
|
RIGHT = 1,
|
||||||
|
@ -220,3 +260,8 @@ void DialogResample::OnMarginChange(wxSpinCtrl *src, wxSpinCtrl *dst) {
|
||||||
if (symmetrical->IsChecked())
|
if (symmetrical->IsChecked())
|
||||||
dst->SetValue(src->GetValue());
|
dst->SetValue(src->GetValue());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PromptForResampleSettings(agi::Context *c, ResampleSettings &settings) {
|
||||||
|
return DialogResample(c, settings).ShowModal() == wxID_OK;
|
||||||
|
}
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
// Copyright (c) 2012, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
/// @file dialog_resample.h
|
|
||||||
/// @see dialog_resample.cpp
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class AssFile;
|
|
||||||
class wxCheckBox;
|
|
||||||
class wxComboBox;
|
|
||||||
class wxRadioBox;
|
|
||||||
class wxSpinCtrl;
|
|
||||||
enum class YCbCrMatrix : int;
|
|
||||||
struct ResampleSettings;
|
|
||||||
|
|
||||||
/// @class DialogResample
|
|
||||||
/// @brief Configuration dialog for resolution resampling
|
|
||||||
///
|
|
||||||
/// Populate a ResampleSettings structure with data from the user
|
|
||||||
class DialogResample final : public wxDialog {
|
|
||||||
agi::Context *c; ///< Project context
|
|
||||||
|
|
||||||
int script_w;
|
|
||||||
int script_h;
|
|
||||||
YCbCrMatrix script_mat;
|
|
||||||
int video_w = 0;
|
|
||||||
int video_h = 0;
|
|
||||||
YCbCrMatrix video_mat;
|
|
||||||
|
|
||||||
wxSpinCtrl *source_x;
|
|
||||||
wxSpinCtrl *source_y;
|
|
||||||
wxSpinCtrl *dest_x;
|
|
||||||
wxSpinCtrl *dest_y;
|
|
||||||
wxComboBox *source_matrix;
|
|
||||||
wxComboBox *dest_matrix;
|
|
||||||
wxCheckBox *symmetrical;
|
|
||||||
wxRadioBox *ar_mode;
|
|
||||||
wxSpinCtrl *margin_ctrl[4];
|
|
||||||
|
|
||||||
wxButton *from_script;
|
|
||||||
wxButton *from_video;
|
|
||||||
|
|
||||||
void SetSourceFromScript(wxCommandEvent &);
|
|
||||||
/// Set the destination resolution to the video's resolution
|
|
||||||
void SetDestFromVideo(wxCommandEvent &);
|
|
||||||
/// Symmetrical checkbox toggle handler
|
|
||||||
void OnSymmetrical(wxCommandEvent &);
|
|
||||||
/// Copy margin values over if symmetrical is enabled
|
|
||||||
void OnMarginChange(wxSpinCtrl *src, wxSpinCtrl *dst);
|
|
||||||
void UpdateButtons();
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructor
|
|
||||||
/// @param context Project context
|
|
||||||
/// @param[out] settings Settings struct to populate
|
|
||||||
DialogResample(agi::Context *context, ResampleSettings &settings);
|
|
||||||
};
|
|
|
@ -14,17 +14,22 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_selected_choices.cpp
|
|
||||||
/// @brief wxMultiChoiceDialog with Select All and Select None
|
|
||||||
/// @ingroup
|
|
||||||
|
|
||||||
#include "dialog_selected_choices.h"
|
|
||||||
|
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
|
#include <wx/choicdlg.h>
|
||||||
#include <wx/listbox.h>
|
#include <wx/listbox.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
/// @class SelectedChoicesDialog
|
||||||
|
/// @brief wxMultiChoiceDialog with Select All and Select None
|
||||||
|
class SelectedChoicesDialog final : public wxMultiChoiceDialog {
|
||||||
|
void SelectAll(wxCommandEvent&);
|
||||||
|
|
||||||
|
public:
|
||||||
|
SelectedChoicesDialog(wxWindow *parent, wxString const& message, wxString const& caption, wxArrayString const& choices);
|
||||||
|
};
|
||||||
|
|
||||||
SelectedChoicesDialog::SelectedChoicesDialog(wxWindow *parent, wxString const& message, wxString const& caption, wxArrayString const& choices) {
|
SelectedChoicesDialog::SelectedChoicesDialog(wxWindow *parent, wxString const& message, wxString const& caption, wxArrayString const& choices) {
|
||||||
Create(parent, message, caption, choices);
|
Create(parent, message, caption, choices);
|
||||||
|
|
||||||
|
@ -47,6 +52,7 @@ void SelectedChoicesDialog::SelectAll(wxCommandEvent&) {
|
||||||
std::iota(sel.begin(), sel.end(), 0);
|
std::iota(sel.begin(), sel.end(), 0);
|
||||||
SetSelections(sel);
|
SetSelections(sel);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int GetSelectedChoices(wxWindow *parent, wxArrayInt& selections, wxString const& message, wxString const& caption, wxArrayString const& choices) {
|
int GetSelectedChoices(wxWindow *parent, wxArrayInt& selections, wxString const& message, wxString const& caption, wxArrayString const& choices) {
|
||||||
SelectedChoicesDialog dialog(parent, message, caption, choices);
|
SelectedChoicesDialog dialog(parent, message, caption, choices);
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
// Copyright (c) 2012, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_selected_choices.cpp
|
|
||||||
/// @brief wxMultiChoiceDialog with Select All and Select None
|
|
||||||
/// @ingroup
|
|
||||||
|
|
||||||
#include <wx/config.h>
|
|
||||||
#include <wx/choicdlg.h>
|
|
||||||
|
|
||||||
/// @class SelectedChoicesDialog
|
|
||||||
/// @brief wxMultiChoiceDialog with Select All and Select None
|
|
||||||
class SelectedChoicesDialog final : public wxMultiChoiceDialog {
|
|
||||||
SelectedChoicesDialog(SelectedChoicesDialog const&);
|
|
||||||
SelectedChoicesDialog& operator=(SelectedChoicesDialog const&);
|
|
||||||
|
|
||||||
void SelectAll(wxCommandEvent&);
|
|
||||||
|
|
||||||
public:
|
|
||||||
SelectedChoicesDialog(wxWindow *parent, wxString const& message, wxString const& caption, wxArrayString const& choices);
|
|
||||||
};
|
|
||||||
|
|
||||||
int GetSelectedChoices(wxWindow *parent, wxArrayInt& selections, wxString const& message, wxString const& caption, wxArrayString const& choices);
|
|
|
@ -14,16 +14,10 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_selection.cpp
|
|
||||||
/// @brief Select Lines dialogue box and logic
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_selection.h"
|
|
||||||
|
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
#include "dialog_manager.h"
|
||||||
#include "frame_main.h"
|
#include "frame_main.h"
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
|
@ -39,6 +33,7 @@
|
||||||
|
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/combobox.h>
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
#include <wx/radiobox.h>
|
#include <wx/radiobox.h>
|
||||||
#include <wx/radiobut.h>
|
#include <wx/radiobut.h>
|
||||||
|
@ -46,6 +41,28 @@
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
class DialogSelection final : public wxDialog {
|
||||||
|
agi::Context *con; ///< Project context
|
||||||
|
|
||||||
|
wxTextCtrl *match_text; ///< Text to search for
|
||||||
|
wxCheckBox *case_sensitive; ///< Should the search be case-sensitive
|
||||||
|
wxCheckBox *apply_to_dialogue; ///< Select/deselect uncommented lines
|
||||||
|
wxCheckBox *apply_to_comments; ///< Select/deselect commented lines
|
||||||
|
wxRadioButton *select_unmatching_lines; ///< Select lines which don't match instead
|
||||||
|
wxRadioBox *selection_change_type; ///< What sort of action to take on the selection
|
||||||
|
wxRadioBox *dialogue_field; ///< Which dialogue field to look at
|
||||||
|
wxRadioBox *match_mode;
|
||||||
|
|
||||||
|
void Process(wxCommandEvent&);
|
||||||
|
|
||||||
|
/// Dialogue/Comment check handler to ensure at least one is always checked
|
||||||
|
/// @param chk The checkbox to check if both are clear
|
||||||
|
void OnDialogueCheckbox(wxCheckBox *chk);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogSelection(agi::Context *c);
|
||||||
|
~DialogSelection();
|
||||||
|
};
|
||||||
|
|
||||||
enum class Action {
|
enum class Action {
|
||||||
SET = 0,
|
SET = 0,
|
||||||
|
@ -87,8 +104,6 @@ std::set<AssDialogue*> process(std::string const& match_text, bool match_case, M
|
||||||
return matches;
|
return matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
DialogSelection::DialogSelection(agi::Context *c) :
|
DialogSelection::DialogSelection(agi::Context *c) :
|
||||||
wxDialog (c->parent, -1, _("Select"), wxDefaultPosition, wxDefaultSize, wxCAPTION)
|
wxDialog (c->parent, -1, _("Select"), wxDefaultPosition, wxDefaultSize, wxCAPTION)
|
||||||
, con(c)
|
, con(c)
|
||||||
|
@ -236,3 +251,8 @@ void DialogSelection::OnDialogueCheckbox(wxCheckBox *chk) {
|
||||||
if(!apply_to_dialogue->IsChecked() && !apply_to_comments->GetValue())
|
if(!apply_to_dialogue->IsChecked() && !apply_to_comments->GetValue())
|
||||||
chk->SetValue(true);
|
chk->SetValue(true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowSelectLinesDialog(agi::Context *c) {
|
||||||
|
c->dialog->Show<DialogSelection>(c);
|
||||||
|
}
|
|
@ -1,52 +0,0 @@
|
||||||
// Copyright (c) 2011, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_selection.h
|
|
||||||
/// @see dialog_selection.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class AssDialogue;
|
|
||||||
class wxCheckBox;
|
|
||||||
class wxRadioBox;
|
|
||||||
class wxRadioButton;
|
|
||||||
class wxTextCtrl;
|
|
||||||
|
|
||||||
class DialogSelection final : public wxDialog {
|
|
||||||
agi::Context *con; ///< Project context
|
|
||||||
|
|
||||||
wxTextCtrl *match_text; ///< Text to search for
|
|
||||||
wxCheckBox *case_sensitive; ///< Should the search be case-sensitive
|
|
||||||
wxCheckBox *apply_to_dialogue; ///< Select/deselect uncommented lines
|
|
||||||
wxCheckBox *apply_to_comments; ///< Select/deselect commented lines
|
|
||||||
wxRadioButton *select_unmatching_lines; ///< Select lines which don't match instead
|
|
||||||
wxRadioBox *selection_change_type; ///< What sort of action to take on the selection
|
|
||||||
wxRadioBox *dialogue_field; ///< Which dialogue field to look at
|
|
||||||
wxRadioBox *match_mode;
|
|
||||||
|
|
||||||
void Process(wxCommandEvent&);
|
|
||||||
|
|
||||||
/// Dialogue/Comment check handler to ensure at least one is always checked
|
|
||||||
/// @param chk The checkbox to check if both are clear
|
|
||||||
void OnDialogueCheckbox(wxCheckBox *chk);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogSelection(agi::Context *c);
|
|
||||||
~DialogSelection();
|
|
||||||
};
|
|
|
@ -14,17 +14,11 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_shift_times.cpp
|
|
||||||
/// @brief Shift Times dialogue box and logic
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_shift_times.h"
|
|
||||||
|
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "ass_time.h"
|
#include "ass_time.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
#include "dialog_manager.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "libresrc/libresrc.h"
|
#include "libresrc/libresrc.h"
|
||||||
|
@ -38,21 +32,61 @@
|
||||||
#include <libaegisub/io.h>
|
#include <libaegisub/io.h>
|
||||||
#include <libaegisub/log.h>
|
#include <libaegisub/log.h>
|
||||||
#include <libaegisub/path.h>
|
#include <libaegisub/path.h>
|
||||||
#include <libaegisub/make_unique.h>
|
#include <libaegisub/signal.h>
|
||||||
|
#include <libaegisub/vfr.h>
|
||||||
|
|
||||||
#include <libaegisub/cajun/elements.h>
|
#include <libaegisub/cajun/elements.h>
|
||||||
#include <libaegisub/cajun/reader.h>
|
#include <libaegisub/cajun/reader.h>
|
||||||
#include <libaegisub/cajun/writer.h>
|
#include <libaegisub/cajun/writer.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <boost/filesystem/path.hpp>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/listbox.h>
|
#include <wx/listbox.h>
|
||||||
#include <wx/radiobox.h>
|
#include <wx/radiobox.h>
|
||||||
#include <wx/radiobut.h>
|
#include <wx/radiobut.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class DialogShiftTimes final : public wxDialog {
|
||||||
|
agi::Context *context;
|
||||||
|
|
||||||
|
agi::fs::path history_filename;
|
||||||
|
json::Array history;
|
||||||
|
agi::vfr::Framerate fps;
|
||||||
|
agi::signal::Connection timecodes_loaded_slot;
|
||||||
|
agi::signal::Connection selected_set_changed_slot;
|
||||||
|
|
||||||
|
TimeEdit *shift_time;
|
||||||
|
wxTextCtrl *shift_frames;
|
||||||
|
wxRadioButton *shift_by_time;
|
||||||
|
wxRadioButton *shift_by_frames;
|
||||||
|
wxRadioButton *shift_forward;
|
||||||
|
wxRadioButton *shift_backward;
|
||||||
|
wxRadioBox *selection_mode;
|
||||||
|
wxRadioBox *time_fields;
|
||||||
|
wxListBox *history_box;
|
||||||
|
|
||||||
|
void SaveHistory(json::Array const& shifted_blocks);
|
||||||
|
void LoadHistory();
|
||||||
|
void Process(wxCommandEvent&);
|
||||||
|
int Shift(int initial_time, int shift, bool by_time, agi::vfr::Time type);
|
||||||
|
|
||||||
|
void OnClear(wxCommandEvent&);
|
||||||
|
void OnByTime(wxCommandEvent&);
|
||||||
|
void OnByFrames(wxCommandEvent&);
|
||||||
|
void OnHistoryClick(wxCommandEvent&);
|
||||||
|
|
||||||
|
void OnSelectedSetChanged();
|
||||||
|
void OnTimecodesLoaded(agi::vfr::Framerate const& new_fps);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogShiftTimes(agi::Context *context);
|
||||||
|
~DialogShiftTimes();
|
||||||
|
};
|
||||||
|
|
||||||
static wxString get_history_string(json::Object &obj) {
|
static wxString get_history_string(json::Object &obj) {
|
||||||
wxString filename = to_wx(obj["filename"]);
|
wxString filename = to_wx(obj["filename"]);
|
||||||
if (filename.empty())
|
if (filename.empty())
|
||||||
|
@ -99,7 +133,6 @@ DialogShiftTimes::DialogShiftTimes(agi::Context *context)
|
||||||
: wxDialog(context->parent, -1, _("Shift Times"))
|
: wxDialog(context->parent, -1, _("Shift Times"))
|
||||||
, context(context)
|
, context(context)
|
||||||
, history_filename(config::path->Decode("?user/shift_history.json"))
|
, history_filename(config::path->Decode("?user/shift_history.json"))
|
||||||
, history(agi::make_unique<json::Array>())
|
|
||||||
, timecodes_loaded_slot(context->project->AddTimecodesListener(&DialogShiftTimes::OnTimecodesLoaded, this))
|
, timecodes_loaded_slot(context->project->AddTimecodesListener(&DialogShiftTimes::OnTimecodesLoaded, this))
|
||||||
, selected_set_changed_slot(context->selectionController->AddSelectionListener(&DialogShiftTimes::OnSelectedSetChanged, this))
|
, selected_set_changed_slot(context->selectionController->AddSelectionListener(&DialogShiftTimes::OnSelectedSetChanged, this))
|
||||||
{
|
{
|
||||||
|
@ -234,7 +267,7 @@ void DialogShiftTimes::OnSelectedSetChanged() {
|
||||||
void DialogShiftTimes::OnClear(wxCommandEvent &) {
|
void DialogShiftTimes::OnClear(wxCommandEvent &) {
|
||||||
agi::fs::Remove(history_filename);
|
agi::fs::Remove(history_filename);
|
||||||
history_box->Clear();
|
history_box->Clear();
|
||||||
history->clear();
|
history.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogShiftTimes::OnByTime(wxCommandEvent &) {
|
void DialogShiftTimes::OnByTime(wxCommandEvent &) {
|
||||||
|
@ -249,9 +282,9 @@ void DialogShiftTimes::OnByFrames(wxCommandEvent &) {
|
||||||
|
|
||||||
void DialogShiftTimes::OnHistoryClick(wxCommandEvent &evt) {
|
void DialogShiftTimes::OnHistoryClick(wxCommandEvent &evt) {
|
||||||
size_t entry = evt.GetInt();
|
size_t entry = evt.GetInt();
|
||||||
if (entry >= history->size()) return;
|
if (entry >= history.size()) return;
|
||||||
|
|
||||||
json::Object& obj = (*history)[entry];
|
json::Object& obj = history[entry];
|
||||||
if (obj["is by time"]) {
|
if (obj["is by time"]) {
|
||||||
shift_time->SetTime(AssTime((std::string)obj["amount"]));
|
shift_time->SetTime(AssTime((std::string)obj["amount"]));
|
||||||
shift_by_time->SetValue(true);
|
shift_by_time->SetValue(true);
|
||||||
|
@ -284,12 +317,12 @@ void DialogShiftTimes::SaveHistory(json::Array const& shifted_blocks) {
|
||||||
new_entry["mode"] = selection_mode->GetSelection();
|
new_entry["mode"] = selection_mode->GetSelection();
|
||||||
new_entry["selection"] = shifted_blocks;
|
new_entry["selection"] = shifted_blocks;
|
||||||
|
|
||||||
history->push_front(new_entry);
|
history.push_front(new_entry);
|
||||||
if (history->size() > 50)
|
if (history.size() > 50)
|
||||||
history->resize(50);
|
history.resize(50);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
json::Writer::Write(*history, agi::io::Save(history_filename).Get());
|
json::Writer::Write(history, agi::io::Save(history_filename).Get());
|
||||||
}
|
}
|
||||||
catch (agi::fs::FileSystemError const& e) {
|
catch (agi::fs::FileSystemError const& e) {
|
||||||
LOG_E("dialog_shift_times/save_history") << "Cannot save shift times history: " << e.GetChainedMessage();
|
LOG_E("dialog_shift_times/save_history") << "Cannot save shift times history: " << e.GetChainedMessage();
|
||||||
|
@ -304,9 +337,9 @@ void DialogShiftTimes::LoadHistory() {
|
||||||
std::unique_ptr<std::istream> file(agi::io::Open(history_filename));
|
std::unique_ptr<std::istream> file(agi::io::Open(history_filename));
|
||||||
json::UnknownElement root;
|
json::UnknownElement root;
|
||||||
json::Reader::Read(root, *file);
|
json::Reader::Read(root, *file);
|
||||||
*history = root;
|
history = root;
|
||||||
|
|
||||||
for (auto& history_entry : *history)
|
for (auto& history_entry : history)
|
||||||
history_box->Append(get_history_string(history_entry));
|
history_box->Append(get_history_string(history_entry));
|
||||||
}
|
}
|
||||||
catch (agi::fs::FileSystemError const& e) {
|
catch (agi::fs::FileSystemError const& e) {
|
||||||
|
@ -389,3 +422,8 @@ int DialogShiftTimes::Shift(int initial_time, int shift, bool by_time, agi::vfr:
|
||||||
else
|
else
|
||||||
return fps.TimeAtFrame(shift + fps.FrameAtTime(initial_time, type), type);
|
return fps.TimeAtFrame(shift + fps.FrameAtTime(initial_time, type), type);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowShiftTimesDialog(agi::Context *c) {
|
||||||
|
c->dialog->Show<DialogShiftTimes>(c);
|
||||||
|
}
|
||||||
|
|
|
@ -1,80 +0,0 @@
|
||||||
// Copyright (c) 2011, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_shift_times.h
|
|
||||||
/// @see dialog_shift_times.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <libaegisub/fs_fwd.h>
|
|
||||||
#include <libaegisub/signal.h>
|
|
||||||
#include <libaegisub/vfr.h>
|
|
||||||
|
|
||||||
#include <boost/filesystem/path.hpp>
|
|
||||||
#include <deque>
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
class AssDialogue;
|
|
||||||
class TimeEdit;
|
|
||||||
class wxListBox;
|
|
||||||
class wxRadioBox;
|
|
||||||
class wxRadioButton;
|
|
||||||
class wxTextCtrl;
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
namespace json {
|
|
||||||
class UnknownElement;
|
|
||||||
typedef std::deque<UnknownElement> Array;
|
|
||||||
}
|
|
||||||
|
|
||||||
class DialogShiftTimes final : public wxDialog {
|
|
||||||
wxDECLARE_NO_COPY_CLASS(DialogShiftTimes); // clang + libc++ herps a derp without this
|
|
||||||
agi::Context *context;
|
|
||||||
|
|
||||||
agi::fs::path history_filename;
|
|
||||||
std::unique_ptr<json::Array> history;
|
|
||||||
agi::vfr::Framerate fps;
|
|
||||||
agi::signal::Connection timecodes_loaded_slot;
|
|
||||||
agi::signal::Connection selected_set_changed_slot;
|
|
||||||
|
|
||||||
TimeEdit *shift_time;
|
|
||||||
wxTextCtrl *shift_frames;
|
|
||||||
wxRadioButton *shift_by_time;
|
|
||||||
wxRadioButton *shift_by_frames;
|
|
||||||
wxRadioButton *shift_forward;
|
|
||||||
wxRadioButton *shift_backward;
|
|
||||||
wxRadioBox *selection_mode;
|
|
||||||
wxRadioBox *time_fields;
|
|
||||||
wxListBox *history_box;
|
|
||||||
|
|
||||||
void SaveHistory(json::Array const& shifted_blocks);
|
|
||||||
void LoadHistory();
|
|
||||||
void Process(wxCommandEvent&);
|
|
||||||
int Shift(int initial_time, int shift, bool by_time, agi::vfr::Time type);
|
|
||||||
|
|
||||||
void OnClear(wxCommandEvent&);
|
|
||||||
void OnByTime(wxCommandEvent&);
|
|
||||||
void OnByFrames(wxCommandEvent&);
|
|
||||||
void OnHistoryClick(wxCommandEvent&);
|
|
||||||
|
|
||||||
void OnSelectedSetChanged();
|
|
||||||
void OnTimecodesLoaded(agi::vfr::Framerate const& new_fps);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogShiftTimes(agi::Context *context);
|
|
||||||
~DialogShiftTimes();
|
|
||||||
};
|
|
|
@ -14,16 +14,10 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_spellchecker.cpp
|
|
||||||
/// @brief Spell checker dialogue box
|
|
||||||
/// @ingroup spelling
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_spellchecker.h"
|
|
||||||
|
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
#include "dialog_manager.h"
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
#include "include/aegisub/spellchecker.h"
|
#include "include/aegisub/spellchecker.h"
|
||||||
|
@ -39,8 +33,13 @@
|
||||||
#include <libaegisub/spellchecker.h>
|
#include <libaegisub/spellchecker.h>
|
||||||
|
|
||||||
#include <boost/locale/conversion.hpp>
|
#include <boost/locale/conversion.hpp>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
#include <set>
|
||||||
|
#include <wx/arrstr.h>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/combobox.h>
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/intl.h>
|
#include <wx/intl.h>
|
||||||
#include <wx/listbox.h>
|
#include <wx/listbox.h>
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
|
@ -48,6 +47,60 @@
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class DialogSpellChecker final : public wxDialog {
|
||||||
|
agi::Context *context; ///< The project context
|
||||||
|
std::unique_ptr<agi::SpellChecker> spellchecker; ///< The spellchecking engine
|
||||||
|
|
||||||
|
/// Words which the user has indicated should always be corrected
|
||||||
|
std::map<std::string, std::string> auto_replace;
|
||||||
|
|
||||||
|
/// Words which the user has temporarily added to the dictionary
|
||||||
|
std::set<std::string> auto_ignore;
|
||||||
|
|
||||||
|
/// Dictionaries available
|
||||||
|
wxArrayString dictionary_lang_codes;
|
||||||
|
|
||||||
|
int word_start; ///< Start index of the current misspelled word
|
||||||
|
int word_len; ///< Length of the current misspelled word
|
||||||
|
|
||||||
|
wxTextCtrl *orig_word; ///< The word being corrected
|
||||||
|
wxTextCtrl *replace_word; ///< The replacement that will be used if "Replace" is clicked
|
||||||
|
wxListBox *suggest_list; ///< The list of suggested replacements
|
||||||
|
|
||||||
|
wxComboBox *language; ///< The list of available languages
|
||||||
|
wxButton *add_button; ///< Add word to currently active dictionary
|
||||||
|
wxButton *remove_button; ///< Remove word from currently active dictionary
|
||||||
|
|
||||||
|
AssDialogue *start_line = nullptr; ///< The first line checked
|
||||||
|
AssDialogue *active_line = nullptr; ///< The most recently checked line
|
||||||
|
bool has_looped = false; ///< Has the search already looped from the end to beginning?
|
||||||
|
|
||||||
|
/// Find the next misspelled word and close the dialog if there are none
|
||||||
|
/// @return Are there any more misspelled words?
|
||||||
|
bool FindNext();
|
||||||
|
|
||||||
|
/// Check a single line for misspellings
|
||||||
|
/// @param active_line Line to check
|
||||||
|
/// @param start_pos Index in the line to start at
|
||||||
|
/// @param[in,out] commit_id Commit id for coalescing autoreplace commits
|
||||||
|
/// @return Was a misspelling found?
|
||||||
|
bool CheckLine(AssDialogue *active_line, int start_pos, int *commit_id);
|
||||||
|
|
||||||
|
/// Set the current word to be corrected
|
||||||
|
void SetWord(std::string const& word);
|
||||||
|
/// Correct the currently selected word
|
||||||
|
void Replace();
|
||||||
|
|
||||||
|
void OnChangeLanguage(wxCommandEvent&);
|
||||||
|
void OnChangeSuggestion(wxCommandEvent&);
|
||||||
|
|
||||||
|
void OnReplace(wxCommandEvent&);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogSpellChecker(agi::Context *context);
|
||||||
|
};
|
||||||
|
|
||||||
DialogSpellChecker::DialogSpellChecker(agi::Context *context)
|
DialogSpellChecker::DialogSpellChecker(agi::Context *context)
|
||||||
: wxDialog(context->parent, -1, _("Spell Checker"))
|
: wxDialog(context->parent, -1, _("Spell Checker"))
|
||||||
, context(context)
|
, context(context)
|
||||||
|
@ -176,9 +229,6 @@ DialogSpellChecker::DialogSpellChecker(agi::Context *context)
|
||||||
Show();
|
Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogSpellChecker::~DialogSpellChecker() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void DialogSpellChecker::OnReplace(wxCommandEvent&) {
|
void DialogSpellChecker::OnReplace(wxCommandEvent&) {
|
||||||
Replace();
|
Replace();
|
||||||
FindNext();
|
FindNext();
|
||||||
|
@ -310,3 +360,8 @@ void DialogSpellChecker::SetWord(std::string const& word) {
|
||||||
|
|
||||||
add_button->Enable(spellchecker->CanAddWord(word));
|
add_button->Enable(spellchecker->CanAddWord(word));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowSpellcheckerDialog(agi::Context *c) {
|
||||||
|
c->dialog->Show<DialogSpellChecker>(c);
|
||||||
|
}
|
||||||
|
|
|
@ -1,90 +0,0 @@
|
||||||
// Copyright (c) 2011, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_spellchecker.h
|
|
||||||
/// @see dialog_spellchecker.cpp
|
|
||||||
/// @ingroup spelling
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <map>
|
|
||||||
#include <memory>
|
|
||||||
#include <set>
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
#include <wx/arrstr.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
namespace agi { class SpellChecker; }
|
|
||||||
class AssDialogue;
|
|
||||||
class wxButton;
|
|
||||||
class wxCheckBox;
|
|
||||||
class wxComboBox;
|
|
||||||
class wxListBox;
|
|
||||||
class wxTextCtrl;
|
|
||||||
|
|
||||||
class DialogSpellChecker final : public wxDialog {
|
|
||||||
agi::Context *context; ///< The project context
|
|
||||||
std::unique_ptr<agi::SpellChecker> spellchecker; ///< The spellchecking engine
|
|
||||||
|
|
||||||
/// Words which the user has indicated should always be corrected
|
|
||||||
std::map<std::string, std::string> auto_replace;
|
|
||||||
|
|
||||||
/// Words which the user has temporarily added to the dictionary
|
|
||||||
std::set<std::string> auto_ignore;
|
|
||||||
|
|
||||||
/// Dictionaries available
|
|
||||||
wxArrayString dictionary_lang_codes;
|
|
||||||
|
|
||||||
int word_start; ///< Start index of the current misspelled word
|
|
||||||
int word_len; ///< Length of the current misspelled word
|
|
||||||
|
|
||||||
wxTextCtrl *orig_word; ///< The word being corrected
|
|
||||||
wxTextCtrl *replace_word; ///< The replacement that will be used if "Replace" is clicked
|
|
||||||
wxListBox *suggest_list; ///< The list of suggested replacements
|
|
||||||
|
|
||||||
wxComboBox *language; ///< The list of available languages
|
|
||||||
wxButton *add_button; ///< Add word to currently active dictionary
|
|
||||||
wxButton *remove_button; ///< Remove word from currently active dictionary
|
|
||||||
|
|
||||||
AssDialogue *start_line = nullptr; ///< The first line checked
|
|
||||||
AssDialogue *active_line = nullptr; ///< The most recently checked line
|
|
||||||
bool has_looped = false; ///< Has the search already looped from the end to beginning?
|
|
||||||
|
|
||||||
/// Find the next misspelled word and close the dialog if there are none
|
|
||||||
/// @return Are there any more misspelled words?
|
|
||||||
bool FindNext();
|
|
||||||
|
|
||||||
/// Check a single line for misspellings
|
|
||||||
/// @param active_line Line to check
|
|
||||||
/// @param start_pos Index in the line to start at
|
|
||||||
/// @param[in,out] commit_id Commit id for coalescing autoreplace commits
|
|
||||||
/// @return Was a misspelling found?
|
|
||||||
bool CheckLine(AssDialogue *active_line, int start_pos, int *commit_id);
|
|
||||||
|
|
||||||
/// Set the current word to be corrected
|
|
||||||
void SetWord(std::string const& word);
|
|
||||||
/// Correct the currently selected word
|
|
||||||
void Replace();
|
|
||||||
|
|
||||||
void OnChangeLanguage(wxCommandEvent&);
|
|
||||||
void OnChangeSuggestion(wxCommandEvent&);
|
|
||||||
|
|
||||||
void OnReplace(wxCommandEvent&);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogSpellChecker(agi::Context *context);
|
|
||||||
~DialogSpellChecker();
|
|
||||||
};
|
|
|
@ -27,19 +27,15 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_style_manager.cpp
|
|
||||||
/// @brief Style Manager dialogue box and partial logic
|
|
||||||
/// @ingroup style_editor
|
|
||||||
|
|
||||||
#include "dialog_style_manager.h"
|
|
||||||
|
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "ass_style.h"
|
#include "ass_style.h"
|
||||||
|
#include "ass_style_storage.h"
|
||||||
#include "charset_detect.h"
|
#include "charset_detect.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "dialog_selected_choices.h"
|
#include "dialog_manager.h"
|
||||||
#include "dialog_style_editor.h"
|
#include "dialog_style_editor.h"
|
||||||
|
#include "dialogs.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "libresrc/libresrc.h"
|
#include "libresrc/libresrc.h"
|
||||||
|
@ -52,23 +48,128 @@
|
||||||
|
|
||||||
#include <libaegisub/fs.h>
|
#include <libaegisub/fs.h>
|
||||||
#include <libaegisub/path.h>
|
#include <libaegisub/path.h>
|
||||||
|
#include <libaegisub/signal.h>
|
||||||
#include <libaegisub/split.h>
|
#include <libaegisub/split.h>
|
||||||
#include <libaegisub/make_unique.h>
|
#include <libaegisub/make_unique.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <boost/algorithm/string/trim.hpp>
|
#include <boost/algorithm/string/trim.hpp>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <future>
|
||||||
|
#include <memory>
|
||||||
|
#include <vector>
|
||||||
#include <wx/bmpbuttn.h>
|
#include <wx/bmpbuttn.h>
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/combobox.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/filename.h>
|
#include <wx/filename.h>
|
||||||
#include <wx/fontenum.h>
|
#include <wx/fontenum.h>
|
||||||
#include <wx/intl.h>
|
#include <wx/intl.h>
|
||||||
|
#include <wx/listbox.h>
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/textdlg.h>
|
#include <wx/textdlg.h>
|
||||||
#include <wx/choicdlg.h> // Keep this last so wxUSE_CHOICEDLG is set.
|
#include <wx/choicdlg.h> // Keep this last so wxUSE_CHOICEDLG is set.
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
class DialogStyleManager final : public wxDialog {
|
||||||
|
agi::Context *c; ///< Project context
|
||||||
|
std::unique_ptr<PersistLocation> persist;
|
||||||
|
|
||||||
|
agi::signal::Connection commit_connection;
|
||||||
|
agi::signal::Connection active_line_connection;
|
||||||
|
|
||||||
|
std::shared_future<wxArrayString> font_list;
|
||||||
|
|
||||||
|
/// Styles in the current subtitle file
|
||||||
|
std::vector<AssStyle*> styleMap;
|
||||||
|
|
||||||
|
/// Style storage manager
|
||||||
|
AssStyleStorage Store;
|
||||||
|
|
||||||
|
wxComboBox *CatalogList;
|
||||||
|
wxListBox *StorageList;
|
||||||
|
wxListBox *CurrentList;
|
||||||
|
|
||||||
|
wxButton *CatalogDelete;
|
||||||
|
|
||||||
|
wxButton *MoveToLocal;
|
||||||
|
wxButton *MoveToStorage;
|
||||||
|
|
||||||
|
wxButton *StorageNew;
|
||||||
|
wxButton *StorageEdit;
|
||||||
|
wxButton *StorageCopy;
|
||||||
|
wxButton *StorageDelete;
|
||||||
|
wxButton *StorageMoveUp;
|
||||||
|
wxButton *StorageMoveDown;
|
||||||
|
wxButton *StorageMoveTop;
|
||||||
|
wxButton *StorageMoveBottom;
|
||||||
|
wxButton *StorageSort;
|
||||||
|
|
||||||
|
wxButton *CurrentNew;
|
||||||
|
wxButton *CurrentEdit;
|
||||||
|
wxButton *CurrentCopy;
|
||||||
|
wxButton *CurrentDelete;
|
||||||
|
wxButton *CurrentMoveUp;
|
||||||
|
wxButton *CurrentMoveDown;
|
||||||
|
wxButton *CurrentMoveTop;
|
||||||
|
wxButton *CurrentMoveBottom;
|
||||||
|
wxButton *CurrentSort;
|
||||||
|
|
||||||
|
/// Load the list of available storages
|
||||||
|
void LoadCatalog();
|
||||||
|
/// Load the style list from the subtitles file
|
||||||
|
void LoadCurrentStyles(int commit_type);
|
||||||
|
/// Enable/disable all of the buttons as appropriate
|
||||||
|
void UpdateButtons();
|
||||||
|
/// Move styles up or down
|
||||||
|
/// @param storage Storage or current file styles
|
||||||
|
/// @param type 0: up; 1: top; 2: down; 3: bottom; 4: sort
|
||||||
|
void MoveStyles(bool storage, int type);
|
||||||
|
|
||||||
|
/// Open the style editor for the given style on the script
|
||||||
|
/// @param style Style to edit, or nullptr for new
|
||||||
|
/// @param new_name Default new name for copies
|
||||||
|
void ShowCurrentEditor(AssStyle *style, std::string const& new_name = "");
|
||||||
|
|
||||||
|
/// Open the style editor for the given style in the storage
|
||||||
|
/// @param style Style to edit, or nullptr for new
|
||||||
|
/// @param new_name Default new name for copies
|
||||||
|
void ShowStorageEditor(AssStyle *style, std::string const& new_name = "");
|
||||||
|
|
||||||
|
/// Save the storage and update the view after a change
|
||||||
|
void UpdateStorage();
|
||||||
|
|
||||||
|
void OnChangeCatalog();
|
||||||
|
void OnCatalogNew();
|
||||||
|
void OnCatalogDelete();
|
||||||
|
|
||||||
|
void OnCopyToCurrent();
|
||||||
|
void OnCopyToStorage();
|
||||||
|
|
||||||
|
void OnCurrentCopy();
|
||||||
|
void OnCurrentDelete();
|
||||||
|
void OnCurrentEdit();
|
||||||
|
void OnCurrentImport();
|
||||||
|
void OnCurrentNew();
|
||||||
|
|
||||||
|
void OnStorageCopy();
|
||||||
|
void OnStorageDelete();
|
||||||
|
void OnStorageEdit();
|
||||||
|
void OnStorageNew();
|
||||||
|
|
||||||
|
void OnKeyDown(wxKeyEvent &event);
|
||||||
|
void PasteToCurrent();
|
||||||
|
void PasteToStorage();
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
void CopyToClipboard(wxListBox *list, T const& v);
|
||||||
|
|
||||||
|
void OnActiveLineChanged(AssDialogue *new_line);
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogStyleManager(agi::Context *context);
|
||||||
|
};
|
||||||
|
|
||||||
wxBitmapButton *add_bitmap_button(wxWindow *parent, wxSizer *sizer, wxBitmap const& img, wxString const& tooltip) {
|
wxBitmapButton *add_bitmap_button(wxWindow *parent, wxSizer *sizer, wxBitmap const& img, wxString const& tooltip) {
|
||||||
wxBitmapButton *btn = new wxBitmapButton(parent, -1, img);
|
wxBitmapButton *btn = new wxBitmapButton(parent, -1, img);
|
||||||
|
@ -151,8 +252,6 @@ int get_single_sel(wxListBox *lb) {
|
||||||
return n == 1 ? selections[0] : -1;
|
return n == 1 ? selections[0] : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
DialogStyleManager::DialogStyleManager(agi::Context *context)
|
DialogStyleManager::DialogStyleManager(agi::Context *context)
|
||||||
: wxDialog(context->parent, -1, _("Styles Manager"))
|
: wxDialog(context->parent, -1, _("Styles Manager"))
|
||||||
, c(context)
|
, c(context)
|
||||||
|
@ -274,9 +373,6 @@ DialogStyleManager::DialogStyleManager(agi::Context *context)
|
||||||
CurrentList->Bind(wxEVT_LISTBOX_DCLICK, bind(&DialogStyleManager::OnCurrentEdit, this));
|
CurrentList->Bind(wxEVT_LISTBOX_DCLICK, bind(&DialogStyleManager::OnCurrentEdit, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogStyleManager::~DialogStyleManager() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void DialogStyleManager::LoadCurrentStyles(int commit_type) {
|
void DialogStyleManager::LoadCurrentStyles(int commit_type) {
|
||||||
if (commit_type & AssFile::COMMIT_STYLES || commit_type == AssFile::COMMIT_NEW) {
|
if (commit_type & AssFile::COMMIT_STYLES || commit_type == AssFile::COMMIT_NEW) {
|
||||||
CurrentList->Clear();
|
CurrentList->Clear();
|
||||||
|
@ -826,3 +922,8 @@ void DialogStyleManager::OnKeyDown(wxKeyEvent &event) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowStyleManagerDialog(agi::Context *c) {
|
||||||
|
c->dialog->Show<DialogStyleManager>(c);
|
||||||
|
}
|
||||||
|
|
|
@ -1,153 +0,0 @@
|
||||||
// Copyright (c) 2005, Rodrigo Braz Monteiro
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_style_manager.h
|
|
||||||
/// @see dialog_style_manager.cpp
|
|
||||||
/// @ingroup style_editor
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <future>
|
|
||||||
#include <memory>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include <wx/button.h>
|
|
||||||
#include <wx/combobox.h>
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
#include <wx/listbox.h>
|
|
||||||
|
|
||||||
#include <libaegisub/signal.h>
|
|
||||||
|
|
||||||
#include "ass_style_storage.h"
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class AssDialogue;
|
|
||||||
class AssFile;
|
|
||||||
class AssStyle;
|
|
||||||
class DialogStyleEditor;
|
|
||||||
class PersistLocation;
|
|
||||||
|
|
||||||
class DialogStyleManager final : public wxDialog {
|
|
||||||
agi::Context *c; ///< Project context
|
|
||||||
std::unique_ptr<PersistLocation> persist;
|
|
||||||
|
|
||||||
agi::signal::Connection commit_connection;
|
|
||||||
agi::signal::Connection active_line_connection;
|
|
||||||
|
|
||||||
std::shared_future<wxArrayString> font_list;
|
|
||||||
|
|
||||||
/// Styles in the current subtitle file
|
|
||||||
std::vector<AssStyle*> styleMap;
|
|
||||||
|
|
||||||
/// Style storage manager
|
|
||||||
AssStyleStorage Store;
|
|
||||||
|
|
||||||
wxComboBox *CatalogList;
|
|
||||||
wxListBox *StorageList;
|
|
||||||
wxListBox *CurrentList;
|
|
||||||
|
|
||||||
wxButton *CatalogDelete;
|
|
||||||
|
|
||||||
wxButton *MoveToLocal;
|
|
||||||
wxButton *MoveToStorage;
|
|
||||||
|
|
||||||
wxButton *StorageNew;
|
|
||||||
wxButton *StorageEdit;
|
|
||||||
wxButton *StorageCopy;
|
|
||||||
wxButton *StorageDelete;
|
|
||||||
wxButton *StorageMoveUp;
|
|
||||||
wxButton *StorageMoveDown;
|
|
||||||
wxButton *StorageMoveTop;
|
|
||||||
wxButton *StorageMoveBottom;
|
|
||||||
wxButton *StorageSort;
|
|
||||||
|
|
||||||
wxButton *CurrentNew;
|
|
||||||
wxButton *CurrentEdit;
|
|
||||||
wxButton *CurrentCopy;
|
|
||||||
wxButton *CurrentDelete;
|
|
||||||
wxButton *CurrentMoveUp;
|
|
||||||
wxButton *CurrentMoveDown;
|
|
||||||
wxButton *CurrentMoveTop;
|
|
||||||
wxButton *CurrentMoveBottom;
|
|
||||||
wxButton *CurrentSort;
|
|
||||||
|
|
||||||
/// Load the list of available storages
|
|
||||||
void LoadCatalog();
|
|
||||||
/// Load the style list from the subtitles file
|
|
||||||
void LoadCurrentStyles(int commit_type);
|
|
||||||
/// Enable/disable all of the buttons as appropriate
|
|
||||||
void UpdateButtons();
|
|
||||||
/// Move styles up or down
|
|
||||||
/// @param storage Storage or current file styles
|
|
||||||
/// @param type 0: up; 1: top; 2: down; 3: bottom; 4: sort
|
|
||||||
void MoveStyles(bool storage, int type);
|
|
||||||
|
|
||||||
/// Open the style editor for the given style on the script
|
|
||||||
/// @param style Style to edit, or nullptr for new
|
|
||||||
/// @param new_name Default new name for copies
|
|
||||||
void ShowCurrentEditor(AssStyle *style, std::string const& new_name = "");
|
|
||||||
|
|
||||||
/// Open the style editor for the given style in the storage
|
|
||||||
/// @param style Style to edit, or nullptr for new
|
|
||||||
/// @param new_name Default new name for copies
|
|
||||||
void ShowStorageEditor(AssStyle *style, std::string const& new_name = "");
|
|
||||||
|
|
||||||
/// Save the storage and update the view after a change
|
|
||||||
void UpdateStorage();
|
|
||||||
|
|
||||||
void OnChangeCatalog();
|
|
||||||
void OnCatalogNew();
|
|
||||||
void OnCatalogDelete();
|
|
||||||
|
|
||||||
void OnCopyToCurrent();
|
|
||||||
void OnCopyToStorage();
|
|
||||||
|
|
||||||
void OnCurrentCopy();
|
|
||||||
void OnCurrentDelete();
|
|
||||||
void OnCurrentEdit();
|
|
||||||
void OnCurrentImport();
|
|
||||||
void OnCurrentNew();
|
|
||||||
|
|
||||||
void OnStorageCopy();
|
|
||||||
void OnStorageDelete();
|
|
||||||
void OnStorageEdit();
|
|
||||||
void OnStorageNew();
|
|
||||||
|
|
||||||
void OnKeyDown(wxKeyEvent &event);
|
|
||||||
void PasteToCurrent();
|
|
||||||
void PasteToStorage();
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
void CopyToClipboard(wxListBox *list, T const& v);
|
|
||||||
|
|
||||||
void OnActiveLineChanged(AssDialogue *new_line);
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogStyleManager(agi::Context *context);
|
|
||||||
~DialogStyleManager();
|
|
||||||
};
|
|
|
@ -27,22 +27,31 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_text_import.cpp
|
|
||||||
/// @brief Set-up import from plain text files
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_text_import.h"
|
|
||||||
|
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "validators.h"
|
#include "validators.h"
|
||||||
|
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
#include <wx/valgen.h>
|
#include <wx/valgen.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
/// @class DialogTextImport
|
||||||
|
/// @brief Plain text import separator character selection dialog
|
||||||
|
///
|
||||||
|
/// A simple dialog to let the user select the format of a plain text file
|
||||||
|
/// being imported into Aegisub
|
||||||
|
class DialogTextImport final : public wxDialog {
|
||||||
|
std::string seperator;
|
||||||
|
std::string comment;
|
||||||
|
bool include_blank;
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogTextImport();
|
||||||
|
};
|
||||||
|
|
||||||
DialogTextImport::DialogTextImport()
|
DialogTextImport::DialogTextImport()
|
||||||
: wxDialog(nullptr , -1, _("Text import options"))
|
: wxDialog(nullptr , -1, _("Text import options"))
|
||||||
, seperator(OPT_GET("Tool/Import/Text/Actor Separator")->GetString())
|
, seperator(OPT_GET("Tool/Import/Text/Actor Separator")->GetString())
|
||||||
|
@ -75,3 +84,8 @@ DialogTextImport::DialogTextImport()
|
||||||
EndModal(wxID_OK);
|
EndModal(wxID_OK);
|
||||||
}, wxID_OK);
|
}, wxID_OK);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ShowPlainTextImportDialog() {
|
||||||
|
return DialogTextImport().ShowModal() == wxID_OK;
|
||||||
|
}
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
// Copyright (c) 2007, Alysson Souza e Silva
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_text_import.h
|
|
||||||
/// @see dialog_text_import.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
/// @class DialogTextImport
|
|
||||||
/// @brief Plain text import separator character selection dialog
|
|
||||||
///
|
|
||||||
/// A simple dialog to let the user select the format of a plain text file
|
|
||||||
/// being imported into Aegisub
|
|
||||||
class DialogTextImport final : public wxDialog {
|
|
||||||
std::string seperator;
|
|
||||||
std::string comment;
|
|
||||||
bool include_blank;
|
|
||||||
|
|
||||||
public:
|
|
||||||
DialogTextImport();
|
|
||||||
};
|
|
|
@ -27,13 +27,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_timing_processor.cpp
|
|
||||||
/// @brief Timing Post-processor dialogue box and logic
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_timing_processor.h"
|
|
||||||
|
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "ass_time.h"
|
#include "ass_time.h"
|
||||||
|
@ -54,10 +47,11 @@
|
||||||
#include <boost/range/algorithm.hpp>
|
#include <boost/range/algorithm.hpp>
|
||||||
#include <boost/range/algorithm_ext.hpp>
|
#include <boost/range/algorithm_ext.hpp>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <vector>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/checklst.h>
|
#include <wx/checklst.h>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/msgdlg.h>
|
#include <wx/msgdlg.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/slider.h>
|
#include <wx/slider.h>
|
||||||
|
@ -69,6 +63,47 @@
|
||||||
using namespace boost::adaptors;
|
using namespace boost::adaptors;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
/// @class DialogTimingProcessor
|
||||||
|
/// @brief Automatic postprocessor for correcting common timing issues
|
||||||
|
class DialogTimingProcessor final : public wxDialog {
|
||||||
|
agi::Context *c; ///< Project context
|
||||||
|
|
||||||
|
int leadIn; ///< Lead-in to add in milliseconds
|
||||||
|
int leadOut; ///< Lead-out to add in milliseconds
|
||||||
|
int beforeStart; ///< Maximum time in milliseconds to move start time of line backwards to land on a keyframe
|
||||||
|
int afterStart; ///< Maximum time in milliseconds to move start time of line forwards to land on a keyframe
|
||||||
|
int beforeEnd; ///< Maximum time in milliseconds to move end time of line backwards to land on a keyframe
|
||||||
|
int afterEnd; ///< Maximum time in milliseconds to move end time of line forwards to land on a keyframe
|
||||||
|
int adjGap; ///< Maximum gap in milliseconds to snap adjacent lines to each other
|
||||||
|
int adjOverlap; ///< Maximum overlap in milliseconds to snap adjacent lines to each other
|
||||||
|
|
||||||
|
wxCheckBox *onlySelection; ///< Only process selected lines of the selected styles
|
||||||
|
wxCheckBox *hasLeadIn; ///< Enable adding lead-in
|
||||||
|
wxCheckBox *hasLeadOut; ///< Enable adding lead-out
|
||||||
|
wxCheckBox *keysEnable; ///< Enable snapping to keyframes
|
||||||
|
wxCheckBox *adjsEnable; ///< Enable snapping adjacent lines to each other
|
||||||
|
wxSlider *adjacentBias; ///< Bias between shifting start and end times when snapping adjacent lines
|
||||||
|
wxCheckListBox *StyleList; ///< List of styles to process
|
||||||
|
wxButton *ApplyButton; ///< Button to apply the processing
|
||||||
|
|
||||||
|
void OnApply(wxCommandEvent &event);
|
||||||
|
|
||||||
|
/// Check or uncheck all styles
|
||||||
|
void CheckAll(bool check);
|
||||||
|
|
||||||
|
/// Enable and disable text boxes based on which checkboxes are checked
|
||||||
|
void UpdateControls();
|
||||||
|
|
||||||
|
/// Process the file
|
||||||
|
void Process();
|
||||||
|
|
||||||
|
/// Get a list of dialogue lines in the file sorted by start time
|
||||||
|
std::vector<AssDialogue*> SortDialogues();
|
||||||
|
|
||||||
|
public:
|
||||||
|
DialogTimingProcessor(agi::Context *c);
|
||||||
|
};
|
||||||
|
|
||||||
wxTextCtrl *make_ctrl(wxWindow *parent, wxSizer *sizer, wxString const& desc, int *value, wxCheckBox *cb, wxString const& tooltip) {
|
wxTextCtrl *make_ctrl(wxWindow *parent, wxSizer *sizer, wxString const& desc, int *value, wxCheckBox *cb, wxString const& tooltip) {
|
||||||
wxIntegerValidator<int> validator(value);
|
wxIntegerValidator<int> validator(value);
|
||||||
validator.SetMin(0);
|
validator.SetMin(0);
|
||||||
|
@ -98,7 +133,6 @@ wxCheckBox *make_check(wxStaticBoxSizer *sizer, wxString const& desc, const char
|
||||||
sizer->Add(cb, wxSizerFlags().Border(wxRIGHT).Expand());
|
sizer->Add(cb, wxSizerFlags().Border(wxRIGHT).Expand());
|
||||||
return cb;
|
return cb;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
DialogTimingProcessor::DialogTimingProcessor(agi::Context *c)
|
DialogTimingProcessor::DialogTimingProcessor(agi::Context *c)
|
||||||
: wxDialog(c->parent, -1, _("Timing Post-Processor"))
|
: wxDialog(c->parent, -1, _("Timing Post-Processor"))
|
||||||
|
@ -409,3 +443,8 @@ void DialogTimingProcessor::Process() {
|
||||||
|
|
||||||
c->ass->Commit(_("timing processor"), AssFile::COMMIT_DIAG_TIME);
|
c->ass->Commit(_("timing processor"), AssFile::COMMIT_DIAG_TIME);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowTimingProcessorDialog(agi::Context *c) {
|
||||||
|
DialogTimingProcessor(c).ShowModal();
|
||||||
|
}
|
|
@ -1,87 +0,0 @@
|
||||||
// Copyright (c) 2005, Rodrigo Braz Monteiro
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_timing_processor.h
|
|
||||||
/// @see dialog_timing_processor.cpp
|
|
||||||
/// @ingroup tools_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
class AssDialogue;
|
|
||||||
class wxButton;
|
|
||||||
class wxCheckBox;
|
|
||||||
class wxCheckListBox;
|
|
||||||
class wxSlider;
|
|
||||||
|
|
||||||
/// @class DialogTimingProcessor
|
|
||||||
/// @brief Automatic postprocessor for correcting common timing issues
|
|
||||||
class DialogTimingProcessor final : public wxDialog {
|
|
||||||
agi::Context *c; ///< Project context
|
|
||||||
|
|
||||||
int leadIn; ///< Lead-in to add in milliseconds
|
|
||||||
int leadOut; ///< Lead-out to add in milliseconds
|
|
||||||
int beforeStart; ///< Maximum time in milliseconds to move start time of line backwards to land on a keyframe
|
|
||||||
int afterStart; ///< Maximum time in milliseconds to move start time of line forwards to land on a keyframe
|
|
||||||
int beforeEnd; ///< Maximum time in milliseconds to move end time of line backwards to land on a keyframe
|
|
||||||
int afterEnd; ///< Maximum time in milliseconds to move end time of line forwards to land on a keyframe
|
|
||||||
int adjGap; ///< Maximum gap in milliseconds to snap adjacent lines to each other
|
|
||||||
int adjOverlap; ///< Maximum overlap in milliseconds to snap adjacent lines to each other
|
|
||||||
|
|
||||||
wxCheckBox *onlySelection; ///< Only process selected lines of the selected styles
|
|
||||||
wxCheckBox *hasLeadIn; ///< Enable adding lead-in
|
|
||||||
wxCheckBox *hasLeadOut; ///< Enable adding lead-out
|
|
||||||
wxCheckBox *keysEnable; ///< Enable snapping to keyframes
|
|
||||||
wxCheckBox *adjsEnable; ///< Enable snapping adjacent lines to each other
|
|
||||||
wxSlider *adjacentBias; ///< Bias between shifting start and end times when snapping adjacent lines
|
|
||||||
wxCheckListBox *StyleList; ///< List of styles to process
|
|
||||||
wxButton *ApplyButton; ///< Button to apply the processing
|
|
||||||
|
|
||||||
void OnApply(wxCommandEvent &event);
|
|
||||||
|
|
||||||
/// Check or uncheck all styles
|
|
||||||
void CheckAll(bool check);
|
|
||||||
|
|
||||||
/// Enable and disable text boxes based on which checkboxes are checked
|
|
||||||
void UpdateControls();
|
|
||||||
|
|
||||||
/// Process the file
|
|
||||||
void Process();
|
|
||||||
|
|
||||||
/// Get a list of dialogue lines in the file sorted by start time
|
|
||||||
std::vector<AssDialogue*> SortDialogues();
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructor
|
|
||||||
/// @param c Project context
|
|
||||||
DialogTimingProcessor(agi::Context *c);
|
|
||||||
};
|
|
|
@ -27,15 +27,8 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_version_check.cpp
|
|
||||||
/// @brief Version Checker dialogue box and logic
|
|
||||||
/// @ingroup configuration_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#ifdef WITH_UPDATE_CHECKER
|
#ifdef WITH_UPDATE_CHECKER
|
||||||
|
|
||||||
#include "dialog_version_check.h"
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(disable : 4250) // 'boost::asio::basic_socket_iostream<Protocol>' : inherits 'std::basic_ostream<_Elem,_Traits>::std::basic_ostream<_Elem,_Traits>::_Add_vtordisp2' via dominance
|
#pragma warning(disable : 4250) // 'boost::asio::basic_socket_iostream<Protocol>' : inherits 'std::basic_ostream<_Elem,_Traits>::std::basic_ostream<_Elem,_Traits>::_Add_vtordisp2' via dominance
|
||||||
#endif
|
#endif
|
||||||
|
@ -50,6 +43,17 @@
|
||||||
#include <libaegisub/line_iterator.h>
|
#include <libaegisub/line_iterator.h>
|
||||||
#include <libaegisub/scoped_ptr.h>
|
#include <libaegisub/scoped_ptr.h>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <ctime>
|
||||||
|
#include <boost/algorithm/string/classification.hpp>
|
||||||
|
#include <boost/algorithm/string/split.hpp>
|
||||||
|
#include <boost/asio/ip/tcp.hpp>
|
||||||
|
#include <boost/format.hpp>
|
||||||
|
#include <functional>
|
||||||
|
#include <memory>
|
||||||
|
#include <mutex>
|
||||||
|
#include <set>
|
||||||
|
#include <vector>
|
||||||
#include <wx/button.h>
|
#include <wx/button.h>
|
||||||
#include <wx/checkbox.h>
|
#include <wx/checkbox.h>
|
||||||
#include <wx/dialog.h>
|
#include <wx/dialog.h>
|
||||||
|
@ -63,25 +67,13 @@
|
||||||
#include <wx/string.h>
|
#include <wx/string.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <ctime>
|
|
||||||
#include <boost/algorithm/string/classification.hpp>
|
|
||||||
#include <boost/algorithm/string/split.hpp>
|
|
||||||
#include <boost/asio/ip/tcp.hpp>
|
|
||||||
#include <boost/format.hpp>
|
|
||||||
#include <functional>
|
|
||||||
#include <memory>
|
|
||||||
#include <set>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Allocate global lock mutex declared in header
|
namespace {
|
||||||
std::mutex VersionCheckLock;
|
std::mutex VersionCheckLock;
|
||||||
|
|
||||||
namespace {
|
|
||||||
struct AegisubUpdateDescription {
|
struct AegisubUpdateDescription {
|
||||||
std::string url;
|
std::string url;
|
||||||
std::string friendly_name;
|
std::string friendly_name;
|
||||||
|
@ -362,7 +354,6 @@ void DoCheck(bool interactive) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PerformVersionCheck(bool interactive) {
|
void PerformVersionCheck(bool interactive) {
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
// Copyright (c) 2007, Rodrigo Braz Monteiro
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_version_check.h
|
|
||||||
/// @see dialog_version_check.cpp
|
|
||||||
/// @ingroup configuration_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <mutex>
|
|
||||||
|
|
||||||
/// @brief Check whether a newer version is available and report to the user if there is
|
|
||||||
/// @param interactive If true, always check and report all results, both success and failure.
|
|
||||||
/// If false, only check if auto-checking is enabled, and only report if a
|
|
||||||
/// new version actually exists.
|
|
||||||
void PerformVersionCheck(bool interactive);
|
|
||||||
|
|
||||||
/// @brief Mutex that is taken while version checking is being performed.
|
|
||||||
///
|
|
||||||
/// A new version check can't be performed while this mutex is locked, checking whether
|
|
||||||
/// it is locked is a way to disable UI to invoke a version check while one is being
|
|
||||||
/// performed.
|
|
||||||
extern std::mutex VersionCheckLock;
|
|
|
@ -27,13 +27,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
/// @file dialog_video_details.cpp
|
|
||||||
/// @brief Video Details dialogue box
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include "dialog_video_details.h"
|
|
||||||
|
|
||||||
#include "ass_time.h"
|
#include "ass_time.h"
|
||||||
#include "async_video_provider.h"
|
#include "async_video_provider.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
|
@ -41,10 +34,18 @@
|
||||||
#include "project.h"
|
#include "project.h"
|
||||||
|
|
||||||
#include <boost/rational.hpp>
|
#include <boost/rational.hpp>
|
||||||
|
#include <wx/dialog.h>
|
||||||
#include <wx/sizer.h>
|
#include <wx/sizer.h>
|
||||||
#include <wx/stattext.h>
|
#include <wx/stattext.h>
|
||||||
#include <wx/textctrl.h>
|
#include <wx/textctrl.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
/// @class DialogVideoDetails
|
||||||
|
/// @brief Display information about the video in a dialog
|
||||||
|
struct DialogVideoDetails final : wxDialog {
|
||||||
|
DialogVideoDetails(agi::Context *c);
|
||||||
|
};
|
||||||
|
|
||||||
DialogVideoDetails::DialogVideoDetails(agi::Context *c)
|
DialogVideoDetails::DialogVideoDetails(agi::Context *c)
|
||||||
: wxDialog(c->parent , -1, _("Video Details"))
|
: wxDialog(c->parent , -1, _("Video Details"))
|
||||||
{
|
{
|
||||||
|
@ -76,3 +77,8 @@ DialogVideoDetails::DialogVideoDetails(agi::Context *c)
|
||||||
|
|
||||||
CenterOnParent();
|
CenterOnParent();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowVideoDetailsDialog(agi::Context *c) {
|
||||||
|
DialogVideoDetails(c).ShowModal();
|
||||||
|
}
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
// Copyright (c) 2007, Alysson Souza e Silva (demi_alucard)
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
// this list of conditions and the following disclaimer in the documentation
|
|
||||||
// and/or other materials provided with the distribution.
|
|
||||||
// * Neither the name of the Aegisub Group nor the names of its contributors
|
|
||||||
// may be used to endorse or promote products derived from this software
|
|
||||||
// without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
||||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
/// @file dialog_video_details.h
|
|
||||||
/// @see dialog_video_details.cpp
|
|
||||||
/// @ingroup secondary_ui
|
|
||||||
///
|
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
|
||||||
|
|
||||||
/// @class DialogVideoDetails
|
|
||||||
/// @brief Display information about the video in a dialog
|
|
||||||
struct DialogVideoDetails final : public wxDialog {
|
|
||||||
/// Constructor
|
|
||||||
/// @param c Project context
|
|
||||||
DialogVideoDetails(agi::Context *c);
|
|
||||||
};
|
|
|
@ -14,8 +14,6 @@
|
||||||
//
|
//
|
||||||
// Aegisub Project http://www.aegisub.org/
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
#include "dialog_video_properties.h"
|
|
||||||
|
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "async_video_provider.h"
|
#include "async_video_provider.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
// Copyright (c) 2014, Thomas Goyne <plorkyeran@aegisub.org>
|
|
||||||
//
|
|
||||||
// Permission to use, copy, modify, and distribute this software for any
|
|
||||||
// purpose with or without fee is hereby granted, provided that the above
|
|
||||||
// copyright notice and this permission notice appear in all copies.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
//
|
|
||||||
// Aegisub Project http://www.aegisub.org/
|
|
||||||
|
|
||||||
class AssFile;
|
|
||||||
class AsyncVideoProvider;
|
|
||||||
class wxWindow;
|
|
||||||
|
|
||||||
/// Update the video properties for a newly opened video, possibly prompting the user about what to do
|
|
||||||
void UpdateVideoProperties(AssFile *file, const AsyncVideoProvider *new_provider, wxWindow *parent);
|
|
75
src/dialogs.h
Normal file
75
src/dialogs.h
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
// Copyright (c) 2014, Thomas Goyne <plorkyeran@aegisub.org>
|
||||||
|
//
|
||||||
|
// Permission to use, copy, modify, and distribute this software for any
|
||||||
|
// purpose with or without fee is hereby granted, provided that the above
|
||||||
|
// copyright notice and this permission notice appear in all copies.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
//
|
||||||
|
// Aegisub Project http://www.aegisub.org/
|
||||||
|
|
||||||
|
#include <libaegisub/color.h>
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
class AssFile;
|
||||||
|
class AsyncVideoProvider;
|
||||||
|
class wxArrayInt;
|
||||||
|
class wxArrayString;
|
||||||
|
class wxWindow;
|
||||||
|
namespace agi { struct Context; }
|
||||||
|
struct ResampleSettings;
|
||||||
|
|
||||||
|
/// @brief Get a color from the user via a color picker dialog
|
||||||
|
/// @param parent Parent window
|
||||||
|
/// @param original Initial color to select
|
||||||
|
/// @param alpha Include controls for alpha
|
||||||
|
/// @param callback Function called whenever the selected color changes
|
||||||
|
/// @return Did the user accept the new color?
|
||||||
|
bool GetColorFromUser(wxWindow *parent, agi::Color original, bool alpha, std::function<void (agi::Color)> callback);
|
||||||
|
|
||||||
|
/// Ask the user to pick an autosaved file to open
|
||||||
|
/// @return Path to file or empty string if canceled
|
||||||
|
std::string PickAutosaveFile(wxWindow *parent);
|
||||||
|
|
||||||
|
/// @brief Check whether a newer version is available and report to the user if there is
|
||||||
|
/// @param interactive If true, always check and report all results, both success and failure.
|
||||||
|
/// If false, only check if auto-checking is enabled, and only report if a
|
||||||
|
/// new version actually exists.
|
||||||
|
void PerformVersionCheck(bool interactive);
|
||||||
|
|
||||||
|
/// Ask the user to pick settings for a script resampling
|
||||||
|
/// @return Does the user want to proceed with the resampling?
|
||||||
|
bool PromptForResampleSettings(agi::Context *c, ResampleSettings &settings);
|
||||||
|
|
||||||
|
/// Update the video properties for a newly opened video, possibly prompting the user about what to do
|
||||||
|
void UpdateVideoProperties(AssFile *file, const AsyncVideoProvider *new_provider, wxWindow *parent);
|
||||||
|
|
||||||
|
int GetSelectedChoices(wxWindow *parent, wxArrayInt& selections, wxString const& message, wxString const& caption, wxArrayString const& choices);
|
||||||
|
|
||||||
|
std::string CreateDummyVideo(wxWindow *parent);
|
||||||
|
|
||||||
|
void ShowAboutDialog(wxWindow *parent);
|
||||||
|
void ShowAttachmentsDialog(wxWindow *parent, AssFile *file);
|
||||||
|
void ShowSelectLinesDialog(agi::Context *c);
|
||||||
|
void ShowExportDialog(agi::Context *c);
|
||||||
|
void ShowPropertiesDialog(agi::Context *c);
|
||||||
|
void ShowFontsCollectorDialog(agi::Context *c);
|
||||||
|
bool ShowPlainTextImportDialog();
|
||||||
|
void ShowKanjiTimerDialog(agi::Context *c);
|
||||||
|
bool ShowPasteOverDialog(wxWindow *parent);
|
||||||
|
void ShowSpellcheckerDialog(agi::Context *c);
|
||||||
|
void ShowShiftTimesDialog(agi::Context *c);
|
||||||
|
void ShowStyleManagerDialog(agi::Context *c);
|
||||||
|
void ShowTimingProcessorDialog(agi::Context *c);
|
||||||
|
void ShowJumpToDialog(agi::Context *c);
|
||||||
|
void ShowVideoDetailsDialog(agi::Context *c);
|
||||||
|
void ShowLogWindow(agi::Context *c);
|
||||||
|
void ShowAutomationDialog(agi::Context *c);
|
|
@ -42,7 +42,7 @@
|
||||||
#include "auto4_lua_factory.h"
|
#include "auto4_lua_factory.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "crash_writer.h"
|
#include "crash_writer.h"
|
||||||
#include "dialog_version_check.h"
|
#include "dialogs.h"
|
||||||
#include "export_fixstyle.h"
|
#include "export_fixstyle.h"
|
||||||
#include "export_framerate.h"
|
#include "export_framerate.h"
|
||||||
#include "frame_main.h"
|
#include "frame_main.h"
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "charset_detect.h"
|
#include "charset_detect.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "dialog_progress.h"
|
#include "dialog_progress.h"
|
||||||
#include "dialog_video_properties.h"
|
#include "dialogs.h"
|
||||||
#include "include/aegisub/audio_provider.h"
|
#include "include/aegisub/audio_provider.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
#include "include/aegisub/video_provider.h"
|
#include "include/aegisub/video_provider.h"
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
#include "ass_dialogue.h"
|
#include "ass_dialogue.h"
|
||||||
#include "ass_file.h"
|
#include "ass_file.h"
|
||||||
#include "dialog_text_import.h"
|
#include "dialogs.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
#include "text_file_reader.h"
|
#include "text_file_reader.h"
|
||||||
#include "text_file_writer.h"
|
#include "text_file_writer.h"
|
||||||
|
@ -54,9 +54,7 @@ TXTSubtitleFormat::TXTSubtitleFormat()
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> TXTSubtitleFormat::GetReadWildcards() const {
|
std::vector<std::string> TXTSubtitleFormat::GetReadWildcards() const {
|
||||||
std::vector<std::string> formats;
|
return {"txt"};
|
||||||
formats.push_back("txt");
|
|
||||||
return formats;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> TXTSubtitleFormat::GetWriteWildcards() const {
|
std::vector<std::string> TXTSubtitleFormat::GetWriteWildcards() const {
|
||||||
|
@ -69,8 +67,7 @@ bool TXTSubtitleFormat::CanWriteFile(agi::fs::path const& filename) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TXTSubtitleFormat::ReadFile(AssFile *target, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& encoding) const {
|
void TXTSubtitleFormat::ReadFile(AssFile *target, agi::fs::path const& filename, agi::vfr::Framerate const& fps, std::string const& encoding) const {
|
||||||
DialogTextImport dlg;
|
if (!ShowPlainTextImportDialog()) return;
|
||||||
if (dlg.ShowModal() == wxID_CANCEL) return;
|
|
||||||
|
|
||||||
TextFileReader file(filename, encoding, false);
|
TextFileReader file(filename, encoding, false);
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#include "audio_controller.h"
|
#include "audio_controller.h"
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "dialog_progress.h"
|
#include "dialog_progress.h"
|
||||||
#include "dialog_video_properties.h"
|
#include "dialogs.h"
|
||||||
#include "include/aegisub/context.h"
|
#include "include/aegisub/context.h"
|
||||||
#include "include/aegisub/video_provider.h"
|
#include "include/aegisub/video_provider.h"
|
||||||
#include "mkv_wrap.h"
|
#include "mkv_wrap.h"
|
||||||
|
|
Loading…
Reference in a new issue