dabo Commit
Revision 2149
Date: 2006-05-13 06:29:00 -0700 (Sat, 13 May 2006)
Author: ed

Changed:
U   trunk/dabo/ui/uiwx/dPage.py
U   trunk/dabo/ui/uiwx/dPageFrameMixin.py
U   trunk/dabo/ui/uiwx/dPageFrameNoTabs.py

Log:
Updated these classes so that 'appendPage()' and 'insertPage()' now work with 
page classes defined in .cdxml files. You can also set the PageClass property 
to the path to a .cdxml file.
This fixes Tracker #0138.


Diff:
Modified: trunk/dabo/ui/uiwx/dPage.py
===================================================================
--- trunk/dabo/ui/uiwx/dPage.py 2006-05-11 18:25:30 UTC (rev 2148)
+++ trunk/dabo/ui/uiwx/dPage.py 2006-05-13 13:29:00 UTC (rev 2149)
@@ -7,6 +7,7 @@
 class dPage(dPanel.dScrollPanel):
        """Creates a page to appear as a tab in a pageframe."""
        def __init__(self, *args, **kwargs):
+               self._caption = ""
                super(dPage, self).__init__(*args, **kwargs)
                self._baseClass = dPage 
                self.SetScrollbars(10, 10, -1, -1)
@@ -74,6 +75,7 @@
                return ret
 
        def _setCaption(self, val):
+               self._caption = val
                if self._constructed():
                        pos = self._getPagePosition()
                        if pos > -1:

Modified: trunk/dabo/ui/uiwx/dPageFrameMixin.py
===================================================================
--- trunk/dabo/ui/uiwx/dPageFrameMixin.py       2006-05-11 18:25:30 UTC (rev 
2148)
+++ trunk/dabo/ui/uiwx/dPageFrameMixin.py       2006-05-13 13:29:00 UTC (rev 
2149)
@@ -128,7 +128,16 @@
                if isinstance(pgCls, dPage):
                        pg = pgCls
                else:
+                       # See if the 'pgCls' is either some XML or the path of 
an XML file
+                       if isinstance(pgCls, basestring):
+                               xml = pgCls
+                               from dabo.lib.DesignerXmlConverter import 
DesignerXmlConverter
+                               conv = DesignerXmlConverter()
+                               pgCls = conv.classFromXml(xml)
                        pg = pgCls(self)
+               if not caption:
+                       # Page could have its own default caption
+                       caption = pg._caption
                if imgKey:
                        idx = self._imageList[imgKey]
                        self.InsertPage(pos, pg, text=caption, imageId=idx)
@@ -232,9 +241,13 @@
                except AttributeError:
                        return dPage
                        
-       def _setPageClass(self, value):
-               if issubclass(value, cm.dControlMixin):
-                       self._pageClass = value
+       def _setPageClass(self, val):
+               if isinstance(val, basestring):
+                       from dabo.lib.DesignerXmlConverter import 
DesignerXmlConverter
+                       conv = DesignerXmlConverter()
+                       self._pageClass = conv.classFromXml(val)
+               elif issubclass(val, cm.dControlMixin):
+                       self._pageClass = val
                else:
                        raise TypeError, "PageClass must descend from a Dabo 
base class."
                        
@@ -242,22 +255,24 @@
        def _getPageCount(self):
                return int(self.GetPageCount())
                
-       def _setPageCount(self, value):
+       def _setPageCount(self, val):
                if self._constructed():
-                       value = int(value)
+                       val = int(val)
                        pageCount = self.GetPageCount()
                        pageClass = self.PageClass
-                       if value < 0:
+                       if val < 0:
                                raise ValueError, "Cannot set PageCount to less 
than zero."
                
-                       if value > pageCount:
-                               for i in range(pageCount, value):
-                                       self.appendPage(pageClass, 
caption="Page %s" % (i+1,))
-                       elif value < pageCount:
-                               for i in range(pageCount, value, -1):
+                       if val > pageCount:
+                               for i in range(pageCount, val):
+                                       pg = self.appendPage(pageClass)
+                                       if not pg.Caption:
+                                               pg.Caption = "Page %s" % (i+1,)
+                       elif val < pageCount:
+                               for i in range(pageCount, val, -1):
                                        self.DeletePage(i-1)
                else:
-                       self._properties["PageCount"] = value
+                       self._properties["PageCount"] = val
        
        def _getPgs(self):
                ## pkm: It is possible for pages to not be instances of dPage
@@ -302,20 +317,20 @@
                else:
                        return "Top"
 
-       def _setTabPosition(self, value):
-               value = str(value)
+       def _setTabPosition(self, val):
+               val = str(val)
 
                self._delWindowStyleFlag(self._tabposBottom)
                self._delWindowStyleFlag(self._tabposRight)
                self._delWindowStyleFlag(self._tabposLeft)
 
-               if value == "Top":
+               if val == "Top":
                        pass
-               elif value == "Left":
+               elif val == "Left":
                        self._addWindowStyleFlag(self._tabposLeft)
-               elif value == "Right":
+               elif val == "Right":
                        self._addWindowStyleFlag(self._tabposRight)
-               elif value == "Bottom":
+               elif val == "Bottom":
                        self._addWindowStyleFlag(self._tabposBottom)
                else:
                        raise ValueError, ("The only possible values are "

Modified: trunk/dabo/ui/uiwx/dPageFrameNoTabs.py
===================================================================
--- trunk/dabo/ui/uiwx/dPageFrameNoTabs.py      2006-05-11 18:25:30 UTC (rev 
2148)
+++ trunk/dabo/ui/uiwx/dPageFrameNoTabs.py      2006-05-13 13:29:00 UTC (rev 
2149)
@@ -47,6 +47,12 @@
                if isinstance(pgCls, dPage):
                        pg = pgCls
                else:
+                       # See if the 'pgCls' is either some XML or the path of 
an XML file
+                       if isinstance(pgCls, basestring):
+                               xml = pgCls
+                               from dabo.lib.DesignerXmlConverter import 
DesignerXmlConverter
+                               conv = DesignerXmlConverter()
+                               pgCls = conv.classFromXml(xml)
                        pg = pgCls(self)
                self.Sizer.insert(pos, pg, 1, "x")
                self._pages.insert(pos, pg)
@@ -158,7 +164,11 @@
                return self._pageClass
                
        def _setPgCls(self, val):
-               if issubclass(val, (dPage, dPanel)):
+               if isinstance(val, basestring):
+                       from dabo.lib.DesignerXmlConverter import 
DesignerXmlConverter
+                       conv = DesignerXmlConverter()
+                       self._pageClass = conv.classFromXml(val)
+               elif issubclass(val, (dPage, dPanel)):
                        self._pageClass = val
        
        




_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev

Reply via email to