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