dabo Commit
Revision 4642
Date: 2008-11-02 19:36:59 -0800 (Sun, 02 Nov 2008)
Author: Ed
Trac: http://svn.dabodev.com/trac/dabo/changeset/4642

Changed:
U   trunk/dabo/lib/DesignerUtils.py
U   trunk/dabo/lib/DesignerXmlConverter.py

Log:
Moved the sizer default logic into the DesignerUtils script. 

Updated DesignerXmlConverter to work with these new defaults.


Diff:
Modified: trunk/dabo/lib/DesignerUtils.py
===================================================================
--- trunk/dabo/lib/DesignerUtils.py     2008-11-03 03:36:02 UTC (rev 4641)
+++ trunk/dabo/lib/DesignerUtils.py     2008-11-03 03:36:59 UTC (rev 4642)
@@ -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,199 @@
                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, {})
+       return ret

Modified: trunk/dabo/lib/DesignerXmlConverter.py
===================================================================
--- trunk/dabo/lib/DesignerXmlConverter.py      2008-11-03 03:36:02 UTC (rev 
4641)
+++ trunk/dabo/lib/DesignerXmlConverter.py      2008-11-03 03:36:59 UTC (rev 
4642)
@@ -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                          




_______________________________________________
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]

Reply via email to