def validate(action, index, value_if_allowed, prior_value, text, validation_type, trigger_type, widget_name): if value_if_allowed == "-" or value_if_allowed == "": return True elif text in "0123456789.," or text == value_if_allowed: try: t = type(Locale.number_from_string(value_if_allowed)) if t is float or t is int: return True except ValueError: return False return False
def prefs_changed(self, cmdr: str, is_beta: bool): distances = list() for settings_ui_element in self.settings_ui_elements: system_text = settings_ui_element.system_entry.get() x_text = settings_ui_element.x_entry.get() y_text = settings_ui_element.y_entry.get() z_text = settings_ui_element.z_entry.get() if system_text and x_text and y_text and z_text: try: distances.append({ "system": system_text.strip(), "x": Locale.number_from_string(x_text.strip()), "y": Locale.number_from_string(y_text.strip()), "z": Locale.number_from_string(z_text.strip()) }) except Exception as e: # error while parsing the numbers logger.exception( f"DistanceCalc: Error while parsing the coordinates for {system_text.strip()}" ) continue self.distances = distances config.set("DistanceCalc", json.dumps(self.distances)) settings = self.travelled_total_option.get() | ( self.travelled_session_option.get() << 1) | ( self.travelled_session_selected.get() << 2) config.set("DistanceCalc_options", settings) self.update_main_ui() self.update_distances() self.prefs_frame = None