+0.1.8-2
+-------
+
+Fix for dealing with empty 'growable' property, using MiniFrame
+for properties panel, the panel is restored together with the
+main window.
+
0.1.8-1
-------
# Global constants
progname = 'XRCed'
-version = '0.1.8-1'
+version = '0.1.8-2'
# Minimal wxWidgets version
MinWxVersion = (2,6,0)
if wx.VERSION[:3] < MinWxVersion:
xxx.params[param].remove()
del xxx.params[param]
w.SetValue('')
- w.modified = False # mark as not changed
+ w.SetModified(False) # mark as not changed
w.Enable(False)
# Set modified flag (provokes undo storing is necessary)
panel.SetModified(True)
for w in self.GetChildren():
w.Enable(value)
#wx.Panel.Enable(self, value)
- def SetModified(self):
- self.modified = True
- g.panel.SetModified(True)
+ def SetModified(self, state=True):
+ self.modified = state
+ if state: g.panel.SetModified(True)
# Common method to set modified state
def OnChange(self, evt):
if self.freeze: return
dlg = wx.FontDialog(self, data)
if dlg.ShowModal() == wx.ID_OK:
font = dlg.GetFontData().GetChosenFont()
- print font.GetEncoding()
if font.GetEncoding() == wx.FONTENCODING_SYSTEM:
encName = ''
else:
self.SetModified()
except:
# !!! Strange, if I use wx.LogWarning, event is re-generated
- print 'incorrect unit format'
+ print 'ERROR: incorrect unit format'
def OnSpinUp(self, evt):
self.Change(1)
def OnSpinDown(self, evt):
if self.textModified: # text has newer value
try:
return self.text.GetValue().split('|')
- except SyntaxError:
- wx.LogError('Syntax error in parameter value: ' + self.GetName())
+ except ValueError:
return []
return self.value
def SetValue(self, value):
self.SetModified()
self.textModified = False
dlg.Destroy()
+ def SetModified(self, state=True):
+ PPanel.SetModified(self, state)
+ self.textModified = False
# CheckList content
class ParamContentCheckList(ParamContent):
if self.textModified: # text has newer value
try:
self.value = map(int, self.text.GetValue().split('|'))
- except SyntaxError:
- wx.LogError('Syntax error in parameter value: ' + self.GetName())
+ except ValueError:
self.value = []
dlg = IntListDialog(self, self.value)
if dlg.ShowModal() == wx.ID_OK:
tree.RegisterKeyEvents()
- # !!! frame styles are broken
- # Miniframe for not embedded mode
- miniFrame = wx.Frame(self, -1, 'Properties & Style',
- (conf.panelX, conf.panelY),
- (conf.panelWidth, conf.panelHeight))
+ # Miniframe for split mode
+ miniFrame = wx.MiniFrame(self, -1, 'Properties & Style',
+ (conf.panelX, conf.panelY),
+ (conf.panelWidth, conf.panelHeight))
self.miniFrame = miniFrame
sizer2 = wx.BoxSizer()
miniFrame.SetAutoLayout(True)
self.miniFrame.Show(True)
self.miniFrame.SetDimensions(conf.panelX, conf.panelY,
conf.panelWidth, conf.panelHeight)
+ self.miniFrame.Layout()
# Reduce width
self.SetDimensions(pos.x, pos.y,
max(size.width - sizePanel.width, self.minWidth), size.height)
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()
+ if evt.Iconized():
+ 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()
else:
- conf.panelX, conf.panelY = self.miniFrame.GetPosition()
- conf.panelWidth, conf.panelHeight = self.miniFrame.GetSize()
- self.miniFrame.Iconize()
+ if not conf.embedPanel:
+ self.miniFrame.Iconize(False)
evt.Skip()
def OnCloseWindow(self, evt):
else: obj = self
obj.name = name
obj.element.setAttribute('name', name)
+ # Special processing for growablecols-like parameters
+ # represented by several nodes
+ def special(self, tag, node):
+ print 'special',tag
+ if not self.params.has_key(tag):
+ # Create new multi-group
+ self.params[tag] = xxxParamMulti(node)
+ self.params[tag].append(xxxParamInt(node))
+ def setSpecial(self, param, value):
+ # Straightforward implementation: remove, add again
+ self.params[param].remove()
+ del self.params[param]
+ for i in value:
+ node = g.tree.dom.createElement(param)
+ text = g.tree.dom.createTextNode(str(i))
+ node.appendChild(text)
+ self.element.appendChild(node)
+ self.special(param, node)
# Imitation of FindResource/DoFindResource from xmlres.cpp
def DoFindResource(parent, name, classname, recursive):
specials = ['growablecols', 'growablerows']
allParams = ['cols', 'rows', 'vgap', 'hgap'] + specials
paramDict = {'growablecols': ParamIntList, 'growablerows': ParamIntList}
- # Special processing for growable* parameters
- # (they are represented by several nodes)
- def special(self, tag, node):
- if not self.params.has_key(tag):
- # Create new multi-group
- self.params[tag] = xxxParamMulti(node)
- self.params[tag].append(xxxParamInt(node))
- def setSpecial(self, param, value):
- # Straightforward implementation: remove, add again
- self.params[param].remove()
- del self.params[param]
- for i in value:
- node = g.tree.dom.createElement(param)
- text = g.tree.dom.createTextNode(str(i))
- node.appendChild(text)
- self.element.appendChild(node)
- self.special(param, node)
class xxxGridBagSizer(xxxSizer):
specials = ['growablecols', 'growablerows']
allParams = ['vgap', 'hgap'] + specials
- paramDict = {'growablecols':ParamIntList, 'growablerows':ParamIntList}
- # Special processing for growable* parameters
- # (they are represented by several nodes)
- def special(self, tag, node):
- if not self.params.has_key(tag):
- # Create new multi-group
- self.params[tag] = xxxParamMulti(node)
- self.params[tag].append(xxxParamInt(node))
- def setSpecial(self, param, value):
- # Straightforward implementation: remove, add again
- self.params[param].remove()
- del self.params[param]
- for i in value:
- node = g.tree.dom.createElement(param)
- text = g.tree.dom.createTextNode(str(i))
- node.appendChild(text)
- self.element.appendChild(node)
- self.special(param, node)
+ paramDict = {'growablecols': ParamIntList, 'growablerows': ParamIntList}
# Container with only one child.
# Not shown in tree.