dabo Commit
Revision 4653
Date: 2008-11-03 10:17:15 -0800 (Mon, 03 Nov 2008)
Author: Paul
Trac: http://svn.dabodev.com/trac/dabo/changeset/4653
Changed:
U branches/paul_ss/dabo/__version__.py
U branches/paul_ss/dabo/lib/DesignerUtils.py
U branches/paul_ss/dabo/lib/DesignerXmlConverter.py
U branches/paul_ss/dabo/ui/uiwx/dDateTextBox.py
U branches/paul_ss/dabo/ui/uiwx/dLed.py
U branches/paul_ss/dabo/ui/uiwx/dPanel.py
U branches/paul_ss/dabo/ui/uiwx/dPemMixin.py
U branches/paul_ss/dabo/ui/uiwx/dSlidePanelControl.py
_U branches/paul_ss/demo/DaboDemo.py
U branches/paul_ss/demo/samples/dGauge.py
A branches/paul_ss/demo/samples/dLed.py
A branches/paul_ss/demo/samples/dSlidePanelControl.py
U branches/paul_ss/demo/samples/dSpinner.py
U branches/paul_ss/demo/samples/dTreeView.py
U branches/paul_ss/ide/ClassDesigner.py
U branches/paul_ss/ide/ClassDesignerComponents.py
Log:
Merged recent changes from trunk into my branch.
Diff:
Modified: branches/paul_ss/dabo/__version__.py
===================================================================
--- branches/paul_ss/dabo/__version__.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/dabo/__version__.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -3,7 +3,7 @@
# Everything else is boilerplate copied also to other dabo repositories.
package_name = "dabo"
_version = "0.8.4"
-_approximateRevision = "~4622"
+_approximateRevision = "~4652"
import os
import lib
Modified: branches/paul_ss/dabo/lib/DesignerUtils.py
===================================================================
--- branches/paul_ss/dabo/lib/DesignerUtils.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/dabo/lib/DesignerUtils.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -3,7 +3,11 @@
been separated from the design.
"""
import re
+import copy
+import dabo.ui as dui
+
+
def getCodeObjectSeperator():
return "## *!* ## Dabo Code ID: "
@@ -56,3 +60,206 @@
addCodeToClassDict(kid, cd)
+def getSizerDefaults():
+ """Return a dict that contains the defaults for the various controls
based upon
+ what sort of sizer they are contained within.
+ """
+ szDefaults = {}
+ defVals = {
+ "G": {"BorderSides": ["All"], "Proportion": 0,
"HAlign": "Center", "VAlign": "Middle", "Border": 0, "Expand": True,
"RowExpand": False, "ColExpand": True},
+ "H": {"BorderSides": ["All"], "Proportion": 1,
"HAlign": "Left", "VAlign": "Middle", "Border": 0, "Expand": True},
+ "V": {"BorderSides": ["All"], "Proportion": 1,
"HAlign": "Center", "VAlign": "Top", "Border": 0, "Expand": True}
+ }
+ # Use the defaults for each class, except where specified
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dBox] = dct
+ szDefaults["dBox"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dBitmap] = dct
+ szDefaults["dBitmap"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False, "HAlign" :
"center", "VAlign" : "middle"})
+ dct["H"].update({"Proportion" : 0, "Expand" : False, "HAlign":
"center"})
+ dct["V"].update({"Proportion" : 0, "Expand" : False, "VAlign":
"middle"})
+ szDefaults[dui.dBitmapButton] = dct
+ szDefaults["dBitmapButton"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False})
+ dct["H"].update({"Proportion" : 0, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : False})
+ szDefaults[dui.dButton] = dct
+ szDefaults["dButton"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False})
+ dct["H"].update({"Proportion" : 0, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : False})
+ szDefaults[dui.dCheckBox] = dct
+ szDefaults["dCheckBox"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False})
+ dct["H"].update({"Proportion" : 1, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : True})
+ szDefaults[dui.dComboBox] = dct
+ szDefaults["dComboBox"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False})
+ dct["H"].update({"Proportion" : 1, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : True})
+ szDefaults[dui.dDateTextBox] = dct
+ szDefaults["dDateTextBox"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dDialog] = dct
+ szDefaults["dDialog"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False})
+ dct["H"].update({"Proportion" : 1, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : True})
+ szDefaults[dui.dDropdownList] = dct
+ szDefaults["dDropdownList"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dEditBox] = dct
+ szDefaults["dEditBox"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dEditor] = dct
+ szDefaults["dEditor"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dSlidePanelControl] = dct
+ szDefaults["dSlidePanelControl"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False})
+ dct["H"].update({"Proportion" : 1, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : True})
+ szDefaults[dui.dGauge] = dct
+ szDefaults["dGauge"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dGrid] = dct
+ szDefaults["dGrid"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dGridSizer] = dct
+ szDefaults["dGridSizer"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dHtmlBox] = dct
+ szDefaults["dHtmlBox"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dImage] = dct
+ szDefaults["dImage"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False})
+ dct["H"].update({"Proportion" : 0, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : False})
+ szDefaults[dui.dLabel] = dct
+ szDefaults["dLabel"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False, "HAlign" :
"center", "VAlign" : "middle"})
+ dct["H"].update({"Proportion" : 1, "Expand" : False, "HAlign":
"center"})
+ dct["V"].update({"Proportion" : 0, "Expand" : True, "VAlign": "middle"})
+ szDefaults[dui.dLine] = dct
+ szDefaults["dLine"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dListBox] = dct
+ szDefaults["dListBox"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dListControl] = dct
+ szDefaults["dListControl"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dOkCancelDialog] = dct
+ szDefaults["dOkCancelDialog"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False, "ColExpand": True,
"RowExpand": False})
+ dct["H"].update({"Proportion" : 0, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : False})
+ szDefaults[dui.dRadioList] = dct
+ szDefaults["dRadioList"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dPage] = dct
+ szDefaults["dPage"] = dct
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dPanel] = dct
+ szDefaults["dPanel"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dScrollPanel] = dct
+ szDefaults["dScrollPanel"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dPageFrame] = dct
+ szDefaults["dPageFrame"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dPageList] = dct
+ szDefaults["dPageList"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dPageSelect] = dct
+ szDefaults["dPageSelect"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dPageFrameNoTabs] = dct
+ szDefaults["dPageFrameNoTabs"] = dct
+ dct = copy.deepcopy(defVals)
+ szDefaults[dui.dSizer] = dct
+ szDefaults["dSizer"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False, "HAlign" :
"center", "VAlign" : "middle", "ColExpand": True, "RowExpand": False})
+ dct["H"].update({"Proportion" : 1, "Expand" : False, "HAlign":
"center"})
+ dct["V"].update({"Proportion" : 0, "Expand" : True, "VAlign": "middle"})
+ szDefaults[dui.dSlider] = dct
+ szDefaults["dSlider"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : False, "ColExpand": True,
"RowExpand": False})
+ dct["H"].update({"Proportion" : 1, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : True})
+ szDefaults[dui.dSpinner] = dct
+ szDefaults["dSpinner"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center"})
+ dct["V"].update({"VAlign" : "middle"})
+ szDefaults[dui.dSplitter] = dct
+ szDefaults["dSplitter"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 1, "Expand" : True, "ColExpand": True,
"RowExpand": False})
+ dct["H"].update({"Proportion" : 1, "Expand" : False})
+ dct["V"].update({"Proportion" : 0, "Expand" : True})
+ szDefaults[dui.dTextBox] = dct
+ szDefaults["dTextBox"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["H"].update({"HAlign" : "center", "Proportion": 0, "Expand": False})
+ dct["V"].update({"VAlign" : "middle", "Proportion": 0, "Expand": False})
+ szDefaults[dui.dToggleButton] = dct
+ szDefaults["dToggleButton"] = dct
+ dct = copy.deepcopy(defVals)
+ dct["G"].update({"Proportion" : 0, "Expand" : True, "HAlign" :
"center", "VAlign" : "middle", "ColExpand": True, "RowExpand": True})
+ dct["H"].update({"Proportion" : 1, "Expand" : True, "HAlign": "center"})
+ dct["V"].update({"Proportion" : 1, "Expand" : True, "VAlign": "middle"})
+ szDefaults[dui.dTreeView] = dct
+ szDefaults["dTreeView"] = dct
+ return szDefaults
+
+_sizerDefaults = {}
+
+
+def getDefaultSizerProps(cls, szType):
+ global _sizerDefaults
+ if not _sizerDefaults:
+ _sizerDefaults = getSizerDefaults()
+ typ = szType[0].upper()
+ defaults = _sizerDefaults.get(cls, {})
+ ret = defaults.get(typ, {})
+ if not ret and isinstance(cls, basestring):
+ # Sometimes the Class Designer mangles names so that they are
unique
+ # E.g., 'dTextBox' becomes 'dTextBox_323432'
+ splitname = cls.split("_")
+ if len(splitname) == 2 and splitname[1].isdigit():
+ defaults = _sizerDefaults.get(splitname[0], {})
+ ret = defaults.get(typ, {})
+ return ret
Modified: branches/paul_ss/dabo/lib/DesignerXmlConverter.py
===================================================================
--- branches/paul_ss/dabo/lib/DesignerXmlConverter.py 2008-11-03 17:15:03 UTC
(rev 4652)
+++ branches/paul_ss/dabo/lib/DesignerXmlConverter.py 2008-11-03 18:17:15 UTC
(rev 4653)
@@ -47,6 +47,8 @@
self._methodNum = 0
# This is the text that will go into the temp .py file for
executed code
self._codeFileText = self._hdrText
+ # Tracks the current sizer type
+ self._sizerTypeStack = []
def classFromXml(self, src):
@@ -334,7 +336,6 @@
if code or custProps:
nm = self.createInnerClass(nm, atts,
code, custProps)
isCustom = True
-
if isSizer:
isGridSizer = clsname == "LayoutGridSizer"
if isGridSizer:
@@ -350,7 +351,13 @@
isBorderSizer = clsname == "LayoutBorderSizer"
ornt = ""
prnt = ""
- if not isGridSizer:
+ if isGridSizer:
+ szType = "G"
+ else:
+ if "Orientation" not in atts:
+ # Default to Horizontal
+ atts["Orientation"] = "H"
+ szType = atts["Orientation"]
if isBorderSizer:
prnt = "currParent, "
propString = "'%s',
Caption=\"%s\"" % (self._extractKey(atts, "Orientation", "H"),
@@ -361,15 +368,13 @@
atts.pop(unneeded)
except KeyError:
pass
- if "Orientation" not in atts:
- # Default to Horizontal
- atts["Orientation"] =
"H"
propString = ",
".join(["%s='%s'" % (k,v) for k,v in atts.items()])
if self.CreateDesignerControls:
superName = clsname
else:
superName = "dabo.ui.%s" % nm
self.classText += LINESEP + self._szText %
locals()
+ self._sizerTypeStack.append(szType)
elif clsname == "LayoutSpacerPanel":
if self.CreateDesignerControls:
@@ -398,6 +403,16 @@
# This isn't a sizer; it's a control
attPropString = ""
moduleString = ""
+ try:
+ typ = self._sizerTypeStack[-1]
+ except IndexError:
+ typ = "H"
+ szDefaults = desUtil.getDefaultSizerProps(nm,
typ)
+ if isinstance(szInfo, basestring):
+ szInfo = eval(szInfo)
+ szDefaults.update(szInfo)
+ szInfo = szDefaults
+
isSplitter = atts.has_key("SashPosition")
isSlidePanel = atts.has_key("PanelCount")
if isSplitter:
@@ -551,6 +566,7 @@
if needPop:
if isSizer:
self.classText += LINESEP +
self._szPopText
+ self._sizerTypeStack.pop()
else:
self.classText += LINESEP +
self._ctlPopText
return
Modified: branches/paul_ss/dabo/ui/uiwx/dDateTextBox.py
===================================================================
--- branches/paul_ss/dabo/ui/uiwx/dDateTextBox.py 2008-11-03 17:15:03 UTC
(rev 4652)
+++ branches/paul_ss/dabo/ui/uiwx/dDateTextBox.py 2008-11-03 18:17:15 UTC
(rev 4653)
@@ -107,8 +107,8 @@
R : Last Day of yeaR
C: Popup Calendar to Select
""")
-# self.DynamicToolTipText = lambda: {True:
self._defaultToolTipText,
-# False: None}[self.Enabled and not self.ReadOnly]
+ self.DynamicToolTipText = lambda: {True:
self._defaultToolTipText,
+ False: None}[self.Enabled and not self.ReadOnly]
def initEvents(self):
Modified: branches/paul_ss/dabo/ui/uiwx/dLed.py
===================================================================
--- branches/paul_ss/dabo/ui/uiwx/dLed.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/dabo/ui/uiwx/dLed.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -12,30 +12,19 @@
self._offColor = "darkred"
self._onColor = "green"
self._on = False
- self.Buffered = True
+ self.Buffered = False
self.led = self.drawCircle(1,1,1)
- self.led.DynamicXpos = self.setXPos
- self.led.DynamicYpos = self.setYPos
- self.led.DynamicRadius = self.setRadius
- self.led.DynamicFillColor = self.setFillColor
+ self.led.DynamicXpos = lambda: self.Width/2
+ self.led.DynamicYpos = lambda: self.Height/2
+ self.led.DynamicRadius = lambda: min(self.Width, self.Height)/2
+ self.led.DynamicFillColor = lambda: self.Color
self.update()
-
+
def onResize(self, evt):
"""Update the size of the LED."""
self.update()
-
- # Methods for the dynamic properties
- def setXPos(self):
- return self.Width /2
- def setYPos(self):
- return self.Height /2
- def setRadius(self):
- return (min(self.Width, self.Height)) /2
- def setFillColor(self):
- return self.Color
-
# Getters and Setters
def _getColor(self):
@@ -43,75 +32,76 @@
return self._onColor
else:
return self._offColor
-
+
+
def _getOffColor(self):
return self._offColor
-
+
def _setOffColor(self, val):
self._offColor = val
self.update()
-
+
+
def _getOn(self):
return self._on
-
+
def _setOn(self, val):
self._on = val
self.update()
-
+
+
def _getOnColor(self):
return self._onColor
-
+
def _setOnColor(self, val):
self._onColor = val
self.update()
-
-
+
+
# Property Definitions
Color = property(_getColor, None, None,
_("The color of the LED (color)"))
OffColor = property(_getOffColor, _setOffColor, None,
_("The color of the LED when it is off. (color)"))
-
+
On = property(_getOn, _setOn, None,
_("Is the LED is on? Default=False (bool)"))
-
+
OnColor = property(_getOnColor, _setOnColor, None,
_("The color of the LED when it is on. (color)"))
-
-class TestForm(dabo.ui.dForm):
- def afterInit(self):
- mp = dabo.ui.dPanel(self)
- self.Sizer.append1x(mp)
- mp.Sizer = dabo.ui.dSizer("h")
- mp.Sizer.append1x(dLed(self, RegID="LED"))
-
- vs = dabo.ui.dSizer("v", DefaultBorder=20)
- vs.appendSpacer(20)
- vs.DefaultBorderLeft = vs.DefaultBorderRight = True
- btn = dabo.ui.dToggleButton(mp, Caption="Toggle LED",
- DataSource=self.LED, DataField="On",
Value=False)
- vs.append(btn)
- vs.appendSpacer(12)
- vs.append(dabo.ui.dLabel(mp, Caption="On Color:"))
- dd = dabo.ui.dDropdownList(mp, Choices=dabo.dColors.colors,
- DataSource=self.LED, DataField="OnColor",
Value="green")
- vs.append(dd)
- vs.appendSpacer(12)
- vs.append(dabo.ui.dLabel(mp, Caption="Off Color:"))
- dd = dabo.ui.dDropdownList(mp, Choices=dabo.dColors.colors,
- DataSource=self.LED, DataField="OffColor",
Value="darkred")
- vs.append(dd)
- mp.Sizer.append(vs)
-
- self.LED.On = True
-
- self.layout()
-
-
if __name__ == '__main__':
+ class TestForm(dabo.ui.dForm):
+ def afterInit(self):
+ mp = dabo.ui.dPanel(self)
+ self.Sizer.append1x(mp)
+ mp.Sizer = dabo.ui.dSizer("h")
+ mp.Sizer.append1x(dLed(self, RegID="LED"))
+
+ vs = dabo.ui.dSizer("v", DefaultBorder=20)
+ vs.appendSpacer(20)
+ vs.DefaultBorderLeft = vs.DefaultBorderRight = True
+ btn = dabo.ui.dToggleButton(mp, Caption="Toggle LED",
+ DataSource=self.LED, DataField="On",
Value=False)
+ vs.append(btn)
+ vs.appendSpacer(12)
+ vs.append(dabo.ui.dLabel(mp, Caption="On Color:"))
+ dd = dabo.ui.dDropdownList(mp,
Choices=dabo.dColors.colors,
+ DataSource=self.LED,
DataField="OnColor", Value="green")
+ vs.append(dd)
+ vs.appendSpacer(12)
+ vs.append(dabo.ui.dLabel(mp, Caption="Off Color:"))
+ dd = dabo.ui.dDropdownList(mp,
Choices=dabo.dColors.colors,
+ DataSource=self.LED,
DataField="OffColor", Value="darkred")
+ vs.append(dd)
+ mp.Sizer.append(vs)
+
+ self.LED.On = True
+
+ self.layout()
+
app = dabo.dApp()
app.MainFormClass = TestForm
app.start()
Modified: branches/paul_ss/dabo/ui/uiwx/dPanel.py
===================================================================
--- branches/paul_ss/dabo/ui/uiwx/dPanel.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/dabo/ui/uiwx/dPanel.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -213,10 +213,10 @@
self._horizontalScroll = self._verticalScroll = True
self._baseClass = dScrollPanel
preClass = wx.PreScrolledWindow
+ kwargs["AlwaysResetSizer"] = self._extractKey((properties,
kwargs, attProperties), "AlwaysResetSizer", True)
_PanelMixin.__init__(self, preClass=preClass, parent=parent,
properties=properties,
attProperties=attProperties, *args, **kwargs)
self.SetScrollRate(10, 10)
-# self.SetScrollbars(10, 10, -1, -1)
def scrollHorizontally(self, amt):
Modified: branches/paul_ss/dabo/ui/uiwx/dPemMixin.py
===================================================================
--- branches/paul_ss/dabo/ui/uiwx/dPemMixin.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/dabo/ui/uiwx/dPemMixin.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -1208,14 +1208,11 @@
# This can happen if an object is released when there
is a
# pending callAfter() refresh.
return
-
- self.__updateDynamicProps()
-
if isinstance(self, dabo.ui.dForm) and
self.AutoUpdateStatusText:
self.setStatusText(self.getCurrentRecordText())
-
if self.Children:
self.raiseEvent(dEvents.Update)
+ dabo.ui.callAfter(self.__updateDynamicProps)
def __updateDynamicProps(self):
Modified: branches/paul_ss/dabo/ui/uiwx/dSlidePanelControl.py
===================================================================
--- branches/paul_ss/dabo/ui/uiwx/dSlidePanelControl.py 2008-11-03 17:15:03 UTC
(rev 4652)
+++ branches/paul_ss/dabo/ui/uiwx/dSlidePanelControl.py 2008-11-03 18:17:15 UTC
(rev 4653)
@@ -802,7 +802,7 @@
self.slideControl.collapseAll()
def onExpandAll(self, evt):
- self.mainContainer.expandAll()
+ self.slideControl.expandAll()
app = dabo.dApp()
Property changes on: branches/paul_ss/demo/DaboDemo.py
___________________________________________________________________
Name: svn:executable
+ *
Modified: branches/paul_ss/demo/samples/dGauge.py
===================================================================
--- branches/paul_ss/demo/samples/dGauge.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/demo/samples/dGauge.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -72,3 +72,13 @@
<p>Gauges do not raise any events, or respond to user interaction. They are
simply a convenient way to display the progress of a task or process.</p>
"""
+
+if __name__ == "__main__":
+ app = dabo.dApp(MainFormClass=None)
+ app.setup()
+ frm = dabo.ui.dForm()
+ pan = TestPanel(frm)
+ frm.Sizer.append1x(pan)
+ frm.show()
+ app.start()
+
Copied: branches/paul_ss/demo/samples/dLed.py (from rev 4652,
trunk/demo/samples/dLed.py)
===================================================================
--- branches/paul_ss/demo/samples/dLed.py (rev 0)
+++ branches/paul_ss/demo/samples/dLed.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -0,0 +1,51 @@
+# -*- coding: utf-8 -*-
+import dabo
+dabo.ui.loadUI("wx")
+import dabo.dEvents as dEvents
+from dabo.dLocalize import _
+
+class TestPanel(dabo.ui.dPanel):
+ def afterInit(self):
+ self.Sizer = dabo.ui.dSizer('v')
+ self.Sizer.appendSpacer(50)
+ hs = dabo.ui.dSizer('h')
+ self.Sizer.append(hs)
+
+ self.LED = dabo.ui.dLed(self, Height=100, Width=100)
+ hs.appendSpacer(50)
+ hs.append(self.LED)
+ hs.appendSpacer(25)
+
+ bs = dabo.ui.dBorderSizer(self, Caption="LED Options",
DefaultBorder=5)
+ gs = dabo.ui.dGridSizer(MaxCols=2, VGap=5, HGap=5)
+ gs.setColExpand(1, 1)
+ bs.append1x(gs)
+ gs.append(dabo.ui.dToggleButton(self, Caption="Toggle LED",
DataSource=self.LED, DataField="On", Value=True, OnHit=self.toggleLED),
"expand", colSpan=2)
+ gs.append(dabo.ui.dLabel(self, Caption="On Color:"))
+ gs.append(dabo.ui.dDropdownList(self,
Choices=dabo.dColors.colors, DataSource=self.LED, DataField="OnColor",
Value="green", OnHit=self.changeOnColor))
+ gs.append(dabo.ui.dLabel(self, Caption="Off Color:"))
+ gs.append(dabo.ui.dDropdownList(self,
Choices=dabo.dColors.colors, DataSource=self.LED, DataField="OffColor",
Value="darkred", OnHit=self.changeOffColor))
+ hs.append(bs)
+
+ self.LED.On = True
+ self.update()
+ self.layout()
+
+ def toggleLED(self, evt):
+ self.Form.logit("LED Toggled to %s" % {True:"On",
False:"Off"}[self.LED.On])
+
+ def changeOnColor(self, evt):
+ self.Form.logit("LED Color when on was changed to %s" %
self.LED.OnColor)
+
+ def changeOffColor(self, evt):
+ self.Form.logit("LED Color whenn off was changed to %s" %
self.LED.OffColor)
+
+category = "Controls.dLed"
+
+overview = _("""
+<p>The <b>dLed</b> class is used to display a boolean status. The control is
designed
+for displaying read only status, unlike the dCheckBox which is designed to
allow
+the user to make a boolean choice. You can change the On and Off colors to
suit
+your particular applications needs, but the defaults of dark red when off and
green
+when on should work well enough.</p>
+""")
Copied: branches/paul_ss/demo/samples/dSlidePanelControl.py (from rev 4652,
trunk/demo/samples/dSlidePanelControl.py)
===================================================================
--- branches/paul_ss/demo/samples/dSlidePanelControl.py
(rev 0)
+++ branches/paul_ss/demo/samples/dSlidePanelControl.py 2008-11-03 18:17:15 UTC
(rev 4653)
@@ -0,0 +1,100 @@
+# -*- coding: utf-8 -*-
+import dabo
+dabo.ui.loadUI("wx")
+import dabo.dEvents as dEvents
+from dabo.dLocalize import _
+
+
+class TestPanel(dabo.ui.dPanel):
+ def afterInit(self):
+ self.Sizer = dabo.ui.dSizer('v')
+
+ self.slideControl = dabo.ui.dSlidePanelControl(self,
ExpandContent=False, SingleClick=True)
+ self.Sizer.append1x(self.slideControl)
+
+ self.slidePanel1 = dabo.ui.dSlidePanel(self.slideControl,
Caption="First", BackColor="orange")
+ self.slidePanel2 = dabo.ui.dSlidePanel(self.slideControl,
Caption="Second", BarStyle="HorizontalFill", BarColor1="lightgreen",
BarColor2="ForestGreen", BackColor="wheat")
+ self.slidePanel3 = dabo.ui.dSlidePanel(self.slideControl,
Caption="Third", BarStyle="BorderOnly", BackColor="powderblue")
+
+ self.slidePanel1.Sizer = sz = dabo.ui.dSizer("v")
+ self.slidePanel1.Sizer.append(dabo.ui.dButton(self.slidePanel1,
Caption="Change Bar 1 Style", OnHit=self.changeSlidePanel1BarStyle), border=25)
+
+ self.slidePanel2.Sizer = dabo.ui.dSizer("v")
+ self.slidePanel2.Sizer.append(dabo.ui.dLabel(self.slidePanel2,
Caption="Tea For Two", FontItalic=True, FontSize=24))
+
+ def collapse3(evt):
+ mc = self.slideControl
+ if mc.Singleton:
+ mc.expand(self.slidePanel2)
+ else:
+ mc.collapse(self.slidePanel3)
+
+ self.slidePanel3.Sizer = dabo.ui.dSizer('v')
+ self.slidePanel3.Sizer.appendSpacer(25)
+ hs = dabo.ui.dSizer('h')
+ hs.appendSpacer(25)
+ hs.append(dabo.ui.dLabel(self.slidePanel3, Caption="Three
Strikes"), valign="Middle")
+ hs.appendSpacer(5)
+ hs.append(dabo.ui.dButton(self.slidePanel3, Caption="Collapse
Me", OnHit=collapse3))
+ self.slidePanel3.Sizer.append(hs)
+ self.slidePanel3.Sizer.appendSpacer(25)
+
+ hs = dabo.ui.dSizer("h")
+ hs.append(dabo.ui.dButton(self, Caption="Collapse All",
OnHit=self.collapseAllPanels))
+ hs.appendSpacer(10)
+ hs.append(dabo.ui.dButton(self, Caption="Expand All",
OnHit=self.expandAllPanels))
+ hs.appendSpacer(10)
+
+ vs = dabo.ui.dSizer("v")
+ vs.append(dabo.ui.dCheckBox(self, Caption="Singleton Style",
DataSource=self.slideControl, DataField="Singleton"))
+ vs.append(dabo.ui.dCheckBox(self, Caption="Single Click to
Toggle", DataSource=self.slideControl, DataField="SingleClick"))
+ vs.append(dabo.ui.dCheckBox(self, Caption="Collapsed Panels To
Bottom", DataSource=self.slideControl, DataField="CollapseToBottom"))
+ vs.append(dabo.ui.dCheckBox(self, Caption="Expand Content to
Full Size", DataSource=self.slideControl, DataField="ExpandContent"))
+ hs.append(vs)
+
+ self.Sizer.appendSpacer(10)
+ self.Sizer.append(hs, 0, halign="center", border=10)
+
+ self.layout()
+
+
+ def changeSlidePanel1BarStyle(self, evt):
+ import random
+ style = random.choice(self.slidePanel1._barStyles)
+ self.slidePanel1.BarStyle = style
+ color1 = dabo.dColors.randomColorName()
+ color2 = dabo.dColors.randomColorName()
+ self.slidePanel1.BarColor1 = color1
+ self.slidePanel1.BarColor2 = color2
+
+ if style in ("VerticalFill", "HorizontalFill"):
+ cap = "Style: %s; Colors: %s, %s" % (style, color1,
color2)
+ elif style in ("BorderOnly", ):
+ cap = "Style: %s" % style
+ else:
+ cap = "Style: %s; Color: %s" % (style, color1)
+ self.Form.logit(cap)
+
+
+ def collapseAllPanels(self, evt):
+ self.slideControl.collapseAll()
+ self.Form.logit("Collapsed All Panels")
+
+
+ def expandAllPanels(self, evt):
+ self.slideControl.expandAll()
+ self.Form.logit("Expanded All Panels")
+
+
+category = "Layout.dSlidePanelControl"
+
+overview = """
+<p><b>dSlidePanelControl</b> is a control which can maintain a list of
collapsable panels.
+When a panel is collapsed, the only thing visible to the User is its Caption
Bar.
+This action is used to provide more space for other panels, which allows the
user
+to close panels which are not used often to get the most out of the work
area.</p>
+
+<p>The control is very to use. Panels in the control should be instances of
Dabo's
+dPanel class. When they are created, simply set the parent of the panel to the
+dSlidePanelControl instance and dabo will automatically handle the rest.</p>
+"""
\ No newline at end of file
Modified: branches/paul_ss/demo/samples/dSpinner.py
===================================================================
--- branches/paul_ss/demo/samples/dSpinner.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/demo/samples/dSpinner.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -8,39 +8,99 @@
class TestPanel(dabo.ui.dPanel):
def afterInit(self):
sz = self.Sizer = dabo.ui.dSizer("v")
-
- lbl = dabo.ui.dLabel(self, Alignment="Center", WordWrap=True,
Width=400,
- Caption=_("Both of these spinners have a range
from 0 to 10. The only "
- "difference is that the top
spinner has its SpinnerWrap property set to "
- "True, which cycles it around
when it reaches one of its limits."))
-
- lbl.FontSize += 3
- lbl.ForeColor = "darkBlue"
- sz.appendSpacer(25)
- sz.append(lbl, halign="center")
- sz.appendSpacer(10)
-
- lbl = dabo.ui.dLabel(self, Caption=_("Spinner with wrapping"))
- spn = dabo.ui.dSpinner(self, Value=5, Max=10,
- Min=0, SpinnerWrap=True, Name="wrapSpinner")
+ sz.appendSpacer(50)
+ spn = self.spinner = dabo.ui.dSpinner(self, Max=25, Min=0,
Value=4.75,
+ Increment=1.25, SpinnerWrap=False, FontSize=12,
Width=100)
spn.bindEvent(dEvents.Hit, self.onSpinnerHit)
- sz.append(lbl, halign="center")
+ spn.bindEvent(dEvents.SpinUp, self.onSpinUp)
+ spn.bindEvent(dEvents.SpinDown, self.onSpinDown)
+ spn.bindEvent(dEvents.Spinner, self.onSpinner)
sz.append(spn, halign="center")
- sz.appendSpacer(20)
- lbl = dabo.ui.dLabel(self, Caption=_("Spinner without
wrapping"))
- spn = dabo.ui.dSpinner(self, Value=5, Max=10,
- Min=0, SpinnerWrap=False, Name="nowrapSpinner")
- spn.bindEvent(dEvents.Hit, self.onSpinnerHit)
+ lbl = dabo.ui.dLabel(self, Caption=_("Spinner Properties"),
FontSize=18,
+ FontBold=True)
+ sz.appendSpacer(10)
sz.append(lbl, halign="center")
- sz.append(spn, halign="center")
+ sz.appendSpacer(4)
+ gsz = dabo.ui.dGridSizer(MaxCols=2, HGap=4, VGap=6)
+ lbl = dabo.ui.dLabel(self, Caption="Min")
+ txt = dabo.ui.dTextBox(self, DataSource=spn, DataField="Min",
StrictNumericEntry=False)
+ gsz.append(lbl, halign="right")
+ gsz.append(txt)
+ lbl = dabo.ui.dLabel(self, Caption="Max")
+ txt = dabo.ui.dTextBox(self, DataSource=spn, DataField="Max",
StrictNumericEntry=False)
+ gsz.append(lbl, halign="right")
+ gsz.append(txt)
+ lbl = dabo.ui.dLabel(self, Caption="Increment")
+ txt = dabo.ui.dTextBox(self, DataSource=spn,
DataField="Increment", StrictNumericEntry=False)
+ gsz.append(lbl, halign="right")
+ gsz.append(txt)
+ lbl = dabo.ui.dLabel(self, Caption="SpinnerWrap")
+ chk = dabo.ui.dCheckBox(self, DataSource=spn,
DataField="SpinnerWrap")
+ gsz.append(lbl, halign="right")
+ gsz.append(chk)
+ lbl = dabo.ui.dLabel(self, Caption="FontSize")
+ txt = dabo.ui.dTextBox(self, DataSource=spn,
DataField="FontSize")
+ gsz.append(lbl, halign="right")
+ gsz.append(txt)
+ lbl = dabo.ui.dLabel(self, Caption="Height")
+ txt = dabo.ui.dTextBox(self, DataSource=spn, DataField="Height")
+ gsz.append(lbl, halign="right")
+ gsz.append(txt)
+ lbl = dabo.ui.dLabel(self, Caption="ForeColor")
+ txt = dabo.ui.dTextBox(self, ReadOnly=True, DataSource=spn,
DataField="ForeColor")
+ btn = dabo.ui.dButton(self, Caption="...",
OnHit=self.onForeColor, Width=36)
+ hsz = dabo.ui.dSizer("h")
+ hsz.append(txt, 1)
+ hsz.append(btn)
+ gsz.append(lbl, halign="right")
+ gsz.append(hsz)
+ lbl = dabo.ui.dLabel(self, Caption="BackColor")
+ txt = dabo.ui.dTextBox(self, ReadOnly=True, DataSource=spn,
DataField="BackColor")
+ btn = dabo.ui.dButton(self, Caption="...",
OnHit=self.onBackColor, Width=36)
+ hsz = dabo.ui.dSizer("h")
+ hsz.append(txt, 1)
+ hsz.append(btn)
+ gsz.append(lbl, halign="right")
+ gsz.append(hsz)
+ lbl = dabo.ui.dLabel(self, Caption="Enabled")
+ chk = dabo.ui.dCheckBox(self, DataSource=spn,
DataField="Enabled")
+ gsz.append(lbl, halign="right")
+ gsz.append(chk)
+ sz.append(gsz, halign="center")
+ self.update()
+ self.layout()
+
+
+ def onBackColor(self, evt):
+ color = dabo.ui.getColor(self.spinner.BackColor)
+ if color is not None:
+ self.spinner.BackColor = color
+ self.update()
+
+ def onForeColor(self, evt):
+ color = dabo.ui.getColor(self.spinner.ForeColor)
+ if color is not None:
+ self.spinner.ForeColor = color
+ self.update()
+ self.layout()
+
def onSpinnerHit(self, evt):
obj = evt.EventObject
- self.Form.logit("%s Hit; Value=%s" % (obj.Name, obj.Value))
+ self.Form.logit("Hit! (%s); Value=%s" % (evt.hitType,
obj.Value))
+ def onSpinUp(self, evt):
+ self.Form.logit("Spin up event.")
+
+ def onSpinDown(self, evt):
+ self.Form.logit("Spin down event.")
+
+ def onSpinner(self, evt):
+ self.Form.logit("Spinner event.")
+
category = "Controls.dSpinner"
overview = """
Modified: branches/paul_ss/demo/samples/dTreeView.py
===================================================================
--- branches/paul_ss/demo/samples/dTreeView.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/demo/samples/dTreeView.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -9,12 +9,13 @@
def onTreeItemContextMenu(self, evt):
self.activeNode = evt.itemNode
self.Form.logit(_("Context menu on node %s") %
self.activeNode.Caption)
+
pop = dabo.ui.dMenu()
- pop.append(_("Add Child"), self.onAddChild)
- pop.append(_("Add Sibling"), self.onAddSibling)
+ pop.append(_("Add Child"), OnHit=self.onAddChild)
+ pop.append(_("Add Sibling"), OnHit=self.onAddSibling)
if not self.Editable:
- pop.append(_("Change Caption"), self.onChangeCaption)
- pop.append(_("Delete this node"), self.onDelNode)
+ pop.append(_("Change Caption"),
OnHit=self.onChangeCaption)
+ pop.append(_("Delete this node"), OnHit=self.onDelNode)
self.showContextMenu(pop)
def onAddChild(self, evt):
Modified: branches/paul_ss/ide/ClassDesigner.py
===================================================================
--- branches/paul_ss/ide/ClassDesigner.py 2008-11-03 17:15:03 UTC (rev
4652)
+++ branches/paul_ss/ide/ClassDesigner.py 2008-11-03 18:17:15 UTC (rev
4653)
@@ -28,6 +28,7 @@
from ClassDesignerCustomPropertyDialog import ClassDesignerCustomPropertyDialog
from ClassDesignerSizerPalette import SizerPaletteForm
from dabo.lib.DesignerXmlConverter import DesignerXmlConverter
+from dabo.lib import DesignerUtils
import ClassDesignerMenu
import dabo.lib.xmltodict as xtd
import dabo.ui.dialogs as dlgs
@@ -162,7 +163,6 @@
{"name" : "ToggleButton", "class" :
dui.dToggleButton, "order" : 280},
{"name" : "TreeView", "class" : dui.dTreeView,
"order" : 290}
)
- self._initSizerDefaults()
self._initClassEvents()
self.setup()
@@ -231,157 +231,6 @@
self.start()
- def _initSizerDefaults(self):
- """Create a dict containing the sizer default settings
- for each designer class.
- """
- self._sizerDefaults = {}
-# defVals = {"BorderSides": ["All"], "Proportion": 1, "HAlign":
"Left",
-# "VAlign": "Top", "Border": 0, "Expand": True}
- defVals = {
- "G": {"BorderSides": ["All"], "Proportion": 0,
"HAlign": "Center", "VAlign": "Middle", "Border": 0, "Expand": True,
"RowExpand": False, "ColExpand": True},
- "H": {"BorderSides": ["All"], "Proportion": 1,
"HAlign": "Left", "VAlign": "Middle", "Border": 0, "Expand": True},
- "V": {"BorderSides": ["All"], "Proportion": 1,
"HAlign": "Center", "VAlign": "Top", "Border": 0, "Expand": True}
- }
- # Use the defaults for each class, except where specified
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dBox] = dct
- dct = copy.deepcopy(defVals)
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dBitmap] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False, "HAlign" :
"center", "VAlign" : "middle"})
- dct["H"].update({"Proportion" : 0, "Expand" : False, "HAlign":
"center"})
- dct["V"].update({"Proportion" : 0, "Expand" : False, "VAlign":
"middle"})
- self._sizerDefaults[dui.dBitmapButton] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False})
- dct["H"].update({"Proportion" : 0, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : False})
- self._sizerDefaults[dui.dButton] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False})
- dct["H"].update({"Proportion" : 0, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : False})
- self._sizerDefaults[dui.dCheckBox] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False})
- dct["H"].update({"Proportion" : 1, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : True})
- self._sizerDefaults[dui.dComboBox] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False})
- dct["H"].update({"Proportion" : 1, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : True})
- self._sizerDefaults[dui.dDateTextBox] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dDialog] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False})
- dct["H"].update({"Proportion" : 1, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : True})
- self._sizerDefaults[dui.dDropdownList] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dEditBox] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dEditor] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dSlidePanelControl] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False})
- dct["H"].update({"Proportion" : 1, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : True})
- self._sizerDefaults[dui.dGauge] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dGrid] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dGridSizer] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dHtmlBox] = dct
- dct = copy.deepcopy(defVals)
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dImage] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False})
- dct["H"].update({"Proportion" : 0, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : False})
- self._sizerDefaults[dui.dLabel] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False, "HAlign" :
"center", "VAlign" : "middle"})
- dct["H"].update({"Proportion" : 1, "Expand" : False, "HAlign":
"center"})
- dct["V"].update({"Proportion" : 0, "Expand" : True, "VAlign":
"middle"})
- self._sizerDefaults[dui.dLine] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dListBox] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dListControl] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dOkCancelDialog] = dct
- dct = copy.deepcopy(defVals)
- dct["G"].update({"Proportion" : 0, "Expand" : False,
"ColExpand": True, "RowExpand": False})
- dct["H"].update({"Proportion" : 0, "Expand" : False})
- dct["V"].update({"Proportion" : 0, "Expand" : False})
- self._sizerDefaults[dui.dRadioList] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dPage] = dct
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dPanel] = dct
- dct = copy.deepcopy(defVals)
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dScrollPanel] = dct
- dct = copy.deepcopy(defVals)
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dPageFrame] = dct
- dct = copy.deepcopy(defVals)
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dPageList] = dct
- dct = copy.deepcopy(defVals)
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dPageSelect] = dct
- dct = copy.deepcopy(defVals)
- dct["H"].update({"HAlign" : "center"})
- dct["V"].update({"VAlign" : "middle"})
- self._sizerDefaults[dui.dPageFrameNoTabs] = dct
- dct = copy.deepcopy(defVals)
- self._sizerDefaults[dui.dSizer] = dct
- dct =
(3108 bytes were truncated as it was too long for the email (max 40000 bytes.)
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: http://leafe.com/archives/byMID/[EMAIL PROTECTED]