Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEAdditionalDialog.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// A abstract class for editing additional elements
19/****************************************************************************/
20
21#include <netedit/GNENet.h>
22#include <netedit/GNEUndoList.h>
23#include <netedit/GNEViewNet.h>
25
27
28#include "GNEAdditionalDialog.h"
29
30// ===========================================================================
31// FOX callback mapping
32// ===========================================================================
33
34FXDEFMAP(GNEAdditionalDialog) GNEAdditionalDialogMap[] = {
35 FXMAPFUNC(SEL_KEYPRESS, 0, GNEAdditionalDialog::onKeyPress),
36 FXMAPFUNC(SEL_KEYRELEASE, 0, GNEAdditionalDialog::onKeyRelease),
37 FXMAPFUNC(SEL_CLOSE, 0, GNEAdditionalDialog::onCmdCancel),
41};
42
43// Object abstract implementation
44FXIMPLEMENT_ABSTRACT(GNEAdditionalDialog, FXTopWindow, GNEAdditionalDialogMap, ARRAYNUMBER(GNEAdditionalDialogMap))
45
46// ===========================================================================
47// member method definitions
48// ===========================================================================
49
50GNEAdditionalDialog::GNEAdditionalDialog(GNEAdditional* editedAdditional, bool updatingElement, int width, int height) :
51 FXTopWindow(editedAdditional->getNet()->getViewNet(), ("Edit '" + editedAdditional->getID() + "' data").c_str(), editedAdditional->getACIcon(), editedAdditional->getACIcon(), GUIDesignDialogBoxExplicit(width, height)),
52 myEditedAdditional(editedAdditional),
53 myUpdatingElement(updatingElement),
54 myChangesDescription("change " + editedAdditional->getTagStr() + " values"),
55 myNumberOfChanges(0) {
56 // create main frame
57 FXVerticalFrame* mainFrame = new FXVerticalFrame(this, GUIDesignAuxiliarFrame);
58 // Create frame for contents
59 myContentFrame = new FXVerticalFrame(mainFrame, GUIDesignContentsFrame);
60 // create buttons centered
61 FXHorizontalFrame* buttonsFrame = new FXHorizontalFrame(mainFrame, GUIDesignHorizontalFrame);
62 new FXHorizontalFrame(buttonsFrame, GUIDesignAuxiliarHorizontalFrame);
63 myKeepOldButton = GUIDesigns::buildFXButton(buttonsFrame, TL("Accept"), "", TL("Close accepting changes"), GUIIconSubSys::getIcon(GUIIcon::ACCEPT), this, MID_GNE_BUTTON_ACCEPT, GUIDesignButtonAccept);
64 myCancelButton = GUIDesigns::buildFXButton(buttonsFrame, TL("Cancel"), "", TL("Close discarding changes"), GUIIconSubSys::getIcon(GUIIcon::CANCEL), this, MID_GNE_BUTTON_CANCEL, GUIDesignButtonCancel);
65 myResetButton = GUIDesigns::buildFXButton(buttonsFrame, TL("Reset"), "", TL("Reset to previous values"), GUIIconSubSys::getIcon(GUIIcon::RESET), this, MID_GNE_BUTTON_RESET, GUIDesignButtonReset);
66 new FXHorizontalFrame(buttonsFrame, GUIDesignAuxiliarHorizontalFrame);
67}
68
69
71 // return focus to GNEViewNet to avoid minimization
72 getParent()->setFocus();
73}
74
75
76FXint
78 // create Dialog
79 create();
80 // show in the given position
81 show(placement);
82 // refresh APP
83 getApp()->refresh();
84 // open as modal dialog (will block all windows until stop() or stopModal() is called)
85 return getApp()->runModalFor(this);
86}
87
88
93
94
95long
96GNEAdditionalDialog::onKeyPress(FXObject* sender, FXSelector sel, void* ptr) {
97 return FXTopWindow::onKeyPress(sender, sel, ptr);
98}
99
100
101long
102GNEAdditionalDialog::onKeyRelease(FXObject* sender, FXSelector sel, void* ptr) {
103 return FXTopWindow::onKeyRelease(sender, sel, ptr);
104}
105
106
107void
109 // change MFXDialogBox title
110 setTitle(newHeader.c_str());
111}
112
113
114void
121
122
123void
125 // commit changes or abort last command group depending of number of changes did
126 if (myNumberOfChanges < myEditedAdditional->getNet()->getViewNet()->getUndoList()->currentCommandGroupSize()) {
128 } else {
130 }
131}
132
133
134void
138
139
140void
146
147
148/****************************************************************************/
FXDEFMAP(GNEAdditionalDialog) GNEAdditionalDialogMap[]
@ MID_GNE_BUTTON_CANCEL
cancel button
@ MID_GNE_BUTTON_RESET
reset button
@ MID_GNE_BUTTON_ACCEPT
accept button
#define GUIDesignDialogBoxExplicit(width, height)
design for dialog box with specific width and height (for example, additional dialogs)
Definition GUIDesigns.h:614
#define GUIDesignButtonAccept
Accept Button.
Definition GUIDesigns.h:156
#define GUIDesignButtonCancel
Cancel Button.
Definition GUIDesigns.h:162
#define GUIDesignContentsFrame
design for the main content frame of every frame/dialog with padding and spacing
Definition GUIDesigns.h:387
#define GUIDesignAuxiliarHorizontalFrame
design for auxiliar (Without borders) horizontal frame used to pack another frames
Definition GUIDesigns.h:399
#define GUIDesignButtonReset
Reset Button.
Definition GUIDesigns.h:165
#define GUIDesignAuxiliarFrame
design for auxiliar (Without borders) frame extended in all directions
Definition GUIDesigns.h:390
#define GUIDesignHorizontalFrame
Horizontal frame extended over frame parent with padding and spacing.
Definition GUIDesigns.h:328
#define TL(string)
Definition MsgHandler.h:305
Dialog to edit sequences, parameters, etc.. of Additionals.
virtual long onCmdCancel(FXObject *sender, FXSelector sel, void *ptr)=0
event after press cancel button
virtual long onCmdAccept(FXObject *sender, FXSelector sel, void *ptr)=0
void changeAdditionalDialogHeader(const std::string &newHeader)
change additional dialog header
int myNumberOfChanges
number of GNEChanges_... in dialog
GNEAdditional * getEditedAdditional() const
get edited Additional
void acceptChanges()
Accept changes did in this dialog.
std::string myChangesDescription
description of changes did in this additional dialog
long onKeyPress(FXObject *sender, FXSelector sel, void *ptr)
event after press a key
void cancelChanges()
Cancel changes did in this dialog.
FXint openAsModalDialog(FXuint placement=PLACEMENT_CURSOR)
execute dialog as modal
GNEAdditional * myEditedAdditional
pointer to edited additional
void initChanges()
init a new group of changes that will be do it in dialog
void resetChanges()
reset changes did in this dialog.
virtual long onCmdReset(FXObject *, FXSelector, void *)=0
event after press cancel button
long onKeyRelease(FXObject *sender, FXSelector sel, void *ptr)
event after release a key
GNENet * getNet() const
get pointer to net
GNEViewNet * getViewNet() const
get view net
Definition GNENet.cpp:2195
void end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
void begin(GUIIcon icon, const std::string &description)
Begin undo command sub-group with current supermode. This begins a new group of commands that are tre...
int currentCommandGroupSize() const
get size of current CommandGroup
void abortLastChangeGroup()
reverts last active chained change group
GNEUndoList * getUndoList() const
get the undoList object
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
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon