def setup_tree(self): item_renderer = gtk.CellRendererText() item_renderer.set_property('editable', True) item_col = gtk.TreeViewColumn(_('Item'), item_renderer, text=1) item_col.set_expand(True) key_renderer = gtk.CellRendererCombo() key_renderer.set_property('editable', True) key_renderer.connect('editing-started', self.start_keyedit_cb) key_renderer.connect('edited', self.key_edited_cb) key_renderer.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE) key_renderer.set_property('sensitive', True) key_col = gtk.TreeViewColumn(_('Key'), key_renderer, text=2) key_col.set_expand(True) self.renderers = [key_renderer, item_renderer] self.tv.append_column(item_col) self.tv.append_column(key_col) for r in key_renderer, item_renderer: r.set_property('wrap-mode', pango.WRAP_WORD) r.set_property('wrap-width', 200) self.tv.connect('check-resize', self.resize_event_cb) self.tv.connect('size-allocate', self.tv_size_allocate_cb) plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for tvc in plugin_manager.get_treeview_columns(self, key_col=2, instant_apply=False): self.tv.append_column(tvc)
def setup_tree (self): item_renderer = gtk.CellRendererText(); item_renderer.set_property('editable',True) item_col = gtk.TreeViewColumn(_('Item'),item_renderer,text=1) item_col.set_expand(True) key_renderer = gtk.CellRendererCombo() key_renderer.set_property('editable',True) key_renderer.connect('editing-started',self.start_keyedit_cb) key_renderer.connect('edited',self.key_edited_cb) key_renderer.set_property('mode',gtk.CELL_RENDERER_MODE_EDITABLE) key_renderer.set_property('sensitive',True) key_col = gtk.TreeViewColumn(_('Key'),key_renderer,text=2) key_col.set_expand(True) self.renderers = [key_renderer,item_renderer] self.tv.append_column(item_col) self.tv.append_column(key_col) for r in key_renderer,item_renderer: r.set_property('wrap-mode',pango.WRAP_WORD) r.set_property('wrap-width',200) self.tv.connect('check-resize',self.resize_event_cb) self.tv.connect('size-allocate',self.tv_size_allocate_cb) plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for tvc in plugin_manager.get_treeview_columns(self, key_col=2, instant_apply=False): self.tv.append_column(tvc)
def treeselection_changed_cb (self, ts): keys = [] def do_foreach (tm, p, i): keys.append(tm[p][2]) ts.selected_foreach(do_foreach) plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for p in plugin_manager.plugins: p.selection_changed(keys)
def treeselection_changed_cb(self, ts): keys = [] def do_foreach(tm, p, i): keys.append(tm[p][2]) ts.selected_foreach(do_foreach) plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for p in plugin_manager.plugins: p.selection_changed(keys)
def setup_main_interface(self): self.main = gtk.VBox() l = gtk.Label() l.set_markup('''<b>%s</b>\n<i>%s</i>''' % ( _('Ingredient Keys'), _('Ingredient Keys are normalized ingredient names used for shopping lists and for calculations.' ))) self.main.pack_start(l, expand=False, fill=False) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.main.pack_start(sw) self.extra_widget_table = gtk.Table() ew_index = 1 self.main.pack_start(self.extra_widget_table, expand=False, fill=False) self.tv = gtk.TreeView() self.tv.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.tv.get_selection().connect('changed', self.treeselection_changed_cb) self.setup_model() self.setup_tree() self.tv.set_model(self.model) sw.add(self.tv) self.main.show_all() self.update_from_database() ingredientEditorModule = filter( lambda m: isinstance(m, IngredientEditorModule), self.re.modules)[0] ingredientEditorModule.connect( 'saved', lambda *args: self.update_from_database()) ingredientEditorModule.connect('toggle-edited', self.update_from_ingredient_editor_cb) self.setup_action_groups() # Set up extra widgets plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() apply_button = gtk.Button(stock=gtk.STOCK_APPLY) for plugin in plugin_manager.plugins: if plugin.offers_edit_widget(): title_label = gtk.Label(plugin.title) widget = plugin.setup_edit_widget() self.extra_widget_table.attach(title_label, 0, 1, ew_index, ew_index + 1) self.extra_widget_table.attach(widget, 1, 2, ew_index, ew_index + 1) title_label.show() widget.show() apply_button.connect('clicked', lambda *args: plugin.apply_widget_val()) ew_index += 1 if ew_index > 1: self.extra_widget_table.attach(apply_button, 1, 2, ew_index, ew_index + 1) apply_button.show() self.extra_widget_table.hide() self.edit_associations_action.set_visible(True) apply_button.connect('clicked', lambda *args: self.tv.queue_draw())
def setup_main_interface (self): self.main = gtk.VBox() l = gtk.Label() l.set_markup('''<b>%s</b>\n<i>%s</i>'''%( _('Ingredient Keys'), _('Ingredient Keys are normalized ingredient names used for shopping lists and for calculations.') ) ) self.main.pack_start(l,expand=False,fill=False) sw = gtk.ScrolledWindow(); sw.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) self.main.pack_start(sw) self.extra_widget_table = gtk.Table() ew_index = 1 self.main.pack_start(self.extra_widget_table,expand=False,fill=False) self.tv = gtk.TreeView() self.tv.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.tv.get_selection().connect('changed', self.treeselection_changed_cb) self.setup_model() self.setup_tree() self.tv.set_model(self.model) sw.add(self.tv) self.main.show_all() self.update_from_database() ingredientEditorModule = filter(lambda m: isinstance(m,IngredientEditorModule), self.re.modules)[0] ingredientEditorModule.connect('saved',lambda *args: self.update_from_database()) ingredientEditorModule.connect('toggle-edited', self.update_from_ingredient_editor_cb) self.setup_action_groups() # Set up extra widgets plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() apply_button = gtk.Button(stock=gtk.STOCK_APPLY) for plugin in plugin_manager.plugins: if plugin.offers_edit_widget(): title_label = gtk.Label(plugin.title) widget = plugin.setup_edit_widget() self.extra_widget_table.attach(title_label,0,1,ew_index,ew_index+1) self.extra_widget_table.attach(widget,1,2,ew_index,ew_index+1) title_label.show(); widget.show() apply_button.connect('clicked',lambda *args: plugin.apply_widget_val()) ew_index += 1 if ew_index > 1: self.extra_widget_table.attach(apply_button,1,2,ew_index,ew_index+1) apply_button.show() self.extra_widget_table.hide() self.edit_associations_action.set_visible(True) apply_button.connect('clicked', lambda *args: self.tv.queue_draw())
def setupTreeView(self): self.FIELD_COL = 1 self.VALUE_COL = 2 self.COUNT_COL = 3 self.REC_COL = 4 self.NUT_COL = 5 for n, head in [ [self.FIELD_COL, _('Field')], [self.VALUE_COL, _('Value')], [self.COUNT_COL, _('Count')], [self.REC_COL, _('Recipes')], #[self.NUT_COL, _('Nutritional Info')], ]: if n == self.NUT_COL: renderer = gtk.CellRendererToggle() else: renderer = gtk.CellRendererText() # If we have gtk > 2.8, set up text-wrapping try: renderer.get_property('wrap-width') except TypeError: pass else: renderer.set_property('wrap-mode', gtk.WRAP_WORD) if n == self.FIELD_COL: renderer.set_property('wrap-width', 60) elif n in [self.VALUE_COL, self.REC_COL]: renderer.set_property('wrap-width', 250) else: renderer.set_property('wrap-width', 100) if n == self.VALUE_COL: renderer.set_property('editable', True) renderer.connect('edited', self.tree_edited, n, head) if n == self.NUT_COL: col = gtk.TreeViewColumn(head, renderer, active=n, visible=n) else: col = gtk.TreeViewColumn(head, renderer, text=n) if n == self.VALUE_COL: col.set_property('expand', True) col.set_resizable(True) self.treeview.append_column(col) plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for tvc in plugin_manager.get_treeview_columns(None, key_col=2, instant_apply=True): self.treeview.append_column(tvc)
def setupTreeView (self): self.FIELD_COL = 1 self.VALUE_COL = 2 self.COUNT_COL = 3 self.REC_COL = 4 self.NUT_COL = 5 for n,head in [[self.FIELD_COL,_('Field')], [self.VALUE_COL,_('Value')], [self.COUNT_COL,_('Count')], [self.REC_COL, _('Recipes')], #[self.NUT_COL, _('Nutritional Info')], ]: if n == self.NUT_COL: renderer = gtk.CellRendererToggle() else: renderer = gtk.CellRendererText() # If we have gtk > 2.8, set up text-wrapping try: renderer.get_property('wrap-width') except TypeError: pass else: renderer.set_property('wrap-mode',gtk.WRAP_WORD) if n == self.FIELD_COL: renderer.set_property('wrap-width',60) elif n in [self.VALUE_COL,self.REC_COL]: renderer.set_property('wrap-width',250) else: renderer.set_property('wrap-width',100) if n==self.VALUE_COL: renderer.set_property('editable',True) renderer.connect('edited',self.tree_edited,n,head) if n == self.NUT_COL: col = gtk.TreeViewColumn(head, renderer, active=n, visible=n) else: col = gtk.TreeViewColumn(head, renderer, text=n) if n == self.VALUE_COL: col.set_property('expand',True) col.set_resizable(True) self.treeview.append_column(col) plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for tvc in plugin_manager.get_treeview_columns(None, key_col=2, instant_apply=True): self.treeview.append_column(tvc)
def save(self, recdic): # save... plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for p in plugin_manager.plugins: p.save() return recdic
def save (self, recdic): # save... plugin_manager = keyEditorPluggable.get_key_editor_plugin_manager() for p in plugin_manager.plugins: p.save() return recdic