"""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 EPL-2.0 OR GPL-2.0-or-later."
__copyright__ = "(c) 2012-2021 University of Bologna - DICAM"
__author__ = "Joerg Schweizer"
import sys
import os
try:
import wxversion
wxversion.select("2.8")
except:
try:
import wxversion
wxversion.select("3")
except:
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)
from agilepy.lib_wx.mainframe import AgileMainframe
import wx
__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 ' _ '
print ' ____________|______|||___________________ '
print ' / _ | / \ _ _ _ _ _ \ '
print ' / | / | \ v / _ \ _|_|_|_|_ / '
print ' \ __o-o__/ | \ \ | / / / \ \ ____/ '
print ' \ / \|o|/ \ \|/ / / o/\ \ | _|__/_ '
print ' \ / \|o|/ \ | / / /| \ \ | | | '
print ' | | | | | / \|0|/ \ v / \_/ \_/ \_| | '
print ' | | | | |/_____________\_/____________/ ____/ '
print ' |/ '
print ''
print __appname__+' version '+__version__+'\n'+__copyright__
print '\n using wx python version', wx.__version__
moduledirs = ['coremodules', 'plugins']
APPDIR = ''
if __name__ == '__main__':
try:
APPDIR = os.path.dirname(os.path.abspath(__file__))
except:
APPDIR = os.path.dirname(os.path.abspath(sys.argv[0]))
sys.path.append(APPDIR)
for moduledir in moduledirs:
lp = os.path.abspath(os.path.join(APPDIR, moduledir))
if not lp in sys.path:
sys.path.append(lp)
class MyApp(wx.App):
def __init__(self, redirect=False, filename=None):
wx.App.__init__(self, redirect, filename)
self.mainframe = AgileMainframe(
title=__appname__,
moduledirs=moduledirs,
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.SetName(__appname__)
info.SetVersion(__version__)
info.SetDescription(__doc__)
info.SetCopyright(__copyright__)
info.SetWebSite('http://sumo.dlr.de/wiki/Contributed/SUMOPy')
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__)
wx.AboutBox(info)
event.Skip()
if __name__ == '__main__':
myapp = MyApp(0)
myapp.MainLoop()