def create_widget(self): widget = gtk.ComboBoxEntry() # customizing entry widget.child.props.activates_default = True widget.child.connect('changed', self.parent_widget.send_modified) widget.child.connect('focus-out-event', lambda w, e: self.parent_widget._focus_out()) widget.child.connect('activate', lambda w: self.parent_widget._focus_out()) widget.connect('notify::active', lambda w, e: self.parent_widget._focus_out()) selection_shortcuts(widget) # setting completion and selection model = gtk.ListStore(gobject.TYPE_STRING) model.append(('', )) self._selection = {'': None} width = 10 for value, name in sorted(self.definition['selection'], key=operator.itemgetter(1)): name = str(name) self._selection[name] = value model.append((name, )) width = max(width, len(name)) widget.set_model(model) widget.set_text_column(0) widget.child.set_width_chars(width) completion = gtk.EntryCompletion() if hasattr(completion, 'set_inline_selection'): completion.set_inline_selection(True) completion.set_model(model) widget.child.set_completion(completion) completion.set_text_column(0) return widget
def create_widget(self): widget = Gtk.ComboBox(has_entry=True) # customizing entry child = widget.get_child() child.props.activates_default = True child.connect('changed', self._changed) child.connect('focus-out-event', lambda w, e: self.parent_widget._focus_out()) child.connect('activate', lambda w: self.parent_widget._focus_out()) widget.connect('scroll-event', lambda c, e: c.stop_emission_by_name('scroll-event')) selection_shortcuts(widget) # setting completion and selection model = Gtk.ListStore(GObject.TYPE_STRING, GObject.TYPE_PYOBJECT) model.append(('', "")) width = 10 selection = self.definition['selection'] if self.definition.get('sort', True): selection.sort(key=operator.itemgetter(1)) for value, name in selection: name = str(name) model.append((name, value)) width = max(width, len(name)) widget.set_model(model) widget.set_entry_text_column(0) child.set_width_chars(width) completion = Gtk.EntryCompletion() completion.set_inline_selection(True) completion.set_model(model) child.set_completion(completion) completion.set_text_column(0) completion.connect('match-selected', self.match_selected) return widget
def __init__(self, view, attrs): super(Char, self).__init__(view, attrs) self.widget = gtk.HBox() self.autocomplete = bool(attrs.get('autocomplete')) if self.autocomplete: self.entry = gtk.ComboBoxEntry() selection_shortcuts(self.entry) focus_entry = self.entry.get_child() self.set_popdown([], self.entry) self.entry.connect('changed', self.changed) else: self.entry = gtk.Entry() focus_entry = self.entry self.mnemonic_widget = focus_entry focus_entry.set_property('activates_default', True) focus_entry.connect('activate', self.sig_activate) focus_entry.connect('focus-out-event', lambda x, y: self._focus_out()) focus_entry.connect('key-press-event', self.send_modified) manage_entry_position(focus_entry) expand, fill = True, True if attrs.get('size'): expand, fill = False, False self.widget.pack_start(self.entry, expand=expand, fill=fill) if attrs.get('translate'): self.entry.set_icon_from_stock(gtk.ENTRY_ICON_SECONDARY, 'tryton-locale') self.entry.connect('icon-press', self.translate)
def __init__(self, view, attrs): super(Char, self).__init__(view, attrs) self.widget = gtk.HBox() self.autocomplete = bool(attrs.get('autocomplete')) if self.autocomplete: self.entry = gtk.ComboBoxEntry() selection_shortcuts(self.entry) focus_entry = self.entry.get_child() self.set_popdown([], self.entry) self.entry.connect('changed', self.changed) else: self.entry = gtk.Entry() focus_entry = self.entry self.mnemonic_widget = focus_entry focus_entry.set_property('activates_default', True) focus_entry.connect('activate', self.sig_activate) focus_entry.connect('focus-out-event', lambda x, y: self._focus_out()) focus_entry.connect('key-press-event', self.send_modified) expand, fill = True, True if attrs.get('size'): expand, fill = False, False self.widget.pack_start(self.entry, expand=expand, fill=fill) if attrs.get('translate'): self.entry.set_icon_from_stock(gtk.ENTRY_ICON_SECONDARY, 'tryton-locale') self.entry.connect('icon-press', self.translate)
def __init__(self, view, attrs): super(Char, self).__init__(view, attrs) self.widget = Gtk.HBox() self.autocomplete = bool(attrs.get('autocomplete')) if self.autocomplete: self.entry = Gtk.ComboBox(has_entry=True) selection_shortcuts(self.entry) focus_entry = self.entry.get_child() self.set_popdown([], self.entry) self.entry.connect('changed', self.changed) self.entry.connect('move-active', self._move_active) self.entry.connect( 'scroll-event', lambda c, e: c.stop_emission_by_name('scroll-event')) else: self.entry = Gtk.Entry() focus_entry = self.entry self.mnemonic_widget = focus_entry focus_entry.set_property('activates_default', True) focus_entry.connect('activate', self.sig_activate) focus_entry.connect('focus-out-event', lambda x, y: self._focus_out()) focus_entry.connect('key-press-event', self.send_modified) expand, fill = True, True if attrs.get('size'): expand, fill = False, False self.widget.pack_start(self.entry, expand=expand, fill=fill, padding=0) if attrs.get('translate'): self.entry.set_icon_from_pixbuf( Gtk.EntryIconPosition.SECONDARY, IconFactory.get_pixbuf('tryton-translate', Gtk.IconSize.MENU)) self.entry.connect('icon-press', self.translate)
def on_start_editing(self, event, widget, path, background_area, cell_area, flags): if not self.visible: return if not event: event = gtk.gdk.Event(gtk.keysyms.Tab) editable = self._renderer.start_editing(event, widget, path, background_area, cell_area, flags) colormap = editable.get_colormap() style = editable.get_style() if hasattr(self, 'background') \ and getattr(self, 'background') != 'white': bg_color = colormap.alloc_color(getattr(self, 'background')) fg_color = gtk.gdk.color_parse("black") editable.modify_bg(gtk.STATE_ACTIVE, bg_color) editable.modify_base(gtk.STATE_NORMAL, bg_color) editable.modify_fg(gtk.STATE_NORMAL, fg_color) editable.modify_text(gtk.STATE_NORMAL, fg_color) editable.modify_text(gtk.STATE_INSENSITIVE, fg_color) else: editable.modify_bg(gtk.STATE_ACTIVE, style.bg[gtk.STATE_ACTIVE]) editable.modify_base(gtk.STATE_NORMAL, style.base[gtk.STATE_NORMAL]) editable.modify_fg(gtk.STATE_NORMAL, style.fg[gtk.STATE_NORMAL]) editable.modify_text(gtk.STATE_NORMAL, style.text[gtk.STATE_NORMAL]) editable.modify_text(gtk.STATE_INSENSITIVE, style.text[gtk.STATE_INSENSITIVE]) return selection_shortcuts(editable)
def do_start_editing(self, event, widget, path, background_area, cell_area, flags): if not self.props.visible: return if not event: event = gtk.gdk.Event(gtk.keysyms.Tab) editable = gtk.CellRendererCombo.do_start_editing(self, event, widget, path, background_area, cell_area, flags) return selection_shortcuts(editable)
def do_start_editing(self, event, widget, path, background_area, cell_area, flags): if not self.props.visible: return if not event: event = gtk.gdk.Event(gtk.keysyms.Tab) editable = gtk.CellRendererCombo.do_start_editing( self, event, widget, path, background_area, cell_area, flags) return selection_shortcuts(editable)
def __init__(self, view, attrs): super(Reference, self).__init__(view, attrs) self.widget_combo = gtk.ComboBoxEntry() child = self.widget_combo.get_child() child.connect('activate', lambda *a: self._focus_out()) child.connect('focus-out-event', lambda *a: self._focus_out()) child.get_accessible().set_name(attrs.get('string', '')) self.widget_combo.connect('changed', self.sig_changed_combo) selection_shortcuts(self.widget_combo) self.widget_combo.set_focus_chain([child]) self.widget.pack_start(self.widget_combo, expand=False, fill=True) self.widget.pack_start(gtk.Label('-'), expand=False, fill=False) self.init_selection() self.set_popdown(self.selection, self.widget_combo) self.widget.set_focus_chain([self.widget_combo, self.wid_text])
def editing_started(self, cell, editable, path): super(Selection, self).editing_started(cell, editable, path) record, field = self._get_record_field_from_path(path) selection_shortcuts(editable) def set_value(*a): return self.set_value(editable, record, field) editable.get_child().connect('activate', set_value) editable.get_child().connect('focus-out-event', set_value) editable.connect('changed', set_value) self.update_selection(record, field) self.set_popdown(self.selection, editable) value = self.get_value(record, field) if not self.set_popdown_value(editable, value): self.get_inactive_selection(value) self.set_popdown_value(editable, value) return False
def __init__(self, view, attrs): super(Reference, self).__init__(view, attrs) self.widget_combo = Gtk.ComboBox(has_entry=True) child = self.widget_combo.get_child() child.connect('activate', lambda *a: self._focus_out()) child.connect('focus-out-event', lambda *a: self._focus_out()) child.get_accessible().set_name(attrs.get('string', '')) self.widget_combo.connect('changed', self.sig_changed_combo) self.widget_combo.connect('move-active', self._move_active) self.widget_combo.connect( 'scroll-event', lambda c, e: c.stop_emission_by_name('scroll-event')) selection_shortcuts(self.widget_combo) self.widget.pack_start( self.widget_combo, expand=False, fill=True, padding=0) self.init_selection() self.set_popdown(self.selection, self.widget_combo)
def __init__(self, view, attrs): super(Selection, self).__init__(view, attrs) self.widget = gtk.HBox(spacing=3) self.entry = gtk.ComboBoxEntry() child = self.mnemonic_widget = self.entry.child child.set_property('activates_default', True) child.set_max_length(int(attrs.get('size', 0))) child.set_width_chars(10) selection_shortcuts(self.entry) child.connect('activate', lambda *a: self._focus_out()) child.connect('focus-out-event', lambda *a: self._focus_out()) self.entry.connect('changed', self.changed) self.widget.pack_start(self.entry) self.widget.set_focus_chain([child]) self.selection = attrs.get('selection', [])[:] self.attrs = attrs self.init_selection() self.set_popdown(self.selection, self.entry)
def do_start_editing(self, event, widget, path, background_area, cell_area, flags): if not self.props.visible: return if not event: if hasattr(gtk.gdk.Event, 'new'): event = gtk.gdk.Event.new(gtk.gdk.KEY_PRESS) else: event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) editable = gtk.CellRendererCombo.do_start_editing(self, event, widget, path, background_area, cell_area, flags) return selection_shortcuts(editable)
def editing_started(self, cell, editable, path): super(Selection, self).editing_started(cell, editable, path) record, field = self._get_record_field_from_path(path) # Combobox does not emit remove-widget when focus is changed self.editable.connect('editing-done', lambda *a: self.editable.emit('remove-widget')) selection_shortcuts(editable) def set_value(*a): return self.set_value(editable, record, field) editable.get_child().connect('activate', set_value) editable.get_child().connect('focus-out-event', set_value) editable.connect('changed', set_value) self.update_selection(record, field) self.set_popdown(self.selection, editable) value = self.get_value(record, field) if not self.set_popdown_value(editable, value): self.get_inactive_selection(value) self.set_popdown_value(editable, value) return False
def create_widget(self): widget = gtk.ComboBoxEntry() # customizing entry widget.child.props.activates_default = True widget.child.connect('changed', self.parent_widget.send_modified) widget.child.connect('focus-out-event', lambda w, e: self.parent_widget._focus_out()) widget.child.connect('activate', lambda w: self.parent_widget._focus_out()) widget.connect('notify::active', lambda w, e: self.parent_widget._focus_out()) selection_shortcuts(widget) # setting completion and selection model = gtk.ListStore(gobject.TYPE_STRING) model.append(('',)) self._selection = {'': None} width = 10 selection = self.definition['selection'] if self.definition.get('sorted', True): selection.sort(key=operator.itemgetter(1)) for value, name in selection: name = str(name) self._selection[name] = value model.append((name,)) width = max(width, len(name)) widget.set_model(model) widget.set_text_column(0) widget.child.set_width_chars(width) completion = gtk.EntryCompletion() completion.set_inline_selection(True) completion.set_model(model) widget.child.set_completion(completion) completion.set_text_column(0) return widget
def __init__(self, view, attrs): super(Selection, self).__init__(view, attrs) self.widget = Gtk.HBox(spacing=3) self.entry = Gtk.ComboBox(has_entry=True) child = self.mnemonic_widget = self.entry.get_child() child.set_property('activates_default', True) child.set_max_length(int(attrs.get('size', 0))) child.set_width_chars(self.default_width_chars) selection_shortcuts(self.entry) child.connect('activate', lambda *a: self._focus_out()) child.connect('focus-out-event', lambda *a: self._focus_out()) self.entry.connect('changed', self.changed) self.entry.connect('move-active', self._move_active) self.entry.connect( 'scroll-event', lambda c, e: c.stop_emission_by_name('scroll-event')) self.widget.pack_start(self.entry, expand=True, fill=True, padding=0) self.selection = attrs.get('selection', [])[:] self.attrs = attrs self.init_selection() self.set_popdown(self.selection, self.entry)
def __init__(self, field_name, model_name, attrs=None): super(Selection, self).__init__(field_name, model_name, attrs=attrs) self.widget = gtk.HBox(spacing=3) self.entry = gtk.ComboBoxEntry() child = self.entry.child child.set_property('activates_default', True) child.set_max_length(int(attrs.get('size', 0))) child.set_width_chars(10) selection_shortcuts(self.entry) child.connect('key_press_event', self.sig_key_press) child.connect('activate', self.sig_activate) child.connect_after('focus-out-event', self.sig_activate) child.connect('changed', self.send_modified) self.entry.connect('notify::active', lambda *a: self._focus_out()) self.widget.pack_start(self.entry) self.widget.set_focus_chain([child]) self._selection = {} self.selection = attrs.get('selection', [])[:] self.attrs = attrs self.init_selection() self.set_popdown(self.selection, self.entry)
def on_editing_started(self, editable, path): super().on_editing_started(editable, path) selection_shortcuts(editable)