################################################################################
+# Parse string in form var1=val1[,var2=val2]* as dictionary
+def ReadDictFromString(s):
+ d = {}
+ for vv in s.split(','):
+ var,val = vv.split(':')
+ d[var.strip()] = val
+ return d
+
+# Transform dictionary with strings into one string
+def DictToString(d):
+ return ','.join(map(':'.join, d.items()))
+
def usage():
print >> sys.stderr, 'usage: xrced [-dhiv] [file]'
conf.panelWidth = conf.ReadInt('panelWidth', 200)
conf.panelHeight = conf.ReadInt('panelHeight', 200)
conf.panic = not conf.HasEntry('nopanic')
+ # Preferences
+ p = 'Prefs/sizeritem_defaults_panel'
+ if conf.HasEntry(p):
+ sys.modules['xxx'].xxxSizerItem.defaults_panel = ReadDictFromString(conf.Read(p))
+ p = 'Prefs/sizeritem_defaults_control'
+ if conf.HasEntry(p):
+ sys.modules['xxx'].xxxSizerItem.defaults_control = ReadDictFromString(conf.Read(p))
+
# Add handlers
wx.FileSystem.AddHandler(wx.MemoryFSHandler())
# Create main frame
wc.WriteInt('panelHeight', conf.panelHeight)
wc.WriteInt('nopanic', True)
wc.Write('recentFiles', '|'.join(conf.recentfiles.values()[-5:]))
+ # Preferences
+ v = sys.modules['xxx'].xxxSizerItem.defaults_panel
+ if v: wc.Write('Prefs/sizeritem_defaults_panel', DictToString(v))
+ v = sys.modules['xxx'].xxxSizerItem.defaults_control
+ if v: wc.Write('Prefs/sizeritem_defaults_control', DictToString(v))
wc.Flush()
def main():
else: obj = self
obj.name = name
obj.node.setAttribute('name', name)
+ # Set normal (text) params
+ def set(self, param, value):
+ try:
+ self.params[param].update(value)
+ except KeyError:
+ p = xxxParam(g.tree.dom.createElement(param))
+ p.update(value)
+ self.params[param] = p
# Special processing for growablecols-like parameters
# represented by several nodes
def special(self, tag, node):
class xxxSizerItem(xxxChildContainer):
allParams = ['option', 'flag', 'border', 'minsize', 'ratio']
paramDict = {'option': ParamInt, 'minsize': ParamPosSize, 'ratio': ParamPosSize}
- #default = {'cellspan': '1,1'}
+ defaults_panel = {}
+ defaults_control = {}
def __init__(self, parent, element, refElem=None):
# For GridBag sizer items, extra parameters added
if isinstance(parent, xxxGridBagSizer):
if 'pos' in self.child.allParams:
self.child.allParams = self.child.allParams[:]
self.child.allParams.remove('pos')
+ # Set defaults for some children types
+ if isinstance(self.child, xxxContainer) and not self.child.isSizer:
+ for param,v in self.defaults_panel.items():
+ print param,v
+ self.set(param, v)
+ elif isinstance(self.child, xxxObject):
+ for param,v in self.defaults_control.items():
+ self.set(param, v)
def resetChild(self, xxx):
xxxChildContainer.resetChild(self, xxx)
# Remove pos parameter - not needed for sizeritems