def update(self, row): ''' update the expander :param row: the row to get thevalues from ''' syn_box = self.widgets.fam_synonyms_box # remove old labels syn_box.foreach(syn_box.remove) # use True comparison in case the preference isn't set self.set_expanded(prefs[self.expanded_pref] is True) if len(row.synonyms) == 0: self.set_sensitive(False) else: on_clicked = lambda l, e, syn: select_in_search_results(syn) for syn in row.synonyms: # create clickable label that will select the synonym # in the search results box = gtk.EventBox() label = gtk.Label() label.set_alignment(0, .5) label.set_markup(Family.str(syn)) box.add(label) utils.make_label_clickable(label, on_clicked, syn) syn_box.pack_start(box, expand=False, fill=False) self.show_all() self.set_sensitive(True)
def update(self, row): ''' update the expander :param row: the row to get thevalues from ''' syn_box = self.widgets.fam_synonyms_box # remove old labels syn_box.foreach(syn_box.remove) # use True comparison in case the preference isn't set self.set_expanded(prefs[self.expanded_pref] == True) if len(row.synonyms) == 0: self.set_sensitive(False) else: on_clicked = lambda l, e, syn: select_in_search_results(syn) for syn in row.synonyms: # create clickable label that will select the synonym # in the search results box = gtk.EventBox() label = gtk.Label() label.set_alignment(0, .5) label.set_markup(Family.str(syn)) box.add(label) utils.make_label_clickable(label, on_clicked, syn) syn_box.pack_start(box, expand=False, fill=False) self.show_all() self.set_sensitive(True)
def update(self, row): ''' update the expander :param row: the row to get the values from ''' syn_box = self.widgets.gen_synonyms_box # remove old labels syn_box.foreach(syn_box.remove) # use True comparison in case the preference isn't set self.set_expanded(prefs[self.expanded_pref] is True) self.session = object_session(row) logger.debug("genus %s is synonym of %s and has synonyms %s" % (row, row.accepted, row.synonyms)) self.set_label(_("Synonyms")) # reset default value if row.accepted is not None: self.set_label(_("Accepted name")) on_clicked = lambda l, e, syn: select_in_search_results(syn) # create clickable label that will select the synonym # in the search results box = gtk.EventBox() label = gtk.Label() label.set_alignment(0, .5) label.set_markup(Genus.str(row.accepted, author=True)) box.add(label) utils.make_label_clickable(label, on_clicked, row.accepted) syn_box.pack_start(box, expand=False, fill=False) self.show_all() self.set_sensitive(True) elif len(row.synonyms) == 0: self.set_sensitive(False) else: on_clicked = lambda l, e, syn: select_in_search_results(syn) for syn in row.synonyms: # create clickable label that will select the synonym # in the search results box = gtk.EventBox() label = gtk.Label() label.set_alignment(0, .5) label.set_markup(Genus.str(syn, author=True)) box.add(label) utils.make_label_clickable(label, on_clicked, syn) syn_box.pack_start(box, expand=False, fill=False) self.show_all() self.set_sensitive(True)
def update(self, row): ''' update the expander :param row: the row to get thevalues from ''' syn_box = self.widgets.sp_synonyms_box # remove old labels syn_box.foreach(syn_box.remove) logger.debug(row.synonyms) from sqlalchemy.orm.session import object_session self.session = object_session(row) syn = self.session.query(SpeciesSynonym).filter( SpeciesSynonym.synonym_id == row.id).first() accepted = syn and syn.species logger.debug("species %s is synonym of %s and has synonyms %s" % (row, accepted, row.synonyms)) self.set_label(_("Synonyms")) # reset default value on_label_clicked = lambda l, e, syn: select_in_search_results(syn) if accepted is not None: self.set_label(_("Accepted name")) # create clickable label that will select the synonym # in the search results box = gtk.EventBox() label = gtk.Label() label.set_alignment(0, .5) label.set_markup(Species.str(accepted, markup=True, authors=True)) box.add(label) utils.make_label_clickable(label, on_label_clicked, accepted) syn_box.pack_start(box, expand=False, fill=False) self.show_all() self.set_sensitive(True) self.set_expanded(True) elif len(row.synonyms) == 0: self.set_sensitive(False) self.set_expanded(False) else: # remove all the children syn_box.foreach(syn_box.remove) for syn in row.synonyms: # create clickable label that will select the synonym # in the search results box = gtk.EventBox() label = gtk.Label() label.set_alignment(0, .5) label.set_markup(Species.str(syn, markup=True, authors=True)) box.add(label) utils.make_label_clickable(label, on_label_clicked, syn) syn_box.pack_start(box, expand=False, fill=False) self.show_all() self.set_sensitive(True) # TODO: get expanded state from prefs self.set_expanded(True)
def on_clicked(widget, event, parent): select_in_search_results(parent)
def on_location_clicked(*args): select_in_search_results(self.current_obj.location)
def on_species_clicked(*args): select_in_search_results(self.current_obj.accession.species)
def on_acc_code_clicked(*args): select_in_search_results(self.current_obj.accession)
def on_family_clicked(*args): select_in_search_results(self.current_obj.family)
def update(self, row): ''' update the expander :param row: the row to get the values from ''' self.current_obj = row session = object_session(row) # link function on_label_clicked = lambda l, e, x: select_in_search_results(x) # Link to family self.widget_set_value('sp_fam_data', '<small>(%s)</small>' % row.genus.family.family, markup=True) utils.make_label_clickable( self.widgets.sp_fam_data, on_label_clicked, row.genus.family) # link to genus self.widget_set_value('sp_gen_data', '<big><i>%s</i></big>' % row.genus.genus, markup=True) utils.make_label_clickable( self.widgets.sp_gen_data, on_label_clicked, row.genus) # epithet (full binomial but missing genus) self.widget_set_value('sp_epithet_data', '<big>%s</big>' % row.markup(authors=True, genus=False), markup=True) awards = '' if row.awards: awards = utils.utf8(row.awards) self.widget_set_value('sp_awards_data', awards) logger.debug('setting cites data from row %s' % row) cites = '' if row.cites: cites = utils.utf8(row.cites) self.widget_set_value('sp_cites_data', cites) # zone = '' # if row.hardiness_zone: # awards = utils.utf8(row.hardiness_zone) # self.widget_set_value('sp_hardiness_data', zone) habit = '' if row.habit: habit = utils.utf8(row.habit) self.widget_set_value('sp_habit_data', habit) dist = '' if row.distribution: dist = utils.utf8(row.distribution_str()) self.widget_set_value('sp_dist_data', dist) dist = '' if row.label_distribution: dist = row.label_distribution self.widget_set_value('sp_labeldist_data', dist) # stop here if not GardenPluin if 'GardenPlugin' not in pluginmgr.plugins: return from bauble.plugins.garden.accession import Accession from bauble.plugins.garden.plant import Plant nacc = session.query(Accession).join('species').\ filter_by(id=row.id).count() self.widget_set_value('sp_nacc_data', nacc) nplants = session.query(Plant).join('accession', 'species').\ filter_by(id=row.id).count() if nplants == 0: self.widget_set_value('sp_nplants_data', nplants) else: nacc_in_plants = session.query(Plant.accession_id).\ join('accession', 'species').\ filter_by(id=row.id).distinct().count() self.widget_set_value('sp_nplants_data', '%s in %s accessions' % (nplants, nacc_in_plants))
def on_label_clicked(label, event, syn): select_in_search_results(syn)
def update(self, row): ''' update the expander :param row: the row to get the values from ''' self.current_obj = row session = object_session(row) # link function on_label_clicked = lambda l, e, x: select_in_search_results(x) # Link to family self.widget_set_value('sp_fam_data', '<small>(%s)</small>' % row.genus.family.epithet, markup=True) utils.make_label_clickable(self.widgets.sp_fam_data, on_label_clicked, row.genus.family) # link to genus if row.hybrid_marker != u'H': self.widget_set_value('sp_gen_data', '<big><i>%s</i></big> ' % row.genus.str(use_hybrid_marker=True), markup=True) utils.make_label_clickable(self.widgets.sp_gen_data, on_label_clicked, row.genus) else: self.widget_set_value('sp_gen_data', '') # epithet (full binomial but missing genus) self.widget_set_value('sp_epithet_data', '<big>%s</big>' % row.markup(authors=True, genus=False), markup=True) awards = '' if row.awards: awards = utils.utf8(row.awards) self.widget_set_value('sp_awards_data', awards) logger.debug('setting cites data from row %s' % row) cites = '' if row.cites: cites = utils.utf8(row.cites) self.widget_set_value('sp_cites_data', cites) # zone = '' # if row.hardiness_zone: # awards = utils.utf8(row.hardiness_zone) # self.widget_set_value('sp_hardiness_data', zone) habit = '' if row.habit: habit = utils.utf8(row.habit) self.widget_set_value('sp_habit_data', habit) dist = '' if row.distribution: dist = utils.utf8(row.distribution_str()) self.widget_set_value('sp_dist_data', dist) dist = '' if row.label_distribution: dist = row.label_distribution self.widget_set_value('sp_labeldist_data', dist) # stop here if not GardenPluin if 'GardenPlugin' not in pluginmgr.plugins: return from bauble.plugins.garden.accession import Accession from bauble.plugins.garden.plant import Plant nacc = session.query(Accession).join('species').\ filter_by(id=row.id).count() self.widget_set_value('sp_nacc_data', nacc) nplants = session.query(Plant).join('accession', 'species').\ filter_by(id=row.id).count() if nplants == 0: self.widget_set_value('sp_nplants_data', nplants) else: nacc_in_plants = session.query(Plant.accession_id).\ join('accession', 'species').\ filter_by(id=row.id).distinct().count() self.widget_set_value( 'sp_nplants_data', '%s in %s accessions' % (nplants, nacc_in_plants))