historical/toontown-classic.git/panda/direct/wxwidgets/WxAppShell.py
2024-01-16 11:20:27 -06:00

114 lines
3.6 KiB
Python

"""
WxAppShell provides a GUI application framework using wxPython.
This is an wxPython version of AppShell.py
"""
import wx, sys
class WxAppShell(wx.Frame):
appversion = '1.0'
appname = 'Generic Application Frame'
copyright = ('Copyright 2008 Walt Disney Internet Group.' +
'\nAll Rights Reserved.')
contactname = 'Gyedo Jeon'
contactemail = 'Gyedo.Jeon@disney.com'
frameWidth = 450
frameHeight = 320
padx = 5
pady = 5
usecommandarea = 0
usestatusarea = 0
balloonState = 'none'
panelCount = 0
def __init__(self, *args, **kw):
# Initialize the base class
if not kw.get(''):
kw['title'] = self.appname
if not kw.get('size'):
kw['size'] = wx.Size(self.frameWidth, self.frameHeight)
wx.Frame.__init__(self, None, -1, *args, **kw)
self._logWin = None
# Initialize the application
self.appInit()
self.__createInterface()
self.Show()
def __createInterface(self):
self.__createLogWin()
self.__createMenuBar()
self.__createAboutBox()
# Add binding for panel cleanup code
self.Bind(wx.EVT_CLOSE, self.quit)
#
# Create the parts of the interface
# which can be modified by subclasses
#
self.createMenuBar()
self.createInterface()
def __createLogWin(self, evt=None):
# to bypass wx.Log
if self._logWin:
self._logWin.Destroy()
self._logWin = wx.Frame(None)
self._logWin.Bind(wx.EVT_CLOSE, self.__createLogWin)
wx.Log.SetActiveTarget(wx.LogTextCtrl(wx.TextCtrl(self._logWin, style=wx.TE_MULTILINE)))
def __createMenuBar(self):
self.menuBar = wx.MenuBar()
self.SetMenuBar(self.menuBar)
def __createAboutBox(self):
self.about = wx.MessageDialog(None,
self.appname + "\n\n" +
'Version %s'%self.appversion + "\n\n" +
self.copyright + "\n\n" +
'For more information, contact:\n%s\nEmail: %s' %\
(self.contactname, self.contactemail),
"About %s"%self.appname, wx.OK | wx.ICON_INFORMATION)
def showAbout(self, event):
# Create the dialog to display about and contact information.
self.about.ShowModal()
def quit(self, event=None):
self.onDestroy(event)
# to close Panda
try:
base
except NameError:
sys.exit()
base.userExit()
### USER METHODS ###
# To be overridden
def appInit(self):
# Called before interface is created (should be overridden).
pass
def createInterface(self):
# Override this method to create the interface for the app.
pass
def onDestroy(self, event):
# Override this method with actions to be performed on panel shutdown
pass
def createMenuBar(self):
# Creates default menus.
# Override if you don't want to use default menus
self.menuFile = wx.Menu()
self.menuBar.Append(self.menuFile, "&File")
self.menuHelp = wx.Menu()
self.menuBar.Append(self.menuHelp, "&Help")
menuItem = self.menuFile.Append(wx.ID_EXIT, "&Quit")
self.Bind(wx.EVT_MENU, self.quit, menuItem)
menuItem = self.menuHelp.Append(wx.ID_ABOUT, "&About...")
self.Bind(wx.EVT_MENU, self.showAbout, menuItem)