91 addValuesFromSubordinatedElements(this, edge);
100 addValuesFromSubordinatedElements(this, lane);
132 const bool runningInternalTests = internalTest ? internalTest->
isRunning() :
false;
178 addValuesFromSubordinatedElements(this, additionalParent);
181 addValuesFromSubordinatedElements(this, demandParent);
184 addValuesFromSubordinatedElements(this, genericDataParent);
187 addValuesFromSubordinatedElements(this, additionalChild);
190 addValuesFromSubordinatedElements(this, demandChild);
193 addValuesFromSubordinatedElements(this, genericDataChild);
212 const std::string plural = (number > 1) ?
"s" :
"";
220 "' cannot be deleted because it has " +
toString(number) +
" " + type +
" element" + plural +
".\n" +
221 "To delete it, uncheck 'protect " + type +
" elements'.";
224 "' cannot be deleted because it is part of " +
toString(number) +
" " + type +
" element" + plural +
".\n" +
225 "To delete it, uncheck 'protect " + type +
" elements'.";
228 if (!runningInternalTests) {
320 return sender->handle(
this, FXSEL(SEL_COMMAND, ID_DISABLE),
nullptr);
322 return sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
331 return sender->handle(
this, FXSEL(SEL_COMMAND, ID_DISABLE),
nullptr);
333 return sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
369 const auto& attributeCarriers =
myViewNet->getNet()->getAttributeCarriers();
375 myViewNet->getNet()->disableUpdateGeometry();
377 if (
myViewNet->getEditModes().isCurrentSupermodeNetwork()) {
379 const auto selectedJunctions = attributeCarriers->getSelectedJunctions();
380 for (
const auto& selectedJunction : selectedJunctions) {
384 const auto selectedEdges = attributeCarriers->getSelectedEdges();
385 for (
const auto& selectedEdge : selectedEdges) {
389 const auto selectedLanes = attributeCarriers->getSelectedLanes();
390 for (
const auto& selectedLane : selectedLanes) {
394 const auto selectedConnections = attributeCarriers->getSelectedConnections();
395 for (
const auto& selectedConnection : selectedConnections) {
399 const auto selectedCrossings = attributeCarriers->getSelectedCrossings();
400 for (
const auto& selectedCrossing : selectedCrossings) {
404 while (attributeCarriers->getNumberOfSelectedAdditionals() > 0) {
405 myViewNet->getNet()->deleteAdditional(attributeCarriers->getSelectedAdditionals().front(),
myViewNet->getUndoList());
407 }
else if (
myViewNet->getEditModes().isCurrentSupermodeDemand()) {
409 while (attributeCarriers->getNumberOfSelectedDemandElements() > 0) {
410 myViewNet->getNet()->deleteDemandElement(attributeCarriers->getSelectedDemandElements().front(),
myViewNet->getUndoList());
412 }
else if (
myViewNet->getEditModes().isCurrentSupermodeData()) {
414 auto selectedGenericDatas = attributeCarriers->getSelectedGenericDatas();
415 for (
const auto& selectedGenericData : selectedGenericDatas) {
416 myViewNet->getNet()->deleteGenericData(selectedGenericData,
myViewNet->getUndoList());
420 myViewNet->getNet()->enableUpdateGeometry();
430 myViewNet->getNet()->disableUpdateGeometry();
433 std::vector<GUIGlObject*> filteredGLObjects;
435 for (
const auto& glObject : viewObjects.
getGLObjects()) {
436 if (glObject->isGLObjectLocked()) {
439 filteredGLObjects.push_back(glObject);
444 if (filteredGLObjects.size() > 1) {
446 myViewNet->openDeleteDialogAtCursor(filteredGLObjects);
447 }
else if (filteredGLObjects.size() > 0) {
448 filteredGLObjects.front()->deleteGLObject();
451 !viewObjects.
getGLObjects().front()->isGLObjectLocked()) {
455 myViewNet->getNet()->enableUpdateGeometry();
468 }
else if (AC->getTagProperty()->getTag() ==
SUMO_TAG_POLY) {
471 }
else if (AC->getTagProperty()->getTag() ==
SUMO_TAG_TAZ) {
498 if (
myViewNet->getEditModes().isCurrentSupermodeNetwork()) {
500 for (
const auto& junction :
myViewNet->getNet()->getAttributeCarriers()->getJunctions()) {
501 if (junction.second->isAttributeCarrierSelected()) {
505 for (
const auto& edge : junction.second->getGNEIncomingEdges()) {
506 if (edge->isAttributeCarrierSelected()) {
510 for (
const auto& lane : edge->getChildLanes()) {
511 if (lane->isAttributeCarrierSelected()) {
516 for (
const auto& connection : edge->getGNEConnections()) {
517 if (connection->isAttributeCarrierSelected()) {
523 for (
const auto& crossing : junction.second->getGNECrossings()) {
524 if (crossing->isAttributeCarrierSelected()) {
530 for (
const auto& additionalTag :
myViewNet->getNet()->getAttributeCarriers()->getAdditionals()) {
531 for (
const auto& additional : additionalTag.second) {
532 if (additional.second->isAttributeCarrierSelected()) {
537 }
else if (
myViewNet->getEditModes().isCurrentSupermodeDemand()) {
539 for (
const auto& demandElementTag :
myViewNet->getNet()->getAttributeCarriers()->getDemandElements()) {
540 for (
const auto& demandElement : demandElementTag.second) {
541 if (demandElement.second->isAttributeCarrierSelected()) {
546 }
else if (
myViewNet->getEditModes().isCurrentSupermodeData()) {
548 for (
const auto& genericDataTag :
myViewNet->getNet()->getAttributeCarriers()->getGenericDatas()) {
549 for (
const auto& genericData : genericDataTag.second) {
550 if (genericData.second->isAttributeCarrierSelected()) {
FXDEFMAP(GNEDeleteFrame::DeleteOptions) DeleteOptionsMap[]
@ MID_GNE_SET_ATTRIBUTE
attribute edited
@ MID_GNE_UNPROTECT_ALL
unprotect all elements
@ MID_GNE_PROTECT_ALL
protect all elements
#define GUIDesignCheckButton
checkButton placed in left position
@ SUMO_TAG_TAZ
a traffic assignment zone
@ SUMO_TAG_POLY
begin/end of the description of a polygon
@ SUMO_TAG_EDGE
begin/end of the description of an edge
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
GNEInternalTest * getInternalTest() const
get netedit test system
FXCheckButton * myDeleteOnlyGeometryPoints
checkbox for enable/disable delete only geometry points
~DeleteOptions()
destructor
long onCmdSetOption(FXObject *, FXSelector, void *)
GNEDeleteFrame * myDeleteFrameParent
FOX need this.
DeleteOptions(GNEDeleteFrame *deleteFrameParent)
FOX-declaration.
bool deleteOnlyGeometryPoints() const
check if only delete geometry points checkbox is enabled
long onUpdUnprotectAll(FXObject *, FXSelector, void *)
update unprotect all elements
FXCheckButton * myProtectGenericDatas
checkbox for enable/disable protect generic datas
bool protectGenericDatas() const
check if protect generic datas checkbox is enabled
GNEDeleteFrame * getDeleteFrameParent() const
get delete frame parent
bool protectAdditionals() const
check if protect additional elements checkbox is enabled
long onCmdUnprotectAll(FXObject *, FXSelector, void *)
unprotect all elements
FXCheckButton * myProtectAdditionals
checkbox for enable/disable protect additionals
~ProtectElements()
destructor
FXCheckButton * myProtectDemandElements
checkbox for enable/disable protect demand elements
FXCheckButton * myProtectTAZs
checkbox for enable/disable protect TAZs
FXButton * myUnprotectAllButton
unprotect all button
GNEDeleteFrame * myDeleteFrameParent
FOX need this.
bool protectDemandElements() const
check if protect demand elements checkbox is enabled
long onUpdProtectAll(FXObject *, FXSelector, void *)
update protect all elements
long onCmdProtectAll(FXObject *, FXSelector, void *)
FXButton * myProtectAllButton
protect all button
bool protectTAZs() const
check if protect TAZ elements checkbox is enabled
ProtectElements(GNEDeleteFrame *deleteFrameParent)
FOX-declaration.
size_t myDemandElementParents
parent demand elements
~SubordinatedElements()
destructor
size_t myGenericDataChilds
child demand elements
void openWarningDialog(const std::string &elementType, const size_t number, const bool isChild, const bool runningInternalTests)
size_t myGenericDataParents
parent demand elements
const GNEAttributeCarrier * myAttributeCarrier
parent of SubordinatedElements
size_t myDemandElementChilds
child demand elements
size_t myAdditionalParents
parent additionals (except TAZs)
GNEViewNet * myViewNet
pointer to view net
size_t myAdditionalChilds
child additional (except TAZs)
bool checkElements(const ProtectElements *protectElements)
if element can be removed
void addValuesFromSubordinatedElements(SubordinatedElements *originalSE, const SubordinatedElements &newSE)
add in originalSE the values of newSE
SubordinatedElements(const GNEJunction *junction)
constructor (for junctions)
bool selectedACsToDelete() const
check if there is selected ACs to delete
ProtectElements * getProtectElements() const
get protect elements modul
bool removeGeometryPoint(const GNEViewNetHelper::ViewObjectsSelector &viewObjects)
remove geometry point
DeleteOptions * getDeleteOptions() const
get delete options modul
~GNEDeleteFrame()
Destructor.
DeleteOptions * myDeleteOptions
modul for delete options
void removeSelectedAttributeCarriers()
remove selected attribute carriers (element)
GNEDeleteFrame(GNEViewParent *viewParent, GNEViewNet *viewNet)
Constructor.
void hide()
hide delete frame
ProtectElements * myProtectElements
modul for protect elements
void removeAttributeCarrier(const GNEViewNetHelper::ViewObjectsSelector &viewObjects)
remove attribute carrier (element)
void show()
show delete frame
GNEMoveElement * getMoveElement() const override
methods to retrieve the elements linked to this edge
GNEViewNet * getViewNet() const
get view net
GNEViewNet * myViewNet
FOX need this.
virtual void show()
show Frame
virtual void hide()
hide Frame
GNEFrame(GNEViewParent *viewParent, GNEViewNet *viewNet, const std::string &frameLabel)
Constructor.
const GNEHierarchicalContainerChildren< GNEEdge * > & getChildEdges() const
get child edges
const GNEHierarchicalContainerParents< GNEAdditional * > & getParentAdditionals() const
get parent additionals
const GNEHierarchicalContainerParents< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const GNEHierarchicalContainerChildren< GNEGenericData * > & getChildGenericDatas() const
return child generic data elements
const GNEHierarchicalContainerChildren< GNELane * > & getChildLanes() const
get child lanes
const GNEHierarchicalContainerParents< GNEGenericData * > & getParentGenericDatas() const
get parent demand elements
const GNEHierarchicalContainerChildren< GNEAdditional * > & getChildAdditionals() const
return child additionals
const GNEHierarchicalContainerChildren< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
virtual void removeGeometryPoint(const Position clickedPosition, GNEUndoList *undoList)=0
remove geometry point in the clicked position
GNEMoveElement * getMoveElement() const override
methods to retrieve the elements linked to this poly
GNEMoveElement * getMoveElement() const override
methods to retrieve the elements linked to this TAZ
class used to group all variables related with objects under cursor after a click over view
const std::vector< GNEAttributeCarrier * > & getAttributeCarriers() const
get vector with ACs
GNEPoly * getPolyFront() const
get front Poly or a pointer to nullptr
GNEEdge * getEdgeFront() const
get front edge or a pointer to nullptr
GNETAZ * getTAZFront() const
get front TAZ or a pointer to nullptr
const std::vector< GUIGlObject * > & getGLObjects() const
get vector with GL objects
GNEViewParent * getViewParent() const
get the net object
A single child window which contains a view of the simulation area.
GNEApplicationWindow * getGNEAppWindows() const
get GNE Application Windows
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
bool isRunning() const
check if test is running
MFXGroupBoxModule (based on FXGroupBox).
FXVerticalFrame * getCollapsableFrame()
get collapsable frame (used by all elements that will be collapsed if button is toggled)
MFXGroupBoxModule(GNEFrame *frame, const std::string &text, const int options=Options::COLLAPSIBLE)
constructor for frames
A point in 2D or 3D with translation and scaling methods.
static std::vector< GUIGlObject * > filterElementsByLayer(const std::vector< GUIGlObject * > &GLObjects)
filter elements based on the layer