def on_lon_entry_changed(self, entry, data=None): from bauble.plugins.garden.accession import longitude_to_dms text = entry.get_text() longitude = None dms_string = '' try: if text != '' and text is not None: east_radio = self.view.widgets.east_radio east_radio.handler_block(self.east_toggle_signal_id) if text[0] == '-': self.view.widgets.west_radio.set_active(True) else: self.view.widgets.east_radio.set_active(True) east_radio.handler_unblock(self.east_toggle_signal_id) direction = self._get_lon_direction() longitude = CollectionPresenter._parse_lat_lon(direction, text) dms_string = u'%s %s\u00B0%s\'%s"' % longitude_to_dms( longitude) except Exception: logger.debug(traceback.format_exc()) #bg_color = gtk.gdk.color_parse("red") self.add_problem(self.PROBLEM_BAD_LONGITUDE, self.view.widgets.lon_entry) else: self.remove_problem(self.PROBLEM_BAD_LONGITUDE, self.view.widgets.lon_entry) self.view.widgets.lon_dms_label.set_text(dms_string) # self.set_model_attr('longitude', utils.utf8(longitude)) if text is None or text.strip() == '': self.set_model_attr('longitude', None) else: self.set_model_attr('longitude', utils.utf8(longitude))
def on_lon_entry_changed(self, entry, data=None): from bauble.plugins.garden.accession import longitude_to_dms text = entry.get_text() longitude = None dms_string = "" try: if text != "" and text is not None: east_radio = self.view.widgets.east_radio east_radio.handler_block(self.east_toggle_signal_id) if text[0] == "-": self.view.widgets.west_radio.set_active(True) else: self.view.widgets.east_radio.set_active(True) east_radio.handler_unblock(self.east_toggle_signal_id) direction = self._get_lon_direction() longitude = CollectionPresenter._parse_lat_lon(direction, text) dms_string = u"%s %s\u00B0%s'%s\"" % longitude_to_dms(longitude) except Exception: logger.debug(traceback.format_exc()) # bg_color = gtk.gdk.color_parse("red") self.add_problem(self.PROBLEM_BAD_LONGITUDE, self.view.widgets.lon_entry) else: self.remove_problem(self.PROBLEM_BAD_LONGITUDE, self.view.widgets.lon_entry) self.view.widgets.lon_dms_label.set_text(dms_string) # self.set_model_attr('longitude', utils.utf8(longitude)) if text is None or text.strip() == "": self.set_model_attr("longitude", None) else: self.set_model_attr("longitude", utils.utf8(longitude))
def refresh_view(self): from bauble.plugins.garden.accession import latitude_to_dms, \ longitude_to_dms for widget, field in self.widget_to_field_map.iteritems(): value = getattr(self.model, field) logger.debug('%s, %s, %s' % (widget, field, value)) if value is not None and field == 'date': value = '%s/%s/%s' % (value.day, value.month, '%04d' % value.year) self.view.widget_set_value(widget, value) latitude = self.model.latitude if latitude is not None: dms_string = u'%s %s\u00B0%s\'%s"' % latitude_to_dms(latitude) self.view.widgets.lat_dms_label.set_text(dms_string) if float(latitude) < 0: self.view.widgets.south_radio.set_active(True) else: self.view.widgets.north_radio.set_active(True) else: self.view.widgets.lat_dms_label.set_text('') self.view.widgets.north_radio.set_active(True) longitude = self.model.longitude if longitude is not None: dms_string = u'%s %s\u00B0%s\'%s"' % longitude_to_dms(longitude) self.view.widgets.lon_dms_label.set_text(dms_string) if float(longitude) < 0: self.view.widgets.west_radio.set_active(True) else: self.view.widgets.east_radio.set_active(True) else: self.view.widgets.lon_dms_label.set_text('') self.view.widgets.east_radio.set_active(True) if self.model.elevation is None: self.view.widgets.altacc_entry.set_sensitive(False) if self.model.latitude is None or self.model.longitude is None: self.view.widgets.geoacc_entry.set_sensitive(False) self.view.widgets.datum_entry.set_sensitive(False)