1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        MadOptionsDialog.cpp
3 // Description:
4 // Author:      madedit@gmail.com
5 // Licence:     GPL
6 ///////////////////////////////////////////////////////////////////////////////
7 
8 #include "MadOptionsDialog.h"
9 #include <wx/fileconf.h>
10 #include <wx/config.h>
11 #include "MadEdit/MadEncoding.h"
12 #include "MadEdit/MadEditCommand.h"
13 #include "MadEdit/MadEdit.h"
14 #include "MadEditFrame.h"
15 #include "MadUtils.h"
16 #include "wx/aui/auibook.h"
17 
18 //Do not add custom headers.
19 //wx-dvcpp designer will remove them
20 ////Header Include Start
21 ////Header Include End
22 
23 MadOptionsDialog *g_OptionsDialog=NULL;
24 
25 extern wxChar *g_LanguageString[];
26 extern const size_t g_LanguageCount;
27 
28 TreeItemData *g_SelectedCommandItem=NULL;
29 int g_SelectedKeyId=-1;
30 TreeItemData *g_CommandItemOfNewKey=NULL;
31 
32 
33 class KeyTextCtrl : public wxTextCtrl
34 {
35     DECLARE_EVENT_TABLE()
36 public:
KeyTextCtrl(wxWindow * parent,wxWindowID id,const wxString & value=wxEmptyString,const wxPoint & pos=wxDefaultPosition,const wxSize & size=wxDefaultSize,long style=0,const wxValidator & validator=wxDefaultValidator,const wxString & name=wxTextCtrlNameStr)37     KeyTextCtrl(wxWindow *parent, wxWindowID id,
38                const wxString& value = wxEmptyString,
39                const wxPoint& pos = wxDefaultPosition,
40                const wxSize& size = wxDefaultSize,
41                long style = 0,
42                const wxValidator& validator = wxDefaultValidator,
43                const wxString& name = wxTextCtrlNameStr)
44                :wxTextCtrl(parent, id, value, pos, size, style, validator, name)
45     {
46     }
47 
OnKeyDown(wxKeyEvent & evt)48     void OnKeyDown(wxKeyEvent& evt)
49     {
50         int flags=wxACCEL_NORMAL;
51         int key=evt.GetKeyCode();
52 
53         if(evt.ControlDown()) flags|=wxACCEL_CTRL;
54         if(evt.AltDown())     flags|=wxACCEL_ALT;
55         if(evt.ShiftDown())   flags|=wxACCEL_SHIFT;
56 
57         MadEditShortCut sc=ShortCut(flags, key);
58         static MadEditShortCut prevsc=0;
59 
60         if(sc==prevsc) return;
61         prevsc=sc;
62 
63         wxString scstr=ShortCutToString(sc);
64         SetValue(scstr);
65 
66         g_OptionsDialog->UpdateKeyHint();
67         //evt.Skip();
68     }
OnSetFocus(wxFocusEvent & evt)69     void OnSetFocus(wxFocusEvent &evt)
70     {   // for getting Ctrl-Tab
71         g_OptionsDialog->SetWindowStyleFlag(g_OptionsDialog->GetWindowStyleFlag() & ~wxTAB_TRAVERSAL);
72         g_OptionsDialog->WxNotebook1->wxControl::SetWindowStyleFlag(g_OptionsDialog->WxNotebook1->wxControl::GetWindowStyleFlag() & ~wxTAB_TRAVERSAL);
73         g_OptionsDialog->WxNoteBookPage4->SetWindowStyleFlag(g_OptionsDialog->WxNoteBookPage4->GetWindowStyleFlag() & ~wxTAB_TRAVERSAL);
74         g_OptionsDialog->WxButtonCancel->SetId(MadOptionsDialog::ID_WXBUTTONCANCEL);
75         evt.Skip();
76     }
OnKillFocus(wxFocusEvent & evt)77     void OnKillFocus(wxFocusEvent &evt)
78     {   // restore wxTAB_TRAVERSAL
79         g_OptionsDialog->SetWindowStyleFlag(g_OptionsDialog->GetWindowStyleFlag() | wxTAB_TRAVERSAL);
80         g_OptionsDialog->WxNotebook1->wxControl::SetWindowStyleFlag(g_OptionsDialog->WxNotebook1->wxControl::GetWindowStyleFlag() | wxTAB_TRAVERSAL);
81         g_OptionsDialog->WxNoteBookPage4->SetWindowStyleFlag(g_OptionsDialog->WxNoteBookPage4->GetWindowStyleFlag() | wxTAB_TRAVERSAL);
82         g_OptionsDialog->WxButtonCancel->SetId(wxID_CANCEL);
83         evt.Skip();
84     }
85 };
86 
BEGIN_EVENT_TABLE(KeyTextCtrl,wxTextCtrl)87 BEGIN_EVENT_TABLE(KeyTextCtrl,wxTextCtrl)
88     EVT_KEY_DOWN(KeyTextCtrl::OnKeyDown)
89     EVT_SET_FOCUS(KeyTextCtrl::OnSetFocus)
90     EVT_KILL_FOCUS (KeyTextCtrl::OnKillFocus)
91 END_EVENT_TABLE()
92 
93 
94 //----------------------------------------------------------------------------
95 // MadOptionsDialog
96 //----------------------------------------------------------------------------
97      //Add Custom Events only in the appropriate Block.
98     // Code added in  other places will be removed by wx-dvcpp
99     ////Event Table Start
100 BEGIN_EVENT_TABLE(MadOptionsDialog,wxDialog)
101 	////Manual Code Start
102 	EVT_BUTTON(ID_WXBUTTON1,MadOptionsDialog::PrintMarkButtonClick)
103 	EVT_BUTTON(ID_WXBUTTON2,MadOptionsDialog::PrintMarkButtonClick)
104 	EVT_BUTTON(ID_WXBUTTON3,MadOptionsDialog::PrintMarkButtonClick)
105 	EVT_BUTTON(ID_WXBUTTON4,MadOptionsDialog::PrintMarkButtonClick)
106 	EVT_BUTTON(ID_WXBUTTON5,MadOptionsDialog::PrintMarkButtonClick)
107 	EVT_BUTTON(ID_WXBUTTON6,MadOptionsDialog::PrintMarkButtonClick)
108 	EVT_BUTTON(wxID_CANCEL,MadOptionsDialog::WxButtonCancelClick)
109 	////Manual Code End
110 
111 	EVT_CLOSE(MadOptionsDialog::MadOptionsDialogClose)
112 	EVT_ACTIVATE(MadOptionsDialog::MadOptionsDialogActivate)
113 	EVT_MENU(ID_MNU___Y__M__D_I__M__S_P_2007_02_2408_30_55AM_1191 , MadOptionsDialog::DateTimeMarkClick)
114 	EVT_MENU(ID_MNU___D__M__Y_24_02_2007_1192 , MadOptionsDialog::DateTimeMarkClick)
115 	EVT_MENU(ID_MNU___A__D_B_Y_H__M__S_Z_RFC822TIMESTAMP_1195 , MadOptionsDialog::DateTimeMarkClick)
116 	EVT_MENU(ID_MNU_MENUITEM1_1170 , MadOptionsDialog::DateTimeMarkClick)
117 	EVT_MENU(ID_MNU___A_FULLWEEKDAYNAME_1171 , MadOptionsDialog::DateTimeMarkClick)
118 	EVT_MENU(ID_MNU___B_ABBREVIATEDMONTHNAME_1172 , MadOptionsDialog::DateTimeMarkClick)
119 	EVT_MENU(ID_MNU___B_FULLMONTHNAME_1173 , MadOptionsDialog::DateTimeMarkClick)
120 	EVT_MENU(ID_MNU___C_DATEANDTIMEREPRESENTATIONAPPROPRIATEFORLOCALE_1174 , MadOptionsDialog::DateTimeMarkClick)
121 	EVT_MENU(ID_MNU___D_DAYOFMONTHASDECIMALNUMBER_01_31__1175 , MadOptionsDialog::DateTimeMarkClick)
122 	EVT_MENU(ID_MNU___H_HOURIN24_HOURFORMAT_00_23__1176 , MadOptionsDialog::DateTimeMarkClick)
123 	EVT_MENU(ID_MNU___I_HOURIN12_HOURFORMAT_01_12__1177 , MadOptionsDialog::DateTimeMarkClick)
124 	EVT_MENU(ID_MNU___J_DAYOFYEARASDECIMALNUMBER_001_366__1178 , MadOptionsDialog::DateTimeMarkClick)
125 	EVT_MENU(ID_MNU___M_MONTHASDECIMALNUMBER_01_12__1179 , MadOptionsDialog::DateTimeMarkClick)
126 	EVT_MENU(ID_MNU___M_MINUTEASDECIMALNUMBER_00_59__1180 , MadOptionsDialog::DateTimeMarkClick)
127 	EVT_MENU(ID_MNU___P_CURRENTLOCALESA_M__P_M_INDICATORFOR12_HOURCLOCK_1181 , MadOptionsDialog::DateTimeMarkClick)
128 	EVT_MENU(ID_MNU___S_SECONDASDECIMALNUMBER_00_59__1182 , MadOptionsDialog::DateTimeMarkClick)
129 	EVT_MENU(ID_MNU___U_WEEKOFYEARASDECIMALNUMBER_WITHSUNDAYASFIRSTDAYOFWEEK_00_53__1183 , MadOptionsDialog::DateTimeMarkClick)
130 	EVT_MENU(ID_MNU___W_WEEKDAYASDECIMALNUMBER_0_6_SUNDAYIS0__1184 , MadOptionsDialog::DateTimeMarkClick)
131 	EVT_MENU(ID_MNU___W_WEEKOFYEARASDECIMALNUMBER_WITHMONDAYASFIRSTDAYOFWEEK_00_53__1185 , MadOptionsDialog::DateTimeMarkClick)
132 	EVT_MENU(ID_MNU___X_DATEREPRESENTATIONFORCURRENTLOCALE_1186 , MadOptionsDialog::DateTimeMarkClick)
133 	EVT_MENU(ID_MNU___X_TIMEREPRESENTATIONFORCURRENTLOCALE_1187 , MadOptionsDialog::DateTimeMarkClick)
134 	EVT_MENU(ID_MNU___Y_YEARWITHOUTCENTURY_ASDECIMALNUMBER_00_99__1188 , MadOptionsDialog::DateTimeMarkClick)
135 	EVT_MENU(ID_MNU___Y_YEARWITHCENTURY_ASDECIMALNUMBER_1189 , MadOptionsDialog::DateTimeMarkClick)
136 	EVT_MENU(ID_MNU___Z_TIME_ZONENAME_1193 , MadOptionsDialog::DateTimeMarkClick)
137 	EVT_MENU(ID_MNU___Z_TIME_ZONEABBREVIATION_1194 , MadOptionsDialog::DateTimeMarkClick)
138 	EVT_MENU(ID_MNU_MENUITEM1_1110 , MadOptionsDialog::PrintMarkClick)
139 	EVT_MENU(ID_MNU___P__PATHNAME_1111 , MadOptionsDialog::PrintMarkClick)
140 	EVT_MENU(ID_MNU___N_PAGE_NUMBER_1113 , MadOptionsDialog::PrintMarkClick)
141 	EVT_MENU(ID_MNU___S__TOTALPAGES_1114 , MadOptionsDialog::PrintMarkClick)
142 	EVT_MENU(ID_MNU___D__DATE_1116 , MadOptionsDialog::PrintMarkClick)
143 	EVT_MENU(ID_MNU___T__TIME_1117 , MadOptionsDialog::PrintMarkClick)
144 	EVT_BUTTON(ID_WXBUTTONCANCEL,MadOptionsDialog::WxButtonCancelClick)
145 	EVT_BUTTON(ID_WXBUTTONOK,MadOptionsDialog::WxButtonOKClick)
146 	EVT_BUTTON(ID_WXBUTTONSHOWINMENU,MadOptionsDialog::WxButtonShowInMenuClick)
147 	EVT_BUTTON(ID_WXBUTTONDELETEKEY,MadOptionsDialog::WxButtonDeleteKeyClick)
148 	EVT_BUTTON(ID_WXBUTTONADDKEY,MadOptionsDialog::WxButtonAddKeyClick)
149 	EVT_LISTBOX(ID_WXLISTBOXKEYS,MadOptionsDialog::WxListBoxKeysSelected)
150 
151 	EVT_TREE_SEL_CHANGED(ID_WXTREECTRL1,MadOptionsDialog::WxTreeCtrl1SelChanged)
152 	EVT_BUTTON(ID_WXBUTTONDATETIME,MadOptionsDialog::WxButtonDateTimeClick)
153 END_EVENT_TABLE()
154     ////Event Table End
155 
156 
157 
158 MadOptionsDialog::MadOptionsDialog( wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &position, const wxSize& size, long style )
159     : wxDialog( parent, id, title, position, size, style)
160 {
161     ButtonID=0;
162     CreateGUIControls();
163 }
164 
~MadOptionsDialog()165 MadOptionsDialog::~MadOptionsDialog()
166 {
167     delete WxPopupMenuPrintMark;
168 }
169 
ResizeItem(wxSizer * sizer,wxWindow * item,int ax,int ay)170 static void ResizeItem(wxSizer* sizer, wxWindow *item, int ax, int ay)
171 {
172     int x, y;
173     if(ax!=0)
174     {
175         wxString str=item->GetLabel();
176         item->GetTextExtent(str, &x, &y);
177     }
178     else
179     {
180         item->GetSize(&x, &y);
181     }
182     item->SetSize(x+=ax, y+=ay);
183     sizer->SetItemMinSize(item, x, y);
184 }
185 
UpdateSize(wxSize & s1,const wxSize & s2)186 inline void UpdateSize(wxSize &s1, const wxSize &s2)
187 {
188     if(s2.x > s1.x) s1.x=s2.x;
189     if(s2.y > s1.y) s1.y=s2.y;
190 }
191 
192 // filter '&' and '.'
FilterChar(const wxChar * ws)193 wxString FilterChar(const wxChar *ws)
194 {
195     wxString str;
196     wxChar wc;
197 
198     while((wc=*ws) != wxT('\0'))
199     {
200         if(wc!=wxT('&') && wc!=wxT('.'))
201         {
202             str << wc;
203         }
204         ++ws;
205     }
206 
207     return str;
208 }
209 
CreateGUIControls(void)210 void MadOptionsDialog::CreateGUIControls(void)
211 {
212     //do not set FontName, it is not exist on all platforms
213     #define wxFont(p0,p1,p2,p3,p4,p5) wxFont(wxDEFAULT,wxDEFAULT,p2,p3,p4)
214 
215     //Do not add custom Code here
216     //wx-devcpp designer will remove them.
217     //Add the custom code before or after the Blocks
218     ////GUI Items Creation Start
219 
220 	WxBoxSizer1 = new wxBoxSizer(wxVERTICAL);
221 	this->SetSizer(WxBoxSizer1);
222 	this->SetAutoLayout(true);
223 
224 	WxNotebook1 = new wxAuiNotebook(this, ID_WXNOTEBOOK1, wxPoint(0, 0), wxSize(681, 342), wxNB_DEFAULT);
225 	WxNotebook1->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
226 	WxBoxSizer1->Add(WxNotebook1,1,wxEXPAND | wxALL,0);
227 
228 	WxNoteBookPage1 = new wxPanel(WxNotebook1, ID_WXNOTEBOOKPAGE1, wxPoint(4, 24), wxSize(673, 314));
229 	WxNoteBookPage1->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
230 	WxNotebook1->AddPage(WxNoteBookPage1, _("General"));
231 
232 	WxBoxSizer3 = new wxBoxSizer(wxVERTICAL);
233 	WxNoteBookPage1->SetSizer(WxBoxSizer3);
234 	WxNoteBookPage1->SetAutoLayout(true);
235 
236 	WxBoxSizer27 = new wxBoxSizer(wxHORIZONTAL);
237 	WxBoxSizer3->Add(WxBoxSizer27, 0, wxALIGN_LEFT | wxALL, 2);
238 
239 	wxArrayString arrayStringFor_WxComboBoxLanguage;
240 	WxComboBoxLanguage = new wxComboBox(WxNoteBookPage1, ID_WXCOMBOBOXLANGUAGE, _(""), wxPoint(0, 3), wxSize(140, 21), arrayStringFor_WxComboBoxLanguage, wxCB_DROPDOWN | wxCB_READONLY, wxDefaultValidator, _("WxComboBoxLanguage"));
241 	WxComboBoxLanguage->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
242 	WxBoxSizer27->Add(WxComboBoxLanguage,0,wxALIGN_LEFT | wxALL,0);
243 
244 	WxStaticText16 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT16, _("Language of User Interface (must restart MadEdit)"), wxPoint(145, 5), wxDefaultSize, 0, _("WxStaticText16"));
245 	WxStaticText16->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
246 	WxBoxSizer27->Add(WxStaticText16,0,wxALIGN_LEFT | wxALL,5);
247 
248 	WxBoxSizer4 = new wxBoxSizer(wxVERTICAL);
249 	WxBoxSizer3->Add(WxBoxSizer4, 0, wxALIGN_LEFT | wxALL, 5);
250 
251 	WxCheckBoxSingleInstance = new wxCheckBox(WxNoteBookPage1, ID_WXCHECKBOXSINGLEINSTANCE, _("Single Instance (must restart MadEdit)"), wxPoint(2, 2), wxSize(300, 20), 0, wxDefaultValidator, _("WxCheckBoxSingleInstance"));
252 	WxCheckBoxSingleInstance->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
253 	WxBoxSizer4->Add(WxCheckBoxSingleInstance,0,wxALIGN_LEFT | wxALL,2);
254 
255 	WxCheckBoxRecordCaretMovements = new wxCheckBox(WxNoteBookPage1, ID_WXCHECKBOXRECORDCARETMOVEMENTS, _("Record caret movements in undo list"), wxPoint(2, 26), wxSize(300, 20), 0, wxDefaultValidator, _("WxCheckBoxRecordCaretMovements"));
256 	WxCheckBoxRecordCaretMovements->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
257 	WxBoxSizer4->Add(WxCheckBoxRecordCaretMovements,0,wxALIGN_LEFT | wxALL,2);
258 
259 	WxBoxSizer5 = new wxBoxSizer(wxHORIZONTAL);
260 	WxBoxSizer3->Add(WxBoxSizer5, 0, wxALIGN_LEFT | wxALL, 2);
261 
262 	WxEditMaxSizeToLoad = new wxTextCtrl(WxNoteBookPage1, ID_WXEDITMAXSIZETOLOAD, _("0"), wxPoint(0, 3), wxSize(80, 21), 0, wxTextValidator(wxFILTER_NUMERIC), _("WxEditMaxSizeToLoad"));
263 	WxEditMaxSizeToLoad->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
264 	WxBoxSizer5->Add(WxEditMaxSizeToLoad,0,wxALIGN_LEFT | wxALL,0);
265 
266 	WxStaticText1 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT1, _("Max file size to load whole file into memory"), wxPoint(85, 5), wxSize(300, 17), wxST_NO_AUTORESIZE, _("WxStaticText1"));
267 	WxStaticText1->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
268 	WxBoxSizer5->Add(WxStaticText1,0,wxALIGN_LEFT | wxALL,5);
269 
270 	WxBoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
271 	WxBoxSizer3->Add(WxBoxSizer6, 0, wxALIGN_LEFT | wxALL, 2);
272 
273 	WxEditMaxTextFileSize = new wxTextCtrl(WxNoteBookPage1, ID_WXEDITMAXTEXTFILESIZE, _("0"), wxPoint(0, 3), wxSize(80, 21), 0, wxTextValidator(wxFILTER_NUMERIC), _("WxEditMaxTextFileSize"));
274 	WxEditMaxTextFileSize->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
275 	WxBoxSizer6->Add(WxEditMaxTextFileSize,0,wxALIGN_LEFT | wxALL,0);
276 
277 	WxStaticText2 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT2, _("Max file size to load as a text file"), wxPoint(85, 5), wxSize(300, 17), wxST_NO_AUTORESIZE, _("WxStaticText2"));
278 	WxStaticText2->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
279 	WxBoxSizer6->Add(WxStaticText2,0,wxALIGN_LEFT | wxALL,5);
280 
281 	WxBoxSizer17 = new wxBoxSizer(wxHORIZONTAL);
282 	WxBoxSizer3->Add(WxBoxSizer17, 0, wxALIGN_LEFT | wxALL, 2);
283 
284 	wxArrayString arrayStringFor_WxComboBoxEncoding;
285 	WxComboBoxEncoding = new wxComboBox(WxNoteBookPage1, ID_WXCOMBOBOXENCODING, _(""), wxPoint(0, 3), wxSize(140, 21), arrayStringFor_WxComboBoxEncoding, wxCB_DROPDOWN | wxCB_READONLY, wxDefaultValidator, _("WxComboBoxEncoding"));
286 	WxComboBoxEncoding->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
287 	WxBoxSizer17->Add(WxComboBoxEncoding,0,wxALIGN_LEFT | wxALL,0);
288 
289 	WxStaticText13 = new wxStaticText(WxNoteBookPage1, ID_WXSTATICTEXT13, _("Use this encoding to create new file or when MadEdit cannot determine the encoding of old file"), wxPoint(145, 5), wxDefaultSize, 0, _("WxStaticText13"));
290 	WxStaticText13->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
291 	WxBoxSizer17->Add(WxStaticText13,0,wxALIGN_LEFT | wxALL,5);
292 
293 	WxBoxSizer7 = new wxBoxSizer(wxVERTICAL);
294 	WxBoxSizer3->Add(WxBoxSizer7, 0, wxALIGN_LEFT | wxALL, 5);
295 
296 	WxCheckBoxReloadFiles = new wxCheckBox(WxNoteBookPage1, ID_WXCHECKBOXRELOADFILES, _("Reload files previously open on startup"), wxPoint(2, 2), wxSize(400, 20), 0, wxDefaultValidator, _("WxCheckBoxReloadFiles"));
297 	WxCheckBoxReloadFiles->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
298 	WxBoxSizer7->Add(WxCheckBoxReloadFiles,0,wxALIGN_LEFT | wxALL,2);
299 
300 	WxCheckBoxRestoreCaretPos = new wxCheckBox(WxNoteBookPage1, ID_WXCHECKBOXRESTORECARETPOS, _("Restore previous caret position when files are opened"), wxPoint(2, 26), wxSize(400, 20), 0, wxDefaultValidator, _("WxCheckBoxRestoreCaretPos"));
301 	WxCheckBoxRestoreCaretPos->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
302 	WxBoxSizer7->Add(WxCheckBoxRestoreCaretPos,0,wxALIGN_LEFT | wxALL,2);
303 
304 	WxCheckBoxDoNotSaveSettings = new wxCheckBox(WxNoteBookPage1, ID_WXCHECKBOXDONOTSAVESETTINGS, _("Do not save settings to MadEdit.cfg when MadEdit closed (this session only)"), wxPoint(2, 50), wxSize(400, 20), 0, wxDefaultValidator, _("WxCheckBoxDoNotSaveSettings"));
305 	WxCheckBoxDoNotSaveSettings->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
306 	WxBoxSizer7->Add(WxCheckBoxDoNotSaveSettings,0,wxALIGN_LEFT | wxALL,2);
307 
308 	WxNoteBookPage2 = new wxPanel(WxNotebook1, ID_WXNOTEBOOKPAGE2, wxPoint(4, 24), wxSize(673, 314));
309 	WxNoteBookPage2->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
310 	WxNotebook1->AddPage(WxNoteBookPage2, _("Edit"));
311 
312 	WxBoxSizer8 = new wxBoxSizer(wxVERTICAL);
313 	WxNoteBookPage2->SetSizer(WxBoxSizer8);
314 	WxNoteBookPage2->SetAutoLayout(true);
315 
316 	WxBoxSizer9 = new wxBoxSizer(wxHORIZONTAL);
317 	WxBoxSizer8->Add(WxBoxSizer9, 0, wxALIGN_LEFT | wxALL, 2);
318 
319 	WxEditMaxLineLength = new wxTextCtrl(WxNoteBookPage2, ID_WXEDITMAXLINELENGTH, _("0"), wxPoint(0, 3), wxSize(60, 21), 0, wxTextValidator(wxFILTER_NUMERIC), _("WxEditMaxLineLength"));
320 	WxEditMaxLineLength->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
321 	WxBoxSizer9->Add(WxEditMaxLineLength,0,wxALIGN_LEFT | wxALL,0);
322 
323 	WxStaticText3 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT3, _("Max line length before Line-Wrap (must restart MadEdit)"), wxPoint(65, 5), wxSize(300, 17), wxST_NO_AUTORESIZE, _("WxStaticText3"));
324 	WxStaticText3->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
325 	WxBoxSizer9->Add(WxStaticText3,0,wxALIGN_LEFT | wxALL,5);
326 
327 	WxBoxSizer10 = new wxBoxSizer(wxHORIZONTAL);
328 	WxBoxSizer8->Add(WxBoxSizer10, 0, wxALIGN_LEFT | wxALL, 2);
329 
330 	WxEditMaxColumns = new wxTextCtrl(WxNoteBookPage2, ID_WXEDITMAXCOLUMNS, _("0"), wxPoint(0, 3), wxSize(60, 21), 0, wxTextValidator(wxFILTER_NUMERIC), _("WxEditMaxColumns"));
331 	WxEditMaxColumns->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
332 	WxBoxSizer10->Add(WxEditMaxColumns,0,wxALIGN_LEFT | wxALL,0);
333 
334 	WxStaticText4 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT4, _("Columns of Wrap-By-Column"), wxPoint(65, 5), wxSize(300, 17), wxST_NO_AUTORESIZE, _("WxStaticText4"));
335 	WxStaticText4->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
336 	WxBoxSizer10->Add(WxStaticText4,0,wxALIGN_LEFT | wxALL,5);
337 
338 	WxBoxSizer11 = new wxBoxSizer(wxHORIZONTAL);
339 	WxBoxSizer8->Add(WxBoxSizer11, 0, wxALIGN_LEFT | wxALL, 2);
340 
341 	WxEditTabColumns = new wxTextCtrl(WxNoteBookPage2, ID_WXEDITTABCOLUMNS, _("0"), wxPoint(0, 3), wxSize(60, 21), 0, wxTextValidator(wxFILTER_NUMERIC), _("WxEditTabColumns"));
342 	WxEditTabColumns->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
343 	WxBoxSizer11->Add(WxEditTabColumns,0,wxALIGN_LEFT | wxALL,0);
344 
345 	WxStaticText5 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT5, _("Columns of Tab"), wxPoint(65, 5), wxSize(300, 17), wxST_NO_AUTORESIZE, _("WxStaticText5"));
346 	WxStaticText5->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
347 	WxBoxSizer11->Add(WxStaticText5,0,wxALIGN_LEFT | wxALL,5);
348 
349 	WxBoxSizer13 = new wxBoxSizer(wxHORIZONTAL);
350 	WxBoxSizer8->Add(WxBoxSizer13, 0, wxALIGN_LEFT | wxALL, 2);
351 
352 	WxEditIndentColumns = new wxTextCtrl(WxNoteBookPage2, ID_WXEDITTABCOLUMNS, _("0"), wxPoint(0, 3), wxSize(60, 21), 0, wxTextValidator(wxFILTER_NUMERIC), _("WxEditIndentColumns"));
353 	WxEditIndentColumns->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
354 	WxBoxSizer13->Add(WxEditIndentColumns,0,wxALIGN_LEFT | wxALL,0);
355 
356 	WxStaticText6 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT5, _("Columns of Indent"), wxPoint(65, 5), wxSize(300, 17), wxST_NO_AUTORESIZE, _("WxStaticText6"));
357 	WxStaticText6->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
358 	WxBoxSizer13->Add(WxStaticText6,0,wxALIGN_LEFT | wxALL,5);
359 
360 	WxBoxSizer23 = new wxBoxSizer(wxHORIZONTAL);
361 	WxBoxSizer8->Add(WxBoxSizer23, 0, wxALIGN_LEFT | wxALL, 2);
362 
363 	WxEditDateTime = new wxTextCtrl(WxNoteBookPage2, ID_WXEDITDATETIME, _(""), wxPoint(0, 3), wxSize(160, 21), 0, wxDefaultValidator, _("WxEditDateTime"));
364 	WxEditDateTime->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
365 	WxBoxSizer23->Add(WxEditDateTime,0,wxALIGN_LEFT | wxALL,0);
366 
367 	WxStaticTextDateTime = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXTDATETIME, _("Format of Date/Time"), wxPoint(165, 5), wxDefaultSize, 0, _("WxStaticTextDateTime"));
368 	WxStaticTextDateTime->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
369 	WxBoxSizer23->Add(WxStaticTextDateTime,0,wxALIGN_CENTER | wxALL,5);
370 
371 	WxButtonDateTime = new wxButton(WxNoteBookPage2, ID_WXBUTTONDATETIME, _(">>"), wxPoint(273, 1), wxSize(25, 25), 0, wxDefaultValidator, _("WxButtonDateTime"));
372 	WxButtonDateTime->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
373 	WxBoxSizer23->Add(WxButtonDateTime,0,wxALIGN_LEFT | wxALL,1);
374 
375 	WxCheckBoxDateTimeInEnglish = new wxCheckBox(WxNoteBookPage2, ID_WXCHECKBOXDATETIMEINENGLISH, _("Use English instead of current locale"), wxPoint(301, 3), wxSize(200, 20), 0, wxDefaultValidator, _("WxCheckBoxDateTimeInEnglish"));
376 	WxCheckBoxDateTimeInEnglish->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
377 	WxBoxSizer23->Add(WxCheckBoxDateTimeInEnglish,0,wxALIGN_LEFT | wxALL,2);
378 
379 	WxBoxSizer12 = new wxBoxSizer(wxVERTICAL);
380 	WxBoxSizer8->Add(WxBoxSizer12, 0, wxALIGN_LEFT | wxALL, 5);
381 
382 	WxCheckBoxTabOrSpaces = new wxCheckBox(WxNoteBookPage2, ID_WXCHECKBOXTABORSPACES, _("Insert Space char instead of Tab char"), wxPoint(24, 2), wxSize(480, 20), 0, wxDefaultValidator, _("WxCheckBoxTabOrSpaces"));
383 	WxCheckBoxTabOrSpaces->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
384 	WxBoxSizer12->Add(WxCheckBoxTabOrSpaces,0,wxALIGN_LEFT | wxALL,2);
385 
386 	WxCheckBoxAutoIndent = new wxCheckBox(WxNoteBookPage2, ID_WXCHECKBOXAUTOINDENT, _("Auto Indent"), wxPoint(24, 26), wxSize(480, 20), 0, wxDefaultValidator, _("WxCheckBoxAutoIndent"));
387 	WxCheckBoxAutoIndent->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
388 	WxBoxSizer12->Add(WxCheckBoxAutoIndent,0,wxALIGN_LEFT | wxALL,2);
389 
390 	WxCheckBoxAutoCompletePair = new wxCheckBox(WxNoteBookPage2, ID_WXCHECKBOXAUTOCOMPLETEPAIR, _("Auto complete character pair"), wxPoint(24, 50), wxSize(480, 20), 0, wxDefaultValidator, _("WxCheckBoxAutoCompletePair"));
391 	WxCheckBoxAutoCompletePair->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
392 	WxBoxSizer12->Add(WxCheckBoxAutoCompletePair,0,wxALIGN_LEFT | wxALL,2);
393 
394 	WxBoxSizer28 = new wxBoxSizer(wxHORIZONTAL);
395 	WxBoxSizer12->Add(WxBoxSizer28, 0, wxALIGN_LEFT | wxALL, 0);
396 
397 	WxCheckBoxMouseSelectToCopy = new wxCheckBox(WxNoteBookPage2, ID_WXCHECKBOXMOUSESELECTTOCOPY, _("Auto copy the mouse-selected text to clipboard  ("), wxPoint(2, 2), wxSize(260, 20), 0, wxDefaultValidator, _("WxCheckBoxMouseSelectToCopy"));
398 	WxCheckBoxMouseSelectToCopy->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
399 	WxBoxSizer28->Add(WxCheckBoxMouseSelectToCopy,0,wxALIGN_LEFT | wxALL,2);
400 
401 	WxRadioButtonEnable = new wxRadioButton(WxNoteBookPage2, ID_WXRADIOBUTTONENABLE, _("Enable"), wxPoint(266, 2), wxSize(70, 20), 0, wxDefaultValidator, _("WxRadioButtonEnable"));
402 	WxRadioButtonEnable->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
403 	WxBoxSizer28->Add(WxRadioButtonEnable,0,wxALIGN_LEFT | wxALL,2);
404 
405 	WxRadioButtonDisable = new wxRadioButton(WxNoteBookPage2, ID_WXRADIOBUTTONDISABLE, _("Disable"), wxPoint(340, 2), wxSize(70, 20), 0, wxDefaultValidator, _("WxRadioButtonDisable"));
406 	WxRadioButtonDisable->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
407 	WxBoxSizer28->Add(WxRadioButtonDisable,0,wxALIGN_LEFT | wxALL,2);
408 
409 	WxStaticText17 = new wxStaticText(WxNoteBookPage2, ID_WXSTATICTEXT17, _("when pressing Ctrl key)"), wxPoint(414, 3), wxDefaultSize, 0, _("WxStaticText17"));
410 	WxStaticText17->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
411 	WxBoxSizer28->Add(WxStaticText17,0,wxALIGN_LEFT | wxALL,2);
412 
413 	WxCheckBoxMiddleMouseToPaste = new wxCheckBox(WxNoteBookPage2, ID_WXCHECKBOXMIDDLEMOUSETOPASTE, _("Paste text from clipboard when pressing middle mouse button"), wxPoint(24, 98), wxSize(480, 20), 0, wxDefaultValidator, _("WxCheckBoxMiddleMouseToPaste"));
414 	WxCheckBoxMiddleMouseToPaste->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
415 	WxBoxSizer12->Add(WxCheckBoxMiddleMouseToPaste,0,wxALIGN_LEFT | wxALL,2);
416 
417 	WxNoteBookPage3 = new wxPanel(WxNotebook1, ID_WXNOTEBOOKPAGE3, wxPoint(4, 24), wxSize(673, 314));
418 	WxNoteBookPage3->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
419 	WxNotebook1->AddPage(WxNoteBookPage3, _("Print"));
420 
421 	WxBoxSizer14 = new wxBoxSizer(wxHORIZONTAL);
422 	WxNoteBookPage3->SetSizer(WxBoxSizer14);
423 	WxNoteBookPage3->SetAutoLayout(true);
424 
425 	WxBoxSizer15 = new wxBoxSizer(wxVERTICAL);
426 	WxBoxSizer14->Add(WxBoxSizer15, 0, wxALIGN_LEFT | wxALL, 2);
427 
428 	wxStaticBox* WxStaticBoxSizer1_StaticBoxObj = new wxStaticBox(WxNoteBookPage3, wxID_ANY, _("Text Mode"));
429 	WxStaticBoxSizer1 = new wxStaticBoxSizer(WxStaticBoxSizer1_StaticBoxObj, wxVERTICAL);
430 	WxBoxSizer15->Add(WxStaticBoxSizer1, 0, wxALIGN_LEFT | wxALL, 4);
431 
432 	WxCheckBoxPrintSyntax = new wxCheckBox(WxNoteBookPage3, ID_WXCHECKBOXPRINTSYNTAX, _("Print Syntax Highlighter"), wxPoint(6, 16), wxSize(150, 17), 0, wxDefaultValidator, _("WxCheckBoxPrintSyntax"));
433 	WxCheckBoxPrintSyntax->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
434 	WxStaticBoxSizer1->Add(WxCheckBoxPrintSyntax,0,wxALIGN_LEFT | wxALL,1);
435 
436 	WxCheckBoxPrintLineNumber = new wxCheckBox(WxNoteBookPage3, ID_WXCHECKBOXPRINTLINENUMBER, _("Print Line Number"), wxPoint(6, 35), wxSize(150, 17), 0, wxDefaultValidator, _("WxCheckBoxPrintLineNumber"));
437 	WxCheckBoxPrintLineNumber->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
438 	WxStaticBoxSizer1->Add(WxCheckBoxPrintLineNumber,0,wxALIGN_LEFT | wxALL,1);
439 
440 	WxCheckBoxPrintEndOfLine = new wxCheckBox(WxNoteBookPage3, ID_WXCHECKBOXPRINTENDOFLINE, _("Print End of Line"), wxPoint(6, 54), wxSize(150, 17), 0, wxDefaultValidator, _("WxCheckBoxPrintEndOfLine"));
441 	WxCheckBoxPrintEndOfLine->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
442 	WxStaticBoxSizer1->Add(WxCheckBoxPrintEndOfLine,0,wxALIGN_LEFT | wxALL,1);
443 
444 	WxCheckBoxPrintTabChar = new wxCheckBox(WxNoteBookPage3, ID_WXCHECKBOXPRINTTABCHAR, _("Print Tab Char"), wxPoint(6, 73), wxSize(150, 17), 0, wxDefaultValidator, _("WxCheckBoxPrintTabChar"));
445 	WxCheckBoxPrintTabChar->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
446 	WxStaticBoxSizer1->Add(WxCheckBoxPrintTabChar,0,wxALIGN_LEFT | wxALL,1);
447 
448 	WxCheckBoxPrintSpaceChar = new wxCheckBox(WxNoteBookPage3, ID_WXCHECKBOXPRINTSPACECHAR, _("Print Space Char"), wxPoint(6, 92), wxSize(150, 17), 0, wxDefaultValidator, _("WxCheckBoxPrintSpaceChar"));
449 	WxCheckBoxPrintSpaceChar->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
450 	WxStaticBoxSizer1->Add(WxCheckBoxPrintSpaceChar,0,wxALIGN_LEFT | wxALL,1);
451 
452 	wxStaticBox* WxStaticBoxSizer2_StaticBoxObj = new wxStaticBox(WxNoteBookPage3, wxID_ANY, _("Hex Mode"));
453 	WxStaticBoxSizer2 = new wxStaticBoxSizer(WxStaticBoxSizer2_StaticBoxObj, wxHORIZONTAL);
454 	WxBoxSizer15->Add(WxStaticBoxSizer2, 0, wxALIGN_LEFT | wxALL, 4);
455 
456 	wxArrayString arrayStringFor_WxRadioBoxPrintOffset;
457 	arrayStringFor_WxRadioBoxPrintOffset.Add(_("None"));
458 	arrayStringFor_WxRadioBoxPrintOffset.Add(_("First Page Only"));
459 	arrayStringFor_WxRadioBoxPrintOffset.Add(_("Every Page"));
460 	WxRadioBoxPrintOffset = new wxRadioBox(WxNoteBookPage3, ID_WXRADIOBOXPRINTOFFSET, _("Print Offset Header"), wxPoint(6, 16), wxSize(150, 130), arrayStringFor_WxRadioBoxPrintOffset, 1, wxRA_SPECIFY_COLS, wxDefaultValidator, _("WxRadioBoxPrintOffset"));
461 	WxRadioBoxPrintOffset->SetSelection(0);
462 	WxRadioBoxPrintOffset->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
463 	WxStaticBoxSizer2->Add(WxRadioBoxPrintOffset,1,wxALIGN_LEFT | wxALL,1);
464 
465 	WxBoxSizer16 = new wxBoxSizer(wxVERTICAL);
466 	WxBoxSizer14->Add(WxBoxSizer16, 1, wxEXPAND | wxALL, 2);
467 
468 	wxStaticBox* WxStaticBoxSizer3_StaticBoxObj = new wxStaticBox(WxNoteBookPage3, wxID_ANY, _("Page Header"));
469 	WxStaticBoxSizer3 = new wxStaticBoxSizer(WxStaticBoxSizer3_StaticBoxObj, wxVERTICAL);
470 	WxBoxSizer16->Add(WxStaticBoxSizer3, 1, wxEXPAND | wxALL, 4);
471 
472 	WxCheckBoxPrintPageHeader = new wxCheckBox(WxNoteBookPage3, ID_WXCHECKBOXPRINTPAGEHEADER, _("Print Page Header"), wxPoint(86, 16), wxSize(150, 17), 0, wxDefaultValidator, _("WxCheckBoxPrintPageHeader"));
473 	WxCheckBoxPrintPageHeader->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
474 	WxStaticBoxSizer3->Add(WxCheckBoxPrintPageHeader,0,wxALIGN_LEFT | wxALL,1);
475 
476 	WxFlexGridSizer1 = new wxFlexGridSizer(0, 3, 0, 0);
477 	WxStaticBoxSizer3->Add(WxFlexGridSizer1, 1, wxEXPAND | wxALL, 2);
478 
479 	WxStaticText7 = new wxStaticText(WxNoteBookPage3, ID_WXSTATICTEXT7, _("Left:"), wxPoint(8, 5), wxDefaultSize, 0, _("WxStaticText7"));
480 	WxStaticText7->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
481 	WxFlexGridSizer1->Add(WxStaticText7,0,wxALIGN_RIGHT | wxALL,2);
482 
483 	WxEditHeaderLeft = new wxTextCtrl(WxNoteBookPage3, ID_WXEDITHEADERLEFT, _(""), wxPoint(44, 3), wxSize(240, 21), 0, wxDefaultValidator, _("WxEditHeaderLeft"));
484 	WxEditHeaderLeft->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
485 	WxFlexGridSizer1->Add(WxEditHeaderLeft,0,0 | wxALL,2);
486 
487 	WxButton1 = new wxButton(WxNoteBookPage3, ID_WXBUTTON1, _(">>"), wxPoint(287, 1), wxSize(25, 25), 0, wxDefaultValidator, _("WxButton1"));
488 	WxButton1->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
489 	WxFlexGridSizer1->Add(WxButton1,0,wxALIGN_LEFT | wxALL,1);
490 
491 	WxStaticText8 = new wxStaticText(WxNoteBookPage3, ID_WXSTATICTEXT8, _("Center:"), wxPoint(2, 32), wxDefaultSize, 0, _("WxStaticText8"));
492 	WxStaticText8->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
493 	WxFlexGridSizer1->Add(WxStaticText8,0,wxALIGN_RIGHT | wxALL,2);
494 
495 	WxEditHeaderCenter = new wxTextCtrl(WxNoteBookPage3, ID_WXEDITHEADERCENTER, _(""), wxPoint(44, 30), wxSize(240, 21), 0, wxDefaultValidator, _("WxEditHeaderCenter"));
496 	WxEditHeaderCenter->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
497 	WxFlexGridSizer1->Add(WxEditHeaderCenter,0,0 | wxALL,2);
498 
499 	WxButton2 = new wxButton(WxNoteBookPage3, ID_WXBUTTON2, _(">>"), wxPoint(287, 28), wxSize(25, 25), 0, wxDefaultValidator, _("WxButton2"));
500 	WxButton2->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
501 	WxFlexGridSizer1->Add(WxButton2,0,wxALIGN_LEFT | wxALL,1);
502 
503 	WxStaticText9 = new wxStaticText(WxNoteBookPage3, ID_WXSTATICTEXT9, _("Right:"), wxPoint(5, 59), wxDefaultSize, 0, _("WxStaticText9"));
504 	WxStaticText9->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
505 	WxFlexGridSizer1->Add(WxStaticText9,0,wxALIGN_RIGHT | wxALL,2);
506 
507 	WxEditHeaderRight = new wxTextCtrl(WxNoteBookPage3, ID_WXEDITHEADERRIGHT, _(""), wxPoint(44, 57), wxSize(240, 21), 0, wxDefaultValidator, _("WxEditHeaderRight"));
508 	WxEditHeaderRight->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
509 	WxFlexGridSizer1->Add(WxEditHeaderRight,0,0 | wxALL,2);
510 
511 	WxButton3 = new wxButton(WxNoteBookPage3, ID_WXBUTTON3, _(">>"), wxPoint(287, 55), wxSize(25, 25), 0, wxDefaultValidator, _("WxButton3"));
512 	WxButton3->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
513 	WxFlexGridSizer1->Add(WxButton3,0,wxALIGN_LEFT | wxALL,1);
514 
515 	wxStaticBox* WxStaticBoxSizer4_StaticBoxObj = new wxStaticBox(WxNoteBookPage3, wxID_ANY, _("Page Footer"));
516 	WxStaticBoxSizer4 = new wxStaticBoxSizer(WxStaticBoxSizer4_StaticBoxObj, wxVERTICAL);
517 	WxBoxSizer16->Add(WxStaticBoxSizer4, 1, wxEXPAND | wxALL, 4);
518 
519 	WxCheckBoxPrintPageFooter = new wxCheckBox(WxNoteBookPage3, ID_WXCHECKBOXPRINTPAGEFOOTER, _("Print Page Footer"), wxPoint(86, 16), wxSize(150, 17), 0, wxDefaultValidator, _("WxCheckBoxPrintPageFooter"));
520 	WxCheckBoxPrintPageFooter->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
521 	WxStaticBoxSizer4->Add(WxCheckBoxPrintPageFooter,0,wxALIGN_LEFT | wxALL,1);
522 
523 	WxFlexGridSizer2 = new wxFlexGridSizer(0, 3, 0, 0);
524 	WxStaticBoxSizer4->Add(WxFlexGridSizer2, 1, wxEXPAND | wxALL, 2);
525 
526 	WxStaticText10 = new wxStaticText(WxNoteBookPage3, ID_WXSTATICTEXT7, _("Left:"), wxPoint(8, 5), wxDefaultSize, 0, _("WxStaticText10"));
527 	WxStaticText10->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
528 	WxFlexGridSizer2->Add(WxStaticText10,0,wxALIGN_RIGHT | wxALL,2);
529 
530 	WxEditFooterLeft = new wxTextCtrl(WxNoteBookPage3, ID_WXEDITHEADERLEFT, _(""), wxPoint(44, 3), wxSize(240, 21), 0, wxDefaultValidator, _("WxEditFooterLeft"));
531 	WxEditFooterLeft->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
532 	WxFlexGridSizer2->Add(WxEditFooterLeft,0,0 | wxALL,2);
533 
534 	WxButton4 = new wxButton(WxNoteBookPage3, ID_WXBUTTON4, _(">>"), wxPoint(287, 1), wxSize(25, 25), 0, wxDefaultValidator, _("WxButton4"));
535 	WxButton4->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
536 	WxFlexGridSizer2->Add(WxButton4,0,wxALIGN_LEFT | wxALL,1);
537 
538 	WxStaticText11 = new wxStaticText(WxNoteBookPage3, ID_WXSTATICTEXT8, _("Center:"), wxPoint(2, 32), wxDefaultSize, 0, _("WxStaticText11"));
539 	WxStaticText11->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
540 	WxFlexGridSizer2->Add(WxStaticText11,0,wxALIGN_RIGHT | wxALL,2);
541 
542 	WxEditFooterCenter = new wxTextCtrl(WxNoteBookPage3, ID_WXEDITHEADERCENTER, _(""), wxPoint(44, 30), wxSize(240, 21), 0, wxDefaultValidator, _("WxEditFooterCenter"));
543 	WxEditFooterCenter->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
544 	WxFlexGridSizer2->Add(WxEditFooterCenter,0,0 | wxALL,2);
545 
546 	WxButton5 = new wxButton(WxNoteBookPage3, ID_WXBUTTON5, _(">>"), wxPoint(287, 28), wxSize(25, 25), 0, wxDefaultValidator, _("WxButton5"));
547 	WxButton5->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
548 	WxFlexGridSizer2->Add(WxButton5,0,wxALIGN_LEFT | wxALL,1);
549 
550 	WxStaticText12 = new wxStaticText(WxNoteBookPage3, ID_WXSTATICTEXT9, _("Right:"), wxPoint(5, 59), wxDefaultSize, 0, _("WxStaticText12"));
551 	WxStaticText12->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
552 	WxFlexGridSizer2->Add(WxStaticText12,0,wxALIGN_RIGHT | wxALL,2);
553 
554 	WxEditFooterRight = new wxTextCtrl(WxNoteBookPage3, ID_WXEDITHEADERRIGHT, _(""), wxPoint(44, 57), wxSize(240, 21), 0, wxDefaultValidator, _("WxEditFooterRight"));
555 	WxEditFooterRight->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
556 	WxFlexGridSizer2->Add(WxEditFooterRight,0,0 | wxALL,2);
557 
558 	WxButton6 = new wxButton(WxNoteBookPage3, ID_WXBUTTON6, _(">>"), wxPoint(287, 55), wxSize(25, 25), 0, wxDefaultValidator, _("WxButton6"));
559 	WxButton6->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
560 	WxFlexGridSizer2->Add(WxButton6,0,wxALIGN_LEFT | wxALL,1);
561 
562 	WxNoteBookPage4 = new wxPanel(WxNotebook1, ID_WXNOTEBOOKPAGE4, wxPoint(4, 24), wxSize(673, 314));
563 	WxNoteBookPage4->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
564 	WxNotebook1->AddPage(WxNoteBookPage4, _("Keys"));
565 
566 	WxBoxSizer18 = new wxBoxSizer(wxHORIZONTAL);
567 	WxNoteBookPage4->SetSizer(WxBoxSizer18);
568 	WxNoteBookPage4->SetAutoLayout(true);
569 
570 	WxBoxSizer19 = new wxBoxSizer(wxHORIZONTAL);
571 	WxBoxSizer18->Add(WxBoxSizer19, 2, wxEXPAND | wxALL, 4);
572 
573 	WxTreeCtrl1 = new wxTreeCtrl(WxNoteBookPage4, ID_WXTREECTRL1, wxPoint(3, 3), wxSize(250, 240), wxTR_HAS_BUTTONS | wxTR_DEFAULT_STYLE, wxDefaultValidator, _("WxTreeCtrl1"));
574 	WxTreeCtrl1->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
575 	WxBoxSizer19->Add(WxTreeCtrl1,1,wxEXPAND | wxALL,3);
576 
577 	WxBoxSizer20 = new wxBoxSizer(wxVERTICAL);
578 	WxBoxSizer18->Add(WxBoxSizer20, 3, wxEXPAND | wxALL, 2);
579 
580 	WxBoxSizer24 = new wxBoxSizer(wxHORIZONTAL);
581 	WxBoxSizer20->Add(WxBoxSizer24, 0, wxEXPAND | wxALL, 2);
582 
583 	WxStaticTextCommandHint = new wxStaticText(WxNoteBookPage4, ID_WXSTATICTEXTCOMMANDHINT, _("Hint:"), wxPoint(5, 7), wxDefaultSize, 0, _("WxStaticTextCommandHint"));
584 	WxStaticTextCommandHint->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
585 	WxBoxSizer24->Add(WxStaticTextCommandHint,0,wxALIGN_LEFT | wxALL,5);
586 
587 	WxEditCommandHint = new wxTextCtrl(WxNoteBookPage4, ID_WXEDITHINT, _(""), wxPoint(41, 5), wxSize(300, 21), wxTE_READONLY, wxDefaultValidator, _("WxEditCommandHint"));
588 	WxEditCommandHint->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
589 	WxEditCommandHint->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
590 	WxBoxSizer24->Add(WxEditCommandHint,1,wxEXPAND | wxALL,5);
591 
592 	WxBoxSizer21 = new wxBoxSizer(wxHORIZONTAL);
593 	WxBoxSizer20->Add(WxBoxSizer21, 1, wxEXPAND | wxALL, 2);
594 
595 	WxBoxSizer22 = new wxBoxSizer(wxVERTICAL);
596 	WxBoxSizer21->Add(WxBoxSizer22, 0, wxEXPAND | wxALL, 2);
597 
598 	WxStaticText14 = new wxStaticText(WxNoteBookPage4, ID_WXSTATICTEXT14, _("Assigned Keys:"), wxPoint(34, 5), wxDefaultSize, 0, _("WxStaticText14"));
599 	WxStaticText14->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
600 	WxBoxSizer22->Add(WxStaticText14,0,wxALIGN_LEFT | wxALL,5);
601 
602 	wxArrayString arrayStringFor_WxListBoxKeys;
603 	WxListBoxKeys = new wxListBox(WxNoteBookPage4, ID_WXLISTBOXKEYS, wxPoint(2, 29), wxSize(140, 200), arrayStringFor_WxListBoxKeys, wxLB_SINGLE);
604 	WxListBoxKeys->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
605 	WxBoxSizer22->Add(WxListBoxKeys,1,wxEXPAND | wxALL,2);
606 
607 	WxBoxSizer25 = new wxBoxSizer(wxVERTICAL);
608 	WxBoxSizer21->Add(WxBoxSizer25, 5, wxEXPAND | wxALL, 1);
609 
610 	WxStaticText15 = new wxStaticText(WxNoteBookPage4, ID_WXSTATICTEXT15, _("New Key:"), wxPoint(70, 5), wxDefaultSize, 0, _("WxStaticText15"));
611 	WxStaticText15->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
612 	WxBoxSizer25->Add(WxStaticText15,0,wxALIGN_LEFT | wxALL,5);
613 
614 	WxEditKey = new KeyTextCtrl(WxNoteBookPage4, ID_WXEDITKEY, _(""), wxPoint(5, 32), wxSize(180, 21), wxWANTS_CHARS | wxTE_PROCESS_TAB, wxDefaultValidator, _("WxEditKey"));
615 	WxEditKey->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
616 	WxBoxSizer25->Add(WxEditKey,0,wxEXPAND | wxALL,5);
617 
618 	WxEditKeyHint = new wxTextCtrl(WxNoteBookPage4, ID_WXEDITKEYHINT, _(""), wxPoint(5, 63), wxSize(180, 21), wxTE_READONLY, wxDefaultValidator, _("WxEditKeyHint"));
619 	WxEditKeyHint->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
620 	WxEditKeyHint->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
621 	WxBoxSizer25->Add(WxEditKeyHint,1,wxEXPAND | wxALL,5);
622 
623 	WxButtonAddKey = new wxButton(WxNoteBookPage4, ID_WXBUTTONADDKEY, _("<== Add Key"), wxPoint(15, 94), wxSize(160, 28), 0, wxDefaultValidator, _("WxButtonAddKey"));
624 	WxButtonAddKey->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
625 	WxBoxSizer25->Add(WxButtonAddKey,0,wxALIGN_LEFT | wxALL,5);
626 
627 	WxButtonDeleteKey = new wxButton(WxNoteBookPage4, ID_WXBUTTONDELETEKEY, _("==> Delete Key"), wxPoint(15, 132), wxSize(160, 28), 0, wxDefaultValidator, _("WxButtonDeleteKey"));
628 	WxButtonDeleteKey->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
629 	WxBoxSizer25->Add(WxButtonDeleteKey,0,wxALIGN_LEFT | wxALL,5);
630 
631 	WxButtonShowInMenu = new wxButton(WxNoteBookPage4, ID_WXBUTTONSHOWINMENU, _("Show the Key in Menu"), wxPoint(15, 170), wxSize(160, 28), 0, wxDefaultValidator, _("WxButtonShowInMenu"));
632 	WxButtonShowInMenu->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
633 	WxBoxSizer25->Add(WxButtonShowInMenu,0,wxALIGN_LEFT | wxALL,5);
634 
635 	WxBoxSizer26 = new wxBoxSizer(wxHORIZONTAL);
636 	WxBoxSizer20->Add(WxBoxSizer26, 0, wxALIGN_LEFT | wxALL, 2);
637 
638 	WxCheckBoxResetAllKeys = new wxCheckBox(WxNoteBookPage4, ID_WXCHECKBOXRESETALLKEYS, _("Reset all keys to default (must restart MadEdit)"), wxPoint(5, 5), wxSize(250, 17), 0, wxDefaultValidator, _("WxCheckBoxResetAllKeys"));
639 	WxCheckBoxResetAllKeys->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
640 	WxBoxSizer26->Add(WxCheckBoxResetAllKeys,0,wxALIGN_LEFT | wxALL,5);
641 
642 	WxBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
643 	WxBoxSizer1->Add(WxBoxSizer2, 0, wxALIGN_CENTER | wxALL, 5);
644 
645 	WxButtonOK = new wxButton(this, ID_WXBUTTONOK, _("&OK"), wxPoint(6, 6), wxSize(85, 30), 0, wxDefaultValidator, _("WxButtonOK"));
646 	WxButtonOK->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
647 	WxBoxSizer2->Add(WxButtonOK,0,wxALIGN_CENTER | wxALL,5);
648 
649 	WxButtonCancel = new wxButton(this, ID_WXBUTTONCANCEL, _("&Cancel"), wxPoint(100, 5), wxSize(90, 30), 0, wxDefaultValidator, _("WxButtonCancel"));
650 	WxButtonCancel->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxNORMAL, false, _("MS Sans Serif")));
651 	WxBoxSizer2->Add(WxButtonCancel,0,wxALIGN_CENTER | wxALL,5);
652 
653 	WxPopupMenuPrintMark = new wxMenu(_(""));WxPopupMenuPrintMark->Append(ID_MNU_MENUITEM1_1110, _("[%f] &File Name"), _(""), wxITEM_NORMAL);
654 	WxPopupMenuPrintMark->Append(ID_MNU___P__PATHNAME_1111, _("[%p] &Path Name"), _(""), wxITEM_NORMAL);
655 	WxPopupMenuPrintMark->AppendSeparator();
656 	WxPopupMenuPrintMark->Append(ID_MNU___N_PAGE_NUMBER_1113, _("[%n] Page &Number"), _(""), wxITEM_NORMAL);
657 	WxPopupMenuPrintMark->Append(ID_MNU___S__TOTALPAGES_1114, _("[%s] Total Page&s"), _(""), wxITEM_NORMAL);
658 	WxPopupMenuPrintMark->AppendSeparator();
659 	WxPopupMenuPrintMark->Append(ID_MNU___D__DATE_1116, _("[%d] &Date"), _(""), wxITEM_NORMAL);
660 	WxPopupMenuPrintMark->Append(ID_MNU___T__TIME_1117, _("[%t] &Time"), _(""), wxITEM_NORMAL);
661 
662 	WxPopupMenuDateTimeMark = new wxMenu(_(""));WxPopupMenuDateTimeMark->Append(ID_MNU___Y__M__D_I__M__S_P_2007_02_2408_30_55AM_1191, _("[%Y/%m/%d %I:%M:%S %p] 2007/02/24 08:30:55 AM"), _(""), wxITEM_NORMAL);
663 	WxPopupMenuDateTimeMark->Append(ID_MNU___D__M__Y_24_02_2007_1192, _("[%d/%m/%Y] 24/02/2007"), _(""), wxITEM_NORMAL);
664 	WxPopupMenuDateTimeMark->Append(ID_MNU___A__D_B_Y_H__M__S_Z_RFC822TIMESTAMP_1195, _("[%a, %d %b %Y %H:%M:%S %z] RFC822 timestamp"), _(""), wxITEM_NORMAL);
665 	WxPopupMenuDateTimeMark->AppendSeparator();
666 	WxPopupMenuDateTimeMark->Append(ID_MNU_MENUITEM1_1170, _("[%a] Abbreviated weekday name"), _(""), wxITEM_NORMAL);
667 	WxPopupMenuDateTimeMark->Append(ID_MNU___A_FULLWEEKDAYNAME_1171, _("[%A] Full weekday name"), _(""), wxITEM_NORMAL);
668 	WxPopupMenuDateTimeMark->Append(ID_MNU___B_ABBREVIATEDMONTHNAME_1172, _("[%b] Abbreviated month name"), _(""), wxITEM_NORMAL);
669 	WxPopupMenuDateTimeMark->Append(ID_MNU___B_FULLMONTHNAME_1173, _("[%B] Full month name"), _(""), wxITEM_NORMAL);
670 	WxPopupMenuDateTimeMark->Append(ID_MNU___C_DATEANDTIMEREPRESENTATIONAPPROPRIATEFORLOCALE_1174, _("[%c] Date and time representation appropriate for locale"), _(""), wxITEM_NORMAL);
671 	WxPopupMenuDateTimeMark->Append(ID_MNU___D_DAYOFMONTHASDECIMALNUMBER_01_31__1175, _("[%d] Day of month as decimal number (01 - 31)"), _(""), wxITEM_NORMAL);
672 	WxPopupMenuDateTimeMark->Append(ID_MNU___H_HOURIN24_HOURFORMAT_00_23__1176, _("[%H] Hour in 24-hour format (00 - 23)"), _(""), wxITEM_NORMAL);
673 	WxPopupMenuDateTimeMark->Append(ID_MNU___I_HOURIN12_HOURFORMAT_01_12__1177, _("[%I] Hour in 12-hour format (01 - 12)"), _(""), wxITEM_NORMAL);
674 	WxPopupMenuDateTimeMark->Append(ID_MNU___J_DAYOFYEARASDECIMALNUMBER_001_366__1178, _("[%j] Day of year as decimal number (001 - 366)"), _(""), wxITEM_NORMAL);
675 	WxPopupMenuDateTimeMark->Append(ID_MNU___M_MONTHASDECIMALNUMBER_01_12__1179, _("[%m] Month as decimal number (01 - 12)"), _(""), wxITEM_NORMAL);
676 	WxPopupMenuDateTimeMark->Append(ID_MNU___M_MINUTEASDECIMALNUMBER_00_59__1180, _("[%M] Minute as decimal number (00 - 59)"), _(""), wxITEM_NORMAL);
677 	WxPopupMenuDateTimeMark->Append(ID_MNU___P_CURRENTLOCALESA_M__P_M_INDICATORFOR12_HOURCLOCK_1181, _("[%p] Current locale's A.M./P.M. indicator for 12-hour clock"), _(""), wxITEM_NORMAL);
678 	WxPopupMenuDateTimeMark->Append(ID_MNU___S_SECONDASDECIMALNUMBER_00_59__1182, _("[%S] Second as decimal number (00 - 59)"), _(""), wxITEM_NORMAL);
679 	WxPopupMenuDateTimeMark->Append(ID_MNU___U_WEEKOFYEARASDECIMALNUMBER_WITHSUNDAYASFIRSTDAYOFWEEK_00_53__1183, _("[%U] Week of year as decimal number, with Sunday as first day of week (00 - 53)"), _(""), wxITEM_NORMAL);
680 	WxPopupMenuDateTimeMark->Append(ID_MNU___W_WEEKDAYASDECIMALNUMBER_0_6_SUNDAYIS0__1184, _("[%w] Weekday as decimal number (0 - 6; Sunday is 0)"), _(""), wxITEM_NORMAL);
681 	WxPopupMenuDateTimeMark->Append(ID_MNU___W_WEEKOFYEARASDECIMALNUMBER_WITHMONDAYASFIRSTDAYOFWEEK_00_53__1185, _("[%W] Week of year as decimal number, with Monday as first day of week (00 - 53)"), _(""), wxITEM_NORMAL);
682 	WxPopupMenuDateTimeMark->Append(ID_MNU___X_DATEREPRESENTATIONFORCURRENTLOCALE_1186, _("[%x] Date representation for current locale"), _(""), wxITEM_NORMAL);
683 	WxPopupMenuDateTimeMark->Append(ID_MNU___X_TIMEREPRESENTATIONFORCURRENTLOCALE_1187, _("[%X] Time representation for current locale"), _(""), wxITEM_NORMAL);
684 	WxPopupMenuDateTimeMark->Append(ID_MNU___Y_YEARWITHOUTCENTURY_ASDECIMALNUMBER_00_99__1188, _("[%y] Year without century, as decimal number (00 - 99)"), _(""), wxITEM_NORMAL);
685 	WxPopupMenuDateTimeMark->Append(ID_MNU___Y_YEARWITHCENTURY_ASDECIMALNUMBER_1189, _("[%Y] Year with century, as decimal number"), _(""), wxITEM_NORMAL);
686 	WxPopupMenuDateTimeMark->Append(ID_MNU___Z_TIME_ZONENAME_1193, _("[%z] Time-zone name"), _(""), wxITEM_NORMAL);
687 	WxPopupMenuDateTimeMark->Append(ID_MNU___Z_TIME_ZONEABBREVIATION_1194, _("[%Z] Time-zone abbreviation"), _(""), wxITEM_NORMAL);
688 
689 	SetTitle(_("Options"));
690 	SetIcon(wxNullIcon);
691 
692 	GetSizer()->Layout();
693 	GetSizer()->Fit(this);
694 
695     ////GUI Items Creation End
696 
697     //restore wxFont
698     #undef wxFont
699 
700     wxString systemenc(_("System Default"));
701     WxComboBoxEncoding->Append(systemenc);
702     size_t cnt=MadEncoding::GetEncodingsCount();
703     size_t i;
704     for(i=0; i<cnt; i++)
705     {
706         WxComboBoxEncoding->Append(MadEncoding::GetEncodingName(i));//enc+des);
707     }
708     WxComboBoxEncoding->SetValue(systemenc);
709 
710     for(i=0; i<g_LanguageCount; i++)
711     {
712         WxComboBoxLanguage->Append(wxString(g_LanguageString[i]));
713     }
714     WxComboBoxLanguage->SetValue(wxString(g_LanguageString[0]));
715 
716     ResizeItem(WxBoxSizer27, WxStaticText16, 2, 2);
717     ResizeItem(WxBoxSizer4, WxCheckBoxSingleInstance, 25, 4);
718     ResizeItem(WxBoxSizer4, WxCheckBoxRecordCaretMovements, 25, 4);
719     ResizeItem(WxBoxSizer5, WxStaticText1, 2, 2);
720     ResizeItem(WxBoxSizer6, WxStaticText2, 2, 2);
721     ResizeItem(WxBoxSizer7, WxCheckBoxDoNotSaveSettings, 25, 4);
722     ResizeItem(WxBoxSizer7, WxCheckBoxReloadFiles, 25, 4);
723     ResizeItem(WxBoxSizer7, WxCheckBoxRestoreCaretPos, 25, 4);
724     ResizeItem(WxBoxSizer17, WxStaticText13, 2, 2);
725 
726     ResizeItem(WxBoxSizer9, WxStaticText3, 2, 2);
727     ResizeItem(WxBoxSizer10, WxStaticText4, 2, 2);
728     ResizeItem(WxBoxSizer11, WxStaticText5, 2, 2);
729     ResizeItem(WxBoxSizer13, WxStaticText6, 2, 2);
730     ResizeItem(WxBoxSizer12, WxCheckBoxTabOrSpaces, 25, 4);
731     ResizeItem(WxBoxSizer12, WxCheckBoxAutoIndent, 25, 4);
732     ResizeItem(WxBoxSizer12, WxCheckBoxAutoCompletePair, 25, 4);
733     ResizeItem(WxBoxSizer28, WxCheckBoxMouseSelectToCopy, 25, 4);
734     ResizeItem(WxBoxSizer28, WxRadioButtonEnable, 25, 4);
735     ResizeItem(WxBoxSizer28, WxRadioButtonDisable, 25, 4);
736     ResizeItem(WxBoxSizer28, WxStaticText17, 2, 2);
737     ResizeItem(WxBoxSizer12, WxCheckBoxMiddleMouseToPaste, 25, 4);
738     ResizeItem(WxBoxSizer23, WxStaticTextDateTime, 2, 2);
739     ResizeItem(WxBoxSizer23, WxCheckBoxDateTimeInEnglish, 25, 4);
740 
741     ResizeItem(WxStaticBoxSizer1, WxCheckBoxPrintSyntax, 25, 4);
742     ResizeItem(WxStaticBoxSizer1, WxCheckBoxPrintLineNumber, 25, 4);
743     ResizeItem(WxStaticBoxSizer1, WxCheckBoxPrintEndOfLine, 25, 4);
744     ResizeItem(WxStaticBoxSizer1, WxCheckBoxPrintTabChar, 25, 4);
745     ResizeItem(WxStaticBoxSizer1, WxCheckBoxPrintSpaceChar, 25, 4);
746 
747     int strx=0, stry=0;
748     wxString str=WxRadioBoxPrintOffset->GetLabel();
749     WxRadioBoxPrintOffset->GetTextExtent(str, &strx, &stry);
750     for(i=0;i<WxRadioBoxPrintOffset->GetCount();i++)
751     {
752         int x;
753         str=WxRadioBoxPrintOffset->GetString((unsigned int)i);
754         WxRadioBoxPrintOffset->GetTextExtent(str, &x, &stry);
755         if(x>strx) strx=x;
756     }
757     stry = (stry *((int)WxRadioBoxPrintOffset->GetCount()+2))*4/3;
758     WxRadioBoxPrintOffset->SetSize(strx+=25, stry);
759     WxStaticBoxSizer2->SetItemMinSize(WxRadioBoxPrintOffset, strx, stry);
760 
761     ResizeItem(WxStaticBoxSizer3, WxCheckBoxPrintPageHeader, 25, 4);
762     ResizeItem(WxStaticBoxSizer3, WxStaticText7, 2, 2);
763     ResizeItem(WxStaticBoxSizer3, WxStaticText8, 2, 2);
764     ResizeItem(WxStaticBoxSizer3, WxStaticText9, 2, 2);
765     ResizeItem(WxStaticBoxSizer3, WxEditHeaderLeft, 0, 2);
766     ResizeItem(WxStaticBoxSizer3, WxEditHeaderCenter, 0, 2);
767     ResizeItem(WxStaticBoxSizer3, WxEditHeaderRight, 0, 2);
768 
769     ResizeItem(WxStaticBoxSizer4, WxCheckBoxPrintPageFooter, 25, 4);
770     ResizeItem(WxStaticBoxSizer4, WxStaticText10, 2, 2);
771     ResizeItem(WxStaticBoxSizer4, WxStaticText11, 2, 2);
772     ResizeItem(WxStaticBoxSizer4, WxStaticText12, 2, 2);
773     ResizeItem(WxStaticBoxSizer4, WxEditFooterLeft, 0, 2);
774     ResizeItem(WxStaticBoxSizer4, WxEditFooterCenter, 0, 2);
775     ResizeItem(WxStaticBoxSizer4, WxEditFooterRight, 0, 2);
776 
777     ResizeItem(WxBoxSizer22, WxStaticText14, 2, 2);
778     ResizeItem(WxBoxSizer25, WxStaticText15, 2, 2);
779     ResizeItem(WxBoxSizer24, WxStaticTextCommandHint, 2, 2);
780 
781     ResizeItem(WxBoxSizer26, WxCheckBoxResetAllKeys, 25, 4);
782 
783 
784 #ifdef __WXMSW__
785     WxCheckBoxRightClickMenu = new wxCheckBox(WxNoteBookPage1, -1, _("Add MadEdit to the RightClickMenu of Explorer(Deselect to Remove the Entry from Windows Registry)"), wxPoint(5,5), wxSize(400,20), 0, wxDefaultValidator, _T("WxCheckBoxRightClickMenu"));
786     WxBoxSizer7->Add(WxCheckBoxRightClickMenu,0,wxALIGN_LEFT | wxALL,2);
787     ResizeItem(WxBoxSizer7, WxCheckBoxRightClickMenu, 25, 4);
788 #endif
789 
790     wxSize size=WxBoxSizer1->GetMinSize();
791     wxSize size1=WxBoxSizer3->GetMinSize();
792     wxSize size2=WxBoxSizer8->GetMinSize();
793     wxSize size3=WxBoxSizer14->GetMinSize();
794     wxSize size4=WxBoxSizer18->GetMinSize();
795 
796     UpdateSize(size, size1);
797     UpdateSize(size, size2);
798     UpdateSize(size, size3);
799     UpdateSize(size, size4);
800 
801     wxSize size5=WxBoxSizer2->GetMinSize();
802     size.y += (size5.y + 30);
803 
804     this->SetClientSize(size);
805     Center();
806 
807     // build Command Tree
808     WxTreeCtrl1->SetImageList(g_MainFrame->m_ImageList);
809     wxTreeItemId root=WxTreeCtrl1->AddRoot(_("Commands"));
810 
811     wxTreeItemId menuRoot=WxTreeCtrl1->AppendItem(root, _("Menu"));
812     wxTreeItemId editorRoot=WxTreeCtrl1->AppendItem(root, _("Editor"));
813 
814     list<wxTreeItemId> tree_stack;
815     CommandData *cd = &CommandTable[0];
816     wxTreeItemId tid;
817 
818     // Menu command
819     do
820     {
821         if(cd->menu_level==0)
822         {
823             tid=WxTreeCtrl1->AppendItem(menuRoot, FilterChar(wxGetTranslation(cd->text)));
824             tree_stack.clear();
825             tree_stack.push_back(tid);
826             ++cd;
827             continue;
828         }
829         else if(cd->menu_level < int(tree_stack.size()))
830         {
831             do
832             {
833                 tree_stack.pop_back();
834             }
835             while(cd->menu_level < int(tree_stack.size()));
836         }
837 
838         if(cd->menu_ptr != 0)
839         {
840             tid=WxTreeCtrl1->AppendItem(tree_stack.back(), FilterChar(wxGetTranslation(cd->text)));
841             tree_stack.push_back(tid);
842         }
843         else if(cd->kind != wxITEM_SEPARATOR)
844         {
845             TreeItemData *data=new TreeItemData;
846             data->cmddata=cd;
847             TreeItemDataList.push_back(data);
848 
849             tid=WxTreeCtrl1->AppendItem(tree_stack.back(), FilterChar(wxGetTranslation(cd->text)), cd->image_idx, cd->image_idx, data);
850             WxTreeCtrl1->SetItemBold(tid, true);
851         }
852 
853         ++cd;
854     }
855     while(cd->menu_level>=0);
856 
857     // Editor command
858     do
859     {
860         TreeItemData *data=new TreeItemData;
861         data->cmddata=cd;
862         TreeItemDataList.push_back(data);
863 
864         tid=WxTreeCtrl1->AppendItem(editorRoot, MadKeyBindings::CommandToText(cd->command), cd->image_idx, cd->image_idx, data);
865         WxTreeCtrl1->SetItemBold(tid, true);
866         cd++;
867     }
868     while(cd->command > 0);
869 
870     WxNotebook1->SetWindowStyleFlag(wxAUI_NB_TOP|wxAUI_NB_TAB_MOVE|wxAUI_NB_SCROLL_BUTTONS);
871 
872     WxButtonCancel->SetId(wxID_CANCEL);
873 }
874 
MadOptionsDialogClose(wxCloseEvent & event)875 void MadOptionsDialog::MadOptionsDialogClose(wxCloseEvent& event)
876 {
877     // --> Don't use Close with a wxDialog,
878     // use Destroy instead.
879 
880     if(event.CanVeto())
881     {
882         event.Veto();
883         Show(false);
884         return;
885     }
886 
887     g_OptionsDialog=NULL;
888     Destroy();
889 }
890 
891 
892 /*
893  * MadOptionsDialogActivate
894  */
MadOptionsDialogActivate(wxActivateEvent & event)895 void MadOptionsDialog::MadOptionsDialogActivate(wxActivateEvent& event)
896 {
897     if(event.GetActive())
898     {
899         if(FindFocus()==NULL)
900         {
901             SetReturnCode(wxID_CANCEL);
902             WxButtonCancel->SetFocus();
903         }
904     }
905 
906     event.Skip();
907 }
908 
LoadOptions(void)909 void MadOptionsDialog::LoadOptions(void)
910 {
911     wxConfigBase *cfg=wxConfigBase::Get(false);
912     wxString oldpath=cfg->GetPath();
913     cfg->SetPath(wxT("/MadEdit"));
914 
915     long ll;
916     bool bb;
917     wxString ss;
918 
919     // General page
920     ss=g_LanguageString[0];
921     cfg->Read(wxT("Language"), &ss);
922     WxComboBoxLanguage->SetValue(ss);
923 
924     cfg->Read(wxT("SingleInstance"), &bb);
925     WxCheckBoxSingleInstance->SetValue(bb);
926 
927     cfg->Read(wxT("RecordCaretMovements"), &bb);
928     WxCheckBoxRecordCaretMovements->SetValue(bb);
929 
930     cfg->Read(wxT("MaxSizeToLoad"), &ll);
931     WxEditMaxSizeToLoad->SetValue(wxString()<<ll);
932 
933     cfg->Read(wxT("MaxTextFileSize"), &ll);
934     WxEditMaxTextFileSize->SetValue(wxString()<<ll);
935 
936     ss=_("System Default");
937     cfg->Read(wxT("DefaultEncoding"), &ss);
938     WxComboBoxEncoding->SetValue(ss);
939 
940 #ifdef __WXMSW__
941     wxRegKey *pRegKey = new wxRegKey(wxT("HKEY_CLASSES_ROOT\\*\\shell\\MadEdit\\command"));
942     if(pRegKey->Exists())
943     {
944         wxString str;
945         if(pRegKey->QueryValue(wxEmptyString, str))
946         {
947             wxString exepath=GetExecutablePath();
948             WxCheckBoxRightClickMenu->SetValue( str.Upper().Find(exepath.Upper())>=0 );
949         }
950     }
951     delete pRegKey;
952 #endif
953 
954     // Edit page
955     cfg->Read(wxT("MaxLineLength"), &ll);
956     WxEditMaxLineLength->SetValue(wxString()<<ll);
957 
958     cfg->Read(wxT("MaxColumns"), &ll);
959     WxEditMaxColumns->SetValue(wxString()<<ll);
960 
961     cfg->Read(wxT("TabColumns"), &ll);
962     WxEditTabColumns->SetValue(wxString()<<ll);
963 
964     cfg->Read(wxT("IndentColumns"), &ll);
965     WxEditIndentColumns->SetValue(wxString()<<ll);
966 
967     cfg->Read(wxT("DateTimeFormat"), &ss, wxT("%c"));
968     WxEditDateTime->SetValue(ss);
969 
970     cfg->Read(wxT("DateTimeInEnglish"), &bb, false);
971     WxCheckBoxDateTimeInEnglish->SetValue(bb);
972 
973     cfg->Read(wxT("InsertSpacesInsteadOfTab"), &bb);
974     WxCheckBoxTabOrSpaces->SetValue(bb);
975 
976     cfg->Read(wxT("AutoIndent"), &bb);
977     WxCheckBoxAutoIndent->SetValue(bb);
978 
979     cfg->Read(wxT("AutoCompletePair"), &bb);
980     WxCheckBoxAutoCompletePair->SetValue(bb);
981 
982     cfg->Read(wxT("MouseSelectToCopy"), &bb);
983     WxCheckBoxMouseSelectToCopy->SetValue(bb);
984 
985     cfg->Read(wxT("MouseSelectToCopyWithCtrlKey"), &bb);
986     WxRadioButtonEnable->SetValue(bb);
987     WxRadioButtonDisable->SetValue(!bb);
988 
989     cfg->Read(wxT("MiddleMouseToPaste"), &bb);
990     WxCheckBoxMiddleMouseToPaste->SetValue(bb);
991 
992     extern bool g_DoNotSaveSettings;
993     WxCheckBoxDoNotSaveSettings->SetValue(g_DoNotSaveSettings);
994 
995     cfg->Read(wxT("ReloadFiles"), &bb, true);
996     WxCheckBoxReloadFiles->SetValue(bb);
997 
998     cfg->Read(wxT("RestoreCaretPos"), &bb, true);
999     WxCheckBoxRestoreCaretPos->SetValue(bb);
1000 
1001     // Print page
1002     cfg->Read(wxT("PrintSyntax"), &bb);
1003     WxCheckBoxPrintSyntax->SetValue(bb);
1004 
1005     cfg->Read(wxT("PrintLineNumber"), &bb);
1006     WxCheckBoxPrintLineNumber->SetValue(bb);
1007 
1008     cfg->Read(wxT("PrintEndOfLine"), &bb);
1009     WxCheckBoxPrintEndOfLine->SetValue(bb);
1010 
1011     cfg->Read(wxT("PrintTabChar"), &bb);
1012     WxCheckBoxPrintTabChar->SetValue(bb);
1013 
1014     cfg->Read(wxT("PrintSpaceChar"), &bb);
1015     WxCheckBoxPrintSpaceChar->SetValue(bb);
1016 
1017     cfg->Read(wxT("PrintOffsetHeader"), &ll);
1018     WxRadioBoxPrintOffset->SetSelection(ll);
1019 
1020     cfg->Read(wxT("PrintPageHeader"), &bb);
1021     WxCheckBoxPrintPageHeader->SetValue(bb);
1022 
1023     cfg->Read(wxT("PageHeaderLeft"), &ss);
1024     WxEditHeaderLeft->SetValue(ss);
1025     cfg->Read(wxT("PageHeaderCenter"), &ss);
1026     WxEditHeaderCenter->SetValue(ss);
1027     cfg->Read(wxT("PageHeaderRight"), &ss);
1028     WxEditHeaderRight->SetValue(ss);
1029 
1030     cfg->Read(wxT("PrintPageFooter"), &bb);
1031     WxCheckBoxPrintPageFooter->SetValue(bb);
1032 
1033     cfg->Read(wxT("PageFooterLeft"), &ss);
1034     WxEditFooterLeft->SetValue(ss);
1035     cfg->Read(wxT("PageFooterCenter"), &ss);
1036     WxEditFooterCenter->SetValue(ss);
1037     cfg->Read(wxT("PageFooterRight"), &ss);
1038     WxEditFooterRight->SetValue(ss);
1039 
1040 
1041     extern bool g_ResetAllKeys;
1042     WxCheckBoxResetAllKeys->SetValue(g_ResetAllKeys);
1043 
1044     ChangedTreeItemDataList.clear();
1045 
1046     // get all keys of each command and srore them in TreeItemDataList
1047     list<TreeItemData*>::iterator tidit=TreeItemDataList.begin();
1048     list<TreeItemData*>::iterator tiditend=TreeItemDataList.end();
1049     do
1050     {
1051         CommandData *cd=(*tidit)->cmddata;
1052         (*tidit)->keys.Clear();
1053         MadEdit::ms_KeyBindings.GetKeys(cd->menu_id, cd->command, (*tidit)->keys);
1054     }
1055     while(++tidit != tiditend);
1056 
1057     g_SelectedCommandItem=NULL;
1058     g_SelectedKeyId=-1;
1059     WxEditCommandHint->Clear();
1060     WxListBoxKeys->Clear();
1061     UpdateKeyHint();
1062 
1063     wxTreeItemId selid=WxTreeCtrl1->GetSelection();
1064     if(selid.IsOk())
1065     {
1066         WxTreeCtrl1->Unselect();
1067         WxTreeCtrl1->SelectItem(selid, true);
1068     }
1069 
1070     cfg->SetPath(oldpath);
1071 
1072 }
1073 
1074 /*
1075  * WxButtonOKClick
1076  */
WxButtonOKClick(wxCommandEvent & event)1077 void MadOptionsDialog::WxButtonOKClick(wxCommandEvent& event)
1078 {
1079     long lo;
1080     bool error=false;
1081     wxString errtext(_("Invalid value of \"%s\""));
1082 
1083     if(!WxEditMaxSizeToLoad->GetValue().ToLong(&lo) || lo<0)
1084     {
1085         wxLogError(errtext, WxStaticText1->GetLabel().c_str());
1086         error=true;
1087     }
1088 
1089     if(!WxEditMaxTextFileSize->GetValue().ToLong(&lo) || lo<0)
1090     {
1091         wxLogError(errtext, WxStaticText2->GetLabel().c_str());
1092         error=true;
1093     }
1094 
1095     if(!WxEditMaxLineLength->GetValue().ToLong(&lo) || lo<80)
1096     {
1097         wxLogError(errtext, WxStaticText3->GetLabel().c_str());
1098         error=true;
1099     }
1100 
1101     if(!WxEditMaxColumns->GetValue().ToLong(&lo) || lo<=0)
1102     {
1103         wxLogError(errtext, WxStaticText4->GetLabel().c_str());
1104         error=true;
1105     }
1106 
1107     if(!WxEditTabColumns->GetValue().ToLong(&lo) || lo<=0)
1108     {
1109         wxLogError(errtext, WxStaticText5->GetLabel().c_str());
1110         error=true;
1111     }
1112 
1113     if(!WxEditIndentColumns->GetValue().ToLong(&lo) || lo<=0)
1114     {
1115         wxLogError(errtext, WxStaticText6->GetLabel().c_str());
1116         error=true;
1117     }
1118 
1119     if(!error) EndModal(wxID_OK);
1120 }
1121 
1122 /*
1123  * WxButtonCancelClick
1124  */
WxButtonCancelClick(wxCommandEvent & event)1125 void MadOptionsDialog::WxButtonCancelClick(wxCommandEvent& event)
1126 {
1127 	EndModal(wxID_CANCEL);
1128 }
1129 
PrintMarkButtonClick(wxCommandEvent & event)1130 void MadOptionsDialog::PrintMarkButtonClick(wxCommandEvent& event)
1131 {
1132     ButtonID=event.GetId();
1133     PopupMenu(WxPopupMenuPrintMark);
1134 }
1135 
PrintMarkClick(wxCommandEvent & event)1136 void MadOptionsDialog::PrintMarkClick(wxCommandEvent& event)
1137 {
1138     wxString str=WxPopupMenuPrintMark->GetLabel(event.GetId());
1139     wxTextCtrl *edit=NULL;
1140     switch(ButtonID)
1141     {
1142     case ID_WXBUTTON1: edit=WxEditHeaderLeft; break;
1143     case ID_WXBUTTON2: edit=WxEditHeaderCenter; break;
1144     case ID_WXBUTTON3: edit=WxEditHeaderRight; break;
1145     case ID_WXBUTTON4: edit=WxEditFooterLeft; break;
1146     case ID_WXBUTTON5: edit=WxEditFooterCenter; break;
1147     case ID_WXBUTTON6: edit=WxEditFooterRight; break;
1148     }
1149 
1150     if(edit!=NULL && str[0]==wxT('[') && str[3]==wxT(']'))
1151     {
1152         wxString text=edit->GetValue();
1153         edit->SetValue(text+ str.Mid(1, 2));
1154     }
1155     ButtonID=0;
1156 }
1157 
1158 
1159 /*
1160  * WxTreeCtrl1SelChanged
1161  */
WxTreeCtrl1SelChanged(wxTreeEvent & event)1162 void MadOptionsDialog::WxTreeCtrl1SelChanged(wxTreeEvent& event)
1163 {
1164     wxTreeItemId id=event.GetItem();
1165     if(!id.IsOk()) return;
1166 
1167     g_SelectedCommandItem=(TreeItemData*)WxTreeCtrl1->GetItemData(id);
1168     g_SelectedKeyId=-1;
1169 
1170     if(g_SelectedCommandItem==NULL)
1171     {
1172         WxListBoxKeys->Clear();
1173         WxEditCommandHint->SetValue(_("Cannot assign key to this item"));
1174     }
1175     else
1176     {
1177         WxListBoxKeys->Set(g_SelectedCommandItem->keys);
1178         wxString hint=wxT('[');
1179         if(g_SelectedCommandItem->cmddata->menuid_name)
1180         {
1181             hint+= wxString(g_SelectedCommandItem->cmddata->menuid_name);
1182         }
1183         if(g_SelectedCommandItem->cmddata->command > 0)
1184         {
1185             wxString text=MadKeyBindings::CommandToText(g_SelectedCommandItem->cmddata->command);
1186             if(!text.IsEmpty())
1187             {
1188                 if(hint.Length()>1)
1189                 {
1190                     hint+= wxT(',');
1191                 }
1192                 hint+= text;
1193             }
1194         }
1195         hint+= wxT("] ");
1196         hint+= wxString(wxGetTranslation(g_SelectedCommandItem->cmddata->hint));
1197 
1198         WxEditCommandHint->SetValue(hint);
1199     }
1200 }
1201 
1202 /*
1203  * WxListBoxKeysSelected
1204  */
WxListBoxKeysSelected(wxCommandEvent & event)1205 void MadOptionsDialog::WxListBoxKeysSelected(wxCommandEvent& event)
1206 {
1207     g_SelectedKeyId=event.GetSelection();
1208 }
1209 
1210 // find key in TreeItemDataList
FindKeyInList(const wxString & key)1211 TreeItemData* MadOptionsDialog::FindKeyInList(const wxString &key)
1212 {
1213     list<TreeItemData*>::iterator tidit=TreeItemDataList.begin();
1214     list<TreeItemData*>::iterator tiditend=TreeItemDataList.end();
1215 
1216     wxString lkey=key.Lower();
1217 
1218     while(tidit!=tiditend)
1219     {
1220         TreeItemData *tid = (*tidit);
1221         if(!tid->keys.IsEmpty())
1222         {
1223             size_t count=tid->keys.GetCount();
1224             size_t idx=0;
1225             for(;idx<count;idx++)
1226             {
1227                 if(tid->keys[idx].Lower() == lkey)
1228                 {
1229                     return tid;
1230                 }
1231             }
1232         }
1233 
1234         ++tidit;
1235     }
1236     return NULL;
1237 }
1238 
FindItemInList(TreeItemData * tid,const list<TreeItemData * > & tlist)1239 bool MadOptionsDialog::FindItemInList(TreeItemData* tid, const list<TreeItemData*> &tlist)
1240 {
1241     list<TreeItemData*>::const_iterator tidit=tlist.begin();
1242     list<TreeItemData*>::const_iterator tiditend=tlist.end();
1243 
1244     while(tidit!=tiditend)
1245     {
1246         if((*tidit) == tid)
1247         {
1248             return true;
1249         }
1250         ++tidit;
1251     }
1252     return false;
1253 }
1254 
UpdateKeyHint()1255 void MadOptionsDialog::UpdateKeyHint()
1256 {
1257     wxString scstr=WxEditKey->GetValue();
1258     g_CommandItemOfNewKey=NULL;
1259 
1260     if(scstr.IsEmpty())
1261     {
1262         g_OptionsDialog->WxEditKeyHint->Clear();
1263     }
1264     else
1265     {
1266         // find the key is assigned to which command
1267         TreeItemData *tid = g_OptionsDialog->FindKeyInList(scstr);
1268         if(tid==NULL)
1269         {
1270             g_OptionsDialog->WxEditKeyHint->SetValue(_("This key is not assigned"));
1271         }
1272         else
1273         {
1274             g_CommandItemOfNewKey=tid;
1275             wxString cmd;
1276 
1277             if(tid->cmddata->menuid_name)
1278             {
1279                 cmd+= wxString(tid->cmddata->menuid_name);
1280             }
1281             if(tid->cmddata->command > 0)
1282             {
1283                 wxString text=MadKeyBindings::CommandToText(tid->cmddata->command);
1284                 if(!text.IsEmpty())
1285                 {
1286                     if(cmd.Length()>1)
1287                     {
1288                         cmd+= wxT(',');
1289                     }
1290                     cmd+= text;
1291                 }
1292             }
1293 
1294             wxString str=wxString::Format(_("This key is assigned to [%s]"), cmd.c_str());
1295             g_OptionsDialog->WxEditKeyHint->SetValue(str);
1296         }
1297     }
1298 }
1299 
1300 /*
1301  * WxButtonAddKeyClick
1302  */
WxButtonAddKeyClick(wxCommandEvent & event)1303 void MadOptionsDialog::WxButtonAddKeyClick(wxCommandEvent& event)
1304 {
1305     if(g_SelectedCommandItem!=NULL && g_SelectedCommandItem!=g_CommandItemOfNewKey)
1306     {
1307         wxString key=WxEditKey->GetValue();
1308         if(g_CommandItemOfNewKey!=NULL) // new key is assigned to another command
1309         {
1310             /*
1311             wxMessageDialog dlg(this, key +wxT(": ") +WxEditKeyHint->GetValue() +wxT("\n\n") + wxString(_("Do you want to reassign this key?")),
1312                 wxT("MadEdit"), wxYES_NO|wxICON_QUESTION );
1313             if(dlg.ShowModal()!=wxID_YES)
1314             {
1315                 return;
1316             }
1317             */
1318 
1319             //delete the key from g_CommandItemOfNewKey
1320             int idx=g_CommandItemOfNewKey->keys.Index(key.c_str(), false);
1321             wxASSERT(idx>=0);
1322             g_CommandItemOfNewKey->keys.RemoveAt(idx);
1323             if(FindItemInList(g_CommandItemOfNewKey, ChangedTreeItemDataList)==false)
1324             {
1325                 ChangedTreeItemDataList.push_back(g_CommandItemOfNewKey);
1326             }
1327         }
1328 
1329         // add the key to g_SelectedCommandItem
1330         g_SelectedCommandItem->keys.Add(key);
1331 
1332         WxListBoxKeys->Set(g_SelectedCommandItem->keys);
1333         if(FindItemInList(g_SelectedCommandItem, ChangedTreeItemDataList)==false)
1334         {
1335             ChangedTreeItemDataList.push_back(g_SelectedCommandItem);
1336         }
1337 
1338         g_SelectedKeyId=-1;
1339         UpdateKeyHint();
1340     }
1341 }
1342 
1343 /*
1344  * WxButtonDeleteKeyClick
1345  */
WxButtonDeleteKeyClick(wxCommandEvent & event)1346 void MadOptionsDialog::WxButtonDeleteKeyClick(wxCommandEvent& event)
1347 {
1348     if(g_SelectedCommandItem!=NULL && g_SelectedKeyId >= 0)
1349     {
1350         g_SelectedCommandItem->keys.RemoveAt(g_SelectedKeyId);
1351 
1352         WxListBoxKeys->Set(g_SelectedCommandItem->keys);
1353         if(FindItemInList(g_SelectedCommandItem, ChangedTreeItemDataList)==false)
1354         {
1355             ChangedTreeItemDataList.push_back(g_SelectedCommandItem);
1356         }
1357 
1358         g_SelectedKeyId=-1;
1359         UpdateKeyHint();
1360     }
1361 }
1362 
1363 /*
1364  * WxButtonShowInMenuClick
1365  */
WxButtonShowInMenuClick(wxCommandEvent & event)1366 void MadOptionsDialog::WxButtonShowInMenuClick(wxCommandEvent& event)
1367 {
1368     // move the selected key to first element of WxListBoxKeys
1369     if(g_SelectedCommandItem!=NULL && g_SelectedCommandItem->cmddata->menu_id>0 && g_SelectedKeyId > 0)
1370     {
1371         wxString key=g_SelectedCommandItem->keys[g_SelectedKeyId];
1372 
1373         g_SelectedCommandItem->keys.RemoveAt(g_SelectedKeyId);
1374         g_SelectedCommandItem->keys.Insert(key, 0);
1375 
1376         WxListBoxKeys->Set(g_SelectedCommandItem->keys);
1377         if(FindItemInList(g_SelectedCommandItem, ChangedTreeItemDataList)==false)
1378         {
1379             ChangedTreeItemDataList.push_back(g_SelectedCommandItem);
1380         }
1381 
1382         g_SelectedKeyId=-1;
1383     }
1384 }
1385 
1386 
1387 /*
1388  * WxButtonDateTimeClick
1389  */
WxButtonDateTimeClick(wxCommandEvent & event)1390 void MadOptionsDialog::WxButtonDateTimeClick(wxCommandEvent& event)
1391 {
1392     PopupMenu(WxPopupMenuDateTimeMark);
1393 }
1394 
DateTimeMarkClick(wxCommandEvent & event)1395 void MadOptionsDialog::DateTimeMarkClick(wxCommandEvent& event)
1396 {
1397     wxString str=WxPopupMenuDateTimeMark->GetLabel(event.GetId());
1398     int pos=str.Find(wxT(']'));
1399     if(pos != wxNOT_FOUND && str[0]==wxT('['))
1400     {
1401         str = str.Mid(1, pos-1);
1402     }
1403 
1404     wxString text=WxEditDateTime->GetValue();
1405     WxEditDateTime->SetValue(text+str);
1406 }
1407