Eclipse SUMO - Simulation of Urban MObility
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
GNEContainerPlanFrame.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-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// The Widget for add ContainerPlan elements
19/****************************************************************************/
20
22#include <netedit/GNENet.h>
31
33
34// ===========================================================================
35// method definitions
36// ===========================================================================
37
39 GNEFrame(viewParent, viewNet, TL("ContainerPlans")) {
40
41 // create container types selector module
43
44 // Create plan selector
46
47 // Create attributes editor
49
50 // create plan creator Module
52
53 // Create GNEElementTree module
55
56 // create plan creator legend
58}
59
60
62
63
64void
66 // get containers maps
67 const auto& containers = myViewNet->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_CONTAINER);
68 const auto& containerFlows = myViewNet->getNet()->getAttributeCarriers()->getDemandElements().at(SUMO_TAG_CONTAINERFLOW);
69 // Only show modules if there is at least one container
70 if ((containers.size() > 0) || (containerFlows.size() > 0)) {
71 // show container selector
73 // refresh tag selector
75 } else {
76 // hide all modules
83 }
84 // show frame
86}
87
88
89void
91 // reset candidate edges
92 for (const auto& edge : myViewNet->getNet()->getAttributeCarriers()->getEdges()) {
93 edge.second->resetCandidateFlags();
94 }
95 // enable undo/redo
97 // hide frame
99}
100
101
102bool
104 // first check that we clicked over an AC
105 if (viewObjects.getAttributeCarrierFront() == nullptr) {
106 return false;
107 }
108 // check if we have to select a new container
110 if (viewObjects.getDemandElementFront() && viewObjects.getDemandElementFront()->getTagProperty()->isContainer()) {
111 // continue depending of number of demand elements under cursor
112 if (viewObjects.getDemandElements().size() > 1) {
113 // Filter containers
115 } else {
116 // select new container
118 }
119 return true;
120 } else {
121 myViewNet->setStatusBarText(TL("Current selected container isn't valid."));
122 return false;
123 }
124 }
125 // finally check that container plan selected is valid
127 myViewNet->setStatusBarText(TL("Current selected container plan isn't valid."));
128 return false;
129 }
130 // continue depending of marked elements
131 if (myPlanSelector->markRoutes() && viewObjects.getDemandElementFront() &&
133 return myPlanCreator->addRoute(viewObjects.getDemandElementFront());
134 } else if (myPlanSelector->markStoppingPlaces() && viewObjects.getAdditionalFront() &&
135 (viewObjects.getAdditionalFront()->getTagProperty()->isStoppingPlace())) {
137 } else if (myPlanSelector->markJunctions() && viewObjects.getJunctionFront()) {
138 return myPlanCreator->addJunction(viewObjects.getJunctionFront());
139 } else if (myPlanSelector->markEdges() && viewObjects.getLaneFront()) {
140 return myPlanCreator->addEdge(viewObjects.getLaneFront());
141 } else if (myPlanSelector->markTAZs() && viewObjects.getTAZFront()) {
142 return myPlanCreator->addTAZ(viewObjects.getTAZFront());
143 } else {
144 return false;
145 }
146}
147
148
149void
153
154
159
160
165
166
171
172
177
178// ===========================================================================
179// protected
180// ===========================================================================
181
182void
184 // first check if container is valid
186 // show container attributes
188 // set path creator mode depending if previousEdge exist
190 // show path creator mode
192 // show legend
194 // show container hierarchy
196 } else {
197 // hide modules
201 }
202 } else {
203 // hide modules if tag selected isn't valid
208 }
209}
210
211
212void
214 // check if a valid container was selected
216 // show container plan tag selector
218 // now check if container plan selected is valid
220 // call tag selected
221 tagSelected();
222 } else {
227 }
228 } else {
229 // hide modules if container selected isn't valid
235 }
236}
237
238
239bool
240GNEContainerPlanFrame::createPath(const bool /*useLastRoute*/) {
241 // first check that all attributes are valid
243 return false;
244 } else {
245 // declare route handler
248 // check if container plan can be created
251 // refresh GNEElementTree
253 // abort path creation
255 // refresh using tagSelected
256 tagSelected();
257 // refresh containerPlan attributes
259 // enable show all container plans
261 return true;
262 } else {
263 return false;
264 }
265 }
266}
267
268/****************************************************************************/
#define TL(string)
Definition MsgHandler.h:305
@ SUMO_TAG_CONTAINERFLOW
@ SUMO_TAG_CONTAINER
@ SUMO_TAG_ROUTE
description of a route
@ GNE_ATTR_DEMAND_FILE
demand demand file
void enableUndoRedoTemporally()
enable undo-redo temporally (for example, after creating an edge)
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
void showAttributesEditor(GNEAttributeCarrier *AC, const bool primaryAttributeEditor)
edit attributes of the given AC (usually the edited template AC)
void refreshAttributesEditor()
refresh attribute editor
bool checkAttributes(const bool showWarning)
check if current edited attributes are valid
void hideAttributesEditor()
hide attribute editor
GNEElementTree * myContainerHierarchy
Container Hierarchy.
GNEContainerPlanFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
GNEElementTree * getContainerHierarchy() const
get Container Hierarchy
GNEDemandElementSelector * getContainerSelector() const
get container selectors
void resetSelectedContainer()
reset selected container
GNEPlanCreator * getPlanCreator() const
get plan creator module
GNEPlanCreatorLegend * myPlanCreatorLegend
plan creator legend
GNEPlanSelector * getPlanSelector() const
get containerPlan selector
void demandElementSelected()
selected demand element in DemandElementSelector
GNEDemandElementSelector * myContainerSelector
Container selectors.
GNEPlanSelector * myPlanSelector
containerPlan selector
bool addContainerPlanElement(const GNEViewNetHelper::ViewObjectsSelector &viewObjects)
add container plan element
GNEAttributesEditor * myContainerPlanAttributesEditor
container plan attributes editor
void tagSelected()
Tag selected in GNETagSelector.
GNEPlanCreator * myPlanCreator
plan Creator
bool createPath(const bool useLastRoute)
create path
virtual std::string getAttribute(SumoXMLAttr key) const =0
void setDemandElements(const std::vector< GNEDemandElement * > &demandElements)
set multiple demand elements to filter
GNEDemandElement * getPreviousPlanElement() const
get previous plan element
void showDemandElementSelector()
show demand element selector
void setDemandElement(GNEDemandElement *demandElement)
set current demand element
GNEDemandElement * getCurrentDemandElement() const
get current demand element
void hideDemandElementSelector()
hide demand element selector
void hideHierarchicalElementTree()
hide GNEElementTree
void refreshHierarchicalElementTree()
refresh GNEElementTree
void showHierarchicalElementTree(GNEAttributeCarrier *AC)
show GNEElementTree
GNEViewNet * myViewNet
FOX need this.
Definition GNEFrame.h:121
virtual void show()
show Frame
Definition GNEFrame.cpp:119
virtual void hide()
hide Frame
Definition GNEFrame.cpp:128
const std::unordered_map< SumoXMLTag, std::unordered_map< const GUIGlObject *, GNEDemandElement * >, std::hash< int > > & getDemandElements() const
get demand elements
const std::map< std::string, GNEEdge * > & getEdges() const
map with the ID and pointer to edges of net
GNEPathManager * getDemandPathManager()
get demand path manager
Definition GNENet.cpp:176
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
Definition GNENet.cpp:146
bool addStoppingPlace(GNEAdditional *stoppingPlace)
add from to stoppingPlace
bool addRoute(GNEDemandElement *route)
add route
void hidePathCreatorModule()
show GNEPlanCreator
bool addTAZ(GNEAdditional *taz)
add TAZ
bool addJunction(GNEJunction *junction)
add junction
bool addEdge(GNELane *lane)
add edge (clicking over lanes)
void abortPathCreation()
abort path creation
void showPlanCreatorModule(const GNEPlanSelector *planSelector, const GNEDemandElement *previousPlan)
show plan creator for the given tag property
void showPlanCreatorLegend()
show plan creator legend
void hidePlanCreatorLegend()
hide Legend modul
GNEDemandElement * getCurrentPlanTemplate() const
get current plan template
bool markJunctions() const
check if mark junctions with dotted contours
void showPlanSelector()
show plan selector
bool markRoutes() const
check if mark routes with dotted contours
void hidePlanSelector()
plan item selector
bool markTAZs() const
check if mark TAZs with dotted contours
bool markStoppingPlaces() const
check if mark stoppingPlaces with dotted contours
bool markEdges() const
check if mark edges with dotted contours
void refreshPlanSelector()
refresh plan selector (used when frameParent is show)
bool buildContainerPlan(const GNEDemandElement *planTemplate, GNEDemandElement *containerParent, GNEAttributesEditor *containerPlanAttributesEditor, GNEPlanCreator *planCreator, const bool centerAfterCreation)
build container plan
bool isContainer() const
return true if tag correspond to a container element
bool isStoppingPlace() const
additional elements
SumoXMLTag getTag() const
get Tag vinculated with this attribute Property
class used to group all variables related with objects under cursor after a click over view
GNEAttributeCarrier * getAttributeCarrierFront() const
get front attribute carrier or a pointer to nullptr
const std::vector< GNEDemandElement * > & getDemandElements() const
get vector with Demand Elements
GNETAZ * getTAZFront() const
get front TAZ or a pointer to nullptr
GNELane * getLaneFront() const
get front lane or a pointer to nullptr
GNEAdditional * getAdditionalFront() const
get front additional element or a pointer to nullptr
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
GNEDemandElement * getDemandElementFront() const
get front demand element or a pointer to nullptr
GNENet * getNet() const
get the net object
GNEViewParent * getViewParent() const
get the net object
const GNEViewNetHelper::DemandViewOptions & getDemandViewOptions() const
get demand view options
void setStatusBarText(const std::string &text)
set statusBar text
A single child window which contains a view of the simulation area.
GNEApplicationWindow * getGNEAppWindows() const
get GNE Application Windows
void setChecked(bool val, const bool inform=false)
check or uncheck this MFXCheckableButton
MFXCheckableButton * menuCheckShowAllContainerPlans
show all container plans