mirror of https://github.com/odrling/Aegisub
"Apply" button to options dialog, and made subs edit box refresh when its options are changed in the dialog.
Originally committed to SVN as r699.
This commit is contained in:
parent
637dfda62c
commit
f221bc1a1f
|
@ -46,6 +46,8 @@
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "validators.h"
|
#include "validators.h"
|
||||||
#include "colour_button.h"
|
#include "colour_button.h"
|
||||||
|
#include "subs_edit_box.h"
|
||||||
|
#include "subs_edit_ctrl.h"
|
||||||
|
|
||||||
|
|
||||||
///////////////
|
///////////////
|
||||||
|
@ -56,6 +58,7 @@ DialogOptions::DialogOptions(wxWindow *parent)
|
||||||
#ifdef wxUSE_TREEBOOK
|
#ifdef wxUSE_TREEBOOK
|
||||||
// Create book
|
// Create book
|
||||||
book = new wxTreebook(this,-1,wxDefaultPosition,wxSize(100,100));
|
book = new wxTreebook(this,-1,wxDefaultPosition,wxSize(100,100));
|
||||||
|
needsRestart = false;
|
||||||
|
|
||||||
// Image list
|
// Image list
|
||||||
//wxImageList *imgList = new wxImageList(16,15);
|
//wxImageList *imgList = new wxImageList(16,15);
|
||||||
|
@ -193,7 +196,7 @@ DialogOptions::DialogOptions(wxWindow *parent)
|
||||||
|
|
||||||
// Second static box
|
// Second static box
|
||||||
wxControl *control;
|
wxControl *control;
|
||||||
wxString labels2[9] = { _("Normal"), _("Brackets"), _("Slashes"), _("Tags"), _("Parameters") , _("Error"), _("Error Background"), _("Line Break"), _("Modified Background") };
|
wxString labels2[9] = { _("Normal"), _("Brackets"), _("Slashes and Parentheses"), _("Tags"), _("Parameters") , _("Error"), _("Error Background"), _("Line Break"), _("Modified Background") };
|
||||||
wxString options2[11] = { _T("Normal"), _T("Brackets"), _T("Slashes"), _T("Tags"), _T("Parameters") , _T("Error"), _T("Error Background"), _T("Line Break"), _T("Edit box need enter background"), _T("Font Face"), _T("Font Size") };
|
wxString options2[11] = { _T("Normal"), _T("Brackets"), _T("Slashes"), _T("Tags"), _T("Parameters") , _T("Error"), _T("Error Background"), _T("Line Break"), _T("Edit box need enter background"), _T("Font Face"), _T("Font Size") };
|
||||||
for (int i=0;i<9;i++) {
|
for (int i=0;i<9;i++) {
|
||||||
wxString caption = labels2[i]+_T(": ");
|
wxString caption = labels2[i]+_T(": ");
|
||||||
|
@ -243,6 +246,7 @@ DialogOptions::DialogOptions(wxWindow *parent)
|
||||||
buttonSizer->AddStretchSpacer(1);
|
buttonSizer->AddStretchSpacer(1);
|
||||||
buttonSizer->Add(new wxButton(this,wxID_OK),0,wxRIGHT,5);
|
buttonSizer->Add(new wxButton(this,wxID_OK),0,wxRIGHT,5);
|
||||||
buttonSizer->Add(new wxButton(this,wxID_CANCEL),0,wxRIGHT,5);
|
buttonSizer->Add(new wxButton(this,wxID_CANCEL),0,wxRIGHT,5);
|
||||||
|
buttonSizer->Add(new wxButton(this,wxID_APPLY),0,wxRIGHT,5);
|
||||||
|
|
||||||
// Main Sizer
|
// Main Sizer
|
||||||
wxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
|
wxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
@ -278,16 +282,33 @@ void DialogOptions::Bind(wxControl *ctrl, wxString option) {
|
||||||
BEGIN_EVENT_TABLE(DialogOptions,wxDialog)
|
BEGIN_EVENT_TABLE(DialogOptions,wxDialog)
|
||||||
EVT_BUTTON(wxID_OK,DialogOptions::OnOK)
|
EVT_BUTTON(wxID_OK,DialogOptions::OnOK)
|
||||||
EVT_BUTTON(wxID_CANCEL,DialogOptions::OnCancel)
|
EVT_BUTTON(wxID_CANCEL,DialogOptions::OnCancel)
|
||||||
|
EVT_BUTTON(wxID_APPLY,DialogOptions::OnApply)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
//////
|
//////
|
||||||
// OK
|
// OK
|
||||||
void DialogOptions::OnOK(wxCommandEvent &event) {
|
void DialogOptions::OnOK(wxCommandEvent &event) {
|
||||||
WriteToOptions();
|
|
||||||
Options.SetInt(_T("Options page"),book->GetSelection());
|
Options.SetInt(_T("Options page"),book->GetSelection());
|
||||||
Options.Save();
|
WriteToOptions();
|
||||||
EndModal(0);
|
EndModal(0);
|
||||||
|
|
||||||
|
// Restart
|
||||||
|
if (needsRestart) {
|
||||||
|
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
|
||||||
|
if (answer == wxYES) {
|
||||||
|
FrameMain *frame = (FrameMain*) GetParent();
|
||||||
|
if (frame->Close()) wxExecute(AegisubApp::fullPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////
|
||||||
|
// Apply
|
||||||
|
void DialogOptions::OnApply(wxCommandEvent &event) {
|
||||||
|
Options.SetInt(_T("Options page"),book->GetSelection());
|
||||||
|
WriteToOptions(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -297,15 +318,25 @@ void DialogOptions::OnCancel(wxCommandEvent &event) {
|
||||||
Options.SetInt(_T("Options page"),book->GetSelection());
|
Options.SetInt(_T("Options page"),book->GetSelection());
|
||||||
Options.Save();
|
Options.Save();
|
||||||
EndModal(0);
|
EndModal(0);
|
||||||
|
|
||||||
|
// Restart
|
||||||
|
if (needsRestart) {
|
||||||
|
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
|
||||||
|
if (answer == wxYES) {
|
||||||
|
FrameMain *frame = (FrameMain*) GetParent();
|
||||||
|
if (frame->Close()) wxExecute(AegisubApp::fullPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
// Write to options
|
// Write to options
|
||||||
void DialogOptions::WriteToOptions() {
|
void DialogOptions::WriteToOptions(bool justApply) {
|
||||||
// Flags
|
// Flags
|
||||||
bool mustRestart = false;
|
bool mustRestart = false;
|
||||||
|
bool editBox = false;
|
||||||
|
|
||||||
// For each bound item
|
// For each bound item
|
||||||
for (unsigned int i=0;i<binds.size();i++) {
|
for (unsigned int i=0;i<binds.size();i++) {
|
||||||
|
@ -361,6 +392,7 @@ void DialogOptions::WriteToOptions() {
|
||||||
if (modified) {
|
if (modified) {
|
||||||
ModType type = Options.GetModType(binds[i].option);
|
ModType type = Options.GetModType(binds[i].option);
|
||||||
if (type == MOD_RESTART) mustRestart = true;
|
if (type == MOD_RESTART) mustRestart = true;
|
||||||
|
if (type == MOD_EDIT_BOX) editBox = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,6 +401,8 @@ void DialogOptions::WriteToOptions() {
|
||||||
|
|
||||||
// Need restart?
|
// Need restart?
|
||||||
if (mustRestart) {
|
if (mustRestart) {
|
||||||
|
if (justApply) needsRestart = true;
|
||||||
|
else {
|
||||||
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
|
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
|
||||||
if (answer == wxYES) {
|
if (answer == wxYES) {
|
||||||
FrameMain *frame = (FrameMain*) GetParent();
|
FrameMain *frame = (FrameMain*) GetParent();
|
||||||
|
@ -377,6 +411,16 @@ void DialogOptions::WriteToOptions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Other modifications
|
||||||
|
if (!mustRestart || justApply) {
|
||||||
|
if (editBox) {
|
||||||
|
FrameMain *frame = (FrameMain*) GetParent();
|
||||||
|
frame->EditBox->TextEdit->SetStyles();
|
||||||
|
frame->EditBox->TextEdit->UpdateStyle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////
|
/////////////////////
|
||||||
// Read form options
|
// Read form options
|
||||||
|
|
|
@ -66,15 +66,18 @@ public:
|
||||||
// Options screen class
|
// Options screen class
|
||||||
class DialogOptions: public wxDialog {
|
class DialogOptions: public wxDialog {
|
||||||
private:
|
private:
|
||||||
|
bool needsRestart;
|
||||||
|
|
||||||
wxTreebook *book;
|
wxTreebook *book;
|
||||||
std::vector<OptionsBind> binds;
|
std::vector<OptionsBind> binds;
|
||||||
|
|
||||||
void Bind(wxControl *ctrl,wxString option);
|
void Bind(wxControl *ctrl,wxString option);
|
||||||
void WriteToOptions();
|
void WriteToOptions(bool justApply=false);
|
||||||
void ReadFromOptions();
|
void ReadFromOptions();
|
||||||
|
|
||||||
void OnOK(wxCommandEvent &event);
|
void OnOK(wxCommandEvent &event);
|
||||||
void OnCancel(wxCommandEvent &event);
|
void OnCancel(wxCommandEvent &event);
|
||||||
|
void OnApply(wxCommandEvent &event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DialogOptions(wxWindow *parent);
|
DialogOptions(wxWindow *parent);
|
||||||
|
|
|
@ -100,6 +100,7 @@ void OptionsManager::LoadDefaults() {
|
||||||
// Edit Box
|
// Edit Box
|
||||||
SetText(_T("Dictionaries path"),_T("dictionaries"));
|
SetText(_T("Dictionaries path"),_T("dictionaries"));
|
||||||
SetBool(_T("Link Time Boxes Commit"),true);
|
SetBool(_T("Link Time Boxes Commit"),true);
|
||||||
|
SetModificationType(MOD_EDIT_BOX);
|
||||||
SetBool(_T("Call Tips Enabled"),true);
|
SetBool(_T("Call Tips Enabled"),true);
|
||||||
SetBool(_T("Syntax Highlight Enabled"),true);
|
SetBool(_T("Syntax Highlight Enabled"),true);
|
||||||
|
|
||||||
|
@ -121,6 +122,7 @@ void OptionsManager::LoadDefaults() {
|
||||||
SetText(_T("Font Face"),_T(""));
|
SetText(_T("Font Face"),_T(""));
|
||||||
|
|
||||||
// Video Options
|
// Video Options
|
||||||
|
SetModificationType(MOD_AUTOMATIC);
|
||||||
SetInt(_T("Video Check Script Res"), 0);
|
SetInt(_T("Video Check Script Res"), 0);
|
||||||
SetInt(_T("Video Default Zoom"), 7);
|
SetInt(_T("Video Default Zoom"), 7);
|
||||||
SetInt(_T("Video Fast Jump Step"), 10);
|
SetInt(_T("Video Fast Jump Step"), 10);
|
||||||
|
|
|
@ -49,7 +49,8 @@
|
||||||
enum ModType {
|
enum ModType {
|
||||||
MOD_OFF = -1,
|
MOD_OFF = -1,
|
||||||
MOD_AUTOMATIC,
|
MOD_AUTOMATIC,
|
||||||
MOD_RESTART
|
MOD_RESTART,
|
||||||
|
MOD_EDIT_BOX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ SubsTextEditCtrl::SubsTextEditCtrl(wxWindow* parent, wxWindowID id, const wxStri
|
||||||
SetWrapMode(wxSCI_WRAP_WORD);
|
SetWrapMode(wxSCI_WRAP_WORD);
|
||||||
SetMarginWidth(1,0);
|
SetMarginWidth(1,0);
|
||||||
UsePopUp(false);
|
UsePopUp(false);
|
||||||
|
SetStyles();
|
||||||
|
|
||||||
// Set hotkeys
|
// Set hotkeys
|
||||||
CmdKeyClear(wxSCI_KEY_RETURN,wxSCI_SCMOD_CTRL);
|
CmdKeyClear(wxSCI_KEY_RETURN,wxSCI_SCMOD_CTRL);
|
||||||
|
@ -67,54 +68,6 @@ SubsTextEditCtrl::SubsTextEditCtrl(wxWindow* parent, wxWindowID id, const wxStri
|
||||||
CmdKeyClear('T',wxSCI_SCMOD_CTRL | wxSCI_SCMOD_SHIFT);
|
CmdKeyClear('T',wxSCI_SCMOD_CTRL | wxSCI_SCMOD_SHIFT);
|
||||||
CmdKeyClear('U',wxSCI_SCMOD_CTRL);
|
CmdKeyClear('U',wxSCI_SCMOD_CTRL);
|
||||||
|
|
||||||
// Styles
|
|
||||||
wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
|
|
||||||
wxString fontname = Options.AsText(_T("Font Face"));
|
|
||||||
if (fontname != _T("")) font.SetFaceName(fontname);
|
|
||||||
int size = Options.AsInt(_T("Font Size"));
|
|
||||||
|
|
||||||
// Normal style
|
|
||||||
StyleSetFont(0,font);
|
|
||||||
StyleSetSize(0,size);
|
|
||||||
StyleSetForeground(0,Options.AsColour(_T("Syntax Highlight Normal")));
|
|
||||||
|
|
||||||
// Brackets style
|
|
||||||
StyleSetFont(1,font);
|
|
||||||
StyleSetSize(1,size);
|
|
||||||
StyleSetForeground(1,Options.AsColour(_T("Syntax Highlight Brackets")));
|
|
||||||
|
|
||||||
// Slashes/Parenthesis/Comma style
|
|
||||||
StyleSetFont(2,font);
|
|
||||||
StyleSetSize(2,size);
|
|
||||||
StyleSetForeground(2,Options.AsColour(_T("Syntax Highlight Slashes")));
|
|
||||||
|
|
||||||
// Tags style
|
|
||||||
StyleSetFont(3,font);
|
|
||||||
StyleSetSize(3,size);
|
|
||||||
StyleSetBold(3,true);
|
|
||||||
StyleSetForeground(3,Options.AsColour(_T("Syntax Highlight Tags")));
|
|
||||||
|
|
||||||
// Error style
|
|
||||||
StyleSetFont(4,font);
|
|
||||||
StyleSetSize(4,size);
|
|
||||||
StyleSetForeground(4,Options.AsColour(_T("Syntax Highlight Error")));
|
|
||||||
StyleSetBackground(4,Options.AsColour(_T("Syntax Highlight Error Background")));
|
|
||||||
|
|
||||||
// Tag Parameters style
|
|
||||||
StyleSetFont(5,font);
|
|
||||||
StyleSetSize(5,size);
|
|
||||||
StyleSetForeground(5,Options.AsColour(_T("Syntax Highlight Parameters")));
|
|
||||||
|
|
||||||
// Line breaks style
|
|
||||||
StyleSetFont(6,font);
|
|
||||||
StyleSetSize(6,size);
|
|
||||||
StyleSetBold(6,true);
|
|
||||||
StyleSetForeground(6,Options.AsColour(_T("Syntax Highlight Line Break")));
|
|
||||||
|
|
||||||
// Misspelling indicator
|
|
||||||
IndicatorSetStyle(0,wxSCI_INDIC_SQUIGGLE);
|
|
||||||
IndicatorSetForeground(0,wxColour(255,0,0));
|
|
||||||
|
|
||||||
// Set spellchecker
|
// Set spellchecker
|
||||||
spellchecker = SpellChecker::GetSpellChecker();
|
spellchecker = SpellChecker::GetSpellChecker();
|
||||||
|
|
||||||
|
@ -208,6 +161,59 @@ BEGIN_EVENT_TABLE(SubsTextEditCtrl,wxScintilla)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
|
//////////////
|
||||||
|
// Set styles
|
||||||
|
void SubsTextEditCtrl::SetStyles() {
|
||||||
|
// Styles
|
||||||
|
wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
|
||||||
|
wxString fontname = Options.AsText(_T("Font Face"));
|
||||||
|
if (fontname != _T("")) font.SetFaceName(fontname);
|
||||||
|
int size = Options.AsInt(_T("Font Size"));
|
||||||
|
|
||||||
|
// Normal style
|
||||||
|
StyleSetFont(0,font);
|
||||||
|
StyleSetSize(0,size);
|
||||||
|
StyleSetForeground(0,Options.AsColour(_T("Syntax Highlight Normal")));
|
||||||
|
|
||||||
|
// Brackets style
|
||||||
|
StyleSetFont(1,font);
|
||||||
|
StyleSetSize(1,size);
|
||||||
|
StyleSetForeground(1,Options.AsColour(_T("Syntax Highlight Brackets")));
|
||||||
|
|
||||||
|
// Slashes/Parenthesis/Comma style
|
||||||
|
StyleSetFont(2,font);
|
||||||
|
StyleSetSize(2,size);
|
||||||
|
StyleSetForeground(2,Options.AsColour(_T("Syntax Highlight Slashes")));
|
||||||
|
|
||||||
|
// Tags style
|
||||||
|
StyleSetFont(3,font);
|
||||||
|
StyleSetSize(3,size);
|
||||||
|
StyleSetBold(3,true);
|
||||||
|
StyleSetForeground(3,Options.AsColour(_T("Syntax Highlight Tags")));
|
||||||
|
|
||||||
|
// Error style
|
||||||
|
StyleSetFont(4,font);
|
||||||
|
StyleSetSize(4,size);
|
||||||
|
StyleSetForeground(4,Options.AsColour(_T("Syntax Highlight Error")));
|
||||||
|
StyleSetBackground(4,Options.AsColour(_T("Syntax Highlight Error Background")));
|
||||||
|
|
||||||
|
// Tag Parameters style
|
||||||
|
StyleSetFont(5,font);
|
||||||
|
StyleSetSize(5,size);
|
||||||
|
StyleSetForeground(5,Options.AsColour(_T("Syntax Highlight Parameters")));
|
||||||
|
|
||||||
|
// Line breaks style
|
||||||
|
StyleSetFont(6,font);
|
||||||
|
StyleSetSize(6,size);
|
||||||
|
StyleSetBold(6,true);
|
||||||
|
StyleSetForeground(6,Options.AsColour(_T("Syntax Highlight Line Break")));
|
||||||
|
|
||||||
|
// Misspelling indicator
|
||||||
|
IndicatorSetStyle(0,wxSCI_INDIC_SQUIGGLE);
|
||||||
|
IndicatorSetForeground(0,wxColour(255,0,0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////
|
/////////////////
|
||||||
// Style a range
|
// Style a range
|
||||||
void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
||||||
|
|
|
@ -99,6 +99,7 @@ public:
|
||||||
void UpdateStyle(int start=0,int length=-1);
|
void UpdateStyle(int start=0,int length=-1);
|
||||||
void StyleSpellCheck(int start=0,int length=-1);
|
void StyleSpellCheck(int start=0,int length=-1);
|
||||||
void UpdateCallTip();
|
void UpdateCallTip();
|
||||||
|
void SetStyles();
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue