Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/tools/neteditTestFunctions/files/save.py
169678 views
1
# -*- coding: utf-8 -*-
2
# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
# Copyright (C) 2009-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
14
# @file save.py
15
# @author Pablo Alvarez Lopez
16
# @date 28-05-25
17
18
# imports
19
import time
20
from ..constants import TEXTTEST_SANDBOX
21
from ..enums.attributesEnum import attrs
22
from ..enums.viewPositions import positions
23
from ..input.keyboard import typeKey, typeTwoKeys, typeThreeKeys, updateText
24
from ..input.mouse import moveMouse
25
26
27
def saveNewFile(referencePosition, element: str, extension: str, extensionIndex: int):
28
"""
29
@brief save new file
30
"""
31
filename = ""
32
if (element == "network"):
33
typeTwoKeys('ctrl', 's')
34
filename = "net2"
35
elif (element == "trafficLights"):
36
typeThreeKeys('ctrl', 'shift', 'k')
37
filename = "trafficlights2"
38
elif (element == "edgeTypes"):
39
typeThreeKeys('ctrl', 'shift', 'h')
40
filename = "edgetypes2"
41
elif (element == "additional"):
42
typeThreeKeys('ctrl', 'shift', 'a')
43
filename = "additionals2"
44
elif (element == "demand"):
45
typeThreeKeys('ctrl', 'shift', 'd')
46
filename = "routes2"
47
elif (element == "data"):
48
typeThreeKeys('ctrl', 'shift', 'b')
49
filename = "datas2"
50
elif (element == "meanData"):
51
typeThreeKeys('ctrl', 'shift', 'm')
52
filename = "meandatas2.dat"
53
elif (element == "xml"):
54
typeTwoKeys('ctrl', 'l')
55
filename = "net2"
56
elif (element == "sumoConfig"):
57
typeThreeKeys('ctrl', 'shift', 's')
58
filename = "sumo2"
59
elif (element == "neteditConfig"):
60
typeThreeKeys('ctrl', 'shift', 'e')
61
filename = "netedit2"
62
elif (element == "joinedJunctions"):
63
filename = "joinedjunctions2"
64
# move mouse (to avoid problems with file menu)
65
moveMouse(referencePosition, positions.reference, 200, 0, False)
66
# go to menu command
67
typeTwoKeys('alt', 'f')
68
for _ in range(attrs.toolbar.file.saveJoinedJunctions):
69
typeKey('down')
70
typeKey('space')
71
# wait for dialog
72
time.sleep(2)
73
# set folder
74
updateText(TEXTTEST_SANDBOX)
75
typeKey('enter')
76
# set extension
77
typeKey('tab')
78
for _ in range(0, extensionIndex):
79
typeKey('down')
80
typeTwoKeys('shift', 'tab')
81
# set file
82
updateText(filename + "." + extension)
83
typeKey('enter')
84
# wait for load
85
time.sleep(2)
86
87
88
def saveExistentFile(element):
89
"""
90
@brief save existent element using shortcut (without opening a saving dialog)
91
"""
92
if (element == "network"):
93
typeTwoKeys('ctrl', 's')
94
elif (element == "additionals"):
95
typeThreeKeys('ctrl', 'shift', 'a')
96
elif (element == "demands"):
97
typeThreeKeys('ctrl', 'shift', 'd')
98
elif (element == "datas"):
99
typeThreeKeys('ctrl', 'shift', 'b')
100
elif (element == "meanDatas"):
101
typeThreeKeys('ctrl', 'shift', 'm')
102
elif (element == "sumoConfig"):
103
typeThreeKeys('ctrl', 'shift', 's')
104
elif (element == "neteditConfig"):
105
typeThreeKeys('ctrl', 'shift', 'e')
106
# wait for debug (due recomputing)
107
time.sleep(2)
108
109
110
def saveFileAs(referencePosition, type: str, multiple: bool):
111
"""
112
@brief save the given element type as
113
"""
114
# first obstain number of jumps and filename
115
menuJumps = 0
116
subMenuJumps = 0
117
filename = ""
118
extra = 0
119
if (multiple):
120
extra = 1
121
if (type == "network"):
122
menuJumps = attrs.toolbar.file.saveNetworkAs
123
filename = "net3.net.xml"
124
elif (type == "trafficLights"):
125
menuJumps = attrs.toolbar.file.trafficLights.menu
126
subMenuJumps = attrs.toolbar.file.trafficLights.saveAs + extra
127
filename = "trafficlights3.tll.xml"
128
elif (type == "edgeTypes"):
129
menuJumps = attrs.toolbar.file.edgeTypes.menu
130
subMenuJumps = attrs.toolbar.file.edgeTypes.saveAs + extra
131
filename = "edgetypes3.typ.xml"
132
elif (type == "additional"):
133
menuJumps = attrs.toolbar.file.aditionalElements.menu
134
subMenuJumps = attrs.toolbar.file.aditionalElements.saveAs + extra
135
filename = "additionals3.add.xml"
136
elif (type == "jupedsim"):
137
menuJumps = attrs.toolbar.file.aditionalElements.menu
138
subMenuJumps = attrs.toolbar.file.aditionalElements.saveJupedsim
139
filename = "additionals3.add.xml"
140
elif (type == "demand"):
141
menuJumps = attrs.toolbar.file.demandElements.menu
142
subMenuJumps = attrs.toolbar.file.demandElements.saveAs + extra
143
filename = "routes3.rou.xml"
144
elif (type == "data"):
145
menuJumps = attrs.toolbar.file.dataElements.menu
146
subMenuJumps = attrs.toolbar.file.dataElements.saveAs + extra
147
filename = "datas3.dat.xml"
148
elif (type == "meanData"):
149
menuJumps = attrs.toolbar.file.meanDataElements.menu
150
subMenuJumps = attrs.toolbar.file.meanDataElements.saveAs + extra
151
filename = "meandatas3.dat.add.xml"
152
elif (type == "sumoConfig"):
153
menuJumps = attrs.toolbar.file.sumoConfig.menu
154
subMenuJumps = attrs.toolbar.file.sumoConfig.saveAs
155
filename = "sumo3.sumocfg"
156
elif (type == "neteditConfig"):
157
menuJumps = attrs.toolbar.file.neteditConfig.menu
158
subMenuJumps = attrs.toolbar.file.neteditConfig.saveAs + extra
159
filename = "netedit3.netecfg"
160
# move mouse (to avoid problems with file menu)
161
moveMouse(referencePosition, positions.reference, 200, 0, False)
162
# go to menu command
163
typeTwoKeys('alt', 'f')
164
for _ in range(menuJumps):
165
typeKey('down')
166
typeKey('space')
167
if (subMenuJumps > 0):
168
for _ in range(subMenuJumps):
169
typeKey('down')
170
typeKey('space')
171
# wait for dialog
172
time.sleep(2)
173
updateText(TEXTTEST_SANDBOX)
174
typeKey('enter')
175
updateText(filename)
176
typeKey('enter')
177
# wait for load
178
time.sleep(2)
179
180