1
2 #include "formatindentdlg.h"
3
4 #ifndef CB_PRECOMP
5 #include <editormanager.h>
6 #include <configmanager.h>
7 #include <cbstyledtextctrl.h>
8 #include "cbeditor.h"
9 #endif
10
11 //(*InternalHeaders(FormatIndentDlg)
12 #include <wx/intl.h>
13 #include <wx/button.h>
14 #include <wx/string.h>
15 //*)
16
17 //(*IdInit(FormatIndentDlg)
18 const long FormatIndentDlg::ID_STATICTEXT1 = wxNewId();
19 const long FormatIndentDlg::ID_STATICTEXT3 = wxNewId();
20 const long FormatIndentDlg::ID_RADIOBUTTON1 = wxNewId();
21 const long FormatIndentDlg::ID_RADIOBUTTON2 = wxNewId();
22 const long FormatIndentDlg::ID_RADIOBUTTON3 = wxNewId();
23 const long FormatIndentDlg::ID_PANEL1 = wxNewId();
24 const long FormatIndentDlg::ID_STATICTEXT2 = wxNewId();
25 const long FormatIndentDlg::ID_CHECKBOX2 = wxNewId();
26 const long FormatIndentDlg::ID_CHECKBOX3 = wxNewId();
27 const long FormatIndentDlg::ID_CHECKBOX4 = wxNewId();
28 const long FormatIndentDlg::ID_CHECKBOX5 = wxNewId();
29 const long FormatIndentDlg::ID_CHECKBOX6 = wxNewId();
30 const long FormatIndentDlg::ID_CHECKBOX1 = wxNewId();
31 const long FormatIndentDlg::ID_CHECKBOX7 = wxNewId();
32 const long FormatIndentDlg::ID_CHECKBOX8 = wxNewId();
33 const long FormatIndentDlg::ID_CHECKBOX9 = wxNewId();
34 const long FormatIndentDlg::ID_CHECKBOX10 = wxNewId();
35 const long FormatIndentDlg::ID_PANEL3 = wxNewId();
36 const long FormatIndentDlg::ID_CHECKBOX11 = wxNewId();
37 const long FormatIndentDlg::ID_CHECKBOX12 = wxNewId();
38 const long FormatIndentDlg::ID_CHECKBOX13 = wxNewId();
39 const long FormatIndentDlg::ID_STATICTEXT4 = wxNewId();
40 const long FormatIndentDlg::ID_SPINCTRL1 = wxNewId();
41 const long FormatIndentDlg::ID_PANEL2 = wxNewId();
42 const long FormatIndentDlg::ID_NOTEBOOK1 = wxNewId();
43 //*)
44
BEGIN_EVENT_TABLE(FormatIndentDlg,wxDialog)45 BEGIN_EVENT_TABLE(FormatIndentDlg,wxDialog)
46 //(*EventTable(FormatIndentDlg)
47 //*)
48 EVT_BUTTON (wxID_OK, FormatIndentDlg::OnOK)
49 END_EVENT_TABLE()
50
51 FormatIndentDlg::FormatIndentDlg(wxWindow* parent)
52 {
53 //(*Initialize(FormatIndentDlg)
54 wxBoxSizer* BoxSizer4;
55 wxBoxSizer* BoxSizer6;
56 wxBoxSizer* BoxSizer5;
57 wxBoxSizer* BoxSizer7;
58 wxBoxSizer* BoxSizer8;
59 wxBoxSizer* BoxSizer2;
60 wxBoxSizer* BoxSizer1;
61 wxBoxSizer* BoxSizer9;
62 wxStaticBoxSizer* StaticBoxSizer1;
63 wxBoxSizer* BoxSizer3;
64 wxStdDialogButtonSizer* StdDialogButtonSizer1;
65
66 Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("wxID_ANY"));
67 BoxSizer1 = new wxBoxSizer(wxVERTICAL);
68 Notebook1 = new wxNotebook(this, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, 0, _T("ID_NOTEBOOK1"));
69 Panel1 = new wxPanel(Notebook1, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1"));
70 BoxSizer4 = new wxBoxSizer(wxVERTICAL);
71 BoxSizer3 = new wxBoxSizer(wxVERTICAL);
72 StaticText1 = new wxStaticText(Panel1, ID_STATICTEXT1, _("Format indent for Fortran code."), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
73 BoxSizer3->Add(StaticText1, 0, wxALL|wxALIGN_LEFT, 5);
74 StaticText3 = new wxStaticText(Panel1, ID_STATICTEXT3, _("Format indent for:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3"));
75 BoxSizer3->Add(StaticText3, 0, wxALL|wxALIGN_LEFT, 5);
76 BoxSizer4->Add(BoxSizer3, 0, wxTOP|wxLEFT|wxRIGHT|wxEXPAND, 5);
77 BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
78 BoxSizer2->Add(-1,-1,0, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 9);
79 rb_ActiveProject = new wxRadioButton(Panel1, ID_RADIOBUTTON1, _("Active project"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP, wxDefaultValidator, _T("ID_RADIOBUTTON1"));
80 BoxSizer2->Add(rb_ActiveProject, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
81 rb_CurrentFile = new wxRadioButton(Panel1, ID_RADIOBUTTON2, _("Current file"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_RADIOBUTTON2"));
82 BoxSizer2->Add(rb_CurrentFile, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
83 rb_Selection = new wxRadioButton(Panel1, ID_RADIOBUTTON3, _("Selection"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_RADIOBUTTON3"));
84 BoxSizer2->Add(rb_Selection, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
85 BoxSizer4->Add(BoxSizer2, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_LEFT, 5);
86 Panel1->SetSizer(BoxSizer4);
87 BoxSizer4->Fit(Panel1);
88 BoxSizer4->SetSizeHints(Panel1);
89 Panel3 = new wxPanel(Notebook1, ID_PANEL3, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL3"));
90 BoxSizer6 = new wxBoxSizer(wxVERTICAL);
91 BoxSizer7 = new wxBoxSizer(wxHORIZONTAL);
92 StaticText2 = new wxStaticText(Panel3, ID_STATICTEXT2, _("Options for statements:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
93 BoxSizer7->Add(StaticText2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
94 BoxSizer6->Add(BoxSizer7, 0, wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT, 5);
95 BoxSizer8 = new wxBoxSizer(wxVERTICAL);
96 cb_PROGafter = new wxCheckBox(Panel3, ID_CHECKBOX2, _("Indent after PROGRAM, FUNCTION, SUBROUTINE"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX2"));
97 cb_PROGafter->SetValue(false);
98 BoxSizer8->Add(cb_PROGafter, 1, wxALL|wxALIGN_LEFT, 2);
99 cb_MODafter = new wxCheckBox(Panel3, ID_CHECKBOX3, _("Indent after MODULE, SUBMODULE"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX3"));
100 cb_MODafter->SetValue(false);
101 BoxSizer8->Add(cb_MODafter, 1, wxALL|wxALIGN_LEFT, 2);
102 cb_CONTMod = new wxCheckBox(Panel3, ID_CHECKBOX4, _("Unindent CONTAINS at module level"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX4"));
103 cb_CONTMod->SetValue(false);
104 BoxSizer8->Add(cb_CONTMod, 1, wxALL|wxALIGN_LEFT, 2);
105 cb_CONTModAfter = new wxCheckBox(Panel3, ID_CHECKBOX5, _("Indent after CONTAINS at module level"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX5"));
106 cb_CONTModAfter->SetValue(false);
107 BoxSizer8->Add(cb_CONTModAfter, 1, wxALL|wxALIGN_LEFT, 2);
108 cb_CONTProc = new wxCheckBox(Panel3, ID_CHECKBOX6, _("Unindent CONTAINS at procedure level"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX6"));
109 cb_CONTProc->SetValue(false);
110 BoxSizer8->Add(cb_CONTProc, 1, wxALL|wxALIGN_LEFT, 2);
111 cb_CONTProcAfter = new wxCheckBox(Panel3, ID_CHECKBOX1, _("Indent after CONTAINS at procedure level"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX1"));
112 cb_CONTProcAfter->SetValue(false);
113 BoxSizer8->Add(cb_CONTProcAfter, 1, wxALL|wxALIGN_LEFT, 2);
114 cb_CONTType = new wxCheckBox(Panel3, ID_CHECKBOX7, _("Unindent CONTAINS at type definition level"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX7"));
115 cb_CONTType->SetValue(false);
116 BoxSizer8->Add(cb_CONTType, 1, wxALL|wxALIGN_LEFT, 2);
117 cb_CONTTypeAfter = new wxCheckBox(Panel3, ID_CHECKBOX8, _("Indent after CONTAINS at type definition level"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX8"));
118 cb_CONTTypeAfter->SetValue(false);
119 BoxSizer8->Add(cb_CONTTypeAfter, 1, wxALL|wxALIGN_LEFT, 2);
120 cb_SELECTCASEafter = new wxCheckBox(Panel3, ID_CHECKBOX9, _("Indent after SELECT CASE"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX9"));
121 cb_SELECTCASEafter->SetValue(false);
122 BoxSizer8->Add(cb_SELECTCASEafter, 1, wxALL|wxALIGN_LEFT, 2);
123 cb_SELECTTYPEafter = new wxCheckBox(Panel3, ID_CHECKBOX10, _("Indent after SELECT TYPE"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX10"));
124 cb_SELECTTYPEafter->SetValue(false);
125 BoxSizer8->Add(cb_SELECTTYPEafter, 1, wxALL|wxALIGN_LEFT, 2);
126 BoxSizer6->Add(BoxSizer8, 1, wxALL|wxEXPAND, 5);
127 Panel3->SetSizer(BoxSizer6);
128 BoxSizer6->Fit(Panel3);
129 BoxSizer6->SetSizeHints(Panel3);
130 Panel2 = new wxPanel(Notebook1, ID_PANEL2, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL2"));
131 BoxSizer5 = new wxBoxSizer(wxVERTICAL);
132 cb_TrimLines = new wxCheckBox(Panel2, ID_CHECKBOX11, _("Trim lines from right"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX11"));
133 cb_TrimLines->SetValue(false);
134 BoxSizer5->Add(cb_TrimLines, 0, wxALL|wxALIGN_LEFT, 5);
135 StaticBoxSizer1 = new wxStaticBoxSizer(wxVERTICAL, Panel2, _("Tab options"));
136 cb_TabAsEditor = new wxCheckBox(Panel2, ID_CHECKBOX12, _("Same as C::B editor"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX12"));
137 cb_TabAsEditor->SetValue(false);
138 StaticBoxSizer1->Add(cb_TabAsEditor, 0, wxALL|wxALIGN_LEFT, 2);
139 cb_UseTabs = new wxCheckBox(Panel2, ID_CHECKBOX13, _("Use tabs instead of spaces"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHECKBOX13"));
140 cb_UseTabs->SetValue(false);
141 StaticBoxSizer1->Add(cb_UseTabs, 0, wxALL|wxALIGN_LEFT, 2);
142 BoxSizer9 = new wxBoxSizer(wxHORIZONTAL);
143 stxt_TabSpaces = new wxStaticText(Panel2, ID_STATICTEXT4, _("Indent size in spaces:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
144 BoxSizer9->Add(stxt_TabSpaces, 0, wxRIGHT|wxALIGN_CENTER_VERTICAL, 4);
145 spc_Spaces = new wxSpinCtrl(Panel2, ID_SPINCTRL1, _T("0"), wxDefaultPosition, wxDefaultSize, 0, 1, 16, 0, _T("ID_SPINCTRL1"));
146 spc_Spaces->SetValue(_T("0"));
147 BoxSizer9->Add(spc_Spaces, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 2);
148 StaticBoxSizer1->Add(BoxSizer9, 0, wxALL|wxALIGN_LEFT, 2);
149 BoxSizer5->Add(StaticBoxSizer1, 0, wxALL|wxALIGN_LEFT, 5);
150 Panel2->SetSizer(BoxSizer5);
151 BoxSizer5->Fit(Panel2);
152 BoxSizer5->SetSizeHints(Panel2);
153 Notebook1->AddPage(Panel1, _("Scope"), false);
154 Notebook1->AddPage(Panel3, _("Statements"), false);
155 Notebook1->AddPage(Panel2, _("Others"), false);
156 BoxSizer1->Add(Notebook1, 1, wxALL|wxEXPAND, 5);
157 StdDialogButtonSizer1 = new wxStdDialogButtonSizer();
158 StdDialogButtonSizer1->AddButton(new wxButton(this, wxID_OK, wxEmptyString));
159 StdDialogButtonSizer1->AddButton(new wxButton(this, wxID_CANCEL, wxEmptyString));
160 StdDialogButtonSizer1->Realize();
161 BoxSizer1->Add(StdDialogButtonSizer1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
162 SetSizer(BoxSizer1);
163 BoxSizer1->Fit(this);
164 BoxSizer1->SetSizeHints(this);
165
166 Connect(ID_CHECKBOX12,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&FormatIndentDlg::OnCbTabAsEditorClick);
167 //*)
168
169 rb_Selection->Disable();
170 if (!Manager::Get()->GetEditorManager())
171 return;
172 cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor();
173 if (!ed)
174 {
175 rb_ActiveProject->SetValue(true);
176 rb_CurrentFile->Disable();
177 return;
178 }
179 cbStyledTextCtrl* control = ed->GetControl();
180 if (!control)
181 return;
182 if (!control->GetSelectedText().IsEmpty())
183 {
184 rb_Selection->Enable();
185 rb_Selection->SetValue(true);
186 }
187 else
188 rb_CurrentFile->SetValue(true);
189
190 ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("fortran_project"));
191
192 cb_PROGafter->SetValue(cfg->ReadBool(_T("/indent_prog_fun_sub_after"), true));
193 cb_MODafter->SetValue(cfg->ReadBool(_T("/indent_module_after"), true));
194 cb_CONTMod->SetValue(cfg->ReadBool(_T("/indent_contains_module"), true));
195 cb_CONTModAfter->SetValue(cfg->ReadBool(_T("/indent_contains_module_after"), true));
196 cb_CONTProc->SetValue(cfg->ReadBool(_T("/indent_contains_procedure"), true));
197 cb_CONTProcAfter->SetValue(cfg->ReadBool(_T("/indent_contains_procedure_after"), true));
198 cb_CONTType->SetValue(cfg->ReadBool(_T("/indent_contains_typedef"), true));
199 cb_CONTTypeAfter->SetValue(cfg->ReadBool(_T("/indent_contains_typedef_after"), true));
200 cb_SELECTCASEafter->SetValue(cfg->ReadBool(_T("/indent_selectcase_after"), true));
201 cb_SELECTTYPEafter->SetValue(cfg->ReadBool(_T("/indent_selecttype_after"), true));
202
203 cb_TrimLines->SetValue(cfg->ReadBool(_T("/indent_trim_right"), true));
204 bool sae = cfg->ReadBool(_T("/indent_same_as_editor"), true);
205 cb_TabAsEditor->SetValue(sae);
206 cb_UseTabs->SetValue(cfg->ReadBool(_T("/indent_use_tabs"), false));
207 spc_Spaces->SetValue(cfg->ReadInt(_T("/indent_tab_width"), 4));
208
209 cb_UseTabs->Enable(!sae);
210 spc_Spaces->Enable(!sae);
211 stxt_TabSpaces->Enable(!sae);
212 }
213
~FormatIndentDlg()214 FormatIndentDlg::~FormatIndentDlg()
215 {
216 //(*Destroy(FormatIndentDlg)
217 //*)
218 }
219
OnOK(wxCommandEvent & event)220 void FormatIndentDlg::OnOK(wxCommandEvent& event)
221 {
222 ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("fortran_project"));
223
224 cfg->Write(_T("/indent_prog_fun_sub_after"), (bool)cb_PROGafter->GetValue());
225 cfg->Write(_T("/indent_module_after"), (bool)cb_MODafter->GetValue());
226 cfg->Write(_T("/indent_contains_module"), (bool)cb_CONTMod->GetValue());
227 cfg->Write(_T("/indent_contains_module_after"), (bool)cb_CONTModAfter->GetValue());
228 cfg->Write(_T("/indent_contains_procedure"), (bool)cb_CONTProc->GetValue());
229 cfg->Write(_T("/indent_contains_procedure_after"), (bool)cb_CONTProcAfter->GetValue());
230 cfg->Write(_T("/indent_contains_typedef"), (bool)cb_CONTType->GetValue());
231 cfg->Write(_T("/indent_contains_typedef_after"), (bool)cb_CONTTypeAfter->GetValue());
232 cfg->Write(_T("/indent_selectcase_after"), (bool)cb_SELECTCASEafter->GetValue());
233 cfg->Write(_T("/indent_selecttype_after"), (bool)cb_SELECTTYPEafter->GetValue());
234
235 cfg->Write(_T("/indent_trim_right"), (bool)cb_TrimLines->GetValue());
236 cfg->Write(_T("/indent_same_as_editor"), (bool)cb_TabAsEditor->GetValue());
237 cfg->Write(_T("/indent_use_tabs"), (bool)cb_UseTabs->GetValue());
238 cfg->Write(_T("/indent_tab_width"), (int)spc_Spaces->GetValue());
239
240 EndModal(wxID_OK);
241 }
242
GetFormatScope()243 FormatIndentDlg::FormatIndentScope FormatIndentDlg::GetFormatScope()
244 {
245 FormatIndentScope sc;
246 if (rb_ActiveProject->GetValue())
247 sc = fisProject;
248 else if (rb_CurrentFile->GetValue())
249 sc = fisCurrentFile;
250 else
251 sc = fisSelection;
252 return sc;
253 }
254
255
OnCbTabAsEditorClick(wxCommandEvent & event)256 void FormatIndentDlg::OnCbTabAsEditorClick(wxCommandEvent& event)
257 {
258 bool sae = cb_TabAsEditor->GetValue();
259 cb_UseTabs->Enable(!sae);
260 spc_Spaces->Enable(!sae);
261 stxt_TabSpaces->Enable(!sae);
262 }
263