Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEMultipleParametersDialog.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// Dialog for edit multiple parameters
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
24
25#include "GNEDialog.h"
26
27// ===========================================================================
28// class definitions
29// ===========================================================================
30
33class GNEViewNet;
34
35// ===========================================================================
36// class definitions
37// ===========================================================================
38
42
43public:
44
45 // ===========================================================================
46 // class ParametersValues
47 // ===========================================================================
48
49 class ParametersValues : protected FXGroupBox {
52
53
54 class ParameterRow;
55
56 public:
58 ParametersValues(FXHorizontalFrame* frame);
59
62
64 void setParameters(const std::vector<std::pair<std::string, std::string> >& newParameters);
65
67 void addParameter(std::pair<std::string, std::string> newParameter);
68
70 void clearParameters();
71
73 const std::vector<ParameterRow*> getParameterRows() const;
74
76 bool keyExist(const std::string& key) const;
77
81 long onPaint(FXObject* o, FXSelector f, void* p);
82
84 long onCmdSetAttribute(FXObject*, FXSelector, void*);
85
87 long onCmdButtonPress(FXObject*, FXSelector, void*);
88
90
91 protected:
93 FOX_CONSTRUCTOR(ParametersValues)
94
95 private:
98
99 public:
101 ParameterRow(ParametersValues* ParametersValues, FXVerticalFrame* verticalFrameParent);
102
105
107 void disableRow();
108
110 void enableRow(const std::string& parameter, const std::string& value) const;
111
113 void toggleAddButton();
114
116 bool isButtonInAddMode() const;
117
119 void copyValues(const ParameterRow& other);
120
122 FXTextField* keyField;
123
125 FXTextField* valueField;
126
128 FXButton* button;
129
132
133 private:
135 FXHorizontalFrame* horizontalFrame;
136 };
137
139 FXLabel* myKeyLabel;
140
142 FXVerticalFrame* myVerticalFrameRow;
143
145 std::vector<ParameterRow*> myParameterRows;
146 };
147
148 // ===========================================================================
149 // class ParametersOperations
150 // ===========================================================================
151
152 class ParametersOperations : protected FXGroupBox {
155
156 public:
158 ParametersOperations(FXVerticalFrame* frame, GNEMultipleParametersDialog* ParameterDialogParent);
159
162
166 long onCmdLoadParameters(FXObject*, FXSelector, void*);
167
169 long onCmdSaveParameters(FXObject*, FXSelector, void*);
170
172 long onCmdClearParameters(FXObject*, FXSelector, void*);
173
175 long onCmdSortParameters(FXObject*, FXSelector, void*);
176
178 long onCmdHelpParameter(FXObject*, FXSelector, void*);
179
181
182 protected:
184 FOX_CONSTRUCTOR(ParametersOperations)
185
186 private:
190 public:
192 GNEParameterHandler(ParametersOperations* ParametersOperationsParent, const std::string& file);
193
196
199
205 void myStartElement(int element, const SUMOSAXAttributes& attrs);
206
207 private:
210 };
211
214
216 FXButton* mySortButton;
217
219 FXButton* myClearButton;
220
222 FXButton* myLoadButton;
223
225 FXButton* mySaveButton;
226
228 FXButton* myHelpButton;
229 };
230
231 // ===========================================================================
232 // class ParametersOptions
233 // ===========================================================================
234
235 class ParametersOptions : protected FXGroupBox {
236
237 public:
239 ParametersOptions(FXVerticalFrame* frame);
240
243
245 bool onlyForExistentKeys() const;
246
247 private:
249 FXCheckButton* myOnlyForExistentKeys;
250 };
251
254
257
259 void runInternalTest(const InternalTestStep::DialogArgument* dialogArgument);
260
263
265 long onCmdAccept(FXObject*, FXSelector, void*);
266
268 long onCmdCancel(FXObject*, FXSelector, void*);
269
271 long onCmdReset(FXObject*, FXSelector, void*);
272
274
275protected:
277 FOX_CONSTRUCTOR(GNEMultipleParametersDialog)
278
279
281
284
287
290
291private:
294
297};
ParametersOperations * myParametersOperationsParent
pointer to ParametersOperations parent
void myStartElement(int element, const SUMOSAXAttributes &attrs)
Called on the opening of a tag;.
long onCmdSortParameters(FXObject *, FXSelector, void *)
event when user press sort parameters button
long onCmdHelpParameter(FXObject *, FXSelector, void *)
event when user press help parameters button
long onCmdSaveParameters(FXObject *, FXSelector, void *)
event when user press save parameters button
long onCmdClearParameters(FXObject *, FXSelector, void *)
event when user press clear parameters button
GNEMultipleParametersDialog * myParameterDialogParent
pointer to Shape Frame Parent
FXCheckButton * myOnlyForExistentKeys
apply changes only for existent keys
bool onlyForExistentKeys() const
apply changes to all elements
void enableRow(const std::string &parameter, const std::string &value) const
enable row
void copyValues(const ParameterRow &other)
copy values of other parameter Row
FXHorizontalFrame * horizontalFrame
frame in which elements of ParameterRow are placed
bool isButtonInAddMode() const
check if remove button is in mode "add"
bool keyExist(const std::string &key) const
check if given key exist already
FXVerticalFrame * myVerticalFrameRow
vertical frame in which rows are placed
void setParameters(const std::vector< std::pair< std::string, std::string > > &newParameters)
set parameters
const std::vector< ParameterRow * > getParameterRows() const
get vector with the ParameterRows
std::vector< ParameterRow * > myParameterRows
vector with the ParameterRows
long onCmdSetAttribute(FXObject *, FXSelector, void *)
event when user change an attribute
void addParameter(std::pair< std::string, std::string > newParameter)
add a single parameter
FXLabel * myKeyLabel
label for key (its neccesary because has to be resized in every onPaint() iteration)
long onCmdButtonPress(FXObject *, FXSelector, void *)
event when user press a remove (or add) button
ParametersOperations * myParametersOperations
pointer to parameters operations
long onCmdAccept(FXObject *, FXSelector, void *)
event after press accept button
long onCmdCancel(FXObject *, FXSelector, void *)
event after press cancel button
GNEAttributesEditorType * myAttributesEditor
FOX need this.
ParametersOptions * myParametersOptions
pointer to parameters options
ParametersValues * myParametersValues
pointer to parameters values
void runInternalTest(const InternalTestStep::DialogArgument *dialogArgument)
run internal test
long onCmdReset(FXObject *, FXSelector, void *)
event after press reset button
dialog arguments, used for certain modal dialogs that can not be edited using tab
Encapsulated SAX-Attributes.
SAX-handler base for SUMO-files.