Use same keyboard shortcut for xxx2many than for other fields
- Remove hardcoded CTRL+N shortcut on one2many - Add F2, F3 and Delete on many2many - Make F2 working only when focus is on list - Remove on many2many keep the cursor position
This commit is contained in:
1 parent
515d0ec7d5
commit
1e7c08dcdf
3 files changed
+34
-14
No files matched your search
@@ -1,3 +1,5 @@
|
||||
* Use same keyboard shortcut for xxx2many than for other fields
|
||||
|
||||
Version 1.4.0 - 2009-10-19
|
||||
* Bug fixes (see mercurial logs for details)
|
||||
* Handle datetime_field in xxx2Many
|
||||
|
||||
@@ -57,17 +57,34 @@ class Many2Many(WidgetInterface):
|
||||
|
||||
self.widget.pack_start(hbox, expand=False, fill=False)
|
||||
|
||||
hbox.set_focus_chain([self.wid_text])
|
||||
|
||||
self.screen = Screen(attrs['relation'], self._window,
|
||||
view_type=['tree'], views_preload=attrs.get('views', {}),
|
||||
row_activate=self._on_activate)
|
||||
|
||||
self.widget.pack_start(self.screen.widget, expand=True, fill=True)
|
||||
|
||||
self.screen.widget.connect('key_press_event', self.on_keypress)
|
||||
self.wid_text.connect('key_press_event', self.on_keypress)
|
||||
|
||||
self.old = None
|
||||
|
||||
def grab_focus(self):
|
||||
return self.wid_text.grab_focus()
|
||||
|
||||
def on_keypress(self, widget, event):
|
||||
if event.keyval == gtk.keysyms.F3:
|
||||
self._sig_add()
|
||||
return False
|
||||
if event.keyval == gtk.keysyms.F2 \
|
||||
and widget == self.screen.widget:
|
||||
self._sig_edit()
|
||||
if event.keyval in (gtk.keysyms.Delete, gtk.keysyms.KP_Delete) \
|
||||
and widget == self.screen.widget:
|
||||
self._sig_remove()
|
||||
return False
|
||||
|
||||
def destroy(self):
|
||||
self.screen.destroy()
|
||||
self.widget.destroy()
|
||||
@@ -106,8 +123,6 @@ class Many2Many(WidgetInterface):
|
||||
|
||||
def _sig_remove(self, *args):
|
||||
self.screen.remove()
|
||||
self.screen.display()
|
||||
self.set_value(self._view.model, self._view.modelfield)
|
||||
|
||||
def _sig_activate(self, *args):
|
||||
self._sig_add()
|
||||
|
||||
@@ -315,18 +315,17 @@ class Dialog(object):
|
||||
and self.but_add.get_property('sensitive'):
|
||||
self._sig_add()
|
||||
return False
|
||||
if ((event.keyval in (gtk.keysyms.N, gtk.keysyms.n) \
|
||||
and event.state & gtk.gdk.CONTROL_MASK) \
|
||||
or event.keyval == gtk.keysyms.F3) \
|
||||
if (event.keyval == gtk.keysyms.F3) \
|
||||
and self.but_new.get_property('sensitive'):
|
||||
self._sig_new(widget)
|
||||
return False
|
||||
if event.keyval == gtk.keysyms.F2:
|
||||
if event.keyval == gtk.keysyms.F2 \
|
||||
and widget == self.screen.widget:
|
||||
self._sig_edit(widget)
|
||||
return False
|
||||
if (event.keyval in (gtk.keysyms.L, gtk.keysyms.l) \
|
||||
and event.state & gtk.gdk.CONTROL_MASK):
|
||||
self.switch_view(widget)
|
||||
if event.keyval in (gtk.keysyms.Delete, gtk.keysyms.KP_Delete) \
|
||||
and widget == self.screen.widget:
|
||||
self._sig_remove(widget)
|
||||
return False
|
||||
|
||||
def switch_view(self, widget):
|
||||
@@ -483,6 +482,8 @@ class One2Many(WidgetInterface):
|
||||
self.widget.pack_start(self.screen.widget, expand=True, fill=True)
|
||||
|
||||
self.screen.widget.connect('key_press_event', self.on_keypress)
|
||||
if self.attrs.get('add_remove'):
|
||||
self.wid_text.connect('key_press_event', self.on_keypress)
|
||||
|
||||
def grab_focus(self):
|
||||
return self.screen.widget.grab_focus()
|
||||
@@ -493,16 +494,18 @@ class One2Many(WidgetInterface):
|
||||
and self.but_add.get_property('sensitive'):
|
||||
self._sig_add()
|
||||
return False
|
||||
if ((event.keyval == gtk.keysyms.N \
|
||||
and event.state & gtk.gdk.CONTROL_MASK \
|
||||
and event.state & gtk.gdk.SHIFT_MASK) \
|
||||
or event.keyval == gtk.keysyms.F3) \
|
||||
if (event.keyval == gtk.keysyms.F3) \
|
||||
and self.but_new.get_property('sensitive'):
|
||||
self._sig_new(widget)
|
||||
return False
|
||||
if event.keyval == gtk.keysyms.F2:
|
||||
if event.keyval == gtk.keysyms.F2 \
|
||||
and widget == self.screen.widget:
|
||||
self._sig_edit(widget)
|
||||
return False
|
||||
if event.keyval in (gtk.keysyms.Delete, gtk.keysyms.KP_Delete) \
|
||||
and widget == self.screen.widget:
|
||||
self._sig_remove(widget)
|
||||
return False
|
||||
|
||||
def destroy(self):
|
||||
self.screen.destroy()
|
||||
|
||||
Reference in new issue
Block a user