Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/tools/neteditTestFunctions/general/undoRedo.py
169679 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 undoRedo.py
15
# @author Pablo Alvarez Lopez
16
# @date 28-05-25
17
18
# imports
19
import time
20
from ..enums.viewPositions import positions
21
from ..constants import DELAY_UNDOREDO
22
from ..general.functions import focusOnFrame
23
from ..input.keyboard import typeKey, typeTwoKeys
24
from ..input.mouse import leftClickOffset
25
26
27
def undo(referencePosition, number, offsetX=0, offsetY=0):
28
"""
29
@brief undo last operation
30
"""
31
# first wait
32
time.sleep(DELAY_UNDOREDO)
33
# focus current frame
34
focusOnFrame()
35
# needed to avoid errors with undo/redo (Provisionally)
36
typeKey('i')
37
# click over referencePosition
38
leftClickOffset(referencePosition, positions.reference, offsetX, offsetY)
39
for _ in range(number):
40
typeTwoKeys('ctrl', 'z')
41
time.sleep(DELAY_UNDOREDO)
42
43
44
def redo(referencePosition, number, offsetX=0, offsetY=0):
45
"""
46
@brief undo last operation
47
"""
48
# first wait
49
time.sleep(DELAY_UNDOREDO)
50
# focus current frame
51
focusOnFrame()
52
# needed to avoid errors with undo/redo (Provisionally)
53
typeKey('i')
54
# click over referencePosition
55
leftClickOffset(referencePosition, positions.reference, offsetX, offsetY)
56
for _ in range(number):
57
typeTwoKeys('ctrl', 'y')
58
time.sleep(DELAY_UNDOREDO)
59
60
61
def checkUndoRedo(referencePosition, offsetX=0, offsetY=0):
62
"""
63
@brief Check undo-redo
64
"""
65
# Check undo
66
undo(referencePosition, 9, offsetX)
67
# Check redo
68
redo(referencePosition, 9, offsetY)
69
70