]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/tools/XRCed/xrced.py
Get/SetTitle only for wxTopLevelWindow (wxMGL part).
[wxWidgets.git] / wxPython / wx / tools / XRCed / xrced.py
index 36c553a6e13c0863c938ec369c8c6532e8bc4fd0..a68597b7fd51e55943f7b06da312732ecb75a257 100644 (file)
@@ -314,6 +314,7 @@ class Frame(wxFrame):
         EVT_CLOSE(self, self.OnCloseWindow)
         EVT_KEY_DOWN(self, tools.OnKeyDown)
         EVT_KEY_UP(self, tools.OnKeyUp)
+        EVT_ICONIZE(self, self.OnIconize)
     
     def AppendRecent(self, menu):
         # add recently used files to the menu
@@ -347,7 +348,6 @@ class Frame(wxFrame):
         if dlg.ShowModal() == wxID_OK:
             path = dlg.GetPath()
             self.SetStatusText('Loading...')
-            wxYield()
             wxBeginBusyCursor()
             try:
                 if self.Open(path):
@@ -375,7 +375,6 @@ class Frame(wxFrame):
         else:
             path = self.dataFile
         self.SetStatusText('Saving...')
-        wxYield()
         wxBeginBusyCursor()
         try:
             try:
@@ -594,7 +593,6 @@ class Frame(wxFrame):
             sizePanel = panel.GetSize()
             panel.Reparent(self.splitter)
             self.miniFrame.GetSizer().Remove(panel)
-            wxYield()
             # Widen
             self.SetDimensions(pos.x, pos.y, size.width + sizePanel.width, size.height)
             self.splitter.SplitVertically(tree, panel, conf.sashPos)
@@ -612,7 +610,6 @@ class Frame(wxFrame):
             self.miniFrame.Show(True)
             self.miniFrame.SetDimensions(conf.panelX, conf.panelY,
                                          conf.panelWidth, conf.panelHeight)
-            wxYield()
             # Reduce width
             self.SetDimensions(pos.x, pos.y,
                                max(size.width - sizePanel.width, self.minWidth), size.height)
@@ -804,21 +801,25 @@ Homepage: http://xrced.sourceforge.net\
         tree.SetFocus()
         self.SetModified()
 
-
     # Replace one object with another
     def OnReplace(self, evt):
         selected = tree.selection
         xxx = tree.GetPyData(selected).treeObject()
         elem = xxx.element
         parent = elem.parentNode
-        parentXXX = xxx.parent
+        undoMan.RegisterUndo(UndoReplace(selected))
         # New class
         className = pullDownMenu.createMap[evt.GetId() - 1000]
         # Create temporary empty node (with default values)
         dummy = MakeEmptyDOM(className)
-        xxxClass = xxxDict[className]
+        if className == 'spacer' and xxx.className != 'spacer':
+            klass = xxxSpacer
+        elif xxx.className == 'spacer' and className != 'spacer':
+            klass = xxxSizerItem
+        else:
+            klass = xxxDict[className]
         # Remove non-compatible children
-        if tree.ItemHasChildren(selected) and not xxxClass.hasChildren:
+        if tree.ItemHasChildren(selected) and not klass.hasChildren:
             tree.DeleteChildren(selected)
         nodes = elem.childNodes[:]
         tags = []
@@ -827,10 +828,9 @@ Homepage: http://xrced.sourceforge.net\
             remove = False
             tag = node.tagName
             if tag == 'object':
-                if not xxxClass.hasChildren:
-                    remove = True
-            elif tag not in xxxClass.allParams and \
-                     (not xxxClass.hasStyle or tag not in xxxClass.styles):
+                if not klass.hasChildren:  remove = True
+            elif tag not in klass.allParams and \
+                     (not klass.hasStyle or tag not in klass.styles):
                 remove = True
             else:
                 tags.append(tag)
@@ -838,18 +838,37 @@ Homepage: http://xrced.sourceforge.net\
                 elem.removeChild(node)
                 node.unlink()
         
-        # Copy parameters present in dummy but not in elem
-        for node in dummy.childNodes:
-            tag = node.tagName
-            if tag not in tags:
-                elem.appendChild(node.cloneNode(True))
+        # Remove sizeritem child if spacer
+        if className == 'spacer' and xxx.className != 'spacer':
+            sizeritem = elem.parentNode
+            assert sizeritem.getAttribute('class') == 'sizeritem'
+            sizeritem.removeChild(elem)
+            elem.unlink()
+            elem = sizeritem
+            tree.GetPyData(selected).hasChild = false
+        elif xxx.className == 'spacer' and className != 'spacer':
+            # Create sizeritem element
+            assert xxx.parent.isSizer
+            elem.setAttribute('class', 'sizeritem')
+            node = MakeEmptyDOM(className)
+            elem.appendChild(node)
+            # Replace to point to new object
+            xxx = xxxSizerItem(xxx.parent, elem)
+            elem = node
+            tree.SetPyData(selected, xxx)
+            xxx = xxx.child
+        else:
+            # Copy parameters present in dummy but not in elem
+            for node in dummy.childNodes:
+                if node.tagName not in tags:  elem.appendChild(node.cloneNode(True))
         dummy.unlink()
+        
         # Change class name
-        elem.setAttribute('class', className)        
+        elem.setAttribute('class', className)
         if elem.hasAttribute('subclass'):
             elem.removeAttribute('subclass') # clear subclassing
         # Re-create xxx element
-        xxx = MakeXXXFromDOM(parentXXX, elem)
+        xxx = MakeXXXFromDOM(xxx.parent, elem)
         # Update parent in child objects
         if tree.ItemHasChildren(selected):
             i, cookie = tree.GetFirstChild(selected)
@@ -858,13 +877,14 @@ Homepage: http://xrced.sourceforge.net\
                 x.parent = xxx
                 if x.hasChild: x.child.parent = xxx
                 i, cookie = tree.GetNextChild(selected, cookie)
-    
+
         # Update tree
         if tree.GetPyData(selected).hasChild: # child container
             container = tree.GetPyData(selected)
             container.child = xxx
             container.hasChildren = xxx.hasChildren
             container.isSizer = xxx.isSizer
+            xxx = container
         else:
             tree.SetPyData(selected, xxx)
         tree.SetItemText(selected, xxx.treeName())
@@ -932,7 +952,6 @@ Homepage: http://xrced.sourceforge.net\
                     self.SetStatusText('Refreshing test window...')
                     # (re)create
                     tree.CreateTestWin(g.testWin.item)
-                    wxYield()
                     self.SetStatusText('')
                 tree.needUpdate = False
         elif tree.pendingHighLight:
@@ -945,6 +964,17 @@ Homepage: http://xrced.sourceforge.net\
     def OnCloseMiniFrame(self, evt):
         return
 
+    def OnIconize(self, evt):
+        conf.x, conf.y = self.GetPosition()
+        conf.width, conf.height = self.GetSize()
+        if conf.embedPanel:
+            conf.sashPos = self.splitter.GetSashPosition()
+        else:
+            conf.panelX, conf.panelY = self.miniFrame.GetPosition()
+            conf.panelWidth, conf.panelHeight = self.miniFrame.GetSize()
+            self.miniFrame.Iconize()
+        evt.Skip()
+
     def OnCloseWindow(self, evt):
         if not self.AskSave(): return
         if g.testWin: g.testWin.Destroy()
@@ -1053,6 +1083,10 @@ Homepage: http://xrced.sourceforge.net\
             #self.domCopy = tree.dom.cloneNode(True)
             self.domCopy = MyDocument()
             mainNode = self.domCopy.appendChild(tree.mainNode.cloneNode(True))
+            # Remove first child (test element)
+            testElem = mainNode.firstChild
+            mainNode.removeChild(testElem)
+            testElem.unlink()
             self.Indent(mainNode)
             self.domCopy.writexml(f, encoding = g.currentEncoding)
             f.close()