Browse Source

Initial addition of a GUI application framework using wxPython

Gyedo Jeon 17 years ago
parent
commit
2629762c2b
2 changed files with 102 additions and 0 deletions
  1. 102 0
      direct/src/wxwidgets/WxAppShell.py
  2. 0 0
      direct/src/wxwidgets/__init__.py

+ 102 - 0
direct/src/wxwidgets/WxAppShell.py

@@ -0,0 +1,102 @@
+"""
+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    = '[email protected]'
+
+    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
+        wx.Frame.__init__(self, None, -1, *args, **kw)
+
+        # Initialize the application
+        self.appInit()
+
+        self.__createInterface()
+        self.Show()
+        
+    def __createInterface(self):
+        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 __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):
+        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(-1, "&Quit")
+        self.Bind(wx.EVT_MENU, self.quit, menuItem)
+
+        menuItem = self.menuHelp.Append(-1, "&About...")
+        self.Bind(wx.EVT_MENU, self.showAbout, menuItem)
+

+ 0 - 0
direct/src/wxwidgets/__init__.py