コード例 #1
0
ファイル: dictionary.py プロジェクト: webmavilchez/tryton
    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
コード例 #2
0
ファイル: dictionary.py プロジェクト: zarumaru/tryton
    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
コード例 #3
0
ファイル: char.py プロジェクト: kret0s/gnuhealth-live
    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)
コード例 #4
0
ファイル: char.py プロジェクト: MikeSquall/tryton
    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)
コード例 #5
0
    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)
コード例 #6
0
ファイル: cellrenderercombo.py プロジェクト: Devecoop/tryton
    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)
コード例 #7
0
 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)
コード例 #8
0
ファイル: cellrenderercombo.py プロジェクト: solutema/tryton
 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)
コード例 #9
0
    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])
コード例 #10
0
ファイル: reference.py プロジェクト: coopengo/tryton
    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])
コード例 #11
0
    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
コード例 #12
0
ファイル: reference.py プロジェクト: tryton/tryton
    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)
コード例 #13
0
ファイル: selection.py プロジェクト: kret0s/gnuhealth-live
    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)
コード例 #14
0
ファイル: selection.py プロジェクト: kret0s/gnuhealth-live
    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)
コード例 #15
0
 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)
コード例 #16
0
ファイル: widget.py プロジェクト: silver-dragon/tryton
    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
コード例 #17
0
ファイル: dictionary.py プロジェクト: kret0s/gnuhealth-live
    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
コード例 #18
0
    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)
コード例 #19
0
ファイル: selection.py プロジェクト: webmavilchez/tryton
    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)
コード例 #20
0
 def on_editing_started(self, editable, path):
     super().on_editing_started(editable, path)
     selection_shortcuts(editable)