Path: blob/main/src/netedit/frames/common/GNEMoveFrame.h
169684 views
/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file GNEMoveFrame.h14/// @author Pablo Alvarez Lopez15/// @date Jun 202016///17// The Widget for move elements18/****************************************************************************/19#pragma once20#include <config.h>2122#include <netedit/frames/GNEFrame.h>2324// ===========================================================================25// class definitions26// ===========================================================================2728class GNEMoveFrame : public GNEFrame {2930public:31// ===========================================================================32// class CommonMoveOptions33// ===========================================================================3435class CommonMoveOptions : public MFXGroupBoxModule {3637public:38/// @brief constructor39CommonMoveOptions(GNEMoveFrame* moveFrameParent);4041/// @brief destructor42~CommonMoveOptions();4344/// @brief allow change lane45bool getAllowChangeLane() const;4647/// @brief check if merge geometry points48bool getMergeGeometryPoints() const;4950private:51/// @brief checkbox for enable/disable change lanes52FXCheckButton* myAllowChangeLanes;5354/// @brief checkbox for enable/disable merge geometry points55FXCheckButton* myMergeGeometryPoints;56};5758// ===========================================================================59// class NetworkMoveOptions60// ===========================================================================6162class NetworkMoveOptions : public MFXGroupBoxModule {63/// @brief FOX-declaration64FXDECLARE(GNEMoveFrame::NetworkMoveOptions)6566public:67/// @brief constructor68NetworkMoveOptions(GNEMoveFrame* moveFrameParent);6970/// @brief destructor71~NetworkMoveOptions();7273/// @brief show NetworkMoveOptions74void showNetworkMoveOptions();7576/// @brief hide NetworkMoveOptions77void hideNetworkMoveOptions();7879/// @brief check if option "move whole polygons" is enabled80bool getMoveWholePolygons() const;8182/// @brief check if option "force draw geometry points" is enabled83bool getForceDrawGeometryPoints() const;8485/// @brief check if option "move only junction center" is enabled86bool getMoveOnlyJunctionCenter() const;8788/// @name FOX-callbacks89/// @{90/// @brief Called after change option91long onCmdChangeOption(FXObject*, FXSelector, void*);9293/// @}9495protected:96/// @brief FOX need this97FOX_CONSTRUCTOR(NetworkMoveOptions)9899private:100/// @brief pointer to move frame parent101GNEMoveFrame* myMoveFrameParent;102103/// @brief checkbox for enable/disable move whole polygons104FXCheckButton* myMoveWholePolygons = nullptr;105106/// @brief checkbox for force draw geometry points107FXCheckButton* myForceDrawGeometryPoints = nullptr;108109/// @brief checkbox for move only juntion center110FXCheckButton* myMoveOnlyJunctionCenter = nullptr;111};112113// ===========================================================================114// class DemandMoveOptions115// ===========================================================================116117class DemandMoveOptions : public MFXGroupBoxModule {118119public:120/// @brief constructor121DemandMoveOptions(GNEMoveFrame* moveFrameParent);122123/// @brief destructor124~DemandMoveOptions();125126/// @brief show DemandMoveOptions127void showDemandMoveOptions();128129/// @brief hide DemandMoveOptions130void hideDemandMoveOptions();131132/// @brief check if leave stopPersonConnected is enabled133bool getLeaveStopPersonsConnected() const;134135private:136/// @brief pointer to move frame parent137GNEMoveFrame* myMoveFrameParent = nullptr;138139/// @brief checkbox for enable/disable leave stopPersons connected140FXCheckButton* myLeaveStopPersonsConnected = nullptr;141};142143// ===========================================================================144// class ShiftEdgeSelectedGeometry145// ===========================================================================146147class ShiftEdgeSelectedGeometry : public MFXGroupBoxModule {148/// @brief FOX-declaration149FXDECLARE(GNEMoveFrame::ShiftEdgeSelectedGeometry)150151public:152/// @brief constructor153ShiftEdgeSelectedGeometry(GNEMoveFrame* moveFrameParent);154155/// @brief destructor156~ShiftEdgeSelectedGeometry();157158/// @brief enable shift edge geometry159void enableShiftEdgeGeometry();160161/// @brief disable change Z in selection162void disableShiftEdgeGeometry();163164/// @name FOX-callbacks165/// @{166/// @brief Called when user changes Z value167long onCmdChangeShiftValue(FXObject*, FXSelector, void*);168169/// @brief Called when user press the apply Z value button170long onCmdShiftEdgeGeometry(FXObject*, FXSelector, void*);171172/// @}173174protected:175/// @brief FOX need this176FOX_CONSTRUCTOR(ShiftEdgeSelectedGeometry)177178private:179/// @brief pointer to move frame parent180GNEMoveFrame* myMoveFrameParent;181182/// @brief textField for shift value183FXTextField* myShiftValueTextField = nullptr;184185/// @brief button for apply Z value186FXButton* myApplyZValue = nullptr;187};188189// ===========================================================================190// class ChangeZInSelection191// ===========================================================================192193class ChangeZInSelection : public MFXGroupBoxModule {194/// @brief FOX-declaration195FXDECLARE(GNEMoveFrame::ChangeZInSelection)196197public:198/// @brief constructor199ChangeZInSelection(GNEMoveFrame* moveFrameParent);200201/// @brief destructor202~ChangeZInSelection();203204/// @brief enabale change Z in selection205void enableChangeZInSelection();206207/// @brief disable change Z in selection208void disableChangeZInSelection();209210/// @name FOX-callbacks211/// @{212/// @brief Called when user changes Z value213long onCmdChangeZValue(FXObject*, FXSelector, void*);214215/// @brief Called when user changes Z mode216long onCmdChangeZMode(FXObject*, FXSelector, void*);217218/// @brief Called when user press the apply Z value button219long onCmdApplyZ(FXObject*, FXSelector, void*);220221/// @}222223protected:224/// @brief FOX need this225FOX_CONSTRUCTOR(ChangeZInSelection)226227/// @brief update label228void updateInfoLabel();229230private:231/// @brief pointer to move frame parent232GNEMoveFrame* myMoveFrameParent;233234/// @brief textField for Z value235FXTextField* myZValueTextField = nullptr;236237/// @brief radio button for absolute value238FXRadioButton* myAbsoluteValue = nullptr;239240/// @brief apply button241FXButton* myApplyButton = nullptr;242243/// @brief radio button for relative value244FXRadioButton* myRelativeValue = nullptr;245246/// @brief info label247FXLabel* myInfoLabel = nullptr;248};249250// ===========================================================================251// class ShiftShapeGeometry252// ===========================================================================253254class ShiftShapeGeometry : public MFXGroupBoxModule {255/// @brief FOX-declaration256FXDECLARE(GNEMoveFrame::ShiftShapeGeometry)257258public:259/// @brief constructor260ShiftShapeGeometry(GNEMoveFrame* moveFrameParent);261262/// @brief destructor263~ShiftShapeGeometry();264265/// @brief show shift shape geometry266void showShiftShapeGeometry();267268/// @brief hide change Z in selection269void hideShiftShapeGeometry();270271/// @name FOX-callbacks272/// @{273/// @brief Called when user changes Z value274long onCmdChangeShiftValue(FXObject*, FXSelector, void*);275276/// @brief Called when user press the apply Z value button277long onCmdShiftShapeGeometry(FXObject*, FXSelector, void*);278279/// @}280281protected:282/// @brief FOX need this283FOX_CONSTRUCTOR(ShiftShapeGeometry)284285private:286/// @brief pointer to move frame parent287GNEMoveFrame* myMoveFrameParent;288289/// @brief textField for shiftX value290FXTextField* myShiftValueXTextField = nullptr;291292/// @brief textField for shiftY value293FXTextField* myShiftValueYTextField = nullptr;294};295296// ===========================================================================297// class Information298// ===========================================================================299300class Information : public MFXGroupBoxModule {301302public:303/// @brief constructor304Information(GNEMoveFrame* moveFrameParent);305306/// @brief destructor307~Information();308};309310/**@brief Constructor311* @brief viewParent GNEViewParent in which this GNEFrame is placed312* @brief viewNet viewNet that uses this GNEFrame313*/314GNEMoveFrame(GNEViewParent* viewParent, GNEViewNet* viewNet);315316/// @brief Destructor317~GNEMoveFrame();318319/**@brief handle processClick and set the relative coloring320* @param[in] clickedPosition clicked position over ViewNet321* @param viewObjects collection of objects under cursor after click over view322* @param objectsUnderGrippedCursor collection of objects under gripped cursor after click over view323*/324void processClick(const Position& clickedPosition,325const GNEViewNetHelper::ViewObjectsSelector& viewObjects,326const GNEViewNetHelper::ViewObjectsSelector& objectsUnderGrippedCursor);327328/// @brief show prohibition frame329void show();330331/// @brief hide prohibition frame332void hide();333334/// @brief get common mode options335CommonMoveOptions* getCommonMoveOptions() const;336337/// @brief get network mode options338NetworkMoveOptions* getNetworkMoveOptions() const;339340/// @brief get demand mode options341DemandMoveOptions* getDemandMoveOptions() const;342343private:344/// @brief modul for CommonMove Options345CommonMoveOptions* myCommonMoveOptions = nullptr;346347/// @brief modul for NetworkMove Options348NetworkMoveOptions* myNetworkMoveOptions = nullptr;349350/// @brief modul for DemandMove Options351DemandMoveOptions* myDemandMoveOptions = nullptr;352353/// @brief modul for shift edge selected geometry354ShiftEdgeSelectedGeometry* myShiftEdgeSelectedGeometry = nullptr;355356/// @brief modul for change Z in selection357ChangeZInSelection* myChangeZInSelection = nullptr;358359/// @brief modul for show information360Information* myInformation = nullptr;361362/// @brief modul for shift shape geometry363ShiftShapeGeometry* myShiftShapeGeometry = nullptr;364};365366367