|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
dabo Commit 4316dabo Commit
Revision 4316 Date: 2008-07-23 16:20:31 -0700 (Wed, 23 Jul 2008) Author: Ed Trac: http://svn.dabodev.com/trac/dabo/changeset/4316 Changed: U trunk/dabo/dPref.py U trunk/dabo/ui/uiwx/dDateTextBox.py U trunk/dabo/ui/uiwx/dDialog.py U trunk/dabo/ui/uiwx/dForm.py U trunk/dabo/ui/uiwx/dFormMixin.py U trunk/dabo/ui/uiwx/dKeys.py Log: Moved the FloatingPanel code into dDialog and dFormMixin, so that it is available in all form classes. Fixed an unhandled exception in dDateTextBox. Fixed a bug in the execute command in dPref. Added some convenience attributes to dKeys. Diff: Modified: trunk/dabo/dPref.py =================================================================== --- trunk/dabo/dPref.py 2008-07-23 21:50:05 UTC (rev 4315) +++ trunk/dabo/dPref.py 2008-07-23 23:20:31 UTC (rev 4316) @@ -424,7 +424,7 @@ param = "%s.%%" % key else: param = "%" - crs.execute(sql, param) + crs.execute(sql, (param,)) rs = crs.getDataSet() vs = [itm.values()[0] for itm in rs] Modified: trunk/dabo/ui/uiwx/dDateTextBox.py =================================================================== --- trunk/dabo/ui/uiwx/dDateTextBox.py 2008-07-23 21:50:05 UTC (rev 4315) +++ trunk/dabo/ui/uiwx/dDateTextBox.py 2008-07-23 23:20:31 UTC (rev 4316) @@ -150,7 +150,7 @@ key = {72: "h", 77: "m", 83: "s"}[evt.keyCode] else: key = {8: "h", 13: "m", 19: "s"}[evt.keyCode] - except KeyError: + except (KeyError, AttributeError): # spurious key event; ignore return Modified: trunk/dabo/ui/uiwx/dDialog.py =================================================================== --- trunk/dabo/ui/uiwx/dDialog.py 2008-07-23 21:50:05 UTC (rev 4315) +++ trunk/dabo/ui/uiwx/dDialog.py 2008-07-23 23:20:31 UTC (rev 4316) @@ -8,6 +8,7 @@ import dabo.dConstants as kons from dabo.dLocalize import _ import dFormMixin as fm +import dPemMixin as pm from dabo.ui import makeDynamicProperty @@ -518,6 +519,8 @@ super(dOkCancelDialog, self).__init__(parent, properties, *args, **kwargs) self._baseClass = dOkCancelDialog + + class dYesNoDialog(dStandardButtonDialog): def __init__(self, parent=None, properties=None, *args, **kwargs): kwargs["Yes"] = kwargs["No"] = True @@ -526,6 +529,75 @@ self._baseClass = dYesNoDialog + +class _FloatDialog(dDialog): + def __init__(self, owner, *args, **kwargs): + self._above = None + self._owner = None + kwargs["Borderless"] = True + kwargs["FloatOnParent"] = True + super(_FloatDialog, self).__init__(*args, **kwargs) + + + def clear(self): + """Releases any controls remaining from a previous usage.""" + self.Sizer.clear(True) + + + def show(self): + # position by owner + if self.Owner is None: + self.Centered = True + else: + self.Centered = None + left, top = self.Owner.absoluteCoordinates() + self.Left = left + if self.Above: + self.Bottom = top + else: + self.Top = top + self.Owner.Height + # Make sure that we're within the display limits + maxW, maxH = dabo.ui.getDisplaySize() + self.Left = max(5, self.Left) + self.Top = max(5, self.Top) + self.Right = min(self.Right, maxW-5) + self.Bottom = min(self.Bottom, maxH-5) + super(_FloatDialog, self).show() + + + def _getAbove(self): + return self._above + + def _setAbove(self, val): + if self._constructed(): + self._above = val + else: + self._properties["Above"] = val + + + def _getOwner(self): + return self._owner + + def _setOwner(self, val): + if self._constructed(): + self._owner = val + else: + self._properties["Owner"] = val + + + Above = property(_getAbove, _setAbove, None, + _("Is this dialog positioned above its owner? Default=False (bool)")) + + Owner = property(_getOwner, _setOwner, None, + _("Control which is currently managing this window. (varies)")) + + + + + + + + if __name__ == "__main__": import test test.Test().runTest(dDialog) Modified: trunk/dabo/ui/uiwx/dForm.py =================================================================== --- trunk/dabo/ui/uiwx/dForm.py 2008-07-23 21:50:05 UTC (rev 4315) +++ trunk/dabo/ui/uiwx/dForm.py 2008-07-23 23:20:31 UTC (rev 4316) @@ -13,69 +13,6 @@ from dDialog import dDialog -class _FloatDialog(dDialog): - def __init__(self, owner, *args, **kwargs): - self._above = None - self._owner = None - kwargs["Borderless"] = True - kwargs["FloatOnParent"] = True - super(_FloatDialog, self).__init__(*args, **kwargs) - - - def clear(self): - """Releases any controls remaining from a previous usage.""" - self.Sizer.clear(True) - - - def show(self): - # position by owner - if self.Owner is None: - self.Centered = True - else: - self.Centered = None - left, top = self.Owner.absoluteCoordinates() - self.Left = left - if self.Above: - self.Bottom = top - else: - self.Top = top + self.Owner.Height - # Make sure that we're within the display limits - maxW, maxH = dabo.ui.getDisplaySize() - self.Left = max(5, self.Left) - self.Top = max(5, self.Top) - self.Right = min(self.Right, maxW-5) - self.Bottom = min(self.Bottom, maxH-5) - super(_FloatDialog, self).show() - - - def _getAbove(self): - return self._above - - def _setAbove(self, val): - if self._constructed(): - self._above = val - else: - self._properties["Above"] = val - - - def _getOwner(self): - return self._owner - - def _setOwner(self, val): - if self._constructed(): - self._owner = val - else: - self._properties["Owner"] = val - - - Above = property(_getAbove, _setAbove, None, - _("Is this dialog positioned above its owner? Default=False (bool)")) - - Owner = property(_getOwner, _setOwner, None, - _("Control which is currently managing this window. (varies)")) - - - class BaseForm(fm.dFormMixin): """Creates a bizobj-aware form. @@ -85,7 +22,6 @@ def __init__(self, preClass, parent, properties, attProperties, *args, **kwargs): self.bizobjs = {} self._primaryBizobj = None - self._floatingPanel = None # If this is True, a panel will be automatically added to the # form and sized to fill the form. @@ -145,8 +81,6 @@ if not self._isClosed: self.activeControlValid() ret = self.confirmChanges() - if self._floatingPanel: - self._floatingPanel.release() if ret: ret = super(BaseForm, self)._beforeClose(evt) return ret @@ -862,12 +796,6 @@ self._checkForChanges = bool(value) - def _getFloatingPanel(self): - if not self._floatingPanel: - self._floatingPanel = _FloatDialog(self) - return self._floatingPanel - - def _getPrimaryBizobj(self): """The attribute '_primaryBizobj' should be a bizobj, but due to old code design, might be a data source name. These methods @@ -928,11 +856,6 @@ box asking whether to save changes, discard changes, or cancel the operation that led to the dialog being presented.""") ) - FloatingPanel = property(_getFloatingPanel, None, None, - _("""Small modal dialog that is designed to be used for temporary displays, - similar to context menus, but which can contain any controls. - (read-only) (dDialog)""")) - PrimaryBizobj = property(_getPrimaryBizobj, _setPrimaryBizobj, None, _("Reference to the primary bizobj for this form (dBizobj)") ) Modified: trunk/dabo/ui/uiwx/dFormMixin.py =================================================================== --- trunk/dabo/ui/uiwx/dFormMixin.py 2008-07-23 21:50:05 UTC (rev 4315) +++ trunk/dabo/ui/uiwx/dFormMixin.py 2008-07-23 23:20:31 UTC (rev 4316) @@ -22,10 +22,11 @@ # Skip the first one. Update: apparently on wx27 and above the # double-activation is no longer an issue. self._skipActivate = (wx.VERSION < (2,7) and self.Application.Platform == "Win") - self._cxnFile = "" self._cxnName = "" self._connection = None + self._floatingPanel = None + # Extract the menu definition file, if any self._menuBarFile = self._extractKey((properties, attProperties, kwargs), "MenuBarFile", "") @@ -362,6 +363,8 @@ form is set for checking for this. If everything's OK, call the hook method. """ + if self._floatingPanel: + self._floatingPanel.release() ret = self.beforeClose(evt) return ret @@ -660,6 +663,14 @@ self._cxnName = val + def _getFloatingPanel(self): + if not self._floatingPanel: + # Have to import it here, as it requires that dFormMixin be defined. + from dDialog import _FloatDialog + self._floatingPanel = _FloatDialog(self) + return self._floatingPanel + + def _getFloatOnParent(self): return self._hasWindowStyleFlag(wx.FRAME_FLOAT_ON_PARENT) @@ -1021,6 +1032,11 @@ CxnName = property(_getCxnName, _setCxnName, None, _("Name of the connection used for data access (str)")) + FloatingPanel = property(_getFloatingPanel, None, None, + _("""Small modal dialog that is designed to be used for temporary displays, + similar to context menus, but which can contain any controls. + (read-only) (dDialog)""")) + FloatOnParent = property(_getFloatOnParent, _setFloatOnParent, None, _("Specifies whether the form stays on top of the parent or not.")) Modified: trunk/dabo/ui/uiwx/dKeys.py =================================================================== --- trunk/dabo/ui/uiwx/dKeys.py 2008-07-23 21:50:05 UTC (rev 4315) +++ trunk/dabo/ui/uiwx/dKeys.py 2008-07-23 23:20:31 UTC (rev 4316) @@ -150,6 +150,9 @@ "cmd": mod_Cmd, } +arrows = (key_Up, key_Down, key_Left, key_Right) +whitespace = (key_Tab, key_Space, key_Numpad_space, key_Numpad_tab) + ## pkm: I didn't include all the keycodes below - I want to see what is ## actually necessary to add. Do we really need separate codes for ## the '*' on the numpad versus the '*' on the keyboard, for instance. _______________________________________________ Post Messages to: Dabo-dev@... 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/20080723232031.5AAA2318906@... |
| Free Forum Powered by Nabble | Forum Help |