/
sumopy_gui.py
executable file
·140 lines (114 loc) · 5.03 KB
/
sumopy_gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/usr/bin/env python
"""SUMOPy is intended to expand the user-base of the traffic micro-simulator SUMO (Simulation of Urban MObility) by providing a user-friendly, yet flexible simulation suite.
A further scope of SUMOPy is to manage the huge amount of data necessary to run complex multi-modal simulations.
This includes different demand generation models as well as a large range of modes, such as public transport,
bicycle and Personal Rapid Transit (PRT). SUMOPy consists of a GUI interface, network editor as well as a simple to use scripting language which facilitates the use of SUMO.
"""
__appname__ = "SUMOPy"
__version__ = "2.4"
__licence__ = """SUMOPy is licensed under the GPL."""
__copyright__ = "(c) 2012-2019 University of Bologna - DICAM"
__author__ = "Joerg Schweizer"
__usage__="""USAGE:
from command line:
Open with empty scenario:
python sumopy_gui.py
Open new scenario and import all SUMO xml files with scenariobasename:
python sumopy_gui.py <scenariobasename> <scenariodir>
Open binary scenario file:
python sumopy_gui.py <path/scenarioname.obj>
SUMOPy is part of the SUMO distribution and is located in
SUMO_HOME/tools/contributed/sumopy
use for debugging:
python sumopy_gui.py --debug > debug.txt 2>&1
"""
print __appname__+' version '+__version__+'\n'+__copyright__
###############################################################################
## IMPORTS
import os, sys
try:
import wxversion
wxversion.select("2.8")
except:
try:
import wxversion
wxversion.select("3")
except:
#sys.exit('ERROR: wxPython versions 2.8 or 3.x not available.')
print 'No wxversion module available, try import default wx version'
print 'If wx import shall fail, please install wxPython versions 2.8 or 3.x together with the wxversion module.'
sys.exit(0)
import wx
print '\n using wx python version',wx.__version__
## Load modules
moduledirs = ['coremodules','plugins']
APPDIR=''
if __name__ == '__main__':
# search SUMOPy in local directory (where this file is located)
try:
APPDIR = os.path.dirname(os.path.abspath(__file__))
except:
APPDIR = os.path.dirname(os.path.abspath(sys.argv[0]))
#if 'SUMO_HOME' in os.environ:
# APPDIR = os.path.join(os.environ['SUMO_HOME'],'tools','contributed','sumopy')
#
#else:
# try:
# APPDIR = os.path.dirname(os.path.abspath(__file__))
# except:
# APPDIR = os.path.dirname(os.path.abspath(sys.argv[0]))
#print 'APPDIR',APPDIR
#libpaths = [APPDIR,]
sys.path.append(APPDIR)
#libpaths = [APPDIR, os.path.join(APPDIR,"agilepy"), os.path.join(APPDIR,"agilepy","lib_base"), os.path.join(APPDIR,"agilepy","lib_wx")]
for moduledir in moduledirs:
# #print ' libpath=',libpath
lp = os.path.abspath(os.path.join(APPDIR,moduledir))
if not lp in sys.path:
#print ' append',lp
sys.path.append(lp)
#
from agilepy.lib_wx.mainframe import AgileMainframe
###############################################################################
class MyApp(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect, filename)
#print 'init',__appname__, sys.argv
self.mainframe = AgileMainframe(
title=__appname__,
moduledirs = moduledirs, # subdirectories containing modules
appdir = APPDIR,
args = sys.argv,
is_maximize = True, is_centerscreen = True,
size_toolbaricons = (32,32),
style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE
)
icon = wx.Icon(os.path.join(APPDIR,'images','icon_sumopy.png'),wx.BITMAP_TYPE_PNG, 16,16)
self.mainframe.SetIcon(icon)
self.mainframe.Show()
self.mainframe.refresh_moduleguis()
self.mainframe.menubar.append_menu('About')
self.mainframe.menubar.append_item('About/Info...',self.on_about,\
info='About SUMOPy',
bitmap = wx.ArtProvider.GetBitmap(wx.ART_INFORMATION,wx.ART_MENU)
)
def on_about(self, event):
info = wx.AboutDialogInfo()
#info.SetIcon(wx.Icon('hunter.png', wx.BITMAP_TYPE_PNG))
info.SetName(__appname__)
info.SetVersion(__version__)
info.SetDescription(__doc__)
info.SetCopyright(__copyright__)
info.SetWebSite('https://sumo.dlr.de/docs/Contributed/SUMOPy.html')
#info.SetWebSite('http://distart041.ing.unibo.it/~mait/projects/sim/users_guide/users_guide.html')
info.SetLicence(__licence__)
info.AddDeveloper(__author__)
info.AddDeveloper("Cristian Poliziani\nwith the friendly support of the SUMO team at the German Aerospace Center (DLR)")
info.AddDocWriter(__author__+ ', Cristian Poliziani')
info.AddArtist(__author__)
#info.AddTranslator('Jan Bodnar')
wx.AboutBox(info)
event.Skip()
if __name__ == '__main__':
myapp = MyApp(0)
myapp.MainLoop()