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()
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()
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
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