OpenASIP  2.0
OTAFormatListDialog.cc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2022 Tampere University.
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Lesser General Public
6  License as published by the Free Software Foundation; either
7  version 2.1 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Lesser General Public License for more details.
13 
14  You should have received a copy of the GNU Lesser General Public
15  License along with this library; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 /**
19  * @file OTAFormatListDialog.cc
20  *
21  * Implementation of OTAFormatListDialog class.
22  *
23  * @author Kari Hepola 2022
24  * @note rating: red
25  */
26 
27 #include <boost/format.hpp>
28 #include <wx/wx.h>
29 #include <wx/sizer.h>
30 #include <wx/statline.h>
31 #include <wx/listctrl.h>
32 
33 #include "OTAFormatListDialog.hh"
34 #include "Machine.hh"
35 #include "MachineTester.hh"
37 #include "Bus.hh"
38 #include "WxConversion.hh"
39 #include "OTAOperationDialog.hh"
40 #include "WidgetTools.hh"
41 #include "InformationDialog.hh"
42 #include "WarningDialog.hh"
43 #include "GUITextGenerator.hh"
44 #include "ProDeTextGenerator.hh"
45 
46 using std::string;
47 using boost::format;
48 using namespace TTAMachine;
49 
50 // too long lines to keep doxygen quiet
51 BEGIN_EVENT_TABLE(OTAFormatListDialog, wxDialog)
60  EVT_TEXT(ID_NAME, OTAFormatListDialog::onOTAFormatName)
62 
63 
64 /**
65  * The Constructor.
66  *
67  * @param parent Parent window of the dialog.
68  * @param machine Parent machine of the instruction OTAFormats.
69  */
71  wxWindow* parent,
72  Machine* machine) :
73  wxDialog(parent, -1, _T(""), wxDefaultPosition),
74  machine_(machine),
75  OTAFormatName_(_T("")) {
76 
77  createContents(this, true, true);
78 
79  OTAFormatList_ = dynamic_cast<wxListCtrl*>(FindWindow(ID_OTA_FORMAT_LIST));
80  operationList_ = dynamic_cast<wxListCtrl*>(FindWindow(ID_OPERATION_LIST));
81 
82  FindWindow(ID_NAME)->SetValidator(
83  wxTextValidator(wxFILTER_ASCII, &OTAFormatName_));
84  FindWindow(ID_ADD_OTA_FORMAT)->Disable();
85  FindWindow(ID_DELETE_OTA_FORMAT)->Disable();
86  // set widget texts
87  setTexts();
88 }
89 
90 
91 /**
92  * The Destructor.
93  */
95 }
96 
97 
98 /**
99  * Sets texts for widgets.
100  */
101 void
105 
106  // Dialog title
107  format fmt = prodeTexts->text(
109  SetTitle(WxConversion::toWxString(fmt.str()));
110 
111  // buttons
112  WidgetTools::setLabel(generator, FindWindow(wxID_OK),
114 
115  WidgetTools::setLabel(generator, FindWindow(wxID_CANCEL),
117 
118  WidgetTools::setLabel(generator, FindWindow(ID_HELP),
120 
121  WidgetTools::setLabel(generator, FindWindow(ID_ADD_OTA_FORMAT),
123 
124  WidgetTools::setLabel(generator, FindWindow(ID_DELETE_OTA_FORMAT),
126 
127  WidgetTools::setLabel(generator, FindWindow(ID_ADD_OPERATION),
129 
130  WidgetTools::setLabel(generator, FindWindow(ID_DELETE_OPERATION),
132 
133  // widget labels
134  WidgetTools::setLabel(prodeTexts, FindWindow(ID_LABEL_NAME),
136 
137  // box sizer label
139  WidgetTools::setWidgetLabel(OTAFormatSizer_, fmt.str());
140 
142  WidgetTools::setWidgetLabel(operationSizer_, fmt.str());
143 
144  // Create instruction OTAFormat list columns.
145  wxListCtrl* OTAFormatList =
146  dynamic_cast<wxListCtrl*>(FindWindow(ID_OTA_FORMAT_LIST));
147  fmt = prodeTexts->text(ProDeTextGenerator::TXT_COLUMN_NAME);
148  OTAFormatList->InsertColumn(0, WxConversion::toWxString(fmt.str()),
149  wxLIST_FORMAT_LEFT, 160);
150 
151  // Create OTAFormat Operation list columns.
152  wxListCtrl* OperationList =
153  dynamic_cast<wxListCtrl*>(FindWindow(ID_OPERATION_LIST));
155  OperationList->InsertColumn(0, WxConversion::toWxString(fmt.str()),
156  wxLIST_FORMAT_LEFT, 100);
157 }
158 
159 
160 /**
161  * Transfers data from the machine to the dialog widgets.
162  */
163 bool
165 
166  // update OTAFormat list
167  OTAFormatList_->DeleteAllItems();
169  machine_->operationTriggeredFormatNavigator();
170  for (int i = 0; i < navigator.count(); i++) {
171  OTAFormatList_->InsertItem(
172  i, WxConversion::toWxString(navigator.item(i)->name()));
173  }
174  updateOperationList();
175  return wxDialog::TransferDataToWindow();
176 }
177 
178 
179 /**
180  * Updates the OTAFormat Operation list.
181  */
182 void
184 
185 
186  operationList_->DeleteAllItems();
187  operationList_->Enable();
188 
189  OperationTriggeredFormat* f = selectedOTAFormat();
190 
191  if (f == NULL) {
192  FindWindow(ID_ADD_OPERATION)->Disable();
193  return;
194  }
195 
196  for (int i = 0; i < f->operationCount(); i++) {
197  operationList_->InsertItem(
199  }
200 
201  FindWindow(ID_ADD_OPERATION)->Enable();
202 
203  wxListEvent dummy;
204  onOperationSelection(dummy);
205 }
206 
207 
208 /**
209  * Updates the Operation list when the OTAFormat selection changes.
210  */
211 void
213  if (OTAFormatList_->GetSelectedItemCount() == 0) {
214  FindWindow(ID_DELETE_OTA_FORMAT)->Disable();
215  } else {
216  FindWindow(ID_DELETE_OTA_FORMAT)->Enable();
217  }
218  updateOperationList();
219 }
220 
221 
222 /**
223  * Updates the edit/delete Operation buttons when the Operation selection changes.
224  */
225 void
227  if (operationList_->GetSelectedItemCount() == 1) {
228  FindWindow(ID_DELETE_OPERATION)->Enable();
229  } else {
230  FindWindow(ID_DELETE_OPERATION)->Disable();
231  }
232 }
233 
234 
235 /**
236  * Deletes the selected OTAFormat.
237  */
238 void
240  delete selectedOTAFormat();
241  TransferDataToWindow();
242  wxListEvent dummy;
243  onOTAFormatSelection(dummy);
244 }
245 
246 
247 /**
248  * Returns pointer to the selected OperationTriggeredFormat.
249  *
250  * @return Pointer to the selected OperationTriggeredFormat.
251  */
254  long item = -1;
255  item = OTAFormatList_->GetNextItem(
256  item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
257 
258  if (item < 0) {
259  return NULL;
260  }
261 
263  machine_->operationTriggeredFormatNavigator().item(item);
264  return f;
265 }
266 
267 
268 /**
269  * Returns name of the selected Operation.
270  *
271  * @return Name of the selected Operation.
272  */
273 string
275  string name = WidgetTools::lcStringSelection(operationList_, 0);
276  return name;
277 }
278 
279 bool
281  if (OTAFormatName_ == "riscv_r_type" ||
282  OTAFormatName_ == "riscv_i_type" ||
283  OTAFormatName_ == "riscv_s_type" ||
284  OTAFormatName_ == "riscv_b_type" ||
285  OTAFormatName_ == "riscv_u_type" ||
286  OTAFormatName_ == "riscv_j_type") {
287  return true;
288  }
289  return false;
290 }
291 
292 
293 /**
294  * Handles the Add tempalte button event.
295  *
296  * Adds a new OTAFormat to the machine.
297  */
298 void
300  if (!TransferDataFromWindow()) {
301  assert(false);
302  }
303  string trimmedName =
304  WxConversion::toString(OTAFormatName_.Trim(false).Trim(true));
305 
306  // Check the name validity.
307  if (!validFormatName()) {
308  std::string message = "Format name is illegal. Legal names are:\n" \
309  "riscv_r_type\n" \
310  "riscv_i_type\n" \
311  "riscv_s_type\n" \
312  "riscv_b_type\n" \
313  "riscv_u_type\n" \
314  "riscv_j_type\n";
315  InformationDialog warning(
316  this, WxConversion::toWxString(message));
317  warning.ShowModal();
318  return;
319  }
320 
322  machine_->operationTriggeredFormatNavigator();
323 
324  if (navigator.hasItem(trimmedName)) {
325  ProDeTextGenerator* prodeTexts =
327  format message =
329  format a_tmplate =
331  format machine =
333  format tmplate =
335  message % trimmedName % a_tmplate.str() % machine.str() %
336  tmplate.str();
337  WarningDialog warning(this, WxConversion::toWxString(message.str()));
338  warning.ShowModal();
339  return;
340  }
341  new OperationTriggeredFormat(trimmedName, *machine_);
342  OTAFormatName_ = _T("");
343  TransferDataToWindow();
344 }
345 
346 
347 /**
348  * Enables and disables the Add OTAFormat button when text is entered in the
349  * OTAFormat name widget.
350  */
351 void
353  if (!TransferDataFromWindow()) {
354  assert(false);
355  }
356  wxString trimmedName = OTAFormatName_.Trim(false).Trim(true);
358  machine_->operationTriggeredFormatNavigator();
359  if (trimmedName == _T("")) {
360  FindWindow(ID_ADD_OTA_FORMAT)->Disable();
361  //Only 6 formats in RISC-V
362  } else if (nav.count() > 5) {
363  FindWindow(ID_ADD_OTA_FORMAT)->Disable();
364  } else {
365  FindWindow(ID_ADD_OTA_FORMAT)->Enable();
366  }
367 }
368 
369 
370 /**
371  * Handles the add Operation button event.
372  */
373 void
375 
376  if (selectedOTAFormat() == NULL) {
377  assert(false);
378  }
379  OTAOperationDialog dialog(this, selectedOTAFormat());
380  dialog.ShowModal();
381  updateOperationList();
382 }
383 
384 
385 /**
386  * Handles the delete Operation button event.
387  */
388 void
390  if (selectedOTAFormat() == NULL) {
391  assert(false);
392  }
393  selectedOTAFormat()->removeOperation(selectedOperation());
394  updateOperationList();
395 }
396 
397 
398 /**
399  * Creates the dialog window contents.
400  *
401  * This method was generated with wxDesigner.
402  *
403  * @return Main sizer of the created contents.
404  * @param parent The dialog window.
405  * @param call_fit If true, fits the contents inside the dialog.
406  * @param set_sizer If true, sets the main sizer as dialog contents.
407  */
408 wxSizer*
410  wxWindow *parent, bool call_fit, bool set_sizer) {
411 
412  wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL );
413 
414  wxBoxSizer *item1 = new wxBoxSizer( wxHORIZONTAL );
415 
416  wxStaticBox *item3 = new wxStaticBox( parent, -1, wxT("Instruction OTAFormats:") );
417  wxStaticBoxSizer *item2 = new wxStaticBoxSizer( item3, wxVERTICAL );
418  OTAFormatSizer_ = item2;
419 
420  wxListCtrl *item4 = new wxListCtrl( parent, ID_OTA_FORMAT_LIST, wxDefaultPosition, wxSize(160,200), wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
421  item2->Add( item4, 0, wxGROW|wxALL, 5 );
422 
423  wxBoxSizer *item5 = new wxBoxSizer( wxHORIZONTAL );
424 
425  wxStaticText *item6 = new wxStaticText( parent, ID_LABEL_NAME, wxT("Name:"), wxDefaultPosition, wxDefaultSize, 0 );
426  item5->Add( item6, 0, wxALIGN_CENTER|wxALL, 5 );
427 
428  wxTextCtrl *item7 = new wxTextCtrl( parent, ID_NAME, wxT(""), wxDefaultPosition, wxSize(120,-1), 0 );
429  item5->Add( item7, 0, wxALIGN_CENTER|wxALL, 5 );
430 
431  item2->Add( item5, 0, wxGROW|wxALL, 5 );
432 
433  wxBoxSizer *item8 = new wxBoxSizer( wxHORIZONTAL );
434 
435  wxButton *item9 = new wxButton( parent, ID_ADD_OTA_FORMAT, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
436  item8->Add( item9, 0, wxALIGN_CENTER|wxALL, 5 );
437 
438  wxButton *item10 = new wxButton( parent, ID_DELETE_OTA_FORMAT, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
439  item8->Add( item10, 0, wxALIGN_CENTER|wxALL, 5 );
440 
441  item2->Add( item8, 0, wxALIGN_CENTER|wxALL, 5 );
442 
443  item1->Add( item2, 0, wxGROW|wxALL, 5 );
444 
445  wxStaticBox *item12 = new wxStaticBox( parent, -1, wxT("OTAFormat Operations:") );
446  wxStaticBoxSizer *item11 = new wxStaticBoxSizer( item12, wxVERTICAL );
447  operationSizer_ = item11;
448 
449  wxListCtrl *item13 = new wxListCtrl( parent, ID_OPERATION_LIST, wxDefaultPosition, wxSize(250,245), wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
450  item11->Add( item13, 0, wxGROW|wxALL, 5 );
451 
452  wxBoxSizer *item14 = new wxBoxSizer( wxHORIZONTAL );
453 
454  wxButton *item15 = new wxButton( parent, ID_ADD_OPERATION, wxT("Add..."), wxDefaultPosition, wxDefaultSize, 0 );
455  item14->Add( item15, 0, wxALIGN_CENTER|wxALL, 5 );
456 
457  wxButton *item17 = new wxButton( parent, ID_DELETE_OPERATION, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
458  item14->Add( item17, 0, wxALIGN_CENTER|wxALL, 5 );
459 
460  item11->Add( item14, 0, wxALIGN_CENTER|wxALL, 5 );
461 
462  item1->Add( item11, 0, wxGROW|wxALL, 5 );
463 
464  item0->Add( item1, 0, wxALIGN_CENTER|wxALL, 5 );
465 
466  wxStaticLine *item18 = new wxStaticLine( parent, ID_LINE, wxDefaultPosition, wxSize(20,-1), wxLI_HORIZONTAL );
467  item0->Add( item18, 0, wxGROW|wxALL, 5 );
468 
469  wxGridSizer *item19 = new wxGridSizer( 2, 0, 0 );
470 
471  wxButton *item20 = new wxButton( parent, ID_HELP, wxT("&Help"), wxDefaultPosition, wxDefaultSize, 0 );
472  item19->Add( item20, 0, wxALL, 5 );
473 
474  wxBoxSizer *item21 = new wxBoxSizer( wxHORIZONTAL );
475 
476  wxButton *item22 = new wxButton( parent, wxID_OK, wxT("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
477  item21->Add( item22, 0, wxALIGN_CENTER|wxALL, 5 );
478 
479  wxButton *item23 = new wxButton( parent, wxID_CANCEL, wxT("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
480  item21->Add( item23, 0, wxALIGN_CENTER|wxALL, 5 );
481 
482  item19->Add( item21, 0, wxALL, 5 );
483 
484  item0->Add( item19, 0, wxGROW, 5 );
485 
486  if (set_sizer)
487  {
488  parent->SetSizer( item0 );
489  if (call_fit)
490  item0->SetSizeHints( parent );
491  }
492 
493  return item0;
494 }
WarningDialog
Definition: WarningDialog.hh:42
WxConversion::toWxString
static wxString toWxString(const std::string &source)
OTAFormatListDialog::selectedOperation
std::string selectedOperation()
Definition: OTAFormatListDialog.cc:274
machine
TTAMachine::Machine * machine
the architecture definition of the estimated processor
Definition: EstimatorCmdLineUI.cc:59
ProDeTextGenerator::COMP_AN_OTA_FORMAT
@ COMP_AN_OTA_FORMAT
Name for OTA Format (w/ article).
Definition: ProDeTextGenerator.hh:274
WidgetTools::setLabel
static void setLabel(Texts::TextGenerator *generator, wxWindow *widget, int textID)
Definition: WidgetTools.cc:92
GUITextGenerator::instance
static GUITextGenerator * instance()
Definition: GUITextGenerator.cc:67
TTAMachine::OperationTriggeredFormat::operation
std::string operation(int index) const
Definition: OperationTriggeredFormat.cc:132
GUITextGenerator
Definition: GUITextGenerator.hh:46
GUITextGenerator::TXT_BUTTON_HELP
@ TXT_BUTTON_HELP
Label for help button.
Definition: GUITextGenerator.hh:60
OTAFormatListDialog::onDeleteOperation
void onDeleteOperation(wxCommandEvent &event)
Definition: OTAFormatListDialog.cc:389
WidgetTools.hh
FindWindow
Definition: FindWindow.hh:49
TTAMachine::Machine::Navigator::count
int count() const
Texts::TextGenerator::text
virtual boost::format text(int textId)
Definition: TextGenerator.cc:94
ProDeTextGenerator.hh
OTAFormatListDialog::updateOperationList
void updateOperationList()
Definition: OTAFormatListDialog.cc:183
ProDeTextGenerator
Definition: ProDeTextGenerator.hh:49
OTAFormatListDialog::createContents
wxSizer * createContents(wxWindow *parent, bool call_fit, bool set_sizer)
Definition: OTAFormatListDialog.cc:409
ProDeTextGenerator::MSG_ERROR_SAME_NAME
@ MSG_ERROR_SAME_NAME
Error: Same name exists.
Definition: ProDeTextGenerator.hh:229
assert
#define assert(condition)
Definition: Application.hh:86
OTAFormatListDialog::onOperationSelection
void onOperationSelection(wxListEvent &event)
Definition: OTAFormatListDialog.cc:226
OTAFormatListDialog
Definition: OTAFormatListDialog.hh:44
OTAFormatListDialog.hh
OTAFormatListDialog::~OTAFormatListDialog
virtual ~OTAFormatListDialog()
Definition: OTAFormatListDialog.cc:94
GUITextGenerator::TXT_BUTTON_CANCEL
@ TXT_BUTTON_CANCEL
Label for cancel button.
Definition: GUITextGenerator.hh:55
WarningDialog.hh
TTAMachine::OperationTriggeredFormat::operationCount
int operationCount() const
Definition: OperationTriggeredFormat.cc:127
dummy
SimValue dummy(32)
a dummy simvalue which is given for operands that are not bound
TTAMachine::Machine::Navigator::hasItem
bool hasItem(const std::string &name) const
InformationDialog.hh
WidgetTools::lcStringSelection
static std::string lcStringSelection(wxListCtrl *list, int column)
Definition: WidgetTools.cc:108
GUITextGenerator::TXT_BUTTON_ADD
@ TXT_BUTTON_ADD
Label for an add button.
Definition: GUITextGenerator.hh:53
ProDeTextGenerator::TXT_LABEL_NAME
@ TXT_LABEL_NAME
Label for component name widget.
Definition: ProDeTextGenerator.hh:56
Machine.hh
Bus.hh
EVT_LIST_ITEM_SELECTED
FUImplementationDialog::onAddExternalPort FUImplementationDialog::onDeleteExternalPort FUImplementationDialog::onArchPortSelection FUImplementationDialog::onArchPortActivation EVT_LIST_ITEM_SELECTED(ID_EXTERNAL_PORT_LIST, FUImplementationDialog::onExternalPortSelection) EVT_LIST_ITEM_ACTIVATED(ID_EXTERNAL_PORT_LIST
TTAMachine::OperationTriggeredFormat
Definition: OperationTriggeredFormat.hh:44
OTAOperationDialog
Definition: OTAOperationDialog.hh:42
GUITextGenerator::TXT_BUTTON_DELETE
@ TXT_BUTTON_DELETE
Label for delete button.
Definition: GUITextGenerator.hh:56
GUITextGenerator.hh
MachineTester.hh
OTAFormatListDialog::TransferDataToWindow
virtual bool TransferDataToWindow()
Definition: OTAFormatListDialog.cc:164
ProDeTextGenerator::instance
static ProDeTextGenerator * instance()
Definition: ProDeTextGenerator.cc:382
ProDeTextGenerator::COMP_OTA_FORMAT
@ COMP_OTA_FORMAT
Name for OTA Format (w/o article).
Definition: ProDeTextGenerator.hh:275
EVT_LIST_ITEM_DESELECTED
FUImplementationDialog::onAddExternalPort FUImplementationDialog::onDeleteExternalPort FUImplementationDialog::onArchPortSelection EVT_LIST_ITEM_DESELECTED(ID_ARCH_PORT_LIST, FUImplementationDialog::onArchPortSelection) EVT_LIST_ITEM_ACTIVATED(ID_ARCH_PORT_LIST
EVT_BUTTON
EVT_BUTTON(ID_EDIT_ARCH_PORT, FUImplementationDialog::onEditArchitecturePort) EVT_BUTTON(ID_ADD_EXTERNAL_PORT
OTAFormatListDialog::validFormatName
bool validFormatName() const
Definition: OTAFormatListDialog.cc:280
GUITextGenerator::TXT_BUTTON_ADD_DIALOG
@ TXT_BUTTON_ADD_DIALOG
Label for add button (with trailing ...).
Definition: GUITextGenerator.hh:54
ProDeTextGenerator::TXT_OTA_FORMATS_BOX
@ TXT_OTA_FORMATS_BOX
OTA Formats box title.
Definition: ProDeTextGenerator.hh:170
OTAFormatListDialog::onAddOTAFormat
void onAddOTAFormat(wxCommandEvent &event)
Definition: OTAFormatListDialog.cc:299
ProDeTextGenerator::TXT_COLUMN_OTA_OPERATION
@ TXT_COLUMN_OTA_OPERATION
Label for OTA operation column in a list.
Definition: ProDeTextGenerator.hh:116
OTAFormatListDialog::selectedOTAFormat
TTAMachine::OperationTriggeredFormat * selectedOTAFormat()
Definition: OTAFormatListDialog.cc:253
OTAFormatListDialog::onOTAFormatName
void onOTAFormatName(wxCommandEvent &event)
Definition: OTAFormatListDialog.cc:352
ProDeTextGenerator::TXT_OTA_FORMATS_DIALOG_TITLE
@ TXT_OTA_FORMATS_DIALOG_TITLE
OTA Formats dialog title.
Definition: ProDeTextGenerator.hh:169
OTAFormatListDialog::onOTAFormatSelection
void onOTAFormatSelection(wxListEvent &event)
Definition: OTAFormatListDialog.cc:212
OTAOperationDialog.hh
ProDeTextGenerator::COMP_MACHINE
@ COMP_MACHINE
Text for machine description.
Definition: ProDeTextGenerator.hh:252
WxConversion.hh
TTAMachine::Machine::Navigator::item
ComponentType * item(int index) const
OperationTriggeredFormat.hh
WidgetTools::setWidgetLabel
static void setWidgetLabel(wxWindow *widget, std::string text)
Definition: WidgetTools.cc:52
OTAFormatListDialog::setTexts
void setTexts()
Definition: OTAFormatListDialog.cc:102
InformationDialog
Definition: InformationDialog.hh:42
TTAMachine
Definition: Assembler.hh:48
WxConversion::toString
static std::string toString(const wxString &source)
ProDeTextGenerator::TXT_OTA_FORMATS_OPERATIONS_BOX
@ TXT_OTA_FORMATS_OPERATIONS_BOX
OTA Formats operations dialog title.
Definition: ProDeTextGenerator.hh:171
ProDeTextGenerator::TXT_COLUMN_NAME
@ TXT_COLUMN_NAME
Label for name column in a list.
Definition: ProDeTextGenerator.hh:105
OTAFormatListDialog::onDeleteOTAFormat
void onDeleteOTAFormat(wxCommandEvent &event)
Definition: OTAFormatListDialog.cc:239
TTAMachine::Machine::Navigator
Definition: Machine.hh:186
END_EVENT_TABLE
END_EVENT_TABLE() using namespace IDF
TTAMachine::Machine
Definition: Machine.hh:73
GUITextGenerator::TXT_BUTTON_OK
@ TXT_BUTTON_OK
Label for OK button.
Definition: GUITextGenerator.hh:59
OTAFormatListDialog::onAddOperation
void onAddOperation(wxCommandEvent &event)
Definition: OTAFormatListDialog.cc:374