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