dabo Commit
Revision 7013
Date: 2011-12-09 03:48:33 -0800 (Fri, 09 Dec 2011)
Author: Jacekk
Trac: http://trac.dabodev.com/changeset/7013

Changed:
U   trunk/dabo/ui/uiwx/dGrid.py

Log:
Added default copy handler for dGrid cells.

Diff:
Modified: trunk/dabo/ui/uiwx/dGrid.py
===================================================================
--- trunk/dabo/ui/uiwx/dGrid.py 2011-12-09 08:32:32 UTC (rev 7012)
+++ trunk/dabo/ui/uiwx/dGrid.py 2011-12-09 11:48:33 UTC (rev 7013)
@@ -2,6 +2,7 @@
 import copy
 import sys
 import datetime
+import locale
 import time
 import operator
 import re
@@ -27,10 +28,17 @@
 from dabo.ui import makeDynamicProperty
 import dabo.lib.dates
 from dabo.lib.utils import noneSortKey, caseInsensitiveSortKey
-
 from dabo.dBug import loggit
 
+
+# Make this locale-independent
+# JK: We can't set this up on module load because locale
+# is set not until dApp is completely setup.
+decimalPoint = None
+
+
 class dGridDataTable(wx.grid.PyGridTableBase):
+
        def __init__(self, parent):
                super(dGridDataTable, self).__init__()
                self._clearCache()
@@ -1755,6 +1763,10 @@
        USE_DATASOURCE_BEING_SET_HACK = False
 
        def __init__(self, parent, properties=None, attProperties=None, *args, 
**kwargs):
+               # Update global decimalPoint attribute.
+               global decimalPoint
+               if decimalPoint is None:
+                       decimalPoint = locale.localeconv()["decimal_point"]
                # Get scrollbar size from system metrics.
                self._scrollBarSize = 
wx.SystemSettings_GetMetric(wx.SYS_VSCROLL_X)
                self._baseClass = dGrid
@@ -3308,6 +3320,18 @@
                return GridCell(self, row, col)
 
 
+       def copy(self):
+               if self.RowCount > 0:
+                       coln = self.CurrentColumn
+                       dtyp = self.Columns[coln].DataType
+                       val = ustr(self.getValue(col=coln))
+                       if dtyp in (Decimal, float, "decimal", "float", "f"):
+                               # We need to convert decimal point accordingly 
to the locale.
+                               val = val.replace(".", decimalPoint)
+                       self.Application.copyToClipboard(val)
+                       return True
+
+
        def getBizobj(self):
                ds = self.DataSource
                if isinstance(ds, dabo.biz.dBizobj):



_______________________________________________
Post Messages to: [email protected]
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/[email protected]

Reply via email to