Beispiel #1
0
 def pop(menu, group, record):
     copy_item = gtk.ImageMenuItem('gtk-copy')
     copy_item.connect('activate', lambda x: self.on_copy())
     menu.append(copy_item)
     paste_item = gtk.ImageMenuItem('gtk-paste')
     paste_item.connect('activate', lambda x: self.on_paste())
     menu.append(paste_item)
     # Don't activate actions if parent is modified
     parent = record.parent if record else None
     while parent:
         if parent.modified:
             break
         parent = parent.parent
     else:
         populate(menu, group.model_name, record)
     for col in self.treeview.get_columns():
         if not col.get_visible() or not col.name:
             continue
         field = group.fields[col.name]
         model = None
         if field.attrs['type'] == 'many2one':
             model = field.attrs['relation']
             record_id = field.get(record)
         elif field.attrs['type'] == 'reference':
             value = field.get(record)
             if value:
                 model, record_id = value.split(',')
                 record_id = int(record_id)
         if not model:
             continue
         label = field.attrs['string']
         populate(menu, model, record_id, title=label, field=field)
     menu.show_all()
Beispiel #2
0
 def pop(menu, group, record):
     # Don't activate actions if parent is modified
     parent = record.parent if record else None
     while parent:
         if parent.modified:
             break
         parent = parent.parent
     else:
         populate(menu, group.model_name, record)
     for col in self.treeview.get_columns():
         if not col.get_visible() or not col.name:
             continue
         field = group.fields[col.name]
         model = None
         if field.attrs['type'] == 'many2one':
             model = field.attrs['relation']
             record_id = field.get(record)
         elif field.attrs['type'] == 'reference':
             value = field.get(record)
             if value:
                 model, record_id = value.split(',')
                 record_id = int(record_id)
         if not model:
             continue
         label = field.attrs['string']
         context = field.get_context(record)
         populate(menu,
                  model,
                  record_id,
                  title=label,
                  field=field,
                  context=context)
     menu.show_all()
Beispiel #3
0
 def _populate_popup(self, widget, menu):
     value = self.field.get(self.record)
     if self.has_target(value):
         populate(
             menu, self.get_model(), self.id_from_value(value),
             '', self.field, self.field.get_context(self.record))
     return True
Beispiel #4
0
 def pop(menu, group, record):
     copy_item = gtk.ImageMenuItem('gtk-copy')
     copy_item.connect('activate', lambda x: self.on_copy())
     menu.append(copy_item)
     paste_item = gtk.ImageMenuItem('gtk-paste')
     paste_item.connect('activate', lambda x: self.on_paste())
     menu.append(paste_item)
     # Don't activate actions if parent is modified
     parent = record.parent if record else None
     while parent:
         if parent.modified:
             break
         parent = parent.parent
     else:
         populate(menu, group.model_name, record)
     for col in self.widget_tree.get_columns():
         if not col.get_visible() or not col.name:
             continue
         field = group.fields[col.name]
         model = None
         if field.attrs['type'] == 'many2one':
             model = field.attrs['relation']
             record_id = field.get(record)
         elif field.attrs['type'] == 'reference':
             value = field.get(record)
             if value:
                 model, record_id = value.split(',')
                 record_id = int(record_id)
         if not model:
             continue
         label = field.attrs['string']
         populate(menu, model, record_id, title=label)
     menu.show_all()
    def __button_press(self, treeview, event):
        if event.button == 3:
            path = treeview.get_path_at_pos(int(event.x), int(event.y))
            selection = treeview.get_selection()
            if selection.get_mode() == gtk.SELECTION_SINGLE:
                model = selection.get_selected()[0]
            elif selection.get_mode() == gtk.SELECTION_MULTIPLE:
                model = selection.get_selected_rows()[0]
            if (not path) or not path[0]:
                return False
            group = model.group
            record = group[path[0][0]]

            menu = gtk.Menu()
            copy_item = gtk.ImageMenuItem('gtk-copy')
            copy_item.connect('activate', lambda x: self.on_copy())
            menu.append(copy_item)
            # Don't activate actions if parent is modified
            parent = record.parent if record else None
            while parent:
                if parent.modified:
                    record = None
                    break
                parent = parent.parent
            populate(menu, group.model_name, record)
            for col in self.widget_tree.get_columns():
                if not col.get_visible() or not col.name:
                    continue
                field = group.fields[col.name]
                model = None
                if field.attrs['type'] == 'many2one':
                    model = field.attrs['relation']
                    record_id = field.get(record)
                elif field.attrs['type'] == 'reference':
                    value = field.get(record)
                    if value:
                        model, record_id = value.split(',')
                        record_id = int(record_id)
                if not model:
                    continue
                label = field.attrs['string']
                populate(menu, model, record_id, title=label)
            menu.show_all()
            menu.popup(None, None, None, event.button, event.time)
        elif event.button == 2:
            event.button = 1
            event.state |= gtk.gdk.MOD1_MASK
            treeview.emit('button-press-event', event)
            return True
        return False
 def _populate_popup(self, widget, menu):
     value = self.field.get(self.record)
     if self.has_target(value):
         populate(menu, self.get_model(), self.id_from_value(value))
     return True