Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNETLSTable.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
18// Table used in GNETLSFrame for editing TLS programs
19/****************************************************************************/
20#ifndef GNETLSTable_h
21#define GNETLSTable_h
22#include <config.h>
23
24#include <vector>
27
28// ===========================================================================
29// class declaration
30// ===========================================================================
31
33class MFXLabelTooltip;
35
36// ===========================================================================
37// class definitions
38// ===========================================================================
39
40class GNETLSTable : public FXHorizontalFrame {
42 FXDECLARE(GNETLSTable)
43
44public:
47
50
52 void enable();
53
55 void disable();
56
59
61 void recalcTableWidth();
62
64 void clearTable();
65
67 void setItemText(FXint row, FXint column, const std::string& text);
68
70 std::string getItemText(const int row, const int column) const;
71
73 int getNumRows() const;
74
76 int getCurrentSelectedRow() const;
77
79 void selectRow(const int rowIndex);
80
82 void setColumnLabelTop(const int column, const std::string& text, const std::string& tooltip = "");
83
85 void setColumnLabelBot(const int column, const std::string& text);
86
99 void setTableSize(const std::string& columnsType, const int numberRow);
100
102 long testTable(const InternalTestStep::TLSTableTest* tableTest);
103
106
108 long onFocusRow(FXObject*, FXSelector, void*);
109
111 long onCmdAddPhasePressed(FXObject*, FXSelector, void*);
112
114 long onCmdEditRow(FXObject*, FXSelector, void*);
115
117 long onCmdKeyPress(FXObject*, FXSelector, void*);
118
120 long onCmdAddPhase(FXObject*, FXSelector, void*);
121
123 long onCmdDuplicatePhase(FXObject*, FXSelector, void*);
124
126 long onCmdAddPhaseAllRed(FXObject*, FXSelector, void*);
127
129 long onCmdAddPhaseAllYellow(FXObject*, FXSelector, void*);
130
132 long onCmdAddPhaseAllGreen(FXObject*, FXSelector, void*);
133
135 long onCmdAddPhaseAllGreenPriority(FXObject*, FXSelector, void*);
136
138 long onCmdRemovePhase(FXObject*, FXSelector, void*);
139
141 long onCmdMoveUpPhase(FXObject*, FXSelector, void*);
142
144 long onCmdMoveDownPhase(FXObject*, FXSelector, void*);
145
147
148protected:
150 FOX_CONSTRUCTOR(GNETLSTable)
151
152
154
155 public:
157 Cell(GNETLSTable* TLSTable, MFXTextFieldIcon* textField, int col, int row);
158
160 Cell(GNETLSTable* TLSTable, FXLabel* indexLabel, FXLabel* indexLabelBold, int col, int row);
161
163 Cell(GNETLSTable* TLSTable, MFXButtonTooltip* button, int col, int row);
164
166 Cell(GNETLSTable* TLSTable, int col, int row);
167
169 ~Cell();
170
172 void enable();
173
175 void disable();
176
178 bool hasFocus() const;
179
181 void setFocus();
182
184 double getDoubleValue() const;
185
187 void setTooltip(const std::string& toolTip);
188
190 MFXTextFieldIcon* getTextField() const;
191
193 FXLabel* getIndexLabel() const;
194
196 MFXMenuButtonTooltip* getAddButton() const;
197
199 MFXButtonTooltip* getButton();
200
202 MFXButtonTooltip* getAddPhaseButton();
203
205 MFXButtonTooltip* getDuplicatePhaseButton();
206
208 MFXButtonTooltip* getAddAllRedPhaseButton();
209
211 MFXButtonTooltip* getAddAllYellowPhaseButton();
212
214 MFXButtonTooltip* getAddAllGreenPhaseButton();
215
217 MFXButtonTooltip* getAddAllGreenPriorityPhaseButton();
218
220 void showIndexLabelNormal();
221
223 void showIndexLabelBold();
224
226 int getCol() const;
227
229 int getRow() const;
230
232 char getType() const;
233
235 void hideMenuButtonPopup();
236
238 void disableButton();
239
240 private:
242 GNETLSTable* myTLSTable = nullptr;
243
245 MFXTextFieldIcon* myTextField = nullptr;
246
248 FXLabel* myIndexLabel = nullptr;
249
251 FXLabel* myIndexLabelBold = nullptr;
252
254 MFXButtonTooltip* myButton = nullptr;
255
257 FXPopup* myMenuButtonPopup = nullptr;
258
260 MFXMenuButtonTooltip* myAddButton = nullptr;
261
263 MFXButtonTooltip* myAddPhaseButton = nullptr;
264
266 MFXButtonTooltip* myDuplicatePhaseButton = nullptr;
267
269 MFXButtonTooltip* myAddAllRedButton = nullptr;
270
272 MFXButtonTooltip* myAddAllYellowButton = nullptr;
273
275 MFXButtonTooltip* myAddAllGreenButton = nullptr;
276
278 MFXButtonTooltip* myAddAllGreenPriorityButton = nullptr;
279
281 const int myCol;
282
284 const int myRow;
285
287 bool myDisableButton = false;
288
290 Cell();
291 };
292
294 class Column {
295
296 public:
298 Column(GNETLSTable* table, const int index, const char type);
299
301 ~Column();
302
304 FXVerticalFrame* getVerticalCellFrame() const;
305
307 char getType() const;
308
310 FXString getColumnLabelTop() const;
311
313 void setColumnLabelTop(const std::string& text, const std::string& tooltip);
314
316 void setColumnLabelBot(const std::string& text);
317
320
322 void setColumnWidth(const int colWidth);
323
324 private:
327
329 FXVerticalFrame* myVerticalFrame = nullptr;
330
333
335 FXVerticalFrame* myVerticalCellFrame = nullptr;
336
338 FXLabel* myBotLabel = nullptr;
339
341 const int myIndex;
342
344 const char myType;
345
347 bool isTextFieldColumn() const;
348
350 Column();
351 };
352
354 class Row {
355
356 public:
358 Row(GNETLSTable* table);
359
361 ~Row();
362
364 std::string getText(int index) const;
365
367 void setText(int index, const std::string& text) const;
368
370 const std::vector<Cell*>& getCells() const;
371
373 void disableButtons();
374
375 protected:
378
380 std::vector<Cell*> myCells;
381
382 private:
384 Row();
385 };
386
388 void updateIndexLabel();
389
392
394 bool moveFocus();
395
397 FXFont* myProgramFont = nullptr;
398
400 FXFont* myIndexFont = nullptr;
401
403 FXFont* myIndexSelectedFont = nullptr;
404
407
409 std::vector<Column*> myColumns;
410
412 std::vector<Row*> myRows;
413
416
417private:
419 GNETLSTable(const GNETLSTable&) = delete;
420
423};
424
425#endif
FOX needs this.
const int myRow
row index
const int myCol
column index
int getColumnMinimumWidth()
get column minimum width
const char myType
column type
FXVerticalFrame * myVerticalFrame
vertical frame
FXLabel * myBotLabel
column bot label
Column()
default constructor
FXVerticalFrame * getVerticalCellFrame() const
get vertical cell frame
FXVerticalFrame * myVerticalCellFrame
vertical frame
void setColumnLabelTop(const std::string &text, const std::string &tooltip)
set column label top
bool isTextFieldColumn() const
check if current type correspond to a textField
GNETLSTable * myTable
pointer to table
char getType() const
get column type
const int myIndex
column index
FXString getColumnLabelTop() const
get column label top
void setColumnLabelBot(const std::string &text)
set column label boit
MFXLabelTooltip * myTopLabel
column top tooltip label
void setColumnWidth(const int colWidth)
set colum width
void setText(int index, const std::string &text) const
set text
Row()
default constructor
GNETLSTable * myTable
poiner to table parent
std::vector< Cell * > myCells
list wtih cells
void disableButtons()
disable row buttons
const std::vector< Cell * > & getCells() const
get cells
std::string getText(int index) const
get text
GNETLSTable(const GNETLSTable &)=delete
Invalidated duplicate constructor.
GNETLSEditorFrame::TLSPhases * myTLSPhasesParent
@frame pointer to TLSEditorFrame phases parent
int getNumRows() const
Get number of rows.
int myCurrentSelectedRow
current selected row
long onCmdDuplicatePhase(FXObject *, FXSelector, void *)
called when a duplicate phase button is pressed
long onCmdEditRow(FXObject *, FXSelector, void *)
called when a row is modified
FXFont * myIndexSelectedFont
font for index selected
long onCmdAddPhaseAllRed(FXObject *, FXSelector, void *)
called when an add all green red phase button is pressed
long onCmdAddPhaseAllGreenPriority(FXObject *, FXSelector, void *)
called when an add all green red phase button is pressed
long testTable(const InternalTestStep::TLSTableTest *tableTest)
test table (using internal tests)
long onCmdAddPhase(FXObject *, FXSelector, void *)
called when an add phase button is pressed
void updateIndexLabel()
update index labels
long onFocusRow(FXObject *, FXSelector, void *)
called when a row is focused
void setColumnLabelBot(const int column, const std::string &text)
Change column bottom text.
void clearTable()
clear table
void selectRow(const int rowIndex)
Select a row.
long onCmdMoveUpPhase(FXObject *, FXSelector, void *)
called when a move up phase button is pressed
~GNETLSTable()
destructor (Called automatically)
int getCurrentSelectedRow() const
Get current selected row.
long onCmdAddPhasePressed(FXObject *, FXSelector, void *)
called when add phase button is selected
FXFont * myIndexFont
font for index
void enable()
Enable table.
long onCmdAddPhaseAllYellow(FXObject *, FXSelector, void *)
called when an add all green red phase button is pressed
std::string getItemText(const int row, const int column) const
Return cell text.
long onCmdKeyPress(FXObject *, FXSelector, void *)
called when a key is pressed
long onCmdAddPhaseAllGreen(FXObject *, FXSelector, void *)
called when an add all green red phase button is pressed
bool moveFocus()
move focus to current row
void setColumnLabelTop(const int column, const std::string &text, const std::string &tooltip="")
Change column header text.
void setItemText(FXint row, FXint column, const std::string &text)
Modify cell text.
std::vector< Row * > myRows
rows
long onCmdRemovePhase(FXObject *, FXSelector, void *)
called when a remove phase button is pressed
void updateAccumulatedDuration()
update accumulated duration();
void setTableSize(const std::string &columnsType, const int numberRow)
Set the table size to nr rows and nc columns; all existing items will be removed. Format: s -> select...
FXFont * myProgramFont
font for the phase table
void disable()
Disable table.
long onCmdMoveDownPhase(FXObject *, FXSelector, void *)
called when a move up phase button is pressed
void recalcTableWidth()
recalc width (call when all labels and contents are fill)
GNETLSTable & operator=(const GNETLSTable &)=delete
Invalidated assignment operator.
GNETLSEditorFrame::TLSPhases * getTLSPhasesParent() const
@frame get pointer to TLSEditorFrame phases parent
std::vector< Column * > myColumns
columns
struct used for test TLS Tables
every row value