mirror of https://github.com/odrling/Aegisub
Clean up frame_main a bit
Delete some pointless comments, move documentation to the header, and extend it a bit Sort prototypes in the header Move event IDs out of the header Remove a few unused includes Assorted cosmetic changse Originally committed to SVN as r5463.
This commit is contained in:
parent
95cadb5226
commit
0af7ae7fca
|
@ -35,6 +35,8 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "frame_main.h"
|
||||||
|
|
||||||
#ifndef AGI_PRE
|
#ifndef AGI_PRE
|
||||||
#include <wx/clipbrd.h>
|
#include <wx/clipbrd.h>
|
||||||
#include <wx/filename.h>
|
#include <wx/filename.h>
|
||||||
|
@ -59,9 +61,6 @@
|
||||||
#ifdef WITH_AUTOMATION
|
#ifdef WITH_AUTOMATION
|
||||||
#include "auto4_base.h"
|
#include "auto4_base.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_AVISYNTH
|
|
||||||
#include "avisynth_wrap.h"
|
|
||||||
#endif
|
|
||||||
#include "compat.h"
|
#include "compat.h"
|
||||||
#include "command/command.h"
|
#include "command/command.h"
|
||||||
#include "dialog_detached_video.h"
|
#include "dialog_detached_video.h"
|
||||||
|
@ -69,7 +68,6 @@
|
||||||
#include "dialog_styling_assistant.h"
|
#include "dialog_styling_assistant.h"
|
||||||
#include "dialog_version_check.h"
|
#include "dialog_version_check.h"
|
||||||
#include "drop.h"
|
#include "drop.h"
|
||||||
#include "frame_main.h"
|
|
||||||
#include "help_button.h"
|
#include "help_button.h"
|
||||||
#include "libresrc/libresrc.h"
|
#include "libresrc/libresrc.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
@ -78,7 +76,6 @@
|
||||||
#include "subs_edit_ctrl.h"
|
#include "subs_edit_ctrl.h"
|
||||||
#include "subs_grid.h"
|
#include "subs_grid.h"
|
||||||
#include "text_file_reader.h"
|
#include "text_file_reader.h"
|
||||||
#include "text_file_writer.h"
|
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "video_box.h"
|
#include "video_box.h"
|
||||||
|
@ -87,21 +84,24 @@
|
||||||
#include "video_provider_manager.h"
|
#include "video_provider_manager.h"
|
||||||
#include "video_slider.h"
|
#include "video_slider.h"
|
||||||
|
|
||||||
|
enum {
|
||||||
|
ID_TOOLBAR_ZOOM_DROPDOWN = 11001,
|
||||||
|
ID_APP_TIMER_AUTOSAVE = 12001,
|
||||||
|
ID_APP_TIMER_STATUSCLEAR = 12002,
|
||||||
|
ID_MENU_AUTOMATION_MACRO = 13006,
|
||||||
|
ID_SASH_MAIN_AUDIO = 14001
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef WITH_STARTUPLOG
|
#ifdef WITH_STARTUPLOG
|
||||||
|
#define StartupLog(a) MessageBox(0, a, "Aegisub startup log", 0)
|
||||||
/// DOCME
|
|
||||||
#define StartupLog(a) MessageBox(0, a, _T("Aegisub startup log"), 0)
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
#define StartupLog(a)
|
#define StartupLog(a)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void autosave_timer_changed(wxTimer *timer, const agi::OptionValue &opt);
|
static void autosave_timer_changed(wxTimer *timer, const agi::OptionValue &opt);
|
||||||
|
|
||||||
FrameMain::FrameMain (wxArrayString args)
|
FrameMain::FrameMain (wxArrayString args)
|
||||||
: wxFrame ((wxFrame*)NULL,-1,_T(""),wxDefaultPosition,wxSize(920,700),wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN)
|
: wxFrame(0,-1,"",wxDefaultPosition,wxSize(920,700),wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN)
|
||||||
, context(new agi::Context)
|
, context(new agi::Context)
|
||||||
, showVideo(true)
|
, showVideo(true)
|
||||||
, showAudio(true)
|
, showAudio(true)
|
||||||
|
@ -121,7 +121,6 @@ FrameMain::FrameMain (wxArrayString args)
|
||||||
/* XXX HACK XXX */
|
/* XXX HACK XXX */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
StartupLog("Initializing context models");
|
StartupLog("Initializing context models");
|
||||||
AssFile::top = context->ass = new AssFile;
|
AssFile::top = context->ass = new AssFile;
|
||||||
context->ass->AddCommitListener(&FrameMain::UpdateTitle, this);
|
context->ass->AddCommitListener(&FrameMain::UpdateTitle, this);
|
||||||
|
@ -220,15 +219,20 @@ FrameMain::FrameMain (wxArrayString args)
|
||||||
Show();
|
Show();
|
||||||
SetDisplayMode(1, 1);
|
SetDisplayMode(1, 1);
|
||||||
|
|
||||||
//ShowFullScreen(true,wxFULLSCREEN_NOBORDER | wxFULLSCREEN_NOCAPTION);
|
|
||||||
StartupLog("Leaving FrameMain constructor");
|
StartupLog("Leaving FrameMain constructor");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief FrameMain destructor
|
|
||||||
FrameMain::~FrameMain () {
|
FrameMain::~FrameMain () {
|
||||||
context->videoController->SetVideo("");
|
context->videoController->SetVideo("");
|
||||||
context->audioController->CloseAudio();
|
context->audioController->CloseAudio();
|
||||||
DeInitContents();
|
if (context->detachedVideo) context->detachedVideo->Destroy();
|
||||||
|
if (context->stylingAssistant) context->stylingAssistant->Destroy();
|
||||||
|
SubsGrid->ClearMaps();
|
||||||
|
delete audioBox;
|
||||||
|
delete EditBox;
|
||||||
|
delete videoBox;
|
||||||
|
delete context->ass;
|
||||||
|
HelpButton::ClearPages();
|
||||||
delete context->audioController;
|
delete context->audioController;
|
||||||
#ifdef WITH_AUTOMATION
|
#ifdef WITH_AUTOMATION
|
||||||
delete context->local_scripts;
|
delete context->local_scripts;
|
||||||
|
@ -244,31 +248,26 @@ void FrameMain::cmd_call(wxCommandEvent& event) {
|
||||||
OnAutomationMacro(event);
|
OnAutomationMacro(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Initialize toolbar
|
|
||||||
void FrameMain::InitToolbar () {
|
void FrameMain::InitToolbar () {
|
||||||
// Create toolbar
|
wxSystemOptions::SetOption("msw.remap", 0);
|
||||||
wxSystemOptions::SetOption(_T("msw.remap"), 0);
|
Toolbar = CreateToolBar(wxTB_FLAT | wxTB_HORIZONTAL,-1,"Toolbar");
|
||||||
Toolbar = CreateToolBar(wxTB_FLAT | wxTB_HORIZONTAL,-1,_T("Toolbar"));
|
|
||||||
|
|
||||||
toolbar::toolbar->GetToolbar("main", Toolbar);
|
toolbar::toolbar->GetToolbar("main", Toolbar);
|
||||||
|
|
||||||
wxArrayString choices;
|
wxArrayString choices;
|
||||||
for (int i=1;i<=24;i++) {
|
for (int i=1;i<=24;i++) {
|
||||||
wxString toAdd = wxString::Format(_T("%i"),int(i*12.5));
|
wxString toAdd = wxString::Format("%i",int(i*12.5));
|
||||||
if (i%2) toAdd += _T(".5");
|
if (i%2) toAdd += ".5";
|
||||||
toAdd += _T("%");
|
toAdd += "%";
|
||||||
choices.Add(toAdd);
|
choices.Add(toAdd);
|
||||||
}
|
}
|
||||||
ZoomBox = new wxComboBox(Toolbar,ID_TOOLBAR_ZOOM_DROPDOWN,_T("75%"),wxDefaultPosition,wxDefaultSize,choices,wxCB_DROPDOWN);
|
ZoomBox = new wxComboBox(Toolbar,ID_TOOLBAR_ZOOM_DROPDOWN,"75%",wxDefaultPosition,wxDefaultSize,choices,wxCB_DROPDOWN);
|
||||||
Toolbar->AddControl(ZoomBox);
|
Toolbar->AddControl(ZoomBox);
|
||||||
Toolbar->AddSeparator();
|
Toolbar->AddSeparator();
|
||||||
|
|
||||||
// Update
|
|
||||||
Toolbar->Realize();
|
Toolbar->Realize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// @brief Initialize menu bar
|
|
||||||
void FrameMain::InitMenu() {
|
void FrameMain::InitMenu() {
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
|
@ -282,8 +281,6 @@ void FrameMain::InitMenu() {
|
||||||
SetMenuBar(menu::menu->GetMainMenu());
|
SetMenuBar(menu::menu->GetMainMenu());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// @brief Initialize contents
|
|
||||||
void FrameMain::InitContents() {
|
void FrameMain::InitContents() {
|
||||||
StartupLog("Create background panel");
|
StartupLog("Create background panel");
|
||||||
Panel = new wxPanel(this,-1,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL | wxCLIP_CHILDREN);
|
Panel = new wxPanel(this,-1,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL | wxCLIP_CHILDREN);
|
||||||
|
@ -334,23 +331,10 @@ void FrameMain::InitContents() {
|
||||||
StartupLog("Leaving InitContents");
|
StartupLog("Leaving InitContents");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Deinitialize controls
|
|
||||||
void FrameMain::DeInitContents() {
|
|
||||||
if (context->detachedVideo) context->detachedVideo->Destroy();
|
|
||||||
if (context->stylingAssistant) context->stylingAssistant->Destroy();
|
|
||||||
SubsGrid->ClearMaps();
|
|
||||||
delete audioBox;
|
|
||||||
delete EditBox;
|
|
||||||
delete videoBox;
|
|
||||||
delete context->ass;
|
|
||||||
HelpButton::ClearPages();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void validate_toolbar(wxToolBar *toolbar, const char *command, const agi::Context *context) {
|
static void validate_toolbar(wxToolBar *toolbar, const char *command, const agi::Context *context) {
|
||||||
toolbar->FindById(cmd::id(command))->Enable(cmd::get(command)->Validate(context));
|
toolbar->FindById(cmd::id(command))->Enable(cmd::get(command)->Validate(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Update toolbar
|
|
||||||
void FrameMain::UpdateToolbar() {
|
void FrameMain::UpdateToolbar() {
|
||||||
wxToolBar* toolbar = GetToolBar();
|
wxToolBar* toolbar = GetToolBar();
|
||||||
const agi::Context *c = context.get();
|
const agi::Context *c = context.get();
|
||||||
|
@ -372,9 +356,6 @@ void FrameMain::UpdateToolbar() {
|
||||||
toolbar->Realize();
|
toolbar->Realize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Open subtitles
|
|
||||||
/// @param filename
|
|
||||||
/// @param charset
|
|
||||||
void FrameMain::LoadSubtitles(wxString filename,wxString charset) {
|
void FrameMain::LoadSubtitles(wxString filename,wxString charset) {
|
||||||
if (context->ass->loaded) {
|
if (context->ass->loaded) {
|
||||||
if (TryToCloseSubs() == wxCANCEL) return;
|
if (TryToCloseSubs() == wxCANCEL) return;
|
||||||
|
@ -385,7 +366,7 @@ void FrameMain::LoadSubtitles(wxString filename,wxString charset) {
|
||||||
try {
|
try {
|
||||||
TextFileReader testSubs(filename,charset);
|
TextFileReader testSubs(filename,charset);
|
||||||
wxString cur = testSubs.ReadLineFromFile();
|
wxString cur = testSubs.ReadLineFromFile();
|
||||||
if (cur.Left(10) == _T("# timecode")) {
|
if (cur.Left(10) == "# timecode") {
|
||||||
context->videoController->LoadTimecodes(filename);
|
context->videoController->LoadTimecodes(filename);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -398,27 +379,24 @@ void FrameMain::LoadSubtitles(wxString filename,wxString charset) {
|
||||||
context->ass->Load(filename,charset);
|
context->ass->Load(filename,charset);
|
||||||
}
|
}
|
||||||
catch (agi::acs::AcsNotFound const&) {
|
catch (agi::acs::AcsNotFound const&) {
|
||||||
wxMessageBox(filename + L" not found.", L"Error", wxOK | wxICON_ERROR, NULL);
|
wxMessageBox(filename + " not found.", "Error", wxOK | wxICON_ERROR, NULL);
|
||||||
config::mru->Remove("Subtitle", STD_STR(filename));
|
config::mru->Remove("Subtitle", STD_STR(filename));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (const wchar_t *err) {
|
catch (const wchar_t *err) {
|
||||||
wxMessageBox(wxString(err), _T("Error"), wxOK | wxICON_ERROR, NULL);
|
wxMessageBox(wxString(err), "Error", wxOK | wxICON_ERROR, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (wxString err) {
|
catch (wxString err) {
|
||||||
wxMessageBox(err, _T("Error"), wxOK | wxICON_ERROR, NULL);
|
wxMessageBox(err, "Error", wxOK | wxICON_ERROR, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch (...) {
|
catch (...) {
|
||||||
wxMessageBox(_T("Unknown error"), _T("Error"), wxOK | wxICON_ERROR, NULL);
|
wxMessageBox("Unknown error", "Error", wxOK | wxICON_ERROR, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Try to close subtitles
|
|
||||||
/// @param enableCancel
|
|
||||||
/// @return
|
|
||||||
int FrameMain::TryToCloseSubs(bool enableCancel) {
|
int FrameMain::TryToCloseSubs(bool enableCancel) {
|
||||||
if (context->ass->IsModified()) {
|
if (context->ass->IsModified()) {
|
||||||
int flags = wxYES_NO;
|
int flags = wxYES_NO;
|
||||||
|
@ -436,9 +414,6 @@ int FrameMain::TryToCloseSubs(bool enableCancel) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Set the video and audio display visibilty
|
|
||||||
/// @param video -1: leave unchanged; 0: hide; 1: show
|
|
||||||
/// @param audio -1: leave unchanged; 0: hide; 1: show
|
|
||||||
void FrameMain::SetDisplayMode(int video, int audio) {
|
void FrameMain::SetDisplayMode(int video, int audio) {
|
||||||
if (!IsShownOnScreen()) return;
|
if (!IsShownOnScreen()) return;
|
||||||
|
|
||||||
|
@ -461,11 +436,9 @@ void FrameMain::SetDisplayMode(int video, int audio) {
|
||||||
|
|
||||||
context->videoController->Stop();
|
context->videoController->Stop();
|
||||||
|
|
||||||
// Set display
|
|
||||||
TopSizer->Show(videoBox, showVideo, true);
|
TopSizer->Show(videoBox, showVideo, true);
|
||||||
ToolsSizer->Show(audioSash, showAudio, true);
|
ToolsSizer->Show(audioSash, showAudio, true);
|
||||||
|
|
||||||
// Update
|
|
||||||
UpdateToolbar();
|
UpdateToolbar();
|
||||||
MainSizer->CalcMin();
|
MainSizer->CalcMin();
|
||||||
MainSizer->RecalcSizes();
|
MainSizer->RecalcSizes();
|
||||||
|
@ -475,10 +448,9 @@ void FrameMain::SetDisplayMode(int video, int audio) {
|
||||||
if (didFreeze) Thaw();
|
if (didFreeze) Thaw();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Update title bar
|
|
||||||
void FrameMain::UpdateTitle() {
|
void FrameMain::UpdateTitle() {
|
||||||
wxString newTitle;
|
wxString newTitle;
|
||||||
if (context->ass->IsModified()) newTitle << _T("* ");
|
if (context->ass->IsModified()) newTitle << "* ";
|
||||||
if (context->ass->filename.empty()) {
|
if (context->ass->filename.empty()) {
|
||||||
// Apple HIG says "untitled" should not be capitalised
|
// Apple HIG says "untitled" should not be capitalised
|
||||||
// and the window is a document window, it shouldn't contain the app name
|
// and the window is a document window, it shouldn't contain the app name
|
||||||
|
@ -563,8 +535,6 @@ void FrameMain::LoadVFR(wxString filename) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Detach video window
|
|
||||||
/// @param detach
|
|
||||||
void FrameMain::DetachVideo(bool detach) {
|
void FrameMain::DetachVideo(bool detach) {
|
||||||
if (detach) {
|
if (detach) {
|
||||||
if (!context->detachedVideo) {
|
if (!context->detachedVideo) {
|
||||||
|
@ -580,21 +550,13 @@ void FrameMain::DetachVideo(bool detach) {
|
||||||
UpdateToolbar();
|
UpdateToolbar();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Sets status and clear after n milliseconds
|
|
||||||
/// @param text
|
|
||||||
/// @param ms
|
|
||||||
void FrameMain::StatusTimeout(wxString text,int ms) {
|
void FrameMain::StatusTimeout(wxString text,int ms) {
|
||||||
SetStatusText(text,1);
|
SetStatusText(text,1);
|
||||||
StatusClear.SetOwner(this, ID_APP_TIMER_STATUSCLEAR);
|
StatusClear.SetOwner(this, ID_APP_TIMER_STATUSCLEAR);
|
||||||
StatusClear.Start(ms,true);
|
StatusClear.Start(ms,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// @brief Load list of files
|
|
||||||
/// @param list
|
|
||||||
/// @return
|
|
||||||
bool FrameMain::LoadList(wxArrayString list) {
|
bool FrameMain::LoadList(wxArrayString list) {
|
||||||
// Build list
|
|
||||||
wxArrayString List;
|
wxArrayString List;
|
||||||
for (size_t i=0;i<list.Count();i++) {
|
for (size_t i=0;i<list.Count();i++) {
|
||||||
wxFileName file(list[i]);
|
wxFileName file(list[i]);
|
||||||
|
@ -604,43 +566,43 @@ bool FrameMain::LoadList(wxArrayString list) {
|
||||||
|
|
||||||
// Video formats
|
// Video formats
|
||||||
wxArrayString videoList;
|
wxArrayString videoList;
|
||||||
videoList.Add(_T("avi"));
|
videoList.Add("avi");
|
||||||
videoList.Add(_T("mkv"));
|
videoList.Add("mkv");
|
||||||
videoList.Add(_T("mp4"));
|
videoList.Add("mp4");
|
||||||
videoList.Add(_T("d2v"));
|
videoList.Add("d2v");
|
||||||
videoList.Add(_T("mpg"));
|
videoList.Add("mpg");
|
||||||
videoList.Add(_T("mpeg"));
|
videoList.Add("mpeg");
|
||||||
videoList.Add(_T("ogm"));
|
videoList.Add("ogm");
|
||||||
videoList.Add(_T("avs"));
|
videoList.Add("avs");
|
||||||
videoList.Add(_T("wmv"));
|
videoList.Add("wmv");
|
||||||
videoList.Add(_T("asf"));
|
videoList.Add("asf");
|
||||||
videoList.Add(_T("mov"));
|
videoList.Add("mov");
|
||||||
videoList.Add(_T("rm"));
|
videoList.Add("rm");
|
||||||
videoList.Add(_T("y4m"));
|
videoList.Add("y4m");
|
||||||
videoList.Add(_T("yuv"));
|
videoList.Add("yuv");
|
||||||
|
|
||||||
// Subtitle formats
|
// Subtitle formats
|
||||||
wxArrayString subsList;
|
wxArrayString subsList;
|
||||||
subsList.Add(_T("ass"));
|
subsList.Add("ass");
|
||||||
subsList.Add(_T("ssa"));
|
subsList.Add("ssa");
|
||||||
subsList.Add(_T("srt"));
|
subsList.Add("srt");
|
||||||
subsList.Add(_T("sub"));
|
subsList.Add("sub");
|
||||||
subsList.Add(_T("txt"));
|
subsList.Add("txt");
|
||||||
subsList.Add(_T("ttxt"));
|
subsList.Add("ttxt");
|
||||||
|
|
||||||
// Audio formats
|
// Audio formats
|
||||||
wxArrayString audioList;
|
wxArrayString audioList;
|
||||||
audioList.Add(_T("wav"));
|
audioList.Add("wav");
|
||||||
audioList.Add(_T("mp3"));
|
audioList.Add("mp3");
|
||||||
audioList.Add(_T("ogg"));
|
audioList.Add("ogg");
|
||||||
audioList.Add(_T("wma"));
|
audioList.Add("wma");
|
||||||
audioList.Add(_T("ac3"));
|
audioList.Add("ac3");
|
||||||
audioList.Add(_T("aac"));
|
audioList.Add("aac");
|
||||||
audioList.Add(_T("mpc"));
|
audioList.Add("mpc");
|
||||||
audioList.Add(_T("ape"));
|
audioList.Add("ape");
|
||||||
audioList.Add(_T("flac"));
|
audioList.Add("flac");
|
||||||
audioList.Add(_T("mka"));
|
audioList.Add("mka");
|
||||||
audioList.Add(_T("m4a"));
|
audioList.Add("m4a");
|
||||||
|
|
||||||
// Scan list
|
// Scan list
|
||||||
wxString audio;
|
wxString audio;
|
||||||
|
@ -656,7 +618,6 @@ bool FrameMain::LoadList(wxArrayString list) {
|
||||||
if (audio.empty() && audioList.Index(ext) != wxNOT_FOUND) audio = List[i];
|
if (audio.empty() && audioList.Index(ext) != wxNOT_FOUND) audio = List[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set blocking
|
|
||||||
blockVideoLoad = !video.empty();
|
blockVideoLoad = !video.empty();
|
||||||
|
|
||||||
// Load files
|
// Load files
|
||||||
|
@ -670,14 +631,12 @@ bool FrameMain::LoadList(wxArrayString list) {
|
||||||
if (!audio.empty())
|
if (!audio.empty())
|
||||||
context->audioController->OpenAudio(audio);
|
context->audioController->OpenAudio(audio);
|
||||||
|
|
||||||
// Result
|
|
||||||
return subs.size() || audio.size() || video.size();
|
return subs.size() || audio.size() || video.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Check if ASSDraw is available
|
|
||||||
bool FrameMain::HasASSDraw() {
|
bool FrameMain::HasASSDraw() {
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
wxFileName fn(StandardPaths::DecodePath(_T("?data/ASSDraw3.exe")));
|
wxFileName fn(StandardPaths::DecodePath("?data/ASSDraw3.exe"));
|
||||||
return fn.FileExists();
|
return fn.FileExists();
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
|
@ -704,19 +663,12 @@ BEGIN_EVENT_TABLE(FrameMain, wxFrame)
|
||||||
EVT_MENU_OPEN(FrameMain::OnMenuOpen)
|
EVT_MENU_OPEN(FrameMain::OnMenuOpen)
|
||||||
EVT_KEY_DOWN(FrameMain::OnKeyDown)
|
EVT_KEY_DOWN(FrameMain::OnKeyDown)
|
||||||
|
|
||||||
// EVT_COMBOBOX(Toolbar_Zoom_Dropdown, FrameMain::OnSetZoom)
|
|
||||||
// EVT_TEXT_ENTER(Toolbar_Zoom_Dropdown, FrameMain::OnSetZoom)
|
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
// EVT_MENU(wxID_ABOUT, FrameMain::OnAbout)
|
// EVT_MENU(wxID_ABOUT, FrameMain::OnAbout)
|
||||||
// EVT_MENU(wxID_EXIT, FrameMain::OnExit)
|
// EVT_MENU(wxID_EXIT, FrameMain::OnExit)
|
||||||
#endif
|
#endif
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
/// @brief Rebuild recent list
|
|
||||||
/// @param listName
|
|
||||||
/// @param menu
|
|
||||||
/// @param startID
|
|
||||||
void FrameMain::RebuildRecentList(const char *root_command, const char *mru_name) {
|
void FrameMain::RebuildRecentList(const char *root_command, const char *mru_name) {
|
||||||
wxMenu *menu = menu::menu->GetMenu(root_command);
|
wxMenu *menu = menu::menu->GetMenu(root_command);
|
||||||
|
|
||||||
|
@ -750,10 +702,7 @@ static void validate(wxMenuBar *menu, const agi::Context *c, const char *command
|
||||||
menu->Enable(cmd::id(command), cmd::get(command)->Validate(c));
|
menu->Enable(cmd::id(command), cmd::get(command)->Validate(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Menu is being opened
|
|
||||||
/// @param event
|
|
||||||
void FrameMain::OnMenuOpen (wxMenuEvent &event) {
|
void FrameMain::OnMenuOpen (wxMenuEvent &event) {
|
||||||
// Get menu
|
|
||||||
wxMenuBar *MenuBar = menu::menu->GetMainMenu();
|
wxMenuBar *MenuBar = menu::menu->GetMainMenu();
|
||||||
|
|
||||||
MenuBar->Freeze();
|
MenuBar->Freeze();
|
||||||
|
@ -767,7 +716,6 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) {
|
||||||
|
|
||||||
// View menu
|
// View menu
|
||||||
else if (curMenu == menu::menu->GetMenu("main/view")) {
|
else if (curMenu == menu::menu->GetMenu("main/view")) {
|
||||||
// Select option
|
|
||||||
if (!showVideo && !showAudio) MenuBar->Check(cmd::id("app/display/subs"),true);
|
if (!showVideo && !showAudio) MenuBar->Check(cmd::id("app/display/subs"),true);
|
||||||
else if (showVideo && !showAudio) MenuBar->Check(cmd::id("app/display/video_subs"),true);
|
else if (showVideo && !showAudio) MenuBar->Check(cmd::id("app/display/video_subs"),true);
|
||||||
else if (showAudio && showVideo) MenuBar->Check(cmd::id("app/display/full"),true);
|
else if (showAudio && showVideo) MenuBar->Check(cmd::id("app/display/full"),true);
|
||||||
|
@ -785,7 +733,6 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) {
|
||||||
validate(MenuBar, context.get(), "keyframe/close");
|
validate(MenuBar, context.get(), "keyframe/close");
|
||||||
validate(MenuBar, context.get(), "keyframe/save");
|
validate(MenuBar, context.get(), "keyframe/save");
|
||||||
|
|
||||||
// Set AR radio
|
|
||||||
int arType = context->videoController->GetAspectRatioType();
|
int arType = context->videoController->GetAspectRatioType();
|
||||||
MenuBar->Check(cmd::id("video/aspect/default"),false);
|
MenuBar->Check(cmd::id("video/aspect/default"),false);
|
||||||
MenuBar->Check(cmd::id("video/aspect/full"),false);
|
MenuBar->Check(cmd::id("video/aspect/full"),false);
|
||||||
|
@ -800,10 +747,8 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) {
|
||||||
case 4: MenuBar->Check(cmd::id("video/aspect/custom"),true); break;
|
case 4: MenuBar->Check(cmd::id("video/aspect/custom"),true); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set overscan mask
|
|
||||||
MenuBar->Check(cmd::id("video/show_overscan"),OPT_GET("Video/Overscan Mask")->GetBool());
|
MenuBar->Check(cmd::id("video/show_overscan"),OPT_GET("Video/Overscan Mask")->GetBool());
|
||||||
|
|
||||||
// Rebuild recent lists
|
|
||||||
RebuildRecentList("recent/video", "Video");
|
RebuildRecentList("recent/video", "Video");
|
||||||
RebuildRecentList("recent/timecode", "Timecodes");
|
RebuildRecentList("recent/timecode", "Timecodes");
|
||||||
RebuildRecentList("recent/keyframe", "Keyframes");
|
RebuildRecentList("recent/keyframe", "Keyframes");
|
||||||
|
@ -898,10 +843,6 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) {
|
||||||
MenuBar->Thaw();
|
MenuBar->Thaw();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Macro menu creation helper
|
|
||||||
/// @param menu
|
|
||||||
/// @param macros
|
|
||||||
/// @return
|
|
||||||
int FrameMain::AddMacroMenuItems(wxMenu *menu, const std::vector<Automation4::FeatureMacro*> ¯os) {
|
int FrameMain::AddMacroMenuItems(wxMenu *menu, const std::vector<Automation4::FeatureMacro*> ¯os) {
|
||||||
#ifdef WITH_AUTOMATION
|
#ifdef WITH_AUTOMATION
|
||||||
if (macros.empty()) {
|
if (macros.empty()) {
|
||||||
|
@ -922,8 +863,6 @@ int FrameMain::AddMacroMenuItems(wxMenu *menu, const std::vector<Automation4::Fe
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief General handler for all Automation-generated menu items
|
|
||||||
/// @param event
|
|
||||||
void FrameMain::OnAutomationMacro (wxCommandEvent &event) {
|
void FrameMain::OnAutomationMacro (wxCommandEvent &event) {
|
||||||
#ifdef WITH_AUTOMATION
|
#ifdef WITH_AUTOMATION
|
||||||
SubsGrid->BeginBatch();
|
SubsGrid->BeginBatch();
|
||||||
|
@ -937,9 +876,6 @@ void FrameMain::OnAutomationMacro (wxCommandEvent &event) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// @brief Window is attempted to be closed
|
|
||||||
/// @param event
|
|
||||||
void FrameMain::OnCloseWindow (wxCloseEvent &event) {
|
void FrameMain::OnCloseWindow (wxCloseEvent &event) {
|
||||||
// Stop audio and video
|
// Stop audio and video
|
||||||
context->videoController->Stop();
|
context->videoController->Stop();
|
||||||
|
@ -960,54 +896,47 @@ void FrameMain::OnCloseWindow (wxCloseEvent &event) {
|
||||||
else Destroy();
|
else Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Autosave the currently open file, if any
|
void FrameMain::OnAutoSave(wxTimerEvent &) try {
|
||||||
void FrameMain::OnAutoSave(wxTimerEvent &) {
|
|
||||||
try {
|
|
||||||
if (context->ass->loaded && context->ass->IsModified()) {
|
if (context->ass->loaded && context->ass->IsModified()) {
|
||||||
// Set path
|
|
||||||
wxFileName origfile(context->ass->filename);
|
wxFileName origfile(context->ass->filename);
|
||||||
wxString path = lagi_wxString(OPT_GET("Path/Auto/Save")->GetString());
|
wxString path = lagi_wxString(OPT_GET("Path/Auto/Save")->GetString());
|
||||||
if (path.IsEmpty()) path = origfile.GetPath();
|
if (path.IsEmpty()) path = origfile.GetPath();
|
||||||
wxFileName dstpath(path);
|
wxFileName dstpath(path);
|
||||||
if (!dstpath.IsAbsolute()) path = StandardPaths::DecodePathMaybeRelative(path, _T("?user/"));
|
if (!dstpath.IsAbsolute()) path = StandardPaths::DecodePathMaybeRelative(path, "?user/");
|
||||||
dstpath.AssignDir(path);
|
dstpath.AssignDir(path);
|
||||||
if (!dstpath.DirExists()) wxMkdir(path);
|
if (!dstpath.DirExists()) wxMkdir(path);
|
||||||
|
|
||||||
wxString name = origfile.GetName();
|
wxString name = origfile.GetName();
|
||||||
if (name.IsEmpty()) {
|
if (name.empty()) {
|
||||||
dstpath.SetFullName("Untitled.AUTOSAVE.ass");
|
dstpath.SetFullName("Untitled.AUTOSAVE.ass");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dstpath.SetFullName(name + L".AUTOSAVE.ass");
|
dstpath.SetFullName(name + ".AUTOSAVE.ass");
|
||||||
}
|
}
|
||||||
|
|
||||||
context->ass->Save(dstpath.GetFullPath(),false,false);
|
context->ass->Save(dstpath.GetFullPath(),false,false);
|
||||||
|
|
||||||
// Set status bar
|
StatusTimeout(_("File backup saved as \"") + dstpath.GetFullPath() + "\".");
|
||||||
StatusTimeout(_("File backup saved as \"") + dstpath.GetFullPath() + _T("\"."));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (const agi::Exception& err) {
|
catch (const agi::Exception& err) {
|
||||||
StatusTimeout(lagi_wxString("Exception when attempting to autosave file: " + err.GetMessage()));
|
StatusTimeout(lagi_wxString("Exception when attempting to autosave file: " + err.GetMessage()));
|
||||||
}
|
}
|
||||||
catch (wxString err) {
|
catch (wxString err) {
|
||||||
StatusTimeout(_T("Exception when attempting to autosave file: ") + err);
|
StatusTimeout("Exception when attempting to autosave file: " + err);
|
||||||
}
|
}
|
||||||
catch (const wchar_t *err) {
|
catch (const wchar_t *err) {
|
||||||
StatusTimeout(_T("Exception when attempting to autosave file: ") + wxString(err));
|
StatusTimeout("Exception when attempting to autosave file: " + wxString(err));
|
||||||
}
|
}
|
||||||
catch (...) {
|
catch (...) {
|
||||||
StatusTimeout(_T("Unhandled exception when attempting to autosave file."));
|
StatusTimeout("Unhandled exception when attempting to autosave file.");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Clear statusbar
|
|
||||||
void FrameMain::OnStatusClear(wxTimerEvent &) {
|
void FrameMain::OnStatusClear(wxTimerEvent &) {
|
||||||
SetStatusText(_T(""),1);
|
SetStatusText("",1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameMain::OnAudioBoxResize(wxSashEvent &event)
|
void FrameMain::OnAudioBoxResize(wxSashEvent &event) {
|
||||||
{
|
|
||||||
if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE)
|
if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1021,13 +950,11 @@ void FrameMain::OnAudioBoxResize(wxSashEvent &event)
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameMain::OnAudioOpen(AudioProvider *provider)
|
void FrameMain::OnAudioOpen(AudioProvider *provider) {
|
||||||
{
|
|
||||||
SetDisplayMode(-1, 1);
|
SetDisplayMode(-1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameMain::OnAudioClose()
|
void FrameMain::OnAudioClose() {
|
||||||
{
|
|
||||||
SetDisplayMode(-1, 0);
|
SetDisplayMode(-1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1103,7 +1030,7 @@ void FrameMain::OnSubtitlesOpen() {
|
||||||
// Automation scripts
|
// Automation scripts
|
||||||
#ifdef WITH_AUTOMATION
|
#ifdef WITH_AUTOMATION
|
||||||
context->local_scripts->RemoveAll();
|
context->local_scripts->RemoveAll();
|
||||||
wxStringTokenizer tok(AutoScriptString, _T("|"), wxTOKEN_STRTOK);
|
wxStringTokenizer tok(AutoScriptString, "|", wxTOKEN_STRTOK);
|
||||||
wxFileName assfn(context->ass->filename);
|
wxFileName assfn(context->ass->filename);
|
||||||
wxString autobasefn(lagi_wxString(OPT_GET("Path/Automation/Base")->GetString()));
|
wxString autobasefn(lagi_wxString(OPT_GET("Path/Automation/Base")->GetString()));
|
||||||
while (tok.HasMoreTokens()) {
|
while (tok.HasMoreTokens()) {
|
||||||
|
@ -1111,14 +1038,14 @@ void FrameMain::OnSubtitlesOpen() {
|
||||||
wxString sfnamel = sfnames.Left(1);
|
wxString sfnamel = sfnames.Left(1);
|
||||||
sfnames.Remove(0, 1);
|
sfnames.Remove(0, 1);
|
||||||
wxString basepath;
|
wxString basepath;
|
||||||
if (sfnamel == _T("~")) {
|
if (sfnamel == "~") {
|
||||||
basepath = assfn.GetPath();
|
basepath = assfn.GetPath();
|
||||||
} else if (sfnamel == _T("$")) {
|
} else if (sfnamel == "$") {
|
||||||
basepath = autobasefn;
|
basepath = autobasefn;
|
||||||
} else if (sfnamel == _T("/")) {
|
} else if (sfnamel == "/") {
|
||||||
basepath = _T("");
|
basepath = "";
|
||||||
} else {
|
} else {
|
||||||
wxLogWarning(_T("Automation Script referenced with unknown location specifier character.\nLocation specifier found: %s\nFilename specified: %s"),
|
wxLogWarning("Automation Script referenced with unknown location specifier character.\nLocation specifier found: %s\nFilename specified: %s",
|
||||||
sfnamel.c_str(), sfnames.c_str());
|
sfnamel.c_str(), sfnames.c_str());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1128,7 +1055,7 @@ void FrameMain::OnSubtitlesOpen() {
|
||||||
sfnames = sfname.GetFullPath();
|
sfnames = sfname.GetFullPath();
|
||||||
context->local_scripts->Add(Automation4::ScriptFactory::CreateFromFile(sfnames, true));
|
context->local_scripts->Add(Automation4::ScriptFactory::CreateFromFile(sfnames, true));
|
||||||
} else {
|
} else {
|
||||||
wxLogWarning(_T("Automation Script referenced could not be found.\nFilename specified: %s%s\nSearched relative to: %s\nResolved filename: %s"),
|
wxLogWarning("Automation Script referenced could not be found.\nFilename specified: %s%s\nSearched relative to: %s\nResolved filename: %s",
|
||||||
sfnamel.c_str(), sfnames.c_str(), basepath.c_str(), sfname.GetFullPath().c_str());
|
sfnamel.c_str(), sfnames.c_str(), basepath.c_str(), sfname.GetFullPath().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1157,7 +1084,7 @@ void FrameMain::OnSubtitlesSave() {
|
||||||
Automation4::Script *script = scripts[i];
|
Automation4::Script *script = scripts[i];
|
||||||
|
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
scripts_string += _T("|");
|
scripts_string += "|";
|
||||||
|
|
||||||
wxString autobase_rel, assfile_rel;
|
wxString autobase_rel, assfile_rel;
|
||||||
wxString scriptfn(script->GetFilename());
|
wxString scriptfn(script->GetFilename());
|
||||||
|
@ -1165,22 +1092,20 @@ void FrameMain::OnSubtitlesSave() {
|
||||||
assfile_rel = MakeRelativePath(scriptfn, context->ass->filename);
|
assfile_rel = MakeRelativePath(scriptfn, context->ass->filename);
|
||||||
|
|
||||||
if (autobase_rel.size() <= scriptfn.size() && autobase_rel.size() <= assfile_rel.size()) {
|
if (autobase_rel.size() <= scriptfn.size() && autobase_rel.size() <= assfile_rel.size()) {
|
||||||
scriptfn = _T("$") + autobase_rel;
|
scriptfn = "$" + autobase_rel;
|
||||||
} else if (assfile_rel.size() <= scriptfn.size() && assfile_rel.size() <= autobase_rel.size()) {
|
} else if (assfile_rel.size() <= scriptfn.size() && assfile_rel.size() <= autobase_rel.size()) {
|
||||||
scriptfn = _T("~") + assfile_rel;
|
scriptfn = "~" + assfile_rel;
|
||||||
} else {
|
} else {
|
||||||
scriptfn = _T("/") + wxFileName(scriptfn).GetFullPath(wxPATH_UNIX);
|
scriptfn = "/" + wxFileName(scriptfn).GetFullPath(wxPATH_UNIX);
|
||||||
}
|
}
|
||||||
|
|
||||||
scripts_string += scriptfn;
|
scripts_string += scriptfn;
|
||||||
}
|
}
|
||||||
context->ass->SetScriptInfo(_T("Automation Scripts"), scripts_string);
|
context->ass->SetScriptInfo("Automation Scripts", scripts_string);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FrameMain::OnKeyDown(wxKeyEvent &event) {
|
void FrameMain::OnKeyDown(wxKeyEvent &event) {
|
||||||
if (!hotkey::check("Main Frame", event.GetKeyCode(), event.GetUnicodeKey(), event.GetModifiers()))
|
if (!hotkey::check("Main Frame", event.GetKeyCode(), event.GetUnicodeKey(), event.GetModifiers()))
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,32 +49,23 @@
|
||||||
|
|
||||||
#include <libaegisub/scoped_ptr.h>
|
#include <libaegisub/scoped_ptr.h>
|
||||||
|
|
||||||
|
class AegisubFileDropTarget;
|
||||||
class AssFile;
|
class AssFile;
|
||||||
|
class AudioBox;
|
||||||
|
class AudioController;
|
||||||
|
class AudioProvider;
|
||||||
|
class DialogDetachedVideo;
|
||||||
|
class DialogStyling;
|
||||||
|
class SubsEditBox;
|
||||||
|
class SubtitlesGrid;
|
||||||
|
class VideoBox;
|
||||||
class VideoDisplay;
|
class VideoDisplay;
|
||||||
class VideoSlider;
|
class VideoSlider;
|
||||||
class VideoZoomSlider;
|
class VideoZoomSlider;
|
||||||
class SubtitlesGrid;
|
|
||||||
class SubsEditBox;
|
|
||||||
class AudioBox;
|
|
||||||
class VideoBox;
|
|
||||||
class DialogDetachedVideo;
|
|
||||||
class DialogStyling;
|
|
||||||
class AegisubFileDropTarget;
|
|
||||||
class AudioController;
|
|
||||||
class AudioProvider;
|
|
||||||
|
|
||||||
namespace agi { struct Context; }
|
namespace agi { struct Context; }
|
||||||
namespace Automation4 { class FeatureMacro; class ScriptManager; }
|
namespace Automation4 { class FeatureMacro; class ScriptManager; }
|
||||||
|
|
||||||
|
|
||||||
enum SubMenuID {
|
|
||||||
ID_TOOLBAR_ZOOM_DROPDOWN = 11001,
|
|
||||||
ID_APP_TIMER_AUTOSAVE = 12001,
|
|
||||||
ID_APP_TIMER_STATUSCLEAR = 12002,
|
|
||||||
ID_MENU_AUTOMATION_MACRO = 13006,
|
|
||||||
ID_SASH_MAIN_AUDIO = 14001
|
|
||||||
};
|
|
||||||
|
|
||||||
/// DOCME
|
/// DOCME
|
||||||
/// @class FrameMain
|
/// @class FrameMain
|
||||||
/// @brief DOCME
|
/// @brief DOCME
|
||||||
|
@ -84,8 +75,14 @@ class FrameMain: public wxFrame {
|
||||||
friend class AegisubFileDropTarget;
|
friend class AegisubFileDropTarget;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/// Set the status bar text
|
||||||
|
/// @param text New status bar text
|
||||||
|
/// @param ms Time in milliseconds that the message should be visible
|
||||||
void StatusTimeout(wxString text,int ms=10000);
|
void StatusTimeout(wxString text,int ms=10000);
|
||||||
void SetDisplayMode(int showVid,int showAudio);
|
/// @brief Set the video and audio display visibility
|
||||||
|
/// @param video -1: leave unchanged; 0: hide; 1: show
|
||||||
|
/// @param audio -1: leave unchanged; 0: hide; 1: show
|
||||||
|
void SetDisplayMode(int showVid, int showAudio);
|
||||||
void LoadSubtitles(wxString filename,wxString charset="");
|
void LoadSubtitles(wxString filename,wxString charset="");
|
||||||
void DetachVideo(bool detach=true);
|
void DetachVideo(bool detach=true);
|
||||||
void LoadVFR(wxString filename);
|
void LoadVFR(wxString filename);
|
||||||
|
@ -100,53 +97,42 @@ private:
|
||||||
#endif
|
#endif
|
||||||
void cmd_call(wxCommandEvent& event);
|
void cmd_call(wxCommandEvent& event);
|
||||||
|
|
||||||
/// DOCME
|
bool showVideo; ///< Is the video display shown?
|
||||||
|
bool showAudio; ///< Is the audio display shown?
|
||||||
/// DOCME
|
wxTimer AutoSave; ///< Autosave timer
|
||||||
bool showVideo,showAudio;
|
wxTimer StatusClear; ///< Status bar timeout timer
|
||||||
|
/// Block video loading; used when both video and subtitles are opened at
|
||||||
/// DOCME
|
/// the same time, so that the video associated with the subtitles (if any)
|
||||||
wxTimer AutoSave;
|
/// isn't loaded
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
wxTimer StatusClear;
|
|
||||||
|
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
bool blockVideoLoad;
|
bool blockVideoLoad;
|
||||||
|
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
wxPanel *Panel;
|
wxPanel *Panel;
|
||||||
|
wxToolBar *Toolbar; ///< The main toolbar
|
||||||
/// DOCME
|
wxComboBox *ZoomBox; ///< The video zoom dropdown in the main toolbar
|
||||||
wxToolBar *Toolbar;
|
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
wxComboBox *ZoomBox;
|
|
||||||
|
|
||||||
/// DOCME
|
|
||||||
std::vector<Automation4::FeatureMacro*> activeMacroItems;
|
std::vector<Automation4::FeatureMacro*> activeMacroItems;
|
||||||
|
|
||||||
int AddMacroMenuItems(wxMenu *menu, const std::vector<Automation4::FeatureMacro*> ¯os);
|
int AddMacroMenuItems(wxMenu *menu, const std::vector<Automation4::FeatureMacro*> ¯os);
|
||||||
|
|
||||||
void InitToolbar();
|
void InitToolbar();
|
||||||
void InitContents();
|
void InitContents();
|
||||||
void DeInitContents();
|
void InitMenu();
|
||||||
|
|
||||||
bool LoadList(wxArrayString list);
|
bool LoadList(wxArrayString list);
|
||||||
void UpdateTitle();
|
void UpdateTitle();
|
||||||
|
|
||||||
void InitMenu();
|
|
||||||
|
|
||||||
void OnKeyDown(wxKeyEvent &event);
|
void OnKeyDown(wxKeyEvent &event);
|
||||||
void OnMenuOpen (wxMenuEvent &event);
|
void OnMenuOpen (wxMenuEvent &event);
|
||||||
|
|
||||||
void OnAudioBoxResize(wxSashEvent &event);
|
void OnAudioBoxResize(wxSashEvent &event);
|
||||||
|
/// @brief Autosave the currently open file, if any
|
||||||
void OnAutoSave(wxTimerEvent &event);
|
void OnAutoSave(wxTimerEvent &event);
|
||||||
void OnStatusClear(wxTimerEvent &event);
|
void OnStatusClear(wxTimerEvent &event);
|
||||||
void OnCloseWindow (wxCloseEvent &event);
|
void OnCloseWindow (wxCloseEvent &event);
|
||||||
|
/// @brief General handler for all Automation-generated menu items
|
||||||
void OnAutomationMacro(wxCommandEvent &event);
|
void OnAutomationMacro(wxCommandEvent &event);
|
||||||
|
|
||||||
|
/// Close the currently open subs, asking the user if they want to save if there are unsaved changes
|
||||||
|
/// @param enableCancel Should the user be able to cancel the close?
|
||||||
int TryToCloseSubs(bool enableCancel=true);
|
int TryToCloseSubs(bool enableCancel=true);
|
||||||
|
|
||||||
void RebuildRecentList(const char *root_command, const char *mru_name);
|
void RebuildRecentList(const char *root_command, const char *mru_name);
|
||||||
|
@ -161,29 +147,15 @@ private:
|
||||||
void OnSubtitlesSave();
|
void OnSubtitlesSave();
|
||||||
|
|
||||||
|
|
||||||
/// The subtitle editing area
|
SubtitlesGrid *SubsGrid; ///< The subtitle editing area
|
||||||
SubtitlesGrid *SubsGrid;
|
SubsEditBox *EditBox; ///< The subtitle editing textbox
|
||||||
|
wxSashWindow *audioSash; ///< Sash for resizing the audio area
|
||||||
|
AudioBox *audioBox; ///< The audio area
|
||||||
|
VideoBox *videoBox; ///< The video area
|
||||||
|
|
||||||
/// The subtitle editing textbox
|
wxBoxSizer *MainSizer; ///< Arranges things from top to bottom in the window
|
||||||
SubsEditBox *EditBox;
|
wxBoxSizer *TopSizer; ///< Arranges video box and tool box from left to right
|
||||||
|
wxBoxSizer *ToolsSizer; ///< Arranges audio and editing areas top to bottom
|
||||||
/// Sash for resizing the audio area
|
|
||||||
wxSashWindow *audioSash;
|
|
||||||
|
|
||||||
/// The audio area
|
|
||||||
AudioBox *audioBox;
|
|
||||||
|
|
||||||
/// The video area
|
|
||||||
VideoBox *videoBox;
|
|
||||||
|
|
||||||
/// Arranges things from top to bottom in the window
|
|
||||||
wxBoxSizer *MainSizer;
|
|
||||||
|
|
||||||
/// Arranges video box and tool box from left to right
|
|
||||||
wxBoxSizer *TopSizer;
|
|
||||||
|
|
||||||
/// Arranges audio and editing areas top to bottom
|
|
||||||
wxBoxSizer *ToolsSizer;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FrameMain(wxArrayString args);
|
FrameMain(wxArrayString args);
|
||||||
|
|
Loading…
Reference in New Issue