hda (OpenERP) has proposed merging 
lp:~openerp/openobject-client/property_attribute into lp:openobject-client.

Requested reviews:
  OpenERP sa GTK client R&D (openerp-dev-gtk)


Branch to add property attribute on chat field like.

<field name="name" property="upper"/>
<field name="name" property="lower"/>
<field name="name" property="numeric"/> 

so that widget will accept only upper/lower or numeric values.

To test the feature you need to merge this server branch too:
https://code.launchpad.net/~openerp/openobject-server/property_attribute/+merge/41147
-- 
https://code.launchpad.net/~openerp/openobject-client/property_attribute/+merge/41148
Your team OpenERP sa GTK client R&D is requested to review the proposed merge 
of lp:~openerp/openobject-client/property_attribute into lp:openobject-client.
=== modified file 'bin/tools/__init__.py'
--- bin/tools/__init__.py	2010-10-12 16:53:15 +0000
+++ bin/tools/__init__.py	2010-11-18 10:17:56 +0000
@@ -25,6 +25,7 @@
 import os
 import time
 from dateutil.relativedelta import relativedelta
+import gtk
 
 import rpc
 
@@ -79,6 +80,22 @@
         attrs['digits'] = eval(attrs['digits'])
     return attrs
 
+def convert_keyval(type, keyval):
+
+    numkeys = [getattr(gtk.keysyms, '_%d' % x) for x in range(0,10)]
+    numkeys += [getattr(gtk.keysyms, 'KP_%d' % x) for x in range(0,10)]
+    
+    if type == "upper" and keyval >= 97 and keyval <= 122:
+        keyval = keyval - 32
+        return keyval
+    elif type == "lower" and keyval >= 65 and keyval <= 90:
+        keyval = keyval + 32
+        return keyval
+    elif type == "numeric" and keyval not in numkeys:
+        return 0
+    else:
+        return keyval
+    
 #FIXME use spaces
 def calc_condition(self,model,con):
     if model and (con[0] in model.mgroup.fields):

=== modified file 'bin/widget/view/form_gtk/char.py'
--- bin/widget/view/form_gtk/char.py	2010-07-16 05:41:32 +0000
+++ bin/widget/view/form_gtk/char.py	2010-11-18 10:17:56 +0000
@@ -24,6 +24,7 @@
 
 import common
 import interface
+import tools
 
 class char(interface.widget_interface):
     def __init__(self, window, parent, model, attrs={}):
@@ -35,6 +36,7 @@
         self.widget.set_visibility(not attrs.get('password', False))
         self.widget.set_width_chars(5)
 
+        self.widget.connect('key_press_event', self.key_press_cb)
         self.widget.connect('populate-popup', self._menu_open)
         self.widget.connect('activate', self.sig_activate)
         self.widget.connect('focus-in-event', lambda x,y: self._focus_in())
@@ -43,7 +45,10 @@
     def set_value(self, model, model_field):
         return model_field.set_client(model, self.widget.get_text() or False)
     
-
+    def key_press_cb(self, entry, event, *arg):
+        type = self.attrs.get('property',False)
+        event.keyval = tools.convert_keyval(type, event.keyval)        
+    
     def display(self, model, model_field):
         if not model_field:
             self.widget.set_text('')

=== modified file 'bin/widget/view/tree_gtk/editabletree.py'
--- bin/widget/view/tree_gtk/editabletree.py	2010-09-20 09:58:27 +0000
+++ bin/widget/view/tree_gtk/editabletree.py	2010-11-18 10:17:56 +0000
@@ -23,6 +23,7 @@
 import parser
 import observator
 from tools.debug import debug
+import tools
 
 class EditableTreeView(gtk.TreeView, observator.Observable):
 
@@ -174,6 +175,11 @@
     def on_keypressed(self, entry, event, cell_value):
         path, column = self.get_cursor()
         store = self.get_model()
+
+        if column._type == 'char' and column.name in self.screen.fields and self.screen.fields[column.name].get('property',False):
+            type = self.screen.fields[column.name].get('property', '')
+            event.keyval = tools.convert_keyval(type, event.keyval)
+             
         model = store.get_value(store.get_iter(path), 0)
         if event.keyval in self.leaving_events:
             shift_pressed = bool(gtk.gdk.SHIFT_MASK & event.state)

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to