dabo Commit 4316

View: New views
1 Messages — Rating Filter:   Alert me  

dabo Commit 4316

by Ed Leafe :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

dabo 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@...
LightInTheBox - Buy quality products at wholesale price