| 1 |
# -*- coding: utf-8 -*- |
|---|
| 2 |
import dabo |
|---|
| 3 |
from dabo.dLocalize import _ |
|---|
| 4 |
import dabo.dEvents as dEvents |
|---|
| 5 |
from ClassDesignerPropSheet import PropSheet |
|---|
| 6 |
from ClassDesignerTreeSheet import TreeSheet |
|---|
| 7 |
|
|---|
| 8 |
if __name__ == "__main__": |
|---|
| 9 |
dabo.ui.loadUI("wx") |
|---|
| 10 |
|
|---|
| 11 |
|
|---|
| 12 |
class MenuPropForm(dabo.ui.dForm): |
|---|
| 13 |
"""This form contains the PropSheet for the Menu Designer.""" |
|---|
| 14 |
def afterSetMenuBar(self): |
|---|
| 15 |
self.ShowStatusBar = False |
|---|
| 16 |
# ClassDesignerMenu.mkDesignerMenu(self) |
|---|
| 17 |
|
|---|
| 18 |
|
|---|
| 19 |
def onMenuOpen(self, evt): |
|---|
| 20 |
try: |
|---|
| 21 |
self.Controller.menuUpdate(evt, self.MenuBar) |
|---|
| 22 |
except AttributeError: |
|---|
| 23 |
# Not finished initializing |
|---|
| 24 |
pass |
|---|
| 25 |
|
|---|
| 26 |
|
|---|
| 27 |
def afterInit(self): |
|---|
| 28 |
self.Caption = _("Properties") |
|---|
| 29 |
pnl = dabo.ui.dPanel(self) |
|---|
| 30 |
self.Sizer.append1x(pnl) |
|---|
| 31 |
sz = pnl.Sizer = dabo.ui.dSizer("v") |
|---|
| 32 |
|
|---|
| 33 |
txt = dabo.ui.dTextBox(pnl, ReadOnly=True, RegID="txtObj") |
|---|
| 34 |
hsz = dabo.ui.dSizer("h") |
|---|
| 35 |
hsz.append1x(txt) |
|---|
| 36 |
self.treeBtn = dabo.ui.dToggleButton(pnl, Height=txt.Height, |
|---|
| 37 |
Width=txt.Height, Caption="", Picture="downTriangleBlack", |
|---|
| 38 |
DownPicture="upTriangleBlack") |
|---|
| 39 |
self.treeBtn.bindEvent(dEvents.Hit, self.onToggleTree) |
|---|
| 40 |
hsz.append(self.treeBtn) |
|---|
| 41 |
|
|---|
| 42 |
brdr = 10 |
|---|
| 43 |
sz.appendSpacer(brdr) |
|---|
| 44 |
sz.DefaultBorderLeft = sz.DefaultBorderRight = True |
|---|
| 45 |
sz.DefaultBorder = brdr |
|---|
| 46 |
sz.append(hsz, "x") |
|---|
| 47 |
sz.appendSpacer(5) |
|---|
| 48 |
|
|---|
| 49 |
self.mainPager = mp = dabo.ui.dPageFrameNoTabs(pnl, PageClass=dabo.ui.dPanel) |
|---|
| 50 |
mp.PageCount=2 |
|---|
| 51 |
mp.bindEvent(dEvents.PageChanged, self.onMainPageChanged) |
|---|
| 52 |
sz.append1x(mp) |
|---|
| 53 |
sz.appendSpacer(brdr) |
|---|
| 54 |
self.propPage = pp = mp.Pages[0] |
|---|
| 55 |
self.treePage = tp = mp.Pages[1] |
|---|
| 56 |
psz = pp.Sizer = dabo.ui.dSizer("v") |
|---|
| 57 |
tsz = tp.Sizer = dabo.ui.dSizer("v") |
|---|
| 58 |
|
|---|
| 59 |
# Add the PropSheet |
|---|
| 60 |
ps = PropSheet(self.propPage, RegID="_propSheet", |
|---|
| 61 |
Controller=self.Controller) |
|---|
| 62 |
self.propPage.Sizer = dabo.ui.dSizer("v") |
|---|
| 63 |
self.propPage.Sizer.append1x(ps) |
|---|
| 64 |
|
|---|
| 65 |
# Create the tree |
|---|
| 66 |
self._tree = TreeSheet(tp, MultipleSelect=False, Controller=self.Controller) |
|---|
| 67 |
self._tree.MultipleSelect = False |
|---|
| 68 |
dabo.ui.callAfterInterval(500, self._tree.expandAll) |
|---|
| 69 |
tp.Sizer.append1x(self._tree, border=10) |
|---|
| 70 |
mp.SelectedPage = pp |
|---|
| 71 |
self.layout() |
|---|
| 72 |
|
|---|
| 73 |
|
|---|
| 74 |
def updatePropGrid(self, propDict=None): |
|---|
| 75 |
self.PropSheet.updatePropGrid(propDict=propDict) |
|---|
| 76 |
|
|---|
| 77 |
|
|---|
| 78 |
def updateLayout(self): |
|---|
| 79 |
self._tree.updateDisplay(self.Controller) |
|---|
| 80 |
|
|---|
| 81 |
|
|---|
| 82 |
def onToggleTree(self, evt): |
|---|
| 83 |
self.mainPager.nextPage() |
|---|
| 84 |
|
|---|
| 85 |
|
|---|
| 86 |
def onMainPageChanged(self, evt): |
|---|
| 87 |
self.treeBtn.Value = self.mainPager.SelectedPage is self.treePage |
|---|
| 88 |
|
|---|
| 89 |
|
|---|
| 90 |
def hideTree(self): |
|---|
| 91 |
self.mainPager.SelectedPage = self.propPage |
|---|
| 92 |
|
|---|
| 93 |
|
|---|
| 94 |
def onPanelChange(self, evt): |
|---|
| 95 |
if evt.expanded: |
|---|
| 96 |
pnl = evt.panel |
|---|
| 97 |
if pnl is None or len(pnl.Children) < 2: |
|---|
| 98 |
return |
|---|
| 99 |
|
|---|
| 100 |
|
|---|
| 101 |
def showPropPage(self): |
|---|
| 102 |
self.mainPager.SelectedPage = self.propPage |
|---|
| 103 |
self.refresh() |
|---|
| 104 |
self.propPage.Expanded = True |
|---|
| 105 |
self.bringToFront() |
|---|
| 106 |
|
|---|
| 107 |
|
|---|
| 108 |
def showTreePage(self): |
|---|
| 109 |
self.mainPager.SelectedPage = self.treePage |
|---|
| 110 |
self.bringToFront() |
|---|
| 111 |
|
|---|
| 112 |
|
|---|
| 113 |
def select(self, obj): |
|---|
| 114 |
"""Called when the selected object changes. 'obj' will be a single object. |
|---|
| 115 |
We then need to update the components of this form appropriately. |
|---|
| 116 |
""" |
|---|
| 117 |
if obj is None: |
|---|
| 118 |
lbl = "" |
|---|
| 119 |
else: |
|---|
| 120 |
lbl = obj.DisplayText |
|---|
| 121 |
self.txtObj.Value = lbl |
|---|
| 122 |
self.PropSheet.select(obj) |
|---|
| 123 |
self.Tree.select(obj) |
|---|
| 124 |
self.refresh() |
|---|
| 125 |
self.layout() |
|---|
| 126 |
|
|---|
| 127 |
|
|---|
| 128 |
def _getController(self): |
|---|
| 129 |
try: |
|---|
| 130 |
return self._controller |
|---|
| 131 |
except AttributeError: |
|---|
| 132 |
self._controller = self.Application |
|---|
| 133 |
return self._controller |
|---|
| 134 |
|
|---|
| 135 |
def _setController(self, val): |
|---|
| 136 |
if self._constructed(): |
|---|
| 137 |
self._controller = val |
|---|
| 138 |
else: |
|---|
| 139 |
self._properties["Controller"] = val |
|---|
| 140 |
|
|---|
| 141 |
|
|---|
| 142 |
def _getMethodList(self): |
|---|
| 143 |
return self._methodList |
|---|
| 144 |
|
|---|
| 145 |
def _setMethodList(self, val): |
|---|
| 146 |
self._methodList = val |
|---|
| 147 |
|
|---|
| 148 |
|
|---|
| 149 |
def _getMethodSheet(self): |
|---|
| 150 |
return self._methodSheet |
|---|
| 151 |
|
|---|
| 152 |
def _setMethodSheet(self, val): |
|---|
| 153 |
self._methodSheet = val |
|---|
| 154 |
|
|---|
| 155 |
|
|---|
| 156 |
def _getObjectPropertySheet(self): |
|---|
| 157 |
return self._objPropSheet |
|---|
| 158 |
|
|---|
| 159 |
def _setObjectPropertySheet(self, val): |
|---|
| 160 |
self._objPropSheet = val |
|---|
| 161 |
|
|---|
| 162 |
|
|---|
| 163 |
def _getPropSheet(self): |
|---|
| 164 |
return self._propSheet |
|---|
| 165 |
|
|---|
| 166 |
def _setPropSheet(self, val): |
|---|
| 167 |
self._propSheet = val |
|---|
| 168 |
|
|---|
| 169 |
|
|---|
| 170 |
def _getTree(self): |
|---|
| 171 |
return self._tree |
|---|
| 172 |
|
|---|
| 173 |
def _setTree(self, val): |
|---|
| 174 |
self._tree = val |
|---|
| 175 |
|
|---|
| 176 |
|
|---|
| 177 |
Controller = property(_getController, _setController, None, |
|---|
| 178 |
_("Object to which this one reports events (object (varies))")) |
|---|
| 179 |
|
|---|
| 180 |
MethodList = property(_getMethodList, _setMethodList, None, |
|---|
| 181 |
_("""List control containing all available methods for the |
|---|
| 182 |
selected object (dListControl)""")) |
|---|
| 183 |
|
|---|
| 184 |
MethodSheet = property(_getMethodSheet, _setMethodSheet, None, |
|---|
| 185 |
_("Reference to the panel containing the MethodList (MethodSheet)")) |
|---|
| 186 |
|
|---|
| 187 |
ObjectPropertySheet = property(_getObjectPropertySheet, |
|---|
| 188 |
_setObjectPropertySheet, None, _("""Reference to the panel |
|---|
| 189 |
containing the ObjectPropertySheet (ObjectPropertySheet)""")) |
|---|
| 190 |
|
|---|
| 191 |
Tree = property(_getTree, _setTree, None, |
|---|
| 192 |
_("Reference to the contained object tree (TreeSheet)")) |
|---|
| 193 |
|
|---|
| 194 |
PropSheet = property(_getPropSheet, _setPropSheet, None, |
|---|
| 195 |
_("Reference to the contained prop sheet (PropSheet)")) |
|---|