This commit was manufactured by cvs2svn to create tag 'wxPy_2_6_0_0'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/wxPy_2_6_0_0@33890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -54,7 +54,8 @@ Consult README file for the details.</HTML>
|
||||
"""
|
||||
|
||||
defaultIDs = {xxxPanel:'PANEL', xxxDialog:'DIALOG', xxxFrame:'FRAME',
|
||||
xxxMenuBar:'MENUBAR', xxxMenu:'MENU', xxxToolBar:'TOOLBAR'}
|
||||
xxxMenuBar:'MENUBAR', xxxMenu:'MENU', xxxToolBar:'TOOLBAR',
|
||||
xxxWizard:'WIZARD'}
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -97,6 +98,14 @@ class Frame(wxFrame):
|
||||
# Idle flag
|
||||
self.inIdle = False
|
||||
|
||||
# Load our own resources
|
||||
self.res = wxXmlResource('')
|
||||
# !!! Blocking of assert failure occuring in older unicode builds
|
||||
try:
|
||||
self.res.Load(os.path.join(basePath, 'xrced.xrc'))
|
||||
except wx._core.PyAssertionError:
|
||||
print 'PyAssertionError was ignored'
|
||||
|
||||
# Make menus
|
||||
menuBar = wxMenuBar()
|
||||
|
||||
@@ -124,8 +133,9 @@ class Frame(wxFrame):
|
||||
menu.Append(wxID_PASTE, '&Paste\tCtrl-V', 'Paste from the clipboard')
|
||||
self.ID_DELETE = wxNewId()
|
||||
menu.Append(self.ID_DELETE, '&Delete\tCtrl-D', 'Delete object')
|
||||
# menu.AppendSeparator()
|
||||
menu.AppendSeparator()
|
||||
self.ID_LOCATE = wxNewId()
|
||||
self.ID_LOCATE_TOOL = wxNewId()
|
||||
menu.Append(self.ID_LOCATE, '&Locate\tCtrl-L', 'Locate control in test window and select it')
|
||||
menuBar.Append(menu, '&Edit')
|
||||
|
||||
@@ -146,6 +156,8 @@ class Frame(wxFrame):
|
||||
menu.Append(self.ID_AUTO_REFRESH, '&Auto-refresh\tCtrl-A',
|
||||
'Toggle auto-refresh mode', True)
|
||||
menu.Check(self.ID_AUTO_REFRESH, conf.autoRefresh)
|
||||
self.ID_TEST_HIDE = wxNewId()
|
||||
menu.Append(self.ID_TEST_HIDE, '&Hide\tCtrl-H', 'Close test window')
|
||||
menuBar.Append(menu, '&View')
|
||||
|
||||
menu = wxMenu()
|
||||
@@ -175,6 +187,10 @@ class Frame(wxFrame):
|
||||
tb.AddSimpleTool(wxID_COPY, images.getCopyBitmap(), 'Copy', 'Copy')
|
||||
tb.AddSimpleTool(wxID_PASTE, images.getPasteBitmap(), 'Paste', 'Paste')
|
||||
tb.AddControl(wxStaticLine(tb, -1, size=(-1,23), style=wxLI_VERTICAL))
|
||||
tb.AddCheckTool(self.ID_LOCATE_TOOL,
|
||||
images.getLocateBitmap(), images.getLocateArmedBitmap(),
|
||||
'Locate', 'Locate control in test window and select it')
|
||||
tb.AddControl(wxStaticLine(tb, -1, size=(-1,23), style=wxLI_VERTICAL))
|
||||
tb.AddSimpleTool(self.ID_TEST, images.getTestBitmap(), 'Test', 'Test window')
|
||||
tb.AddSimpleTool(self.ID_REFRESH, images.getRefreshBitmap(),
|
||||
'Refresh', 'Refresh view')
|
||||
@@ -184,6 +200,7 @@ class Frame(wxFrame):
|
||||
tb.AddSeparator() # otherwise auto-refresh sticks in status line
|
||||
tb.ToggleTool(self.ID_AUTO_REFRESH, conf.autoRefresh)
|
||||
tb.Realize()
|
||||
|
||||
self.tb = tb
|
||||
self.minWidth = tb.GetSize()[0] # minimal width is the size of toolbar
|
||||
|
||||
@@ -201,12 +218,14 @@ class Frame(wxFrame):
|
||||
EVT_MENU(self, wxID_PASTE, self.OnPaste)
|
||||
EVT_MENU(self, self.ID_DELETE, self.OnCutDelete)
|
||||
EVT_MENU(self, self.ID_LOCATE, self.OnLocate)
|
||||
EVT_MENU(self, self.ID_LOCATE_TOOL, self.OnLocate)
|
||||
# View
|
||||
EVT_MENU(self, self.ID_EMBED_PANEL, self.OnEmbedPanel)
|
||||
EVT_MENU(self, self.ID_SHOW_TOOLS, self.OnShowTools)
|
||||
EVT_MENU(self, self.ID_TEST, self.OnTest)
|
||||
EVT_MENU(self, self.ID_REFRESH, self.OnRefresh)
|
||||
EVT_MENU(self, self.ID_AUTO_REFRESH, self.OnAutoRefresh)
|
||||
EVT_MENU(self, self.ID_TEST_HIDE, self.OnTestHide)
|
||||
# Help
|
||||
EVT_MENU(self, wxID_ABOUT, self.OnAbout)
|
||||
EVT_MENU(self, self.ID_README, self.OnReadme)
|
||||
@@ -215,6 +234,8 @@ class Frame(wxFrame):
|
||||
EVT_UPDATE_UI(self, wxID_CUT, self.OnUpdateUI)
|
||||
EVT_UPDATE_UI(self, wxID_COPY, self.OnUpdateUI)
|
||||
EVT_UPDATE_UI(self, wxID_PASTE, self.OnUpdateUI)
|
||||
EVT_UPDATE_UI(self, self.ID_LOCATE, self.OnUpdateUI)
|
||||
EVT_UPDATE_UI(self, self.ID_LOCATE_TOOL, self.OnUpdateUI)
|
||||
EVT_UPDATE_UI(self, wxID_UNDO, self.OnUpdateUI)
|
||||
EVT_UPDATE_UI(self, wxID_REDO, self.OnUpdateUI)
|
||||
EVT_UPDATE_UI(self, self.ID_DELETE, self.OnUpdateUI)
|
||||
@@ -407,7 +428,7 @@ class Frame(wxFrame):
|
||||
error = False
|
||||
# Top-level
|
||||
x = xxx.treeObject()
|
||||
if x.__class__ in [xxxDialog, xxxFrame, xxxMenuBar]:
|
||||
if x.__class__ in [xxxDialog, xxxFrame, xxxMenuBar, xxxWizard]:
|
||||
# Top-level classes
|
||||
if parent.__class__ != xxxMainNode: error = True
|
||||
elif x.__class__ == xxxToolBar:
|
||||
@@ -581,6 +602,9 @@ class Frame(wxFrame):
|
||||
if not tree.selection: return # key pressed event
|
||||
tree.ShowTestWindow(tree.selection)
|
||||
|
||||
def OnTestHide(self, evt):
|
||||
tree.CloseTestWindow()
|
||||
|
||||
# Find object by relative position
|
||||
def FindObject(self, item, obj):
|
||||
# We simply perform depth-first traversal, sinse it's too much
|
||||
@@ -603,6 +627,11 @@ class Frame(wxFrame):
|
||||
item = self.FindObject(g.testWin.item, evt.GetEventObject())
|
||||
if item:
|
||||
tree.SelectItem(item)
|
||||
self.tb.ToggleTool(self.ID_LOCATE_TOOL, False)
|
||||
if item:
|
||||
self.SetStatusText('Selected %s' % tree.GetItemText(item))
|
||||
else:
|
||||
self.SetStatusText('Locate failed!')
|
||||
|
||||
def SetHandler(self, w, h=None):
|
||||
if h:
|
||||
@@ -616,8 +645,16 @@ class Frame(wxFrame):
|
||||
|
||||
def OnLocate(self, evt):
|
||||
if g.testWin:
|
||||
self.SetHandler(g.testWin, g.testWin)
|
||||
g.testWin.Connect(wxID_ANY, wxID_ANY, wxEVT_LEFT_DOWN, self.OnTestWinLeftDown)
|
||||
if evt.GetId() == self.ID_LOCATE or \
|
||||
evt.GetId() == self.ID_LOCATE_TOOL and evt.IsChecked():
|
||||
self.SetHandler(g.testWin, g.testWin)
|
||||
g.testWin.Connect(wxID_ANY, wxID_ANY, wxEVT_LEFT_DOWN, self.OnTestWinLeftDown)
|
||||
if evt.GetId() == self.ID_LOCATE:
|
||||
self.tb.ToggleTool(self.ID_LOCATE_TOOL, True)
|
||||
elif evt.GetId() == self.ID_LOCATE_TOOL and not evt.IsChecked():
|
||||
self.SetHandler(g.testWin, None)
|
||||
g.testWin.Disconnect(wxID_ANY, wxID_ANY, wxEVT_LEFT_DOWN)
|
||||
self.SetStatusText('Click somewhere in your test window now')
|
||||
|
||||
def OnRefresh(self, evt):
|
||||
# If modified, apply first
|
||||
@@ -744,6 +781,7 @@ Homepage: http://xrced.sourceforge.net\
|
||||
nodes = elem.childNodes[:]
|
||||
tags = []
|
||||
for node in nodes:
|
||||
if node.nodeType != minidom.Node.ELEMENT_NODE: continue
|
||||
remove = False
|
||||
tag = node.tagName
|
||||
if tag == 'object':
|
||||
@@ -766,6 +804,8 @@ Homepage: http://xrced.sourceforge.net\
|
||||
dummy.unlink()
|
||||
# Change class name
|
||||
elem.setAttribute('class', className)
|
||||
if elem.hasAttribute('subclass'):
|
||||
elem.removeAttribute('subclass') # clear subclassing
|
||||
# Re-create xxx element
|
||||
xxx = MakeXXXFromDOM(parentXXX, elem)
|
||||
# Update parent in child objects
|
||||
@@ -835,6 +875,8 @@ Homepage: http://xrced.sourceforge.net\
|
||||
evt.Enable((self.clipboard and tree.selection) != None)
|
||||
elif evt.GetId() == self.ID_TEST:
|
||||
evt.Enable(tree.selection is not None and tree.selection != tree.root)
|
||||
elif evt.GetId() in [self.ID_LOCATE, self.ID_LOCATE_TOOL]:
|
||||
evt.Enable(g.testWin is not None)
|
||||
elif evt.GetId() == wxID_UNDO: evt.Enable(undoMan.CanUndo())
|
||||
elif evt.GetId() == wxID_REDO: evt.Enable(undoMan.CanRedo())
|
||||
|
||||
@@ -894,7 +936,8 @@ Homepage: http://xrced.sourceforge.net\
|
||||
# Numbers for new controls
|
||||
self.maxIDs = {}
|
||||
self.maxIDs[xxxPanel] = self.maxIDs[xxxDialog] = self.maxIDs[xxxFrame] = \
|
||||
self.maxIDs[xxxMenuBar] = self.maxIDs[xxxMenu] = self.maxIDs[xxxToolBar] = 0
|
||||
self.maxIDs[xxxMenuBar] = self.maxIDs[xxxMenu] = self.maxIDs[xxxToolBar] = \
|
||||
self.maxIDs[xxxWizard] = 0
|
||||
|
||||
def Open(self, path):
|
||||
if not os.path.exists(path):
|
||||
@@ -1040,13 +1083,6 @@ class App(wxApp):
|
||||
# Create main frame
|
||||
frame = Frame(pos, size)
|
||||
frame.Show(True)
|
||||
# Load resources from XRC file (!!! should be transformed to .py later?)
|
||||
frame.res = wxXmlResource('')
|
||||
# !!! Temporary blocking of assert failure occuring in unicode build
|
||||
try:
|
||||
frame.res.Load(os.path.join(basePath, 'xrced.xrc'))
|
||||
except wx._core.PyAssertionError:
|
||||
pass
|
||||
|
||||
# Load file after showing
|
||||
if args:
|
||||
|
Reference in New Issue
Block a user