Yet another update of XRCed. Fixes some display issues and some minor
buglets. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -6,7 +6,7 @@
 | 
			
		||||
 | 
			
		||||
from wxPython.wx import *
 | 
			
		||||
from wxPython.xrc import *
 | 
			
		||||
from wxPython.html import *
 | 
			
		||||
from wxPython.html import wxHtmlWindow
 | 
			
		||||
from xml.dom import minidom
 | 
			
		||||
import os
 | 
			
		||||
import getopt
 | 
			
		||||
@@ -27,7 +27,7 @@ else:
 | 
			
		||||
    modernFont = wxFont(10, wxMODERN, wxNORMAL, wxNORMAL)
 | 
			
		||||
 | 
			
		||||
progname = 'XRCed'
 | 
			
		||||
version = '0.0.7-2'
 | 
			
		||||
version = '0.0.7-3'
 | 
			
		||||
 | 
			
		||||
# Local modules
 | 
			
		||||
from xxx import *
 | 
			
		||||
@@ -183,6 +183,8 @@ class Panel(wxNotebook):
 | 
			
		||||
        else:
 | 
			
		||||
            # Remove page if exists
 | 
			
		||||
            if self.GetPageCount() == 2:
 | 
			
		||||
                self.SetSelection(0)
 | 
			
		||||
                self.page1.Refresh()
 | 
			
		||||
                self.RemovePage(1)
 | 
			
		||||
    def Clear(self):
 | 
			
		||||
        self.SetData(None)
 | 
			
		||||
@@ -370,12 +372,13 @@ class StylePage(ParamPage):
 | 
			
		||||
            present = param in xxx.params.keys()
 | 
			
		||||
            check = self.checks[param]
 | 
			
		||||
            check.SetValue(present)
 | 
			
		||||
            control = self.controls[param]
 | 
			
		||||
            w = self.controls[param]
 | 
			
		||||
            w.modified = false
 | 
			
		||||
            if present:
 | 
			
		||||
                control.SetValue(xxx.params[param].value())
 | 
			
		||||
                w.SetValue(xxx.params[param].value())
 | 
			
		||||
            else:
 | 
			
		||||
                control.SetValue('')
 | 
			
		||||
            control.Enable(present)
 | 
			
		||||
                w.SetValue('')
 | 
			
		||||
            w.Enable(present)
 | 
			
		||||
        self.SetModified(false)
 | 
			
		||||
 | 
			
		||||
################################################################################
 | 
			
		||||
@@ -422,7 +425,7 @@ class XML_Tree(wxTreeCtrl):
 | 
			
		||||
        self.SetBackgroundColour(wxColour(224, 248, 224))
 | 
			
		||||
        EVT_TREE_SEL_CHANGED(self, self.GetId(), self.OnSelChanged)
 | 
			
		||||
        # One works on Linux, another on Windows
 | 
			
		||||
        if wxGetOsVersion()[1] == 1:
 | 
			
		||||
        if wxGetOsVersion()[0] == wxGTK:
 | 
			
		||||
            EVT_TREE_ITEM_ACTIVATED(self, self.GetId(), self.OnItemActivated)
 | 
			
		||||
        else:
 | 
			
		||||
            EVT_LEFT_DCLICK(self, self.OnDClick)
 | 
			
		||||
@@ -523,7 +526,6 @@ class XML_Tree(wxTreeCtrl):
 | 
			
		||||
        except:
 | 
			
		||||
            print 'ERROR: MakeXXXFromDom(%s, %s)' % (xxxParent, node)
 | 
			
		||||
            raise
 | 
			
		||||
#            return
 | 
			
		||||
        treeObj = xxx.treeObject()
 | 
			
		||||
        # Append tree item
 | 
			
		||||
        item = self.AppendItem(itemParent, treeObj.treeName(),
 | 
			
		||||
@@ -609,8 +611,8 @@ class XML_Tree(wxTreeCtrl):
 | 
			
		||||
            if panel.IsModified():
 | 
			
		||||
                self.Apply(xxx, oldItem)
 | 
			
		||||
                #if conf.autoRefresh:
 | 
			
		||||
                if testWin and not tree.IsHighlatable(oldItem):
 | 
			
		||||
                    if testWin.highLight:
 | 
			
		||||
                if testWin:
 | 
			
		||||
                    if testWin.highLight and not tree.IsHighlatable(oldItem):
 | 
			
		||||
                        testWin.highLight.Remove()
 | 
			
		||||
                    self.needUpdate = true
 | 
			
		||||
                status = 'Changes were applied'
 | 
			
		||||
@@ -998,13 +1000,7 @@ class Frame(wxFrame):
 | 
			
		||||
        icon = wxIcon(os.path.join(sys.path[0], 'xrced.ico'), wxBITMAP_TYPE_ICO)
 | 
			
		||||
        self.SetIcon(icon)
 | 
			
		||||
 | 
			
		||||
        # Defaults
 | 
			
		||||
        self.sashPos = 100
 | 
			
		||||
        self.panelX = self.panelY = -1
 | 
			
		||||
        self.panelWidth = 300
 | 
			
		||||
        self.panelHeight = 200
 | 
			
		||||
 | 
			
		||||
        # Idle flas
 | 
			
		||||
        # Idle flag
 | 
			
		||||
        self.inIdle = false
 | 
			
		||||
 | 
			
		||||
        # Make menus
 | 
			
		||||
@@ -1075,11 +1071,12 @@ class Frame(wxFrame):
 | 
			
		||||
                         'Refresh', 'Refresh view')
 | 
			
		||||
        tb.AddSimpleTool(self.ID_AUTO_REFRESH, images.getAutoRefreshBitmap(),
 | 
			
		||||
                         'Auto-refresh', 'Toggle auto-refresh mode', true)
 | 
			
		||||
        if wxGetOsVersion()[1] == 1:
 | 
			
		||||
        if wxGetOsVersion()[0] == wxGTK:
 | 
			
		||||
            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
 | 
			
		||||
 | 
			
		||||
        # File
 | 
			
		||||
        EVT_MENU(self, wxID_NEW, self.OnNew)
 | 
			
		||||
@@ -1527,20 +1524,35 @@ class Frame(wxFrame):
 | 
			
		||||
        conf.embedPanel = evt.IsChecked()
 | 
			
		||||
        if conf.embedPanel:
 | 
			
		||||
            # Remember last dimentions
 | 
			
		||||
            self.panelWidth, self.panelHeight = panel.GetSize()
 | 
			
		||||
            conf.panelX, conf.panelY = self.miniFrame.GetPosition()
 | 
			
		||||
            conf.panelWidth, conf.panelHeight = self.miniFrame.GetSize()
 | 
			
		||||
            size = self.GetSize()
 | 
			
		||||
            pos = self.GetPosition()
 | 
			
		||||
            sizePanel = panel.GetSize()
 | 
			
		||||
            panel.Reparent(self.splitter)
 | 
			
		||||
            self.miniFrame.GetSizer().RemoveWindow(panel)
 | 
			
		||||
            self.splitter.SplitVertically(tree, panel, self.sashPos)
 | 
			
		||||
            wxYield()
 | 
			
		||||
            # Widen
 | 
			
		||||
            self.SetDimensions(pos.x, pos.y, size.x + sizePanel.x, size.y)
 | 
			
		||||
            self.splitter.SplitVertically(tree, panel, conf.sashPos)
 | 
			
		||||
            self.miniFrame.Show(false)
 | 
			
		||||
        else:
 | 
			
		||||
            self.sashPos = self.splitter.GetSashPosition()
 | 
			
		||||
            conf.sashPos = self.splitter.GetSashPosition()
 | 
			
		||||
            pos = self.GetPosition()
 | 
			
		||||
            size = self.GetSize()
 | 
			
		||||
            sizePanel = panel.GetSize()
 | 
			
		||||
            self.splitter.Unsplit(panel)
 | 
			
		||||
            sizer = self.miniFrame.GetSizer()
 | 
			
		||||
            panel.Reparent(self.miniFrame)
 | 
			
		||||
            panel.Show(true)
 | 
			
		||||
            sizer.Add(panel, 1, wxEXPAND)
 | 
			
		||||
            self.miniFrame.Show(true)
 | 
			
		||||
            self.miniFrame.SetSize((self.panelWidth, self.panelHeight))
 | 
			
		||||
            self.miniFrame.SetDimensions(conf.panelX, conf.panelY,
 | 
			
		||||
                                         conf.panelWidth, conf.panelHeight)
 | 
			
		||||
            wxYield()
 | 
			
		||||
            # Reduce width
 | 
			
		||||
            self.SetDimensions(pos.x, pos.y,
 | 
			
		||||
                               max(size.x - sizePanel.x, self.minWidth), size.y)
 | 
			
		||||
 | 
			
		||||
    def OnTest(self, evt):
 | 
			
		||||
        if not tree.selection: return   # key pressed event
 | 
			
		||||
@@ -1694,8 +1706,6 @@ class Frame(wxFrame):
 | 
			
		||||
            evt.Enable((self.clipboard and tree.selection) != None)
 | 
			
		||||
        elif evt.GetId() == self.ID_TEST:
 | 
			
		||||
            evt.Enable(tree.selection != tree.root)
 | 
			
		||||
        elif evt.GetId() == self.ID_REFRESH:
 | 
			
		||||
            evt.Enable(testWin != None)
 | 
			
		||||
 | 
			
		||||
    def OnIdle(self, evt):
 | 
			
		||||
        if self.inIdle: return          # Recursive call protection
 | 
			
		||||
@@ -1724,16 +1734,13 @@ class Frame(wxFrame):
 | 
			
		||||
        if testWin: testWin.Destroy()
 | 
			
		||||
        # Destroy cached windows
 | 
			
		||||
        panel.cacheParent.Destroy()
 | 
			
		||||
#        for w in panel.styleCache.values(): w.Destroy()
 | 
			
		||||
        if not panel.GetPageCount() == 2:
 | 
			
		||||
            panel.page2.Destroy()
 | 
			
		||||
        conf.x, conf.y = self.GetPosition()
 | 
			
		||||
        conf.width, conf.height = self.GetSize()
 | 
			
		||||
        if conf.embedPanel:
 | 
			
		||||
            conf.sashPos = self.splitter.GetSashPosition()
 | 
			
		||||
            conf.panelWidth, conf.panelHeight = self.panelWidth, self.panelHeight
 | 
			
		||||
        else:
 | 
			
		||||
            conf.sashPos = self.sashPos
 | 
			
		||||
            conf.panelX, conf.panelY = self.miniFrame.GetPosition()
 | 
			
		||||
            conf.panelWidth, conf.panelHeight = self.miniFrame.GetSize()
 | 
			
		||||
        evt.Skip()
 | 
			
		||||
@@ -1792,12 +1799,15 @@ class Frame(wxFrame):
 | 
			
		||||
            self.OnRefresh(wxCommandEvent())
 | 
			
		||||
            f = open(path, 'w')
 | 
			
		||||
            # Make temporary copy
 | 
			
		||||
            self.domCopy = domCopy = tree.dom.cloneNode(true)
 | 
			
		||||
            self.Indent(domCopy.getElementsByTagName('resource')[0])
 | 
			
		||||
            domCopy.writexml(f)
 | 
			
		||||
#            domCopy.unlink()
 | 
			
		||||
            self.domCopy = None
 | 
			
		||||
            # !!! We can't clone dom node, it works only once
 | 
			
		||||
            #self.domCopy = tree.dom.cloneNode(true)
 | 
			
		||||
            self.domCopy = minidom.Document()
 | 
			
		||||
            mainNode = self.domCopy.appendChild(tree.mainNode.cloneNode(true))
 | 
			
		||||
            self.Indent(mainNode)
 | 
			
		||||
            self.domCopy.writexml(f)
 | 
			
		||||
            f.close()
 | 
			
		||||
            self.domCopy.unlink()
 | 
			
		||||
            self.domCopy = None
 | 
			
		||||
            self.modified = false
 | 
			
		||||
            panel.SetModified(false)
 | 
			
		||||
        except:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user