summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/wx-3.0-msw/wx/tools/XRCed/xrced.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/wx-3.0-msw/wx/tools/XRCed/xrced.py')
-rw-r--r--lib/python2.7/site-packages/wx-3.0-msw/wx/tools/XRCed/xrced.py267
1 files changed, 267 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/wx-3.0-msw/wx/tools/XRCed/xrced.py b/lib/python2.7/site-packages/wx-3.0-msw/wx/tools/XRCed/xrced.py
new file mode 100644
index 0000000..6c9bf89
--- /dev/null
+++ b/lib/python2.7/site-packages/wx-3.0-msw/wx/tools/XRCed/xrced.py
@@ -0,0 +1,267 @@
+# Name: xrced.py
+# Purpose: XRC editor, main module
+# Author: Roman Rolinsky <rolinsky@mema.ucl.ac.be>
+# Created: 20.08.2001
+# RCS-ID: $Id: xrced.py 71858 2012-06-25 09:55:13Z ROL $
+
+"""
+
+usage: xrced [options] [XRC file]
+
+options:
+ --version show program's version number and exit
+ -h, --help show this help message and exit
+ -d, --debug add Debug command to Help menu
+ -m, --meta activate meta-components
+ -v, --verbose verbose messages
+
+"""
+
+import os
+from optparse import OptionParser
+from globals import *
+import params
+from presenter import Presenter
+from listener import Listener
+from component import Manager
+import view
+import undo
+import plugin
+
+# for helping to attach to the process with gdb...
+#print "%s\nPID: %d\n" % (wx.version(), os.getpid()); #raw_input("Press Enter...")
+
+# to enable the widget inspector & its hot-key
+USE_INSPECTOR = False
+
+# Parse string in form var1=val1[,var2=val2]* as dictionary
+def ReadDictFromString(s):
+ d = {}
+ for vv in s.split(','):
+ var,val = vv.split(':')
+ d[var.strip()] = val
+ return d
+
+# Transform dictionary with strings into one string
+def DictToString(d):
+ return ','.join(map(':'.join, d.items()))
+
+
+if USE_INSPECTOR:
+ import wx.lib.mixins.inspection
+ AppBase = wx.lib.mixins.inspection.InspectableApp
+else:
+ AppBase = wx.App
+
+
+class App(AppBase):
+ def OnInit(self):
+ if USE_INSPECTOR:
+ self.Init()
+
+ # Check version
+ if wx.VERSION[:3] < MinWxVersion:
+ wx.LogWarning('''\
+This version of XRCed may not work correctly on your version of wxWidgets. \
+Please upgrade wxWidgets to %d.%d.%d or higher.''' % MinWxVersion)
+
+ g.undoMan = undo.UndoManager()
+ Manager.init()
+
+ parser = OptionParser(prog=progname,
+ version='%s version %s' % (ProgName, version),
+ usage='%prog [options] [XRC file]')
+ parser.add_option('-d', '--debug', action='store_true',
+ help='add Debug command to Help menu')
+ parser.add_option('-m', '--meta', action='store_true',
+ dest = 'meta',
+ help='activate meta-components')
+ parser.add_option('-v', '--verbose', action='store_true',
+ help='verbose messages')
+
+ # Process command-line arguments
+ options, args = parser.parse_args()
+ if options.debug:
+ set_debug(True)
+ if options.verbose:
+ set_verbose(True)
+ if options.meta:
+ g.useMeta = True
+ import meta
+ Manager.register(meta.Component)
+ Manager.setMenu(meta.Component, 'TOP_LEVEL', 'component', 'component plugin')
+
+ self.SetAppName(progname)
+
+ self.ReadConfig()
+
+ # Add handlers
+ wx.FileSystem.AddHandler(wx.MemoryFSHandler())
+ self.toolArtProvider = view.ToolArtProvider()
+ wx.ArtProvider.Push(self.toolArtProvider)
+
+ # Load standard plugins first
+ plugin.load_plugins(os.path.join(g.basePath, 'plugins'))
+ # ... and then from user-defined dirs
+ plugin.load_plugins_from_dirs()
+
+ # Setup MVP
+ view.create_view()
+ Presenter.init()
+ Listener.Install(view.frame, view.tree, view.panel,
+ view.toolFrame, view.testWin)
+
+ if args:
+ path = args[0]
+ # Change current directory
+ dir = os.path.dirname(path)
+ if dir:
+ os.chdir(dir)
+ path = os.path.basename(path)
+ if os.path.isfile(path):
+ # Populate after final creation
+ wx.CallAfter(Presenter.open, path)
+ else:
+ # Future name
+ Presenter.path = path
+ # Reset modified flag
+ Presenter.setModified(False)
+ view.frame.Show()
+ if not g.useAUI:
+ if not g.conf.embedPanel:
+ view.frame.miniFrame.Show()
+ if g.conf.showToolPanel:
+ Listener.toolFrame.Show()
+
+ return True
+
+ def OnExit(self):
+ self.WriteConfig()
+
+ def ReadConfig(self):
+ # Settings
+ conf = g.conf = wx.Config(style = wx.CONFIG_USE_LOCAL_FILE)
+ conf.localconf = None
+ conf.autoRefresh = conf.ReadBool('autoRefresh', True)
+ conf.autoRefreshPolicy = conf.ReadInt('autoRefreshPolicy', 0)
+ conf.pos = wx.Point(conf.ReadInt('x', -1), conf.ReadInt('y', -1))
+ conf.size = wx.Size(conf.ReadInt('width', 800), conf.ReadInt('height', 600))
+ g.useAUI = conf.useAUI = conf.ReadBool('useAUI', False)
+ conf.embedPanel = conf.ReadBool('embedPanel', True)
+ conf.panelPinState = conf.ReadBool('panelPinState', False)
+ conf.showToolPanel = conf.ReadBool('showToolPanel', True)
+ conf.sashPos = conf.ReadInt('sashPos', 200)
+
+ # read recently used files
+ g.fileHistory = wx.FileHistory()
+ g.fileHistory.Load(conf)
+
+ conf.panelPos = wx.Point(conf.ReadInt('panelX', -1),
+ conf.ReadInt('panelY', -1))
+ conf.panelSize = wx.Size(conf.ReadInt('panelWidth', 200),
+ conf.ReadInt('panelHeight', 200))
+ conf.sashPos = conf.ReadInt('sashPos', 200)
+
+ conf.toolPanelPos = wx.Point(conf.ReadInt('toolPanelX', -1),
+ conf.ReadInt('toolPanelY', -1))
+ if wx.Platform == '__WXMAC__':
+ conf.toolPanelPos.y += 4 # OSX has some issues with miniframe
+ conf.toolPanelSize = wx.Size(conf.ReadInt('toolPanelWidth', -1),
+ conf.ReadInt('toolPanelHeight', -1))
+
+ # Preferences
+ conf.toolPanelType = conf.Read('Prefs/toolPanelType', 'TB')
+ conf.toolThumbSize = conf.ReadInt('Prefs/toolThumbSize', 48)
+ conf.toolIconScale = conf.ReadInt('Prefs/toolIconScale', 100)
+ conf.expandOnOpen = conf.ReadBool('Prefs/expandOnOpen', True)
+ conf.fitTestWin = conf.ReadBool('Prefs/fitTestWin', True)
+ conf.useSubclassing = conf.ReadBool('Prefs/useSubclassing', False)
+ conf.allowExec = conf.Read('Prefs/allowExec', 'ask')
+ # Toolbar configuration
+ conf.TB_file = conf.ReadBool('Prefs/TB_file', True)
+ conf.TB_undo = conf.ReadBool('Prefs/TB_undo', True)
+ conf.TB_copy = conf.ReadBool('Prefs/TB_copy', True)
+ conf.TB_move = conf.ReadBool('Prefs/TB_move', True)
+ p = 'Prefs/Defaults/Container'
+ if conf.HasEntry(p):
+ conf.defaultsContainer = ReadDictFromString(conf.Read(p))
+ else:
+ conf.defaultsContainer = {}
+ p = 'Prefs/Defaults/Control'
+ if conf.HasEntry(p):
+ conf.defaultsControl = ReadDictFromString(conf.Read(p))
+ else:
+ conf.defaultsControl = {}
+ conf.SetPath('/')
+
+ def WriteConfig(self):
+
+ # Write config
+ conf = g.conf
+ conf.SetPath('/')
+ conf.WriteBool('autoRefresh', conf.autoRefresh)
+ conf.WriteInt('autoRefreshPolicy', conf.autoRefreshPolicy)
+ conf.WriteBool('useAUI', conf.useAUI)
+ if g.useAUI:
+ conf.Write('perspective', conf.perspective)
+ conf.WriteInt('x', conf.pos.x)
+ conf.WriteInt('y', conf.pos.y)
+ conf.WriteInt('width', conf.size.x)
+ conf.WriteInt('height', conf.size.y)
+ conf.WriteInt('embedPanel', conf.embedPanel)
+ conf.WriteInt('panelPinState', conf.panelPinState)
+ conf.WriteInt('showTools', conf.showToolPanel)
+ if not conf.embedPanel:
+ conf.WriteInt('panelX', conf.panelPos.x)
+ conf.WriteInt('panelY', conf.panelPos.y)
+ conf.WriteInt('sashPos', conf.sashPos)
+ conf.WriteInt('panelWidth', conf.panelSize.x)
+ conf.WriteInt('panelHeight', conf.panelSize.y)
+ conf.WriteInt('showToolPanel', conf.showToolPanel)
+ conf.WriteInt('toolPanelX', conf.toolPanelPos.x)
+ conf.WriteInt('toolPanelY', conf.toolPanelPos.y)
+ conf.WriteInt('toolPanelWidth', conf.toolPanelSize.x)
+ conf.WriteInt('toolPanelHeight', conf.toolPanelSize.y)
+ g.fileHistory.Save(conf)
+ # Preferences
+ conf.DeleteGroup('Prefs')
+ conf.Write('Prefs/toolPanelType', conf.toolPanelType)
+ conf.WriteInt('Prefs/toolThumbSize', conf.toolThumbSize)
+ conf.WriteInt('Prefs/toolIconScale', conf.toolIconScale)
+ conf.WriteInt('Prefs/expandOnOpen', conf.expandOnOpen)
+ conf.WriteInt('Prefs/fitTestWin', conf.fitTestWin)
+ conf.WriteInt('Prefs/TB_file', conf.TB_file)
+ conf.WriteInt('Prefs/TB_undo', conf.TB_undo)
+ conf.WriteInt('Prefs/TB_copy', conf.TB_copy)
+ conf.WriteInt('Prefs/TB_move', conf.TB_move)
+ conf.WriteInt('Prefs/useSubclassing', conf.useSubclassing)
+ conf.Write('Prefs/allowExec', conf.allowExec)
+ v = conf.defaultsContainer
+ if v: conf.Write('Prefs/Defaults/Container', DictToString(v))
+ v = conf.defaultsControl
+ if v: conf.Write('Prefs/Defaults/Control', DictToString(v))
+
+ conf.Flush()
+
+def main():
+ if 'wxMac' in wx.PlatformInfo:
+ # if running from an App bundle on Mac then there could be an
+ # unexpected -psb_blahblah command-line arg. Blow it away.
+ for idx,arg in enumerate(sys.argv):
+ if arg.startswith('-psn'):
+ del sys.argv[idx]
+ break
+
+ app = App(0, useBestVisual=False)
+ #app.SetAssertMode(wx.PYAPP_ASSERT_LOG)
+ app.MainLoop()
+
+if __name__ == '__main__':
+ # Substitute wx.tools.XRCed with local module
+ try:
+ from XRCed.xrced import main
+ except ImportError:
+ print >>sys.stderr, 'XRCed parent directory must be in PYTHONPATH for local running'
+ raise
+ sys.modules['wx.tools.XRCed'] = sys.modules['XRCed']
+ main()