2 # ---------------------------------------------------------------------
4 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
6 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
8 # This software is governed by the CeCILL-B license under French law and
9 # abiding by the rules of distribution of free software. You can use,
10 # modify and/ or redistribute the software under the terms of the CeCILL-B
11 # license as circulated by CEA, CNRS and INRIA at the following URL
12 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
13 # or in the file LICENSE.txt.
15 # As a counterpart to the access to the source code and rights to copy,
16 # modify and redistribute granted by the license, users are provided only
17 # with a limited warranty and the software's author, the holder of the
18 # economic rights, and the successive licensors have only limited
21 # The fact that you are presently reading this means that you have had
22 # knowledge of the CeCILL-B license and that you accept its terms.
23 # ------------------------------------------------------------------------
26 /*=========================================================================
32 =========================================================================*/
34 /* ---------------------------------------------------------------------
36 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
37 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux, Ricardo A Corredor
39 * This software is governed by the CeCILL-B license under French law and
40 * abiding by the rules of distribution of free software. You can use,
41 * modify and/ or redistribute the software under the terms of the CeCILL-B
42 * license as circulated by CEA, CNRS and INRIA at the following URL
43 * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
44 * or in the file LICENSE.txt.
46 * As a counterpart to the access to the source code and rights to copy,
47 * modify and redistribute granted by the license, users are provided only
48 * with a limited warranty and the software's author, the holder of the
49 * economic rights, and the successive licensors have only limited
52 * The fact that you are presently reading this means that you have had
53 * knowledge of the CeCILL-B license and that you accept its terms.
54 * ------------------------------------------------------------------------ */
58 * \brief Class bbtk::wxDiagramPropertiesEditionDialog .
61 #include "wxDiagramPropertiesEditionDialog.h"
67 //=========================================================================
69 wxDiagramPropertiesEditionDialog::wxDiagramPropertiesEditionDialog(wxGUIEditorGraphicBBS *parent, NodeTreeC tree):wxDialog(parent,wxID_ANY,_T("Diagram Properties"), wxDefaultPosition, wxSize(600, 750),wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
73 constructDiagramPropertiesEditionDialog();
76 //=========================================================================
79 wxDiagramPropertiesEditionDialog::~wxDiagramPropertiesEditionDialog()
84 //=========================================================================
86 void wxDiagramPropertiesEditionDialog::constructBoxTree(NodeTreeC nodeTree, wxTreeItemId itemId)
89 for(int i = 0 ; i < nodeTree.childs.size() ; i++)
91 string spc = nodeTree.childs[i].data;
92 const char* ccc = spc.c_str();
93 wxString pc = wxString::FromUTF8 (ccc);
94 wxTreeItemId iId = _treeBox->AppendItem(itemId, pc, -1, -1, NULL);
95 constructBoxTree(nodeTree.childs[i], iId );
99 //==================================================================================
101 void wxDiagramPropertiesEditionDialog::constructDiagramPropertiesEditionDialog()
103 const int ID_COMBO = 1;
104 wxPanel *panel = new wxPanel(this, -1);
105 wxBoxSizer *hbox = new wxBoxSizer(wxHORIZONTAL);
106 wxFlexGridSizer *fgsizer = new wxFlexGridSizer(8, 2, 9, 25);
111 wxStaticText *tree = new wxStaticText(panel, -1, wxT("Tree of Box"));
113 string sp = _tree.data;
114 const char* cc = sp.c_str();
115 wxString p = wxString::FromUTF8 (cc);
117 _treeBox = new wxTreeCtrl (this, wxID_ANY, wxPoint(0,0), wxSize(320,300), wxTR_HAS_BUTTONS | wxTR_SINGLE );
118 wxTreeItemId itemId = _treeBox->AddRoot(p, -1,-1,NULL);
120 constructBoxTree(_tree, itemId);
121 _treeBox->ExpandAll();
126 //COMBOBOX OF MESSAGE
129 Interpreter 0 Messages of the interpreter
130 all 0 Minimum level for all kind of messages
131 change 0 Box i/o changes related messages
132 code 0 If positive then codes of the messages are displayed
133 config 0 Configuration related messages
134 connection 0 Connections related messages
135 data 0 Data related messages
136 debug 0 Debug messages
137 echo 1 Level>0 : Prints the output of the 'print' commands of the user.
138 Level>1 : Prints the command being interpreted
139 error 0 Error messages
140 gui 0 Graphical user interface related messages
142 kernel 0 Messages generated by the core classes of the lib
143 max 9 Maximum level for all kind of messages
144 object 0 object memory related messages
145 output 1 Output messages
146 package 0 Packages related messages
147 process 0 Messages related to box processing
148 qt 0 Qt related messages
149 warning 1 Warning messages
150 widget 0 Widgets related messages
153 _diagramMessageKind = new wxComboBox(panel, -1, wxT("-"), wxDefaultPosition, wxSize(100,-1) );
154 _diagramMessageKind->Append (wxT("-"));
155 _diagramMessageKind->Append (wxT("Interpreter"));
156 _diagramMessageKind->Append (wxT("all"));
157 _diagramMessageKind->Append (wxT("change"));
158 _diagramMessageKind->Append (wxT("code"));
159 _diagramMessageKind->Append (wxT("config"));
160 _diagramMessageKind->Append (wxT("connection"));
161 _diagramMessageKind->Append (wxT("data"));
162 _diagramMessageKind->Append (wxT("debug"));
163 _diagramMessageKind->Append (wxT("echo"));
164 _diagramMessageKind->Append (wxT("error"));
165 _diagramMessageKind->Append (wxT("gui"));
166 _diagramMessageKind->Append (wxT("help"));
167 _diagramMessageKind->Append (wxT("kernel"));
168 _diagramMessageKind->Append (wxT("max"));
169 _diagramMessageKind->Append (wxT("object"));
170 _diagramMessageKind->Append (wxT("output"));
171 _diagramMessageKind->Append (wxT("package"));
172 _diagramMessageKind->Append (wxT("process"));
173 _diagramMessageKind->Append (wxT("qt"));
174 _diagramMessageKind->Append (wxT("warning"));
175 _diagramMessageKind->Append (wxT("widget"));
176 _diagramMessageKind->Append (wxT("wx"));
177 _diagramMessageKind->SetEditable(false);
179 _diagramMessageLevel = new wxComboBox(panel, -1, wxT("-"), wxDefaultPosition, wxSize(100,-1) );
180 _diagramMessageLevel->Append (wxT("-"));
181 _diagramMessageLevel->Append (wxT("0"));
182 _diagramMessageLevel->Append (wxT("1"));
183 _diagramMessageLevel->Append (wxT("2"));
184 _diagramMessageLevel->Append (wxT("3"));
185 _diagramMessageLevel->Append (wxT("4"));
186 _diagramMessageLevel->Append (wxT("5"));
187 _diagramMessageLevel->Append (wxT("6"));
188 _diagramMessageLevel->Append (wxT("7"));
189 _diagramMessageLevel->Append (wxT("8"));
190 _diagramMessageLevel->Append (wxT("9"));
191 _diagramMessageLevel->SetEditable(false);
195 // SELECTION CONSTANTS
198 _diagramType = new wxComboBox(panel, -1, wxEmptyString, wxDefaultPosition, wxSize(100,-1) );
199 _diagramType->Append (wxT("Application"));
200 _diagramType->Append (wxT("Complex box"));
201 _diagramType->SetEditable(false);
202 //_diagramType->Enable(false);
204 Connect(ID_COMBO, wxEVT_COMMAND_COMBOBOX_SELECTED,
205 wxCommandEventHandler(wxDiagramPropertiesEditionDialog::OnComboBoxSelected));
207 int currentType = (_parent->isCurrentDiagramComplexBox()==false)? 0 : 1;
208 _diagramType->Select(currentType);
209 std::string currentKindStr = _parent->getCurrentDiagramMessageKind();
210 int currentKind=0; // "-"
211 if (currentKindStr =="Interpreter") { currentKind = 1; }
212 if (currentKindStr == "all") { currentKind = 2; }
213 if (currentKindStr == "change") { currentKind = 3; }
214 if (currentKindStr == "code") { currentKind = 4; }
215 if (currentKindStr == "config") { currentKind = 5; }
216 if (currentKindStr == "connection") { currentKind = 6; }
217 if (currentKindStr == "data") { currentKind = 7; }
218 if (currentKindStr == "debug") { currentKind = 8; }
219 if (currentKindStr == "echo") { currentKind = 9; }
220 if (currentKindStr == "error") { currentKind = 10; }
221 if (currentKindStr == "gui") { currentKind = 11; }
222 if (currentKindStr == "help") { currentKind = 12; }
223 if (currentKindStr == "kernel") { currentKind = 13; }
224 if (currentKindStr == "max") { currentKind = 14; }
225 if (currentKindStr == "object") { currentKind = 15; }
226 if (currentKindStr == "output") { currentKind = 16; }
227 if (currentKindStr == "package") { currentKind = 17; }
228 if (currentKindStr == "process") { currentKind = 18; }
229 if (currentKindStr == "qt" ) { currentKind = 19; }
230 if (currentKindStr == "warning") { currentKind = 20; }
231 if (currentKindStr == "widget") { currentKind = 21; }
232 if (currentKindStr == "wx" ) { currentKind = 22; }
233 _diagramMessageKind->Select(currentKind);
235 std::string currentLevelStr = _parent->getCurrentDiagramMessageLevel();
236 int currentLevel = 0;
237 if (currentLevelStr == "0" ) { currentLevel = 1; }
238 if (currentLevelStr == "1" ) { currentLevel = 2; }
239 if (currentLevelStr == "2" ) { currentLevel = 3; }
240 if (currentLevelStr == "3" ) { currentLevel = 4; }
241 if (currentLevelStr == "4" ) { currentLevel = 5; }
242 if (currentLevelStr == "5" ) { currentLevel = 6; }
243 if (currentLevelStr == "6" ) { currentLevel = 7; }
244 if (currentLevelStr == "7" ) { currentLevel = 8; }
245 if (currentLevelStr == "8" ) { currentLevel = 9; }
246 if (currentLevelStr == "9" ) { currentLevel = 10;}
247 _diagramMessageLevel->Select(currentLevel);
249 wxStaticText *type = new wxStaticText(panel, -1, wxT("Type"));
250 wxStaticText *author = new wxStaticText(panel, -1, wxT("Author"));
251 wxStaticText *category = new wxStaticText(panel, -1, wxT("Categories"));
252 wxStaticText *description = new wxStaticText(panel, -1, wxT("Description"));
253 wxStaticText *messageKind = new wxStaticText(panel, -1, wxT("Message kind"));
254 wxStaticText *messageLevel = new wxStaticText(panel, -1, wxT("Message level"));
256 _txtAuthor = new wxTextCtrl(panel, -1);
257 _txtCategory = new wxTextCtrl(panel, -1);
258 _txtDescription = new wxTextCtrl(panel, -1, wxT(""), wxPoint(-1, -1), wxSize(-1, -1), wxTE_MULTILINE);
259 wxButton *okButton = new wxButton(panel, -1, _T("Ok"),wxDefaultPosition, wxSize(-1, -1));
260 wxButton *closeButton = new wxButton(panel, -1, _T("Close"), wxDefaultPosition, wxSize(-1, -1));
262 // connect command event handlers
263 Connect(okButton->GetId(),wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(wxDiagramPropertiesEditionDialog::onClickOk));
264 Connect(closeButton->GetId(),wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(wxDiagramPropertiesEditionDialog::onClickClose));
266 // Assign loaded values
267 _txtAuthor->SetValue(crea::std2wx(_parent->getCurrentDiagramAuthor()));
268 _txtCategory->SetValue(crea::std2wx(_parent->getCurrentDiagramCategory()));
269 _txtDescription->SetValue(crea::std2wx(_parent->getCurrentDiagramDescription()));
273 fgsizer->Add(_diagramType, 1, wxEXPAND);
274 fgsizer->Add(author);
275 fgsizer->Add(_txtAuthor, 1, wxEXPAND);
276 fgsizer->Add(category);
277 fgsizer->Add(_txtCategory, 1, wxEXPAND);
278 fgsizer->Add(description, 1, wxEXPAND);
279 fgsizer->Add(_txtDescription, 1, wxEXPAND);
281 fgsizer->Add(messageKind);
282 fgsizer->Add(_diagramMessageKind, 1, wxEXPAND);
283 fgsizer->Add(messageLevel);
284 fgsizer->Add(_diagramMessageLevel, 1, wxEXPAND);
286 fgsizer->Add(_treeBox, 1, wxEXPAND);
288 fgsizer->Add(okButton, 1, wxEXPAND);
289 fgsizer->Add(closeButton, 1, wxEXPAND);
291 fgsizer->AddGrowableRow(3, 1);
292 fgsizer->AddGrowableCol(1, 1);
294 hbox->Add(fgsizer, 1, wxALL | wxEXPAND, 15);
295 panel->SetSizerAndFit(hbox);
301 // Assign loaded values
302 _txtAuthor->SetValue(crea::std2wx(_parent->getCurrentDiagramAuthor()));
303 _txtCategory->SetValue(crea::std2wx(_parent->getCurrentDiagramCategory()));
304 _txtDescription->SetValue(crea::std2wx(_parent->getCurrentDiagramDescription()));
307 //=========================================================================
309 void wxDiagramPropertiesEditionDialog::onClickOk(wxCommandEvent& event)
311 printf("RaC wxDiagramPropertiesEditionDialog::onClickOk\n");
312 std::string txtAuthor = wx2std(_txtAuthor->GetValue());
313 std::string txtCategory = wx2std(_txtCategory->GetValue());
314 std::string txtDescription = wx2std(_txtDescription->GetValue());
315 _parent->setCurrentDiagramAuthor(txtAuthor);
316 _parent->setCurrentDiagramCategory(txtCategory);
317 _parent->setCurrentDiagramDescription(txtDescription);
319 // SELECTION CONSTANTS
322 int selection = _diagramType->GetSelection();
324 _parent->disableComplexBox();
325 else if (selection == 1)
326 _parent->enableComplexBox();
330 std::string kindSelected = wx2std(_diagramMessageKind->GetStringSelection());
331 std::string levelSelected = wx2std(_diagramMessageLevel->GetStringSelection());
332 _parent->setCurrentDiagramMessageKind(kindSelected);
333 _parent->setCurrentDiagramMessageLevel(levelSelected);
337 //=========================================================================
339 void wxDiagramPropertiesEditionDialog::onClickClose(wxCommandEvent& event)
341 printf("RaC wxDiagramPropertiesEditionDialog::onClickClose\n");
345 //=========================================================================
347 void wxDiagramPropertiesEditionDialog::OnComboBoxSelected(wxCommandEvent& event)
349 // TODO Show info to edit complex boxes
352 //=========================================================================
357 } // EO namespace bbtk