dabo Commit
Revision 1502
Date: 2005-11-01 07:11:06 -0800 (Tue, 01 Nov 2005)
Author: paul
Changed:
U trunk/dabo/dEvents.py
U trunk/dabo/ui/uiwx/__init__.py
U trunk/dabo/ui/uiwx/dFormMixin.py
A trunk/dabo/ui/uiwx/dPageFrameNoTabs.py
D trunk/dabo/ui/uiwx/dPageNoTabs.py
Log:
Renamed dPageNoTabs to dPageFrameNoTabs, because that better describes the
control.
Diff:
Modified: trunk/dabo/dEvents.py
===================================================================
--- trunk/dabo/dEvents.py 2005-11-01 14:59:19 UTC (rev 1501)
+++ trunk/dabo/dEvents.py 2005-11-01 15:11:06 UTC (rev 1502)
@@ -328,7 +328,7 @@
"""Occurs when a page in a pageframe-like control changes"""
def appliesToClass(eventClass, objectClass):
return issubclass(objectClass, (dabo.ui.dPageFrame,
dabo.ui.dPageList,
- dabo.ui.dPageSelect, dabo.ui.dPageNoTabs))
+ dabo.ui.dPageSelect, dabo.ui.dPageFrameNoTabs))
appliesToClass = classmethod(appliesToClass)
class PageEnter(Event):
Modified: trunk/dabo/ui/uiwx/__init__.py
===================================================================
--- trunk/dabo/ui/uiwx/__init__.py 2005-11-01 14:59:19 UTC (rev 1501)
+++ trunk/dabo/ui/uiwx/__init__.py 2005-11-01 15:11:06 UTC (rev 1502)
@@ -101,7 +101,7 @@
from dPageFrame import dPageFrame
from dPageFrame import dPageList
from dPageFrame import dPageSelect
-from dPageNoTabs import dPageNoTabs
+from dPageFrameNoTabs import dPageFrameNoTabs
from dPage import dPage
from dSizer import dSizer
from dBorderSizer import dBorderSizer
Modified: trunk/dabo/ui/uiwx/dFormMixin.py
===================================================================
--- trunk/dabo/ui/uiwx/dFormMixin.py 2005-11-01 14:59:19 UTC (rev 1501)
+++ trunk/dabo/ui/uiwx/dFormMixin.py 2005-11-01 15:11:06 UTC (rev 1502)
@@ -157,7 +157,7 @@
szr.setItemProps(obj.ControllingSizerItem, szrInfo)
if kids:
if isinstance(obj,
(dabo.ui.dPageFrame, dabo.ui.dPageList,
-
dabo.ui.dPageSelect, dabo.ui.dPageNoTabs)):
+
dabo.ui.dPageSelect, dabo.ui.dPageFrameNoTabs)):
# 'kids' will each be a
dPage
for pageno, pg in
enumerate(obj.Pages):
pgInfo =
kids[pageno]
Copied: trunk/dabo/ui/uiwx/dPageFrameNoTabs.py (from rev 1501,
trunk/dabo/ui/uiwx/dPageNoTabs.py)
===================================================================
--- trunk/dabo/ui/uiwx/dPageNoTabs.py 2005-11-01 14:59:19 UTC (rev 1501)
+++ trunk/dabo/ui/uiwx/dPageFrameNoTabs.py 2005-11-01 15:11:06 UTC (rev
1502)
@@ -0,0 +1,191 @@
+import dabo
+dabo.ui.loadUI("wx")
+import dPage
+import dPanel
+import dabo.dEvents as dEvents
+import dabo.dColors as dColors
+from dabo.dLocalize import _
+
+
+class dPageFrameNoTabs(dabo.ui.dPanel):
+ def _afterInit(self):
+ self.Sizer = dabo.ui.dSizer()
+ self._pageClass = dPage.dPage
+ super(dPageFrameNoTabs, self)._afterInit()
+
+
+ def appendPage(self, pgCls=None, makeActive=False):
+ """Creates a new page, which must be a subclass of dPanel
+ or dPage. If makeActive is True, the page is displayed;
+ otherwise, it is added and hidden.
+ """
+ return self.insertPage(self.PageCount, pgCls=pgCls,
makeActive=makeActive)
+
+
+ def insertPage(self, pos, pgCls=None, makeActive=False):
+ """ Inserts the page into the pageframe at the specified
position,
+ and makes it the active (displayed) page if makeActive is True.
+ """
+ if pgCls is None:
+ pgCls = self.PageClass
+ pg = pgCls(self)
+ self.Sizer.insert(pos, pg, 1, "x")
+ self.layout()
+ if makeActive or (self.PageCount == 1):
+ self.showPage(pg)
+ else:
+ self.showPage(self.SelectedPage)
+ return self.Pages[pos]
+
+
+ def showPage(self, pg):
+ chldrn = self.Children
+ if pg in chldrn:
+ self._activePage = pg
+ for ch in chldrn:
+ self.Sizer.Show(ch, (ch is pg))
+ self.layout()
+
+
+ def nextPage(self):
+ """Selects the next page. If the last page is selected,
+ it will select the first page.
+ """
+ try:
+ self.SelectedPageNumber += 1
+ except IndexError:
+ self.SelectedPageNumber = 0
+
+
+ def priorPage(self):
+ """Selects the previous page. If the first page is selected,
+ it will select the last page.
+ """
+ try:
+ self.SelectedPageNumber -= 1
+ except IndexError:
+ self.SelectedPage = self.Pages[-1]
+
+
+
+ def _getPgCls(self):
+ return self._pageClass
+ def _setPgCls(self, val):
+ if issubclass(val, (dPage.dPage, dPanel.dPanel)):
+ self._pageClass = val
+
+
+ def _getPgCnt(self):
+ return len(self.Children)
+ def _setPgCnt(self, val):
+ diff = (val - len(self.Children))
+ if diff > 0:
+ # Need to add pages
+ for ii in range(diff):
+ self.appendPage()
+ elif diff < 0:
+ # Need to remove pages. If the active page is one
+ # of those being removed, set the active page to the
+ # last page.
+ currPg = self.SelectedPage
+ while len(self.Children) > val:
+ self.Children[-1].release()
+ if len(self.Children) < currPg:
+ self.SelectedPage = self.Children[-1]
+
+ def _getPages(self):
+ return self.Children
+
+
+ def _getSel(self):
+ try:
+ return self._activePage
+ except AttributeError:
+ return None
+ def _setSel(self, pg):
+ self.showPage(pg)
+
+
+ def _getSelNum(self):
+ try:
+ return self.Children.index(self._activePage)
+ except:
+ return None
+ def _setSelNum(self, val):
+ pg = self.Children[val]
+ self.showPage(pg)
+
+
+ PageClass = property(_getPgCls, _setPgCls, None,
+ _("The default class used when adding new pages.
(dPage)") )
+
+ PageCount = property(_getPgCnt, _setPgCnt, None,
+ _("Returns the number of pages in this pageframe
(int)") )
+
+ Pages = property(_getPages, None, None,
+ _("List of all the pages. (list)") )
+
+ SelectedPage = property(_getSel, _setSel, None,
+ _("Returns a reference to the currently displayed page
(dPage | dPanel)") )
+
+ SelectedPageNumber = property(_getSelNum, _setSelNum, None,
+ _("Returns a reference to the index of the currently
displayed page (int)") )
+
+
+
+import random
+class TestPage(dPage.dPage):
+ def afterInit(self):
+ self.lbl = dabo.ui.dLabel(self, FontSize=36)
+ color = random.choice(dColors.colorDict.keys())
+ self.BackColor = self.lbl.Caption = color
+ self.Sizer = sz = dabo.ui.dSizer("h")
+ sz.appendSpacer(1, 1)
+ sz.append(self.lbl, 1)
+ sz.appendSpacer(1, 1)
+
+ def setLabel(self, txt):
+ self.lbl.Caption = txt
+ self.layout()
+
+
+class TestForm(dabo.ui.dForm):
+ def afterInit(self):
+ self.Caption = "Tabless Pageframe Example"
+ self.pgf = pgf = dPageFrameNoTabs(self)
+ pgf.PageClass = TestPage
+ pgf.PageCount = 5
+ idx = 0
+ for pg in pgf.Pages:
+ pg.setLabel("Page #%s" % idx)
+ idx += 1
+ self.Sizer.append1x(pgf)
+
+ # Add prev/next buttons
+ bp = dabo.ui.dButton(self, Caption="Prior")
+ bp.bindEvent(dEvents.Hit, self.onPriorPage)
+ bn = dabo.ui.dButton(self, Caption="Next")
+ bn.bindEvent(dEvents.Hit, self.onNextPage)
+ hsz = dabo.ui.dSizer("h")
+ hsz.append(bp, 1)
+ hsz.append(bn, 1)
+ self.Sizer.append(hsz, halign="center")
+ self.layout()
+
+
+ def onPriorPage(self, evt):
+ self.pgf.priorPage()
+
+ def onNextPage(self, evt):
+ self.pgf.nextPage()
+
+
+def main():
+ app = dabo.dApp()
+ app.MainFormClass = TestForm
+ app.setup()
+ app.start()
+
+if __name__ == '__main__':
+ main()
+
Deleted: trunk/dabo/ui/uiwx/dPageNoTabs.py
_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev