SUMO - Simulation of Urban MObility
GNETLSEditorFrame.h
Go to the documentation of this file.
1 /****************************************************************************/
7 // The Widget for modifying traffic lights
8 /****************************************************************************/
9 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
10 // Copyright (C) 2001-2016 DLR (http://www.dlr.de/) and contributors
11 /****************************************************************************/
12 //
13 // This file is part of SUMO.
14 // SUMO is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation, either version 3 of the License, or
17 // (at your option) any later version.
18 //
19 /****************************************************************************/
20 #ifndef GNETLSEditorFrame_h
21 #define GNETLSEditorFrame_h
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #ifdef _MSC_VER
27 #include <windows_config.h>
28 #else
29 #include <config.h>
30 #endif
31 
32 #include "GNEFrame.h"
33 
34 // ===========================================================================
35 // class declarations
36 // ===========================================================================
38 class NBLoadedSUMOTLDef;
39 class GNEEdge;
40 class GNELane;
41 class GNEInternalLane;
42 class GNEJunction;
43 
44 // ===========================================================================
45 // class definitions
46 // ===========================================================================
51 class GNETLSEditorFrame : public GNEFrame {
53  FXDECLARE(GNETLSEditorFrame)
54 
55 public:
60  GNETLSEditorFrame(FXComposite* parent, GNEViewNet* viewNet);
61 
64 
66  void show();
67 
69  void hide();
70 
73  void editJunction(GNEJunction* junction);
74 
79  long onCmdOK(FXObject*, FXSelector, void*);
80 
83  long onCmdCancel(FXObject*, FXSelector, void*);
84 
86  long onCmdToggle(FXObject*, FXSelector, void*);
87 
89  long onCmdGuess(FXObject*, FXSelector, void*);
90 
92  long onCmdDefCreate(FXObject*, FXSelector, void*);
93 
95  long onCmdDefDelete(FXObject*, FXSelector, void*);
96 
98  long onCmdDefOffset(FXObject*, FXSelector, void*);
99 
101  long onCmdDefSwitch(FXObject*, FXSelector, void*);
102 
104  long onCmdDefRename(FXObject*, FXSelector, void*);
105 
107  long onCmdDefSubRename(FXObject*, FXSelector, void*);
108 
110  long onCmdDefAddOff(FXObject*, FXSelector, void*);
111 
113  long onCmdPhaseSwitch(FXObject*, FXSelector, void*);
114 
116  long onCmdPhaseCreate(FXObject*, FXSelector, void*);
117 
119  long onCmdPhaseDelete(FXObject*, FXSelector, void*);
120 
122  long onCmdPhaseEdit(FXObject*, FXSelector, void*);
123 
125  long onCmdMakeRILSAConforming(FXObject*, FXSelector, void*);
126 
128  long onUpdDefSwitch(FXObject*, FXSelector, void*);
129 
131  long onUpdNeedsDef(FXObject*, FXSelector, void*);
132 
134  long onUpdNeedsDefAndPhase(FXObject*, FXSelector, void*);
135 
137  long onUpdDefCreate(FXObject*, FXSelector, void*);
138 
140  long onUpdModified(FXObject*, FXSelector, void*);
142 
144  void handleChange(GNEInternalLane* lane);
145 
147  void handleMultiChange(GNELane* lane, FXObject* obj, FXSelector sel, void* data);
148 
150  bool controlsEdge(GNEEdge& edge) const;
151 
152 protected:
155 
156 private:
158  FXFont* myTableFont;
159 
161  FXLabel* myDescription;
162 
165 
168 
170  typedef std::map<int, std::vector<GNEInternalLane*> > TLIndexMap;
171  TLIndexMap myInternalLanes;
172 
174  std::vector<NBTrafficLightDefinition*> myDefinitions;
175 
178 
180  FXListBox* myDefBox;
181 
183  FXTextField* myOffset;
184 
186  FXLabel* myCycleDuration;
187 
189  FXTable* myPhaseTable;
190 
193 
194 private:
196  void updateDescription() const;
197 
199  void cleanup();
200 
203 
205  void initDefinitions();
206 
209  void initPhaseTable(int index = 0);
210 
212  const std::vector<NBTrafficLightLogic::PhaseDefinition>& getPhases();
213 
215  void updateCycleDuration();
216 
218  static SUMOTime getSUMOTime(const FXString& string);
219 };
220 
221 
222 #endif
223 
224 /****************************************************************************/
225 
TLIndexMap myInternalLanes
long onCmdGuess(FXObject *, FXSelector, void *)
Called when the user presses the button Guess.
std::vector< NBTrafficLightDefinition * > myDefinitions
the list of Definitions for the current junction
FXLabel * myDescription
the label that shows the current editing state
long long int SUMOTime
Definition: SUMOTime.h:43
FXTable * myPhaseTable
table for selecting and rearranging phases and for changing duration
long onUpdNeedsDefAndPhase(FXObject *, FXSelector, void *)
Called when occurs an update of needs definition an dphase.
long onCmdPhaseDelete(FXObject *, FXSelector, void *)
Called when the user deletes a Phase.
int myPhaseIndex
index of the phase being shown
long onCmdDefCreate(FXObject *, FXSelector, void *)
Called when the user creates a TLS.
long onCmdMakeRILSAConforming(FXObject *, FXSelector, void *)
Called when the user makes RILSA.
A loaded (complete) traffic light logic.
void show()
show Frame
long onCmdPhaseSwitch(FXObject *, FXSelector, void *)
Called when the user switchs a Phase.
FXListBox * myDefBox
the listbox for selecting the tl-definition to edit
void hide()
hide Frame
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
The base class for traffic light logic definitions.
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
Definition: GNELane.h:55
void editJunction(GNEJunction *junction)
edits the traffic light for the given junction
GNETLSEditorFrame()
FOX needs this.
void handleMultiChange(GNELane *lane, FXObject *obj, FXSelector sel, void *data)
update phase definition for the current traffic light and phase
std::map< int, std::vector< GNEInternalLane * > > TLIndexMap
the internal lanes belonging the the current junction indexed by their tl-index
long onUpdNeedsDef(FXObject *, FXSelector, void *)
Called when occurs an update of needs definition.
FXFont * myTableFont
font for the phase table
long onCmdDefDelete(FXObject *, FXSelector, void *)
Called when the user deletes a TLS.
long onCmdDefOffset(FXObject *, FXSelector, void *)
Called when the user changes the offset of a TLS.
long onCmdDefSwitch(FXObject *, FXSelector, void *)
Called when the user switchs a TLS.
long onCmdDefAddOff(FXObject *, FXSelector, void *)
Called when the user adds a OFF.
long onCmdCancel(FXObject *, FXSelector, void *)
Called when the user presses the Cancel-button.
bool controlsEdge(GNEEdge &edge) const
whether the given edge is controlled by the currently edited tlDef
long onUpdDefCreate(FXObject *, FXSelector, void *)
Called when occurs an update of create definition.
void buildIinternalLanes(NBTrafficLightDefinition *tlDef)
builds internal lanes for the given tlDef
bool myHaveModifications
whether the current tls was modified
long onCmdPhaseEdit(FXObject *, FXSelector, void *)
Called when the user edits a Phase.
~GNETLSEditorFrame()
Destructor.
void handleChange(GNEInternalLane *lane)
update phase definition for the current traffic light and phase
FXTextField * myOffset
the control for modifying offset
static SUMOTime getSUMOTime(const FXString &string)
converts to SUMOTime
A road/street connecting two junctions (netedit-version)
Definition: GNEEdge.h:55
long onUpdDefSwitch(FXObject *, FXSelector, void *)
Called when occurs an update of switch definition.
void updateCycleDuration()
recomputes cycle duration and updates label
void initDefinitions()
initializes the definitions and corresponding listbox
long onCmdOK(FXObject *, FXSelector, void *)
long onCmdDefSubRename(FXObject *, FXSelector, void *)
Called when the user sub-renames a TLS.
GNEJunction * myCurrentJunction
the junction of the tls is being modified
const std::vector< NBTrafficLightLogic::PhaseDefinition > & getPhases()
the phase of the current traffic light
long onCmdPhaseCreate(FXObject *, FXSelector, void *)
Called when the user creates a Phase.
long onCmdDefRename(FXObject *, FXSelector, void *)
Called when the user renames a TLS.
long onUpdModified(FXObject *, FXSelector, void *)
Called when occurs an update of modified.
NBLoadedSUMOTLDef * myEditedDef
the traffic light definition being edited
void updateDescription() const
update descrition
void cleanup()
cleans up previous lanes
FXLabel * myCycleDuration
label with the cycle duration
long onCmdToggle(FXObject *, FXSelector, void *)
Called when the user presses the button Toogle.
void initPhaseTable(int index=0)
initialies the phase table