Batch of changes:
- converting relative paths to absolute to compensate chdir - added Locate command (Edit menu) - Notebook children are highlighted correctly (at least on wxGTK 2.5.3) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -11,7 +11,7 @@ import sys
 | 
				
			|||||||
# Global constants
 | 
					# Global constants
 | 
				
			||||||
 | 
					
 | 
				
			||||||
progname = 'XRCed'
 | 
					progname = 'XRCed'
 | 
				
			||||||
version = '0.1.3-1'
 | 
					version = '0.1.4-1'
 | 
				
			||||||
# Can be changed to set other default encoding different
 | 
					# Can be changed to set other default encoding different
 | 
				
			||||||
defaultEncoding = sys.getdefaultencoding()
 | 
					defaultEncoding = sys.getdefaultencoding()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -523,12 +523,20 @@ class XML_Tree(wxTreeCtrl):
 | 
				
			|||||||
            # Find position
 | 
					            # Find position
 | 
				
			||||||
            for i in range(notebook.GetPageCount()):
 | 
					            for i in range(notebook.GetPageCount()):
 | 
				
			||||||
                if notebook.GetPage(i) == obj:
 | 
					                if notebook.GetPage(i) == obj:
 | 
				
			||||||
                    if notebook.GetSelection() != i: notebook.SetSelection(i)
 | 
					                    if notebook.GetSelection() != i:
 | 
				
			||||||
 | 
					                        notebook.SetSelection(i)
 | 
				
			||||||
 | 
					                        # Remove highlight - otherwise highlight window won't be visible
 | 
				
			||||||
 | 
					                        if g.testWin.highLight:
 | 
				
			||||||
 | 
					                            g.testWin.highLight.Remove()
 | 
				
			||||||
                    break
 | 
					                    break
 | 
				
			||||||
        # Find first ancestor which is a wxWindow (not a sizer)
 | 
					        # Find first ancestor which is a wxWindow (not a sizer)
 | 
				
			||||||
        winParent = itemParent
 | 
					        winParent = itemParent
 | 
				
			||||||
        while self.GetPyData(winParent).isSizer:
 | 
					        while self.GetPyData(winParent).isSizer:
 | 
				
			||||||
            winParent = self.GetItemParent(winParent)
 | 
					            winParent = self.GetItemParent(winParent)
 | 
				
			||||||
 | 
					        # Notebook children are layed out in a little strange way
 | 
				
			||||||
 | 
					        if self.GetPyData(itemParent).treeObject().__class__ == xxxNotebook:
 | 
				
			||||||
 | 
					            parentPos = wxPoint(0,0)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
            parentPos = self.FindNodePos(winParent)
 | 
					            parentPos = self.FindNodePos(winParent)
 | 
				
			||||||
        # Position (-1,-1) is really (0,0)
 | 
					        # Position (-1,-1) is really (0,0)
 | 
				
			||||||
        pos = obj.GetPosition()
 | 
					        pos = obj.GetPosition()
 | 
				
			||||||
@@ -559,6 +567,9 @@ class XML_Tree(wxTreeCtrl):
 | 
				
			|||||||
        return child
 | 
					        return child
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def OnSelChanged(self, evt):
 | 
					    def OnSelChanged(self, evt):
 | 
				
			||||||
 | 
					        self.ChangeSelection(evt.GetItem())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def ChangeSelection(self, item):
 | 
				
			||||||
        # Apply changes
 | 
					        # Apply changes
 | 
				
			||||||
        # !!! problem with wxGTK - GetOldItem is Ok if nothing selected
 | 
					        # !!! problem with wxGTK - GetOldItem is Ok if nothing selected
 | 
				
			||||||
        #oldItem = evt.GetOldItem()
 | 
					        #oldItem = evt.GetOldItem()
 | 
				
			||||||
@@ -577,7 +588,7 @@ class XML_Tree(wxTreeCtrl):
 | 
				
			|||||||
                status = 'Changes were applied'
 | 
					                status = 'Changes were applied'
 | 
				
			||||||
        g.frame.SetStatusText(status)
 | 
					        g.frame.SetStatusText(status)
 | 
				
			||||||
        # Generate view
 | 
					        # Generate view
 | 
				
			||||||
        self.selection = evt.GetItem()
 | 
					        self.selection = item
 | 
				
			||||||
        if not self.selection.IsOk():
 | 
					        if not self.selection.IsOk():
 | 
				
			||||||
            self.selection = None
 | 
					            self.selection = None
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
@@ -753,7 +764,6 @@ class XML_Tree(wxTreeCtrl):
 | 
				
			|||||||
                testWin.panel = testWin
 | 
					                testWin.panel = testWin
 | 
				
			||||||
                testWin.CreateStatusBar()
 | 
					                testWin.CreateStatusBar()
 | 
				
			||||||
                testWin.SetClientSize(testWin.GetBestSize())
 | 
					                testWin.SetClientSize(testWin.GetBestSize())
 | 
				
			||||||
                testWin.panel = testWin
 | 
					 | 
				
			||||||
                testWin.SetPosition(pos)
 | 
					                testWin.SetPosition(pos)
 | 
				
			||||||
                testWin.Show(True)
 | 
					                testWin.Show(True)
 | 
				
			||||||
            elif xxx.__class__ == xxxPanel:
 | 
					            elif xxx.__class__ == xxxPanel:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,6 +79,11 @@ class ScrolledMessageDialog(wxDialog):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
################################################################################
 | 
					################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Event handler for using during location
 | 
				
			||||||
 | 
					class Locator(wxEvtHandler):
 | 
				
			||||||
 | 
					    def ProcessEvent(self, evt):
 | 
				
			||||||
 | 
					        print evt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Frame(wxFrame):
 | 
					class Frame(wxFrame):
 | 
				
			||||||
    def __init__(self, pos, size):
 | 
					    def __init__(self, pos, size):
 | 
				
			||||||
        wxFrame.__init__(self, None, -1, '', pos, size)
 | 
					        wxFrame.__init__(self, None, -1, '', pos, size)
 | 
				
			||||||
@@ -119,8 +124,8 @@ class Frame(wxFrame):
 | 
				
			|||||||
        self.ID_DELETE = wxNewId()
 | 
					        self.ID_DELETE = wxNewId()
 | 
				
			||||||
        menu.Append(self.ID_DELETE, '&Delete\tCtrl-D', 'Delete object')
 | 
					        menu.Append(self.ID_DELETE, '&Delete\tCtrl-D', 'Delete object')
 | 
				
			||||||
#        menu.AppendSeparator()
 | 
					#        menu.AppendSeparator()
 | 
				
			||||||
        ID_SELECT = wxNewId()
 | 
					        self.ID_LOCATE = wxNewId()
 | 
				
			||||||
#        menu.Append(ID_SELECT, '&Select', 'Select object')
 | 
					        menu.Append(self.ID_LOCATE, '&Locate\tCtrl-L', 'Locate control in test window and select it')
 | 
				
			||||||
        menuBar.Append(menu, '&Edit')
 | 
					        menuBar.Append(menu, '&Edit')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        menu = wxMenu()
 | 
					        menu = wxMenu()
 | 
				
			||||||
@@ -133,7 +138,7 @@ class Frame(wxFrame):
 | 
				
			|||||||
        menu.Check(self.ID_SHOW_TOOLS, conf.showTools)
 | 
					        menu.Check(self.ID_SHOW_TOOLS, conf.showTools)
 | 
				
			||||||
        menu.AppendSeparator()
 | 
					        menu.AppendSeparator()
 | 
				
			||||||
        self.ID_TEST = wxNewId()
 | 
					        self.ID_TEST = wxNewId()
 | 
				
			||||||
        menu.Append(self.ID_TEST, '&Test\tF5', 'Test window')
 | 
					        menu.Append(self.ID_TEST, '&Test\tF5', 'Show test window')
 | 
				
			||||||
        self.ID_REFRESH = wxNewId()
 | 
					        self.ID_REFRESH = wxNewId()
 | 
				
			||||||
        menu.Append(self.ID_REFRESH, '&Refresh\tCtrl-R', 'Refresh test window')
 | 
					        menu.Append(self.ID_REFRESH, '&Refresh\tCtrl-R', 'Refresh test window')
 | 
				
			||||||
        self.ID_AUTO_REFRESH = wxNewId()
 | 
					        self.ID_AUTO_REFRESH = wxNewId()
 | 
				
			||||||
@@ -194,7 +199,7 @@ class Frame(wxFrame):
 | 
				
			|||||||
        EVT_MENU(self, wxID_COPY, self.OnCopy)
 | 
					        EVT_MENU(self, wxID_COPY, self.OnCopy)
 | 
				
			||||||
        EVT_MENU(self, wxID_PASTE, self.OnPaste)
 | 
					        EVT_MENU(self, wxID_PASTE, self.OnPaste)
 | 
				
			||||||
        EVT_MENU(self, self.ID_DELETE, self.OnCutDelete)
 | 
					        EVT_MENU(self, self.ID_DELETE, self.OnCutDelete)
 | 
				
			||||||
        EVT_MENU(self, ID_SELECT, self.OnSelect)
 | 
					        EVT_MENU(self, self.ID_LOCATE, self.OnLocate)
 | 
				
			||||||
        # View
 | 
					        # View
 | 
				
			||||||
        EVT_MENU(self, self.ID_EMBED_PANEL, self.OnEmbedPanel)
 | 
					        EVT_MENU(self, self.ID_EMBED_PANEL, self.OnEmbedPanel)
 | 
				
			||||||
        EVT_MENU(self, self.ID_SHOW_TOOLS, self.OnShowTools)
 | 
					        EVT_MENU(self, self.ID_SHOW_TOOLS, self.OnShowTools)
 | 
				
			||||||
@@ -271,7 +276,6 @@ class Frame(wxFrame):
 | 
				
			|||||||
        # Other events
 | 
					        # Other events
 | 
				
			||||||
        EVT_IDLE(self, self.OnIdle)
 | 
					        EVT_IDLE(self, self.OnIdle)
 | 
				
			||||||
        EVT_CLOSE(self, self.OnCloseWindow)
 | 
					        EVT_CLOSE(self, self.OnCloseWindow)
 | 
				
			||||||
        EVT_LEFT_DOWN(self, self.OnLeftDown)
 | 
					 | 
				
			||||||
        EVT_KEY_DOWN(self, tools.OnKeyDown)
 | 
					        EVT_KEY_DOWN(self, tools.OnKeyDown)
 | 
				
			||||||
        EVT_KEY_UP(self, tools.OnKeyUp)
 | 
					        EVT_KEY_UP(self, tools.OnKeyUp)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -321,8 +325,8 @@ class Frame(wxFrame):
 | 
				
			|||||||
        if evt.GetId() == wxID_SAVEAS or not self.dataFile:
 | 
					        if evt.GetId() == wxID_SAVEAS or not self.dataFile:
 | 
				
			||||||
            if self.dataFile: defaultName = ''
 | 
					            if self.dataFile: defaultName = ''
 | 
				
			||||||
            else: defaultName = 'UNTITLED.xrc'
 | 
					            else: defaultName = 'UNTITLED.xrc'
 | 
				
			||||||
            dlg = wxFileDialog(self, 'Save As', os.path.dirname(self.dataFile),
 | 
					            dirname = os.path.dirname(self.dataFile)
 | 
				
			||||||
                               defaultName, '*.xrc',
 | 
					            dlg = wxFileDialog(self, 'Save As', dirname, defaultName, '*.xrc',
 | 
				
			||||||
                               wxSAVE | wxOVERWRITE_PROMPT | wxCHANGE_DIR)
 | 
					                               wxSAVE | wxOVERWRITE_PROMPT | wxCHANGE_DIR)
 | 
				
			||||||
            if dlg.ShowModal() == wxID_OK:
 | 
					            if dlg.ShowModal() == wxID_OK:
 | 
				
			||||||
                path = dlg.GetPath()
 | 
					                path = dlg.GetPath()
 | 
				
			||||||
@@ -529,17 +533,6 @@ class Frame(wxFrame):
 | 
				
			|||||||
            panel.pages[0].box.SetLabel(xxx.panelName())
 | 
					            panel.pages[0].box.SetLabel(xxx.panelName())
 | 
				
			||||||
        dlg.Destroy()
 | 
					        dlg.Destroy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def OnSelect(self, evt):
 | 
					 | 
				
			||||||
        print >> sys.stderr, 'Xperimental function!'
 | 
					 | 
				
			||||||
        wxYield()
 | 
					 | 
				
			||||||
        self.SetCursor(wxCROSS_CURSOR)
 | 
					 | 
				
			||||||
        self.CaptureMouse()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def OnLeftDown(self, evt):
 | 
					 | 
				
			||||||
        pos = evt.GetPosition()
 | 
					 | 
				
			||||||
        self.SetCursor(wxNullCursor)
 | 
					 | 
				
			||||||
        self.ReleaseMouse()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def OnEmbedPanel(self, evt):
 | 
					    def OnEmbedPanel(self, evt):
 | 
				
			||||||
        conf.embedPanel = evt.IsChecked()
 | 
					        conf.embedPanel = evt.IsChecked()
 | 
				
			||||||
        if conf.embedPanel:
 | 
					        if conf.embedPanel:
 | 
				
			||||||
@@ -587,6 +580,44 @@ class Frame(wxFrame):
 | 
				
			|||||||
        if not tree.selection: return   # key pressed event
 | 
					        if not tree.selection: return   # key pressed event
 | 
				
			||||||
        tree.ShowTestWindow(tree.selection)
 | 
					        tree.ShowTestWindow(tree.selection)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Find object by relative position
 | 
				
			||||||
 | 
					    def FindObject(self, item, obj):
 | 
				
			||||||
 | 
					        # We simply perform depth-first traversal, sinse it's too much
 | 
				
			||||||
 | 
					        # hassle to deal with all sizer/window combinations
 | 
				
			||||||
 | 
					        w = tree.FindNodeObject(item)
 | 
				
			||||||
 | 
					        if w == obj:
 | 
				
			||||||
 | 
					            return item
 | 
				
			||||||
 | 
					        if tree.ItemHasChildren(item):
 | 
				
			||||||
 | 
					            child = tree.GetFirstChild(item)[0]
 | 
				
			||||||
 | 
					            while child:
 | 
				
			||||||
 | 
					                found = self.FindObject(child, obj)
 | 
				
			||||||
 | 
					                if found: return found
 | 
				
			||||||
 | 
					                child = tree.GetNextSibling(child)
 | 
				
			||||||
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def OnTestWinLeftDown(self, evt):
 | 
				
			||||||
 | 
					        pos = evt.GetPosition()
 | 
				
			||||||
 | 
					        self.SetHandler(g.testWin)
 | 
				
			||||||
 | 
					        g.testWin.Disconnect(wxID_ANY, wxID_ANY, wxEVT_LEFT_DOWN)
 | 
				
			||||||
 | 
					        item = self.FindObject(g.testWin.item, evt.GetEventObject())
 | 
				
			||||||
 | 
					        if item:
 | 
				
			||||||
 | 
					            tree.SelectItem(item)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def SetHandler(self, w, h=None):
 | 
				
			||||||
 | 
					        if h:
 | 
				
			||||||
 | 
					            w.SetEventHandler(h)
 | 
				
			||||||
 | 
					            w.SetCursor(wxCROSS_CURSOR)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            w.SetEventHandler(w)
 | 
				
			||||||
 | 
					            w.SetCursor(wxNullCursor)
 | 
				
			||||||
 | 
					        for ch in w.GetChildren():
 | 
				
			||||||
 | 
					            self.SetHandler(ch, h)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def OnRefresh(self, evt):
 | 
					    def OnRefresh(self, evt):
 | 
				
			||||||
        # If modified, apply first
 | 
					        # If modified, apply first
 | 
				
			||||||
        selection = tree.selection
 | 
					        selection = tree.selection
 | 
				
			||||||
@@ -877,10 +908,10 @@ Homepage: http://xrced.sourceforge.net\
 | 
				
			|||||||
            # Set encoding global variable
 | 
					            # Set encoding global variable
 | 
				
			||||||
            if dom.encoding: g.currentEncoding = dom.encoding
 | 
					            if dom.encoding: g.currentEncoding = dom.encoding
 | 
				
			||||||
            # Change dir
 | 
					            # Change dir
 | 
				
			||||||
 | 
					            self.dataFile = path = os.path.abspath(path)
 | 
				
			||||||
            dir = os.path.dirname(path)
 | 
					            dir = os.path.dirname(path)
 | 
				
			||||||
            if dir: os.chdir(dir)
 | 
					            if dir: os.chdir(dir)
 | 
				
			||||||
            tree.SetData(dom)
 | 
					            tree.SetData(dom)
 | 
				
			||||||
            self.dataFile = path
 | 
					 | 
				
			||||||
            self.SetTitle(progname + ': ' + os.path.basename(path))
 | 
					            self.SetTitle(progname + ': ' + os.path.basename(path))
 | 
				
			||||||
        except:
 | 
					        except:
 | 
				
			||||||
            # Nice exception printing
 | 
					            # Nice exception printing
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user