def refresh_view(self): for widget, field in self.widget_to_field_map.iteritems(): if field is "genus_id": value = self.model.genus else: value = getattr(self.model, field) # debug('%s, %s, %s' % (widget, field, value)) # self.view.widget_set_value(widget, value, # default=self.defaults.get(field, None)) self.view.widget_set_value(widget, value) utils.set_widget_value(self.view.widgets.sp_habit_comboentry, self.model.habit or "") self.vern_presenter.refresh_view(self.model.default_vernacular_name) self.synonyms_presenter.refresh_view() self.dist_presenter.refresh_view()
def refresh_view(self): for widget, field in self.widget_to_field_map.iteritems(): if field is 'genus_id': value = self.model.genus else: value = getattr(self.model, field) logger.debug('%s, %s, %s(%s)' % (widget, field, type(value), value)) self.view.widget_set_value(widget, value) utils.set_widget_value(self.view.widgets.sp_habit_comboentry, self.model.habit or '') self.vern_presenter.refresh_view(self.model.default_vernacular_name) self.synonyms_presenter.refresh_view() self.dist_presenter.refresh_view()
def refresh_view(self): for widget, field in self.widget_to_field_map.iteritems(): if field is 'genus_id': value = self.model.genus else: value = getattr(self.model, field) # debug('%s, %s, %s' % (widget, field, value)) # self.view.widget_set_value(widget, value, # default=self.defaults.get(field, None)) self.view.widget_set_value(widget, value) utils.set_widget_value(self.view.widgets.sp_habit_comboentry, self.model.habit or '') self.vern_presenter.refresh_view(self.model.default_vernacular_name) self.synonyms_presenter.refresh_view() self.dist_presenter.refresh_view()
def set_widget_value(self, widget, value, markup=False, default=None, index=0): ''' :param widget: a widget or name of a widget in self.widgets :param value: the value to put in the widgets :param markup: whether the data in value uses pango markup :param default: the default value to put in the widget if value is None :param index: the row index to use for those widgets who use a model This method caled bauble.utils.set_widget_value() ''' if isinstance(widget, gtk.Widget): utils.set_widget_value(widget, value, markup, default, index) else: utils.set_widget_value(self.widgets[widget], value, markup, default, index)
def __init__(self, presenter, level): """ """ self.presenter = presenter self.species = presenter.model table = self.presenter.view.widgets.infrasp_table nrows = table.props.n_rows ncols = table.props.n_columns self.level = level rank, epithet, author = self.species.get_infrasp(self.level) # rank combo self.rank_combo = gtk.ComboBox() self.presenter.view.init_translatable_combo(self.rank_combo, infrasp_rank_values) utils.set_widget_value(self.rank_combo, rank) presenter.view.connect(self.rank_combo, 'changed', self.on_rank_combo_changed) table.attach(self.rank_combo, 0, 1, level, level+1, xoptions=gtk.FILL, yoptions=-1) # epithet entry self.epithet_entry = gtk.Entry() utils.set_widget_value(self.epithet_entry, epithet) presenter.view.connect(self.epithet_entry, 'changed', self.on_epithet_entry_changed) table.attach(self.epithet_entry, 1, 2, level, level+1, xoptions=gtk.FILL | gtk.EXPAND, yoptions=-1) # author entry self.author_entry = gtk.Entry() utils.set_widget_value(self.author_entry, author) presenter.view.connect(self.author_entry, 'changed', self.on_author_entry_changed) table.attach(self.author_entry, 2, 3, level, level+1, xoptions=gtk.FILL | gtk.EXPAND, yoptions=-1) self.remove_button = gtk.Button() img = gtk.image_new_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_BUTTON) self.remove_button.props.image = img presenter.view.connect(self.remove_button, 'clicked', self.on_remove_button_clicked) table.attach(self.remove_button, 3, 4, level, level+1, xoptions=gtk.FILL, yoptions=-1) table.show_all()
def set_widget_value(self, widget_name, value, markup=False, default=None): ''' a shorthand for L{bauble.utils.set_widget_value()} ''' utils.set_widget_value(self.widgets[widget_name], value, markup, default)
def __init__(self, presenter, model=None): super(NotesPresenter.NoteBox, self).__init__() # open the glade file and extract the markup that the # expander will use filename = os.path.join(paths.lib_dir(), 'notes.glade') xml = etree.parse(filename) el = xml.find("//object[@id='notes_box']") builder = gtk.Builder() s = '<interface>%s</interface>' % etree.tostring(el) if sys.platform == 'win32': # NOTE: PyGTK for Win32 is broken so we have to include # this little hack # # TODO: is this only a specific set of version of # PyGTK/GTK...it was only tested with PyGTK 2.12 builder.add_from_string(s, -1) else: builder.add_from_string(s) self.widgets = utils.BuilderWidgets(builder) notes_box = self.widgets.notes_box self.widgets.remove_parent(notes_box) self.pack_start(notes_box, expand=True, fill=True) self.session = object_session(presenter.model) self.presenter = presenter if model: self.model = model else: self.model = presenter.note_cls() self.widgets.notes_expander.props.use_markup = True self.widgets.notes_expander.props.label = '' self.widgets.notes_expander.props.label_widget.\ ellipsize = pango.ELLIPSIZE_END # set the model values on the widgets mapper = object_mapper(self.model) values = utils.get_distinct_values(mapper.c['category'], self.session) utils.setup_text_combobox(self.widgets.category_comboentry, values) utils.set_widget_value(self.widgets.category_comboentry, self.model.category or '') utils.setup_date_button(None, self.widgets.date_entry, self.widgets.date_button) date_str = utils.today_str() if self.model.date: format = prefs.prefs[prefs.date_format_pref] date_str = self.model.date.strftime(format) utils.set_widget_value(self.widgets.date_entry, date_str) utils.set_widget_value(self.widgets.user_entry, self.model.user or '') buff = gtk.TextBuffer() self.widgets.note_textview.set_buffer(buff) utils.set_widget_value(self.widgets.note_textview, self.model.note or '') # connect the signal handlers self.widgets.date_entry.connect('changed', self.on_date_entry_changed) self.widgets.user_entry.connect('changed', self.on_user_entry_changed) # connect category comboentry widget and child entry self.widgets.category_comboentry.connect('changed', self.on_category_combo_changed) self.widgets.category_comboentry.child.connect('changed', self.on_category_entry_changed) buff.connect('changed', self.on_note_buffer_changed) self.widgets.notes_remove_button.connect('clicked', self.on_notes_remove_button) self.update_label() self.show_all()