"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
6 changed files with 114 additions and 57 deletions
|
@ -46,6 +46,8 @@
|
|||
#include "main.h"
|
||||
#include "validators.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
|
||||
// Create book
|
||||
book = new wxTreebook(this,-1,wxDefaultPosition,wxSize(100,100));
|
||||
needsRestart = false;
|
||||
|
||||
// Image list
|
||||
//wxImageList *imgList = new wxImageList(16,15);
|
||||
|
@ -193,7 +196,7 @@ DialogOptions::DialogOptions(wxWindow *parent)
|
|||
|
||||
// Second static box
|
||||
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") };
|
||||
for (int i=0;i<9;i++) {
|
||||
wxString caption = labels2[i]+_T(": ");
|
||||
|
@ -243,6 +246,7 @@ DialogOptions::DialogOptions(wxWindow *parent)
|
|||
buttonSizer->AddStretchSpacer(1);
|
||||
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_APPLY),0,wxRIGHT,5);
|
||||
|
||||
// Main Sizer
|
||||
wxSizer *mainSizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
@ -278,16 +282,33 @@ void DialogOptions::Bind(wxControl *ctrl, wxString option) {
|
|||
BEGIN_EVENT_TABLE(DialogOptions,wxDialog)
|
||||
EVT_BUTTON(wxID_OK,DialogOptions::OnOK)
|
||||
EVT_BUTTON(wxID_CANCEL,DialogOptions::OnCancel)
|
||||
EVT_BUTTON(wxID_APPLY,DialogOptions::OnApply)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
//////
|
||||
// OK
|
||||
void DialogOptions::OnOK(wxCommandEvent &event) {
|
||||
WriteToOptions();
|
||||
Options.SetInt(_T("Options page"),book->GetSelection());
|
||||
Options.Save();
|
||||
WriteToOptions();
|
||||
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.Save();
|
||||
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
|
||||
void DialogOptions::WriteToOptions() {
|
||||
void DialogOptions::WriteToOptions(bool justApply) {
|
||||
// Flags
|
||||
bool mustRestart = false;
|
||||
bool editBox = false;
|
||||
|
||||
// For each bound item
|
||||
for (unsigned int i=0;i<binds.size();i++) {
|
||||
|
@ -361,6 +392,7 @@ void DialogOptions::WriteToOptions() {
|
|||
if (modified) {
|
||||
ModType type = Options.GetModType(binds[i].option);
|
||||
if (type == MOD_RESTART) mustRestart = true;
|
||||
if (type == MOD_EDIT_BOX) editBox = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -369,10 +401,22 @@ void DialogOptions::WriteToOptions() {
|
|||
|
||||
// Need restart?
|
||||
if (mustRestart) {
|
||||
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
|
||||
if (answer == wxYES) {
|
||||
if (justApply) needsRestart = true;
|
||||
else {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Other modifications
|
||||
if (!mustRestart || justApply) {
|
||||
if (editBox) {
|
||||
FrameMain *frame = (FrameMain*) GetParent();
|
||||
if (frame->Close()) wxExecute(AegisubApp::fullPath);
|
||||
frame->EditBox->TextEdit->SetStyles();
|
||||
frame->EditBox->TextEdit->UpdateStyle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,15 +66,18 @@ public:
|
|||
// Options screen class
|
||||
class DialogOptions: public wxDialog {
|
||||
private:
|
||||
bool needsRestart;
|
||||
|
||||
wxTreebook *book;
|
||||
std::vector<OptionsBind> binds;
|
||||
|
||||
void Bind(wxControl *ctrl,wxString option);
|
||||
void WriteToOptions();
|
||||
void WriteToOptions(bool justApply=false);
|
||||
void ReadFromOptions();
|
||||
|
||||
void OnOK(wxCommandEvent &event);
|
||||
void OnCancel(wxCommandEvent &event);
|
||||
void OnApply(wxCommandEvent &event);
|
||||
|
||||
public:
|
||||
DialogOptions(wxWindow *parent);
|
||||
|
|
|
@ -100,6 +100,7 @@ void OptionsManager::LoadDefaults() {
|
|||
// Edit Box
|
||||
SetText(_T("Dictionaries path"),_T("dictionaries"));
|
||||
SetBool(_T("Link Time Boxes Commit"),true);
|
||||
SetModificationType(MOD_EDIT_BOX);
|
||||
SetBool(_T("Call Tips Enabled"),true);
|
||||
SetBool(_T("Syntax Highlight Enabled"),true);
|
||||
|
||||
|
@ -121,6 +122,7 @@ void OptionsManager::LoadDefaults() {
|
|||
SetText(_T("Font Face"),_T(""));
|
||||
|
||||
// Video Options
|
||||
SetModificationType(MOD_AUTOMATIC);
|
||||
SetInt(_T("Video Check Script Res"), 0);
|
||||
SetInt(_T("Video Default Zoom"), 7);
|
||||
SetInt(_T("Video Fast Jump Step"), 10);
|
||||
|
|
|
@ -49,7 +49,8 @@
|
|||
enum ModType {
|
||||
MOD_OFF = -1,
|
||||
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);
|
||||
SetMarginWidth(1,0);
|
||||
UsePopUp(false);
|
||||
SetStyles();
|
||||
|
||||
// Set hotkeys
|
||||
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('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
|
||||
spellchecker = SpellChecker::GetSpellChecker();
|
||||
|
||||
|
@ -208,6 +161,59 @@ BEGIN_EVENT_TABLE(SubsTextEditCtrl,wxScintilla)
|
|||
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
|
||||
void SubsTextEditCtrl::UpdateStyle(int start, int _length) {
|
||||
|
|
|
@ -99,6 +99,7 @@ public:
|
|||
void UpdateStyle(int start=0,int length=-1);
|
||||
void StyleSpellCheck(int start=0,int length=-1);
|
||||
void UpdateCallTip();
|
||||
void SetStyles();
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue