diff --git a/aegisub/dialog_options.cpp b/aegisub/dialog_options.cpp index cc14f4327..3fcd2795a 100644 --- a/aegisub/dialog_options.cpp +++ b/aegisub/dialog_options.cpp @@ -51,6 +51,8 @@ #include "subs_edit_box.h" #include "subs_edit_ctrl.h" #include "subs_grid.h" +#include "video_box.h" +#include "video_slider.h" /////////////// @@ -164,8 +166,8 @@ DialogOptions::DialogOptions(wxWindow *parent) fileSizer3->Add(fileSizer4,1,wxEXPAND | wxALL,5); fileSizer5->Add(fileSizer6,1,wxEXPAND | wxALL,5); fileMainSizer->Add(fileSizer1,0,wxEXPAND | wxALL,0); - fileMainSizer->Add(fileSizer3,0,wxEXPAND | wxALL,0); - fileMainSizer->Add(fileSizer5,0,wxEXPAND | wxALL,0); + fileMainSizer->Add(fileSizer3,0,wxEXPAND | wxTOP,5); + fileMainSizer->Add(fileSizer5,0,wxEXPAND | wxTOP,5); fileMainSizer->AddStretchSpacer(1); fileMainSizer->Fit(filePage); filePage->SetSizer(fileMainSizer); @@ -230,7 +232,7 @@ DialogOptions::DialogOptions(wxWindow *parent) editSizer3->Add(editSizer4,1,wxEXPAND | wxALL,5); editSizer3->Add(editSizer5,0,wxEXPAND | wxALL,5); editMainSizer->Add(editSizer1,0,wxEXPAND | wxALL,0); - editMainSizer->Add(editSizer3,0,wxEXPAND | wxALL,0); + editMainSizer->Add(editSizer3,0,wxEXPAND | wxTOP,5); editMainSizer->AddStretchSpacer(1); editMainSizer->Fit(editPage); editPage->SetSizer(editMainSizer); @@ -295,14 +297,79 @@ DialogOptions::DialogOptions(wxWindow *parent) gridSizer2->Add(gridSizer4,0,wxEXPAND | wxALL,5); gridSizer2->Add(gridSizer5,0,wxEXPAND | wxALL,5); gridMainSizer->Add(gridSizer1,0,wxEXPAND | wxALL,0); - gridMainSizer->Add(gridSizer2,0,wxEXPAND | wxALL,0); + gridMainSizer->Add(gridSizer2,0,wxEXPAND | wxTOP,5); gridMainSizer->AddStretchSpacer(1); gridMainSizer->Fit(gridPage); gridPage->SetSizer(gridMainSizer); } // Video page - // TODO + { + // Sizers + wxSizer *videoMainSizer = new wxBoxSizer(wxVERTICAL); + wxSizer *videoSizer1 = new wxStaticBoxSizer(wxVERTICAL,videoPage,_("Options")); + wxSizer *videoSizer2 = new wxStaticBoxSizer(wxVERTICAL,videoPage,_("Advanced - EXPERT USERS ONLY")); + wxFlexGridSizer *videoSizer3 = new wxFlexGridSizer(4,2,5,5); + wxFlexGridSizer *videoSizer4 = new wxFlexGridSizer(4,2,5,5); + wxControl *control; + + // First sizer + videoSizer3->Add(new wxStaticText(videoPage,-1,_("Check video resolution on open: ")),0,wxALIGN_CENTER_VERTICAL | wxRIGHT,10); + wxString choices1[3] = { _("Never"), _("Ask"), _("Always") }; + control = new wxComboBox(videoPage,-1,_T(""),wxDefaultPosition,wxDefaultSize,3,choices1,wxCB_READONLY | wxCB_DROPDOWN); + Bind(control,_T("Video check script res")); + videoSizer3->Add(control,1,wxEXPAND); + videoSizer3->Add(new wxStaticText(videoPage,-1,_("Default Zoom: ")),0,wxALIGN_CENTER_VERTICAL | wxRIGHT,10); + wxArrayString choices2; + for (int i=1;i<=16;i++) { + wxString toAdd = wxString::Format(_T("%i"),int(i*12.5)); + if (i%2) toAdd += _T(".5"); + toAdd += _T("%"); + choices2.Add(toAdd); + } + control = new wxComboBox(videoPage,-1,_T(""),wxDefaultPosition,wxDefaultSize,choices2,wxCB_READONLY | wxCB_DROPDOWN); + Bind(control,_T("Video Default Zoom")); + videoSizer3->Add(control,1,wxEXPAND); + videoSizer3->Add(new wxStaticText(videoPage,-1,_("Fast Jump step in frames: ")),0,wxALIGN_CENTER_VERTICAL | wxRIGHT,10); + control = new wxTextCtrl(videoPage,-1); + Bind(control,_T("Video fast jump step")); + videoSizer3->Add(control,1,wxEXPAND); + control = new wxCheckBox(videoPage,-1,_("Show keyframes in slider")); + Bind(control,_T("Show keyframes on video slider")); + videoSizer3->Add(control,0,wxEXPAND); + videoSizer3->AddGrowableCol(1,1); + + // Second sizer + videoSizer4->Add(new wxStaticText(videoPage,-1,_("Video Provider: ")),0,wxALIGN_CENTER_VERTICAL | wxRIGHT,10); + control = new wxTextCtrl(videoPage,-1); + Bind(control,_T("Video provider")); + videoSizer4->Add(control,1,wxEXPAND); + videoSizer4->Add(new wxStaticText(videoPage,-1,_("Avisynth Video Resizer: ")),0,wxALIGN_CENTER_VERTICAL | wxRIGHT,10); + control = new wxTextCtrl(videoPage,-1); + Bind(control,_T("Video resizer")); + videoSizer4->Add(control,1,wxEXPAND); + videoSizer4->Add(new wxStaticText(videoPage,-1,_("Avisynth Memory Limit: ")),0,wxALIGN_CENTER_VERTICAL | wxRIGHT,10); + control = new wxTextCtrl(videoPage,-1,_T(""),wxDefaultPosition,wxDefaultSize,0,NumValidator(NULL,false)); + Bind(control,_T("Avisynth memorymax")); + videoSizer4->Add(control,1,wxEXPAND); + control = new wxCheckBox(videoPage,-1,_("Threaded Video")); + Bind(control,_T("Threaded video")); + videoSizer4->Add(control,1,wxEXPAND); + control = new wxCheckBox(videoPage,-1,_("Allow pre-2.56a Avisynth")); + Bind(control,_T("Allow Ancient Avisynth")); + videoSizer4->Add(control,1,wxEXPAND); + videoSizer4->AddGrowableCol(1,1); + + // Sizers + videoSizer1->Add(videoSizer3,1,wxEXPAND | wxALL,5); + videoSizer2->Add(new wxStaticText(videoPage,-1,_("WARNING: Changing these settings might result in bugs,\ncrashes, glitches and/or movax.\nDon't touch these unless you know what you're doing.")),0,wxEXPAND | wxALL,5); + videoSizer2->Add(videoSizer4,1,wxEXPAND | wxALL,5); + videoMainSizer->Add(videoSizer1,0,wxEXPAND | wxALL,0); + videoMainSizer->Add(videoSizer2,0,wxEXPAND | wxTOP,5); + videoMainSizer->AddStretchSpacer(1); + videoMainSizer->Fit(videoPage); + videoPage->SetSizer(videoMainSizer); + } // Audio page // TODO @@ -420,6 +487,8 @@ void DialogOptions::WriteToOptions(bool justApply) { bool mustRestart = false; bool editBox = false; bool grid = false; + bool video = false; + bool audio = false; // For each bound item for (unsigned int i=0;iSubsBox->UpdateStyle(); } + + // Video + if (video) { + FrameMain *frame = (FrameMain*) GetParent(); + frame->videoBox->videoSlider->Refresh(); + } } } diff --git a/aegisub/options.cpp b/aegisub/options.cpp index 12ffbb567..4f7f4723b 100644 --- a/aegisub/options.cpp +++ b/aegisub/options.cpp @@ -126,11 +126,14 @@ void OptionsManager::LoadDefaults() { SetInt(_T("Video Check Script Res"), 0); SetInt(_T("Video Default Zoom"), 7); SetInt(_T("Video Fast Jump Step"), 10); + SetModificationType(MOD_VIDEO); SetBool(_T("Show keyframes on video slider"),true); // Video Provider (Advanced) + SetModificationType(MOD_RESTART); SetBool(_T("Threaded Video"),false); SetInt(_T("Avisynth MemoryMax"),64); + SetModificationType(MOD_AUTOMATIC); SetBool(_T("Allow Ancient Avisynth"),false); SetText(_T("Video Provider"),_T("Avisynth")); SetText(_T("Video resizer"),_T("BilinearResize")); @@ -144,9 +147,11 @@ void OptionsManager::LoadDefaults() { SetInt(_T("Timing Default Duration"), 2000); SetInt(_T("Audio lead in"),200); SetInt(_T("Audio lead out"),300); + SetModificationType(MOD_AUDIO); SetInt(_T("Audio Inactive Lines Display Mode"),1); // Audio Provider (Advanced) + SetModificationType(MOD_AUTOMATIC); SetInt(_T("Audio Cache"),1); SetInt(_T("Audio Sample Rate"),0); SetText(_T("Audio Downmixer"),_T("ConvertToMono")); @@ -154,11 +159,12 @@ void OptionsManager::LoadDefaults() { SetText(_T("Audio HD Cache Name"),_T("audio%02i.tmp")); // Automation + SetModificationType(MOD_RESTART); SetText(_T("Automation Base Path"), AegisubApp::folderName + _T("automation/")); SetText(_T("Automation Include Path"), AegisubApp::folderName + _T("automation/include/")); SetText(_T("Automation Autoload Path"), AegisubApp::folderName + _T("automation/autoload/")); SetInt(_T("Automation Trace Level"), 3); - + // Generate colors wxColour tempCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); float r = tempCol.Red() / 255.0; @@ -205,6 +211,7 @@ void OptionsManager::LoadDefaults() { SetModificationType(MOD_AUTOMATIC); // Audio Cosmetic + SetModificationType(MOD_AUDIO); SetInt(_T("Audio Spectrum Cutoff"),32); SetInt(_T("Audio Spectrum Window"),11); SetBool(_T("Audio Spectrum invert selection"), true);