Eclipse SUMO - Simulation of Urban MObility
GNEPythonToolDialogElements.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 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 // Elements used in GNEPythonToolDialog
19 /****************************************************************************/
20 
23 #include <netedit/GNEViewNet.h>
24 #include <netedit/GNENet.h>
29 
31 #include "GNEPythonToolDialog.h"
32 
33 // ===========================================================================
34 // static members
35 // ===========================================================================
36 
39 
40 // ===========================================================================
41 // FOX callback mapping
42 // ===========================================================================
43 
48 };
49 
52 };
53 
57 };
58 
63 };
64 
69 };
70 
75 };
76 
81 };
82 
87 };
88 
89 // Object implementation
90 FXIMPLEMENT_ABSTRACT(GNEPythonToolDialogElements::Argument, FXHorizontalFrame, ArgumentMap, ARRAYNUMBER(ArgumentMap))
91 FXIMPLEMENT(GNEPythonToolDialogElements::EdgeVectorArgument, GNEPythonToolDialogElements::Argument, EdgeVectorArgumentMap, ARRAYNUMBER(EdgeVectorArgumentMap))
92 FXIMPLEMENT(GNEPythonToolDialogElements::FileNameArgument, GNEPythonToolDialogElements::Argument, FileNameArgumentMap, ARRAYNUMBER(FileNameArgumentMap))
93 FXIMPLEMENT(GNEPythonToolDialogElements::NetworkArgument, GNEPythonToolDialogElements::FileNameArgument, NetworkArgumentMap, ARRAYNUMBER(NetworkArgumentMap))
94 FXIMPLEMENT(GNEPythonToolDialogElements::AdditionalArgument, GNEPythonToolDialogElements::FileNameArgument, AdditionalArgumentMap, ARRAYNUMBER(AdditionalArgumentMap))
95 FXIMPLEMENT(GNEPythonToolDialogElements::RouteArgument, GNEPythonToolDialogElements::FileNameArgument, RouteArgumentMap, ARRAYNUMBER(RouteArgumentMap))
96 FXIMPLEMENT(GNEPythonToolDialogElements::DataArgument, GNEPythonToolDialogElements::FileNameArgument, DataArgumentMap, ARRAYNUMBER(DataArgumentMap))
97 FXIMPLEMENT(GNEPythonToolDialogElements::SumoConfigArgument, GNEPythonToolDialogElements::FileNameArgument, SumoConfigArgumentMap, ARRAYNUMBER(SumoConfigArgumentMap))
98 
99 
100 // ===========================================================================
101 // member method definitions
102 // ===========================================================================
103 
104 // ---------------------------------------------------------------------------
105 // GNEPythonToolDialogElements::Category - methods
106 // ---------------------------------------------------------------------------
107 
108 GNEPythonToolDialogElements::Category::Category(FXVerticalFrame* argumentFrame, const std::string& category) :
109  FXHorizontalFrame(argumentFrame, GUIDesignAuxiliarHorizontalFrame) {
110  // create category label
111  new FXLabel(this, category.c_str(), nullptr, GUIDesignLabel(JUSTIFY_NORMAL));
112  // create category
113  create();
114 }
115 
116 
118 
119 // ---------------------------------------------------------------------------
120 // GNEPythonToolDialogElements::Argument - methods
121 // ---------------------------------------------------------------------------
122 
123 GNEPythonToolDialogElements::Argument::Argument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame, const std::string& parameter, Option* option) :
124  FXHorizontalFrame(argumentFrame, GUIDesignAuxiliarHorizontalFrame),
125  myToolDialogParent(toolDialogParent),
126  myOption(option),
127  myDefaultValue(toolDialogParent->getPythonTool()->getDefaultValue(parameter)) {
128  // create parameter label
129  myParameterLabel = new MFXLabelTooltip(this, toolDialogParent->myGNEApp->getStaticTooltipMenu(), parameter.c_str(), nullptr, GUIDesignLabelThickedFixed(0));
130  myParameterLabel->setTipText((option->getTypeName() + ": " + option->getDescription()).c_str());
131  // set color if is required
132  if (option->isRequired()) {
133  myParameterLabel->setTextColor(FXRGB(0, 0, 255));
134  }
135  // create horizontal frame for textField
136  myElementsFrame = new FXHorizontalFrame(this, GUIDesignAuxiliarFrame);
137  // Create reset button
139  // create argument
140  create();
141 }
142 
143 
145 
146 
149  return myParameterLabel;
150 }
151 
152 
153 const std::string
155  if (getValue() != myDefaultValue) {
156  return ("-" + std::string(myParameterLabel->getText().text()) + " " + getValue() + " ");
157  } else {
158  return "";
159  }
160 }
161 
162 
163 bool
165  if (myOption->isRequired()) {
166  return getValue() != myDefaultValue;
167  } else {
168  return true;
169  }
170 }
171 
172 
173 long
175  // just reset value
176  reset();
177  return 1;
178 }
179 
180 
181 long
183  if (getValue() == myDefaultValue) {
184  return myResetButton->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
185  } else {
186  return myResetButton->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
187  }
188 }
189 
190 
192 
193 // ---------------------------------------------------------------------------
194 // GNEPythonToolDialogElements::FileNameArgument - methods
195 // ---------------------------------------------------------------------------
196 
198  const std::string name, Option* option) :
199  FileNameArgument(toolDialogParent, argumentFrame, name, option, "") {
200 }
201 
202 
203 void
205  myFilenameTextField->setText(myDefaultValue.c_str());
206  myOption->set(myDefaultValue, myDefaultValue, false);
207  myOption->resetDefault();
208 }
209 
210 
211 long
213  // get file
214  const auto file = GNEApplicationWindowHelper::openFileDialog(this, (myOption->getSubTopic() == "output"), myOption->getListSeparator() != "");
215  // check that file is valid
216  if (file.size() > 0) {
217  myFilenameTextField->setText(file.c_str(), TRUE);
218  }
219  return 1;
220 }
221 
222 
223 long
225  myOption->resetWritable();
226  if (myFilenameTextField->getText().empty()) {
227  reset();
228  } else {
229  myOption->set(myFilenameTextField->getText().text(), myFilenameTextField->getText().text(), false);
230  }
231  return 1;
232 }
233 
234 
236 
237 
239  const std::string name, Option* option, const std::string& useCurrent) :
240  Argument(toolDialogParent, argumentFrame, name, option) {
241  // check if create current button
242  if (useCurrent.size() > 0) {
245  myCurrentButton->setTipText(TLF("Use current % file", useCurrent).c_str());
246  myCurrentButton->create();
247  }
248  // Create Open button
251  myOpenFilenameButton->setTipText(TLF("Select % file", useCurrent).c_str());
252  myOpenFilenameButton->create();
253  // create text field for filename
255  myFilenameTextField->create();
256  // set value
257  myFilenameTextField->setText(option->getValueString().c_str());
258 }
259 
260 const std::string
262  return myFilenameTextField->getText().text();
263 }
264 
265 // ---------------------------------------------------------------------------
266 // GNEPythonToolDialogElements::EdgeVectorArgument - methods
267 // ---------------------------------------------------------------------------
268 
270  const std::string name, Option* option) :
271  Argument(toolDialogParent, argumentFrame, name, option) {
274  myCurrentEdgesButton->setTipText(TL("Use current selected edges"));
275  myCurrentEdgesButton->create();
276  // create text field for string
278  myEdgeVectorTextField->create();
279  // set value
280  myEdgeVectorTextField->setText(option->getValueString().c_str());
281 }
282 
283 
284 void
286  myEdgeVectorTextField->setText(myDefaultValue.c_str());
287  myOption->set(myDefaultValue, myDefaultValue, false);
288  myOption->resetDefault();
289 }
290 
291 
292 long
294  myOption->resetWritable();
295  if (myEdgeVectorTextField->getText().empty()) {
296  reset();
297  } else {
298  myOption->set(myEdgeVectorTextField->getText().text(), myEdgeVectorTextField->getText().text(), false);
299  }
300  return 1;
301 }
302 
303 
304 long
306  // obtain list of selected edges
307  const auto selectedEdges = myToolDialogParent->getGNEApplicationWindow()->getViewNet()->getNet()->getAttributeCarriers()->getSelectedEdges();
308  // convert list to string
309  std::string selectedEdgesStr;
310  for (const auto& edge : selectedEdges) {
311  selectedEdgesStr.append(edge->getID());
312  if (edge != selectedEdges.back()) {
313  selectedEdgesStr.append(" ");
314  }
315  }
316  myEdgeVectorTextField->setText(selectedEdgesStr.c_str(), TRUE);
317  return 1;
318 }
319 
320 
321 long
323  // get view net
324  const auto viewNet = myToolDialogParent->getGNEApplicationWindow()->getViewNet();
325  if (viewNet == nullptr) {
326  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
327  } else if (viewNet->getNet()->getAttributeCarriers()->getNumberOfSelectedEdges() == 0) {
328  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
329  } else {
330  return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
331  }
332 }
333 
334 
336 
337 
338 const std::string
340  return myEdgeVectorTextField->getText().text();
341 }
342 
343 // ---------------------------------------------------------------------------
344 // GNEPythonToolDialogElements::NetworkArgument - methods
345 // ---------------------------------------------------------------------------
346 
348  const std::string name, Option* option) :
349  FileNameArgument(toolDialogParent, argumentFrame, name, option, TL("network")) {
350 }
351 
352 
353 long
355  // get network file
356  const auto networkFile = GNEApplicationWindowHelper::openNetworkFileDialog(this, (myOption->getSubTopic() == "output"), myOption->getListSeparator() != "");
357  // check that file is valid
358  if (networkFile.size() > 0) {
359  myFilenameTextField->setText(networkFile.c_str(), TRUE);
360  }
361  return 1;
362 }
363 
364 
365 long
367  myFilenameTextField->setText(OptionsCont::getOptions().getString("sumo-net-file").c_str(), TRUE);
368  return 1;
369 }
370 
371 
372 long
374  if (myToolDialogParent->getGNEApplicationWindow()->getViewNet() == nullptr) {
375  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
376  } else if (OptionsCont::getOptions().getString("sumo-net-file").empty()) {
377  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
378  } else {
379  return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
380  }
381 }
382 
383 
385 
386 // ---------------------------------------------------------------------------
387 // GNEPythonToolDialogElements::AdditionalArgument - methods
388 // ---------------------------------------------------------------------------
389 
391  const std::string name, Option* option) :
392  FileNameArgument(toolDialogParent, argumentFrame, name, option, TL("additional")) {
393 }
394 
395 
396 long
398  // get additional file
399  const auto additionalFile = GNEApplicationWindowHelper::openAdditionalFileDialog(this, (myOption->getSubTopic() == "output"), myOption->getListSeparator() != "");
400  // check that file is valid
401  if (additionalFile.size() > 0) {
402  myFilenameTextField->setText(additionalFile.c_str(), TRUE);
403  }
404  return 1;
405 }
406 
407 
408 long
410  myFilenameTextField->setText(OptionsCont::getOptions().getString("additional-files").c_str(), TRUE);
411  return 1;
412 }
413 
414 
415 long
417  if (myToolDialogParent->getGNEApplicationWindow()->getViewNet() == nullptr) {
418  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
419  } else if (OptionsCont::getOptions().getString("additional-files").empty()) {
420  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
421  } else {
422  return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
423  }
424 }
425 
426 
428 
429 // ---------------------------------------------------------------------------
430 // GNEPythonToolDialogElements::RouteArgument - methods
431 // ---------------------------------------------------------------------------
432 
433 GNEPythonToolDialogElements::RouteArgument::RouteArgument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame,
434  const std::string name, Option* option) :
435  FileNameArgument(toolDialogParent, argumentFrame, name, option, TL("route")) {
436 }
437 
438 
439 long
441  // get route file
442  const auto routeFile = GNEApplicationWindowHelper::openRouteFileDialog(this, (myOption->getSubTopic() == "output"), myOption->getListSeparator() != "");
443  // check that file is valid
444  if (routeFile.size() > 0) {
445  myFilenameTextField->setText(routeFile.c_str(), TRUE);
446  }
447  return 1;
448 }
449 
450 
451 long
453  myFilenameTextField->setText(OptionsCont::getOptions().getString("route-files").c_str(), TRUE);
454  return 1;
455 }
456 
457 
458 long
460  if (myToolDialogParent->getGNEApplicationWindow()->getViewNet() == nullptr) {
461  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
462  } else if (OptionsCont::getOptions().getString("route-files").empty()) {
463  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
464  } else {
465  return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
466  }
467 }
468 
469 
471 
472 // ---------------------------------------------------------------------------
473 // GNEPythonToolDialogElements::DataArgument - methods
474 // ---------------------------------------------------------------------------
475 
476 GNEPythonToolDialogElements::DataArgument::DataArgument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame,
477  const std::string name, Option* option) :
478  FileNameArgument(toolDialogParent, argumentFrame, name, option, TL("data")) {
479 }
480 
481 
482 long
484  // get data file
485  const auto dataFile = GNEApplicationWindowHelper::openDataFileDialog(this, (myOption->getSubTopic() == "output"), myOption->getListSeparator() != "");
486  // check that file is valid
487  if (dataFile.size() > 0) {
488  myFilenameTextField->setText(dataFile.c_str(), TRUE);
489  }
490  return 1;
491 }
492 
493 
494 long
496  myFilenameTextField->setText(OptionsCont::getOptions().getString("data-files").c_str(), TRUE);
497  return 1;
498 }
499 
500 
501 long
503  if (myToolDialogParent->getGNEApplicationWindow()->getViewNet() == nullptr) {
504  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
505  } else if (OptionsCont::getOptions().getString("data-files").empty()) {
506  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
507  } else {
508  return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
509  }
510 }
511 
512 
514 
515 // ---------------------------------------------------------------------------
516 // GNEPythonToolDialogElements::SumoConfigArgument - methods
517 // ---------------------------------------------------------------------------
518 
520  const std::string name, Option* option) :
521  FileNameArgument(toolDialogParent, argumentFrame, name, option, TL("sumo config")) {
522 }
523 
524 
525 long
527  // get sumoConfig file
528  const auto sumoConfigFile = GNEApplicationWindowHelper::openSumoConfigFileDialog(this, (myOption->getSubTopic() == "output"), myOption->getListSeparator() != "");
529  // check that file is valid
530  if (sumoConfigFile.size() > 0) {
531  myFilenameTextField->setText(sumoConfigFile.c_str(), TRUE);
532  }
533  return 1;
534 }
535 
536 
537 long
539  myFilenameTextField->setText(OptionsCont::getOptions().getString("sumocfg-file").c_str(), TRUE);
540  return 1;
541 }
542 
543 
544 long
546  if (myToolDialogParent->getGNEApplicationWindow()->getViewNet() == nullptr) {
547  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
548  } else if (OptionsCont::getOptions().getString("sumocfg-file").empty()) {
549  return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr);
550  } else {
551  return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr);
552  }
553 }
554 
555 
557 
558 // ---------------------------------------------------------------------------
559 // GNEPythonToolDialogElements::EdgeArgument - methods
560 // ---------------------------------------------------------------------------
561 
562 GNEPythonToolDialogElements::EdgeArgument::EdgeArgument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame, const std::string name, Option* option) :
563  Argument(toolDialogParent, argumentFrame, name, option) {
564  // create text field for int
566  myEdgeTextField->create();
567  // set value
568  myEdgeTextField->setText(option->getValueString().c_str());
569 }
570 
571 
572 void
574  myEdgeTextField->setText(myDefaultValue.c_str());
575  myOption->set(myDefaultValue, myDefaultValue, false);
576  myOption->resetDefault();
577 }
578 
579 
580 long
582  myOption->resetWritable();
583  if (myEdgeTextField->getText().empty()) {
584  reset();
585  } else {
586  myOption->set(myEdgeTextField->getText().text(), myEdgeTextField->getText().text(), false);
587  }
588  return 1;
589 }
590 
591 
592 const std::string
594  return myEdgeTextField->getText().text();
595 }
596 
597 // ---------------------------------------------------------------------------
598 // GNEPythonToolDialogElements::StringArgument - methods
599 // ---------------------------------------------------------------------------
600 
601 GNEPythonToolDialogElements::StringArgument::StringArgument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame, const std::string name, Option* option) :
602  Argument(toolDialogParent, argumentFrame, name, option) {
603  // create text field for string
605  myStringTextField->create();
606  // set value
607  myStringTextField->setText(option->getValueString().c_str());
608 }
609 
610 
611 void
613  myStringTextField->setText(myDefaultValue.c_str());
614  myOption->set(myDefaultValue, myDefaultValue, false);
615  myOption->resetDefault();
616 }
617 
618 
619 long
621  myOption->resetWritable();
622  if (myStringTextField->getText().empty()) {
623  reset();
624  } else {
625  myOption->set(myStringTextField->getText().text(), myStringTextField->getText().text(), false);
626  }
627  return 1;
628 }
629 
630 
631 const std::string
633  return myStringTextField->getText().text();
634 }
635 
636 // ---------------------------------------------------------------------------
637 // GNEPythonToolDialogElements::IntArgument - methods
638 // ---------------------------------------------------------------------------
639 
640 GNEPythonToolDialogElements::IntArgument::IntArgument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame, const std::string name, Option* option) :
641  Argument(toolDialogParent, argumentFrame, name, option) {
642  // create text field for int
644  myIntTextField->create();
645  // set value
646  myIntTextField->setText(option->getValueString().c_str());
647 }
648 
649 
650 void
652  myIntTextField->setText(myDefaultValue.c_str());
653  if (myDefaultValue.empty()) {
654  myOption->set(INVALID_INT_STR, "", false);
655  } else {
656  myOption->set(myDefaultValue, myDefaultValue, false);
657  }
658  myOption->resetDefault();
659 }
660 
661 
662 long
664  myOption->resetWritable();
665  if (myIntTextField->getText().empty()) {
666  reset();
667  } else {
668  myOption->set(myIntTextField->getText().text(), myIntTextField->getText().text(), false);
669  }
670  return 1;
671 }
672 
673 
674 const std::string
676  return myIntTextField->getText().text();
677 }
678 
679 // ---------------------------------------------------------------------------
680 // GNEPythonToolDialogElements::FloatArgument - methods
681 // ---------------------------------------------------------------------------
682 
683 GNEPythonToolDialogElements::FloatArgument::FloatArgument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame, const std::string name, Option* option) :
684  Argument(toolDialogParent, argumentFrame, name, option) {
685  // create text field for float
687  myFloatTextField->create();
688  // set value
689  myFloatTextField->setText(option->getValueString().c_str());
690 }
691 
692 
693 void
695  myFloatTextField->setText(myDefaultValue.c_str());
696  if (myDefaultValue.empty()) {
697  myOption->set(INVALID_DOUBLE_STR, "", false);
698  } else {
699  myOption->set(myDefaultValue, myDefaultValue, false);
700  }
701  myOption->resetDefault();
702 }
703 
704 
705 long
707  myOption->resetWritable();
708  if (myFloatTextField->getText().empty()) {
709  reset();
710  } else {
711  myOption->set(myFloatTextField->getText().text(), myFloatTextField->getText().text(), false);
712  }
713  return 1;
714 }
715 
716 
717 const std::string
719  return myFloatTextField->getText().text();
720 }
721 
722 // ---------------------------------------------------------------------------
723 // GNEPythonToolDialogElements::BoolArgument - methods
724 // ---------------------------------------------------------------------------
725 
726 GNEPythonToolDialogElements::BoolArgument::BoolArgument(GNEPythonToolDialog* toolDialogParent, FXVerticalFrame* argumentFrame, const std::string name, Option* option) :
727  Argument(toolDialogParent, argumentFrame, name, option) {
728  // create check button
730  myCheckButton->create();
731  // set value
732  if (option->getBool()) {
733  myCheckButton->setCheck(TRUE);
734  myCheckButton->setText(TL("true"));
735  } else {
736  myCheckButton->setCheck(FALSE);
737  myCheckButton->setText(TL("false"));
738  }
739 }
740 
741 
742 void
744  if (myDefaultValue == "True") {
745  myCheckButton->setCheck(TRUE);
746  myCheckButton->setText(TL("true"));
747  } else {
748  myCheckButton->setCheck(FALSE);
749  myCheckButton->setText(TL("false"));
750  }
751  myOption->set(myDefaultValue, myDefaultValue, false);
752  myOption->resetDefault();
753 }
754 
755 
756 long
758  myOption->resetWritable();
759  if (myCheckButton->getCheck() == TRUE) {
760  myCheckButton->setText(TL("true"));
761  myOption->set("True", "True", false);
762  if (myDefaultValue == "True") {
763  myOption->resetDefault();
764  }
765  } else {
766  myCheckButton->setText(TL("false"));
767  myOption->set("False", "False", false);
768  if (myDefaultValue == "False") {
769  myOption->resetDefault();
770  }
771  }
772  return 1;
773 }
774 
775 
776 const std::string
778  if (myCheckButton->getCheck() == TRUE) {
779  return "True";
780  } else {
781  return "False";
782  }
783 }
784 
785 /****************************************************************************/
FXDEFMAP(GNEPythonToolDialogElements::Argument) ArgumentMap[]
@ MID_GNE_SET_ATTRIBUTE
attribute edited
Definition: GUIAppEnum.h:933
@ MID_GNE_SELECT
select element
Definition: GUIAppEnum.h:951
@ MID_GNE_USE_CURRENT
use current network/additional/route/edgedata
Definition: GUIAppEnum.h:1027
@ MID_GNE_RESET
reset element
Definition: GUIAppEnum.h:941
#define GUIDesignButtonIcon
button only with icon
Definition: GUIDesigns.h:97
#define GUIDesignTextField
Definition: GUIDesigns.h:65
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition: GUIDesigns.h:405
#define GUIDesignLabel(justify)
Definition: GUIDesigns.h:249
#define GUIDesignTextFieldNCol
Num of column of text field.
Definition: GUIDesigns.h:80
#define GUIDesignCheckButton
checkButton placed in left position
Definition: GUIDesigns.h:198
#define GUIDesignTextFieldRestricted(type)
text field extended over Frame with thick frame (int)
Definition: GUIDesigns.h:68
#define GUIDesignAuxiliarFrame
design for auxiliar (Without borders) frame extended in all directions
Definition: GUIDesigns.h:396
#define GUIDesignLabelThickedFixed(width)
label thicked, icon before text, text centered and custom width
Definition: GUIDesigns.h:258
@ OPEN
open icons
#define TL(string)
Definition: MsgHandler.h:315
#define TLF(string,...)
Definition: MsgHandler.h:317
const double INVALID_DOUBLE
invalid double
Definition: StdDefs.h:64
const int INVALID_INT
invalid int
Definition: StdDefs.h:61
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Definition: ToString.h:46
long onUpdUseCurrentAdditionalFile(FXObject *sender, FXSelector, void *)
enable or disable use current button
long onCmdOpenFilename(FXObject *, FXSelector, void *)
Called when user press open filename button.
long onCmdUseCurrentAdditionalFile(FXObject *, FXSelector, void *)
Called when user press use current button.
virtual long onCmdSetValue(FXObject *, FXSelector, void *)=0
Called when user changes argument value.
MFXLabelTooltip * myParameterLabel
parameter label
bool requiredAttributeSet() const
check if required attribute is set
long onUpdResetValue(FXObject *, FXSelector, void *)
Called when user press reset button.
MFXLabelTooltip * getParameterLabel() const
get parameter label
long onCmdResetValue(FXObject *, FXSelector, void *)
Called when user press reset button.
FXHorizontalFrame * myElementsFrame
auxiliar elements frame
const std::string getArgument() const
get argument
long onCmdSetValue(FXObject *, FXSelector, void *)
Called when user set bool value.
BoolArgument(GNEPythonToolDialog *toolDialogParent, FXVerticalFrame *argumentFrame, const std::string name, Option *option)
constructor
long onUpdUseCurrentDataFile(FXObject *sender, FXSelector, void *)
enable or disable use current button
long onCmdUseCurrentDataFile(FXObject *, FXSelector, void *)
Called when user press use current button.
long onCmdOpenFilename(FXObject *, FXSelector, void *)
Called when user press open filename button.
EdgeArgument(GNEPythonToolDialog *toolDialogParent, FXVerticalFrame *argumentFrame, const std::string name, Option *option)
constructor
long onCmdSetValue(FXObject *, FXSelector, void *)
Called when user set int value.
long onCmdUseCurrent(FXObject *, FXSelector, void *)
Called when user press use seleted edges button.
long onCmdSetValue(FXObject *, FXSelector, void *)
Called when user changes argument value.
MFXButtonTooltip * myCurrentEdgesButton
current edges button
FXTextField * myEdgeVectorTextField
edge vectgor textField
long onUpdUseCurrent(FXObject *sender, FXSelector, void *)
enable or disable use selected edges button
long onCmdSetValue(FXObject *, FXSelector, void *)
Called when user set filename.
long onCmdOpenFilename(FXObject *, FXSelector, void *)
Called when user press open filename button.
FloatArgument(GNEPythonToolDialog *toolDialogParent, FXVerticalFrame *argumentFrame, const std::string name, Option *option)
constructor
static const std::string INVALID_DOUBLE_STR
invalid float in string format
long onCmdSetValue(FXObject *, FXSelector, void *)
Called when user set float value.
static const std::string INVALID_INT_STR
invalid int in string format
IntArgument(GNEPythonToolDialog *toolDialogParent, FXVerticalFrame *argumentFrame, const std::string name, Option *option)
constructor
long onCmdSetValue(FXObject *, FXSelector, void *)
Called when user set int value.
long onCmdUseCurrentNetworkFile(FXObject *, FXSelector, void *)
Called when user press use current button.
long onUpdUseCurrentNetworkFile(FXObject *sender, FXSelector, void *)
enable or disable use current button
long onCmdOpenFilename(FXObject *, FXSelector, void *)
Called when user press open filename button.
long onCmdUseCurrentRouteFile(FXObject *, FXSelector, void *)
Called when user press use current button.
long onCmdOpenFilename(FXObject *, FXSelector, void *)
Called when user press open filename button.
long onUpdUseCurrentRouteFile(FXObject *sender, FXSelector, void *)
enable or disable use current button
StringArgument(GNEPythonToolDialog *toolDialogParent, FXVerticalFrame *argumentFrame, const std::string name, Option *option)
constructor
long onCmdSetValue(FXObject *, FXSelector, void *)
Called when user set string value.
long onCmdOpenFilename(FXObject *, FXSelector, void *)
Called when user press open filename button.
long onCmdUseCurrentSumoConfigFile(FXObject *, FXSelector, void *)
Called when user press use current button.
long onUpdUseCurrentSumoConfigFile(FXObject *sender, FXSelector, void *)
enable or disable use current button
elements used in Tool Dialogs
Dialog for python tool dialog.
GNEApplicationWindow * myGNEApp
pointer to GNEApplicationWindow
static FXButton * buildFXButton(FXComposite *p, const std::string &text, const std::string &tip, const std::string &help, FXIcon *ic, FXObject *tgt, FXSelector sel, FXuint opts=BUTTON_NORMAL, FXint x=0, FXint y=0, FXint w=0, FXint h=0, FXint pl=DEFAULT_PAD, FXint pr=DEFAULT_PAD, FXint pt=DEFAULT_PAD, FXint pb=DEFAULT_PAD)
build button
Definition: GUIDesigns.cpp:128
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
MFXStaticToolTip * getStaticTooltipMenu() const
get static toolTip for menus
A class representing a single program option.
Definition: Option.h:72
const std::string & getDescription() const
Returns the description of what this option does.
Definition: Option.cpp:202
virtual const std::string & getTypeName() const
Returns the mml-type name of this option.
Definition: Option.cpp:257
virtual bool getBool() const
Returns the stored boolean value.
Definition: Option.cpp:77
bool isRequired() const
check if option is required
Definition: Option.cpp:214
const std::string & getValueString() const
Returns the string-representation of the value.
Definition: Option.cpp:106
static OptionsCont & getOptions()
Retrieves the options.
Definition: OptionsCont.cpp:60
Definition: json.hpp:4471
static std::string openRouteFileDialog(FXWindow *window, bool save, bool multi=false)
open route file dialog
static std::string openAdditionalFileDialog(FXWindow *window, bool save, bool multi=false)
open additional dialog
static std::string openDataFileDialog(FXWindow *window, bool save, bool multi=false)
open data file dialog
static std::string openSumoConfigFileDialog(FXWindow *window, bool save, bool multi=false)
open SUMO config file dialog
static std::string openFileDialog(FXWindow *window, bool save, bool multi)
open general file dialog
static std::string openNetworkFileDialog(FXWindow *window, bool save, bool multi=false)
open netconvert file dialog