def edit_session(self, instance, session_id): def _on_answer(instance, answer): if answer: session_name = session_editor.session_name if not session_name or len(session_name) == 0: alertPopup('Error', 'A session name must be specified') return # did the session name change? if so, refresh the view. new_name = session_editor.session_name if new_name != session.name: session.name = new_name session_accordion = self._find_session_accordion_item( session) session_accordion.title = new_name session.notes = session_editor.session_notes self.datastore.update_session(session) self.dispatch('on_session_updated', session) popup.dismiss() session = self.datastore.get_session_by_id(session_id, self.sessions) session_editor = SessionEditorView() session_editor.session_name = session.name session_editor.session_notes = session.notes popup = editor_popup('Edit Session', session_editor, _on_answer, size=(dp(600), dp(300)))
def _add_new_action(self, *args): def popup_dismissed(instance, result): if result: selected = instance.content.selected_item if selected is not None: alertaction = selected.key self.alertrule.alert_actions.append(alertaction) self.dispatch('on_edit_action', alertaction) self.refresh_view() popup.dismiss() alertaction_prototypes = get_alertaction_default_collection( exclude_filter=self.alertrule.alert_actions) items = [ ItemSelectionRef(title=alertaction.title, image_source=alertaction.PREVIEW_IMAGE, key=alertaction) for alertaction in alertaction_prototypes ] if len(items) == 0: toast('No more actions available') else: view = ItemSelectorView(item_references=items) popup = editor_popup('Select Action', view, popup_dismissed, size_hint=(None, None), size=(min(Window.width, dp(700)), min(Window.height, dp(400))), auto_dismiss_time=10)
def on_bt_configure(self, instance, value): if not self._bt_popup: content = AdvancedBluetoothConfigView(self.config.connectivityConfig) popup = editor_popup(title="Configure Bluetooth", content=content, answerCallback=self.on_bluetooth_popup_answer) self._bt_popup = popup self._bt_config_view = content
def on_bt_configure(self, instance, value): if not self._bt_popup: content = AdvancedBluetoothConfigView( self.config.connectivityConfig) popup = editor_popup(title="Configure Bluetooth", content=content, answerCallback=self.on_bluetooth_popup_answer) self._bt_popup = popup self._bt_config_view = content
def _edit_channel(self, channel_index, is_new): channel = self.obd2_cfg.pids[channel_index] working_channel_cfg = copy.deepcopy(channel) content = OBD2ChannelConfigView(self.obd2_preset_settings, is_new, self.mapping_capable) content.init_config(working_channel_cfg, self.can_filters, self.max_sample_rate, self.channels) def _on_answer(instance, answer): if answer: self._replace_config(self.obd2_cfg.pids[channel_index], working_channel_cfg) self.dispatch('on_modified') self.reload_obd2_channel_grid(self.obd2_cfg) popup.dismiss() popup = editor_popup('Edit OBDII channel', content, _on_answer, size=(dp(500), dp(300)))
def _edit_channel(self, channel_index, is_new): channel = self.obd2_cfg.pids[channel_index] working_channel_cfg = copy.deepcopy(channel) content = OBD2ChannelConfigView(self.obd2_preset_settings, is_new, self.mapping_capable) content.init_config(working_channel_cfg, self.can_filters, self.max_sample_rate, self.channels) def _on_answer(instance, answer): if answer: self._replace_config(channel, working_channel_cfg) self.dispatch('on_modified') self.reload_obd2_channel_grid(self.obd2_cfg) popup.dismiss() popup = editor_popup('Edit OBDII channel', content, _on_answer, size=(dp(500), dp(300)))
def _load_track_setup_view(self, track_cfg): """ Present the user with the track setup view """ def cancelled_track(): # user cancelled, store current location as where they cancelled # so we prevent bugging the user again self._settings.userPrefs.set_last_selected_track( 0, 0, str(self._gps_sample.geopoint)) HelpInfo.help_popup('lap_setup', self) def on_track_complete(instance, track_map): if track_map is None: cancelled_track() else: Logger.debug( "DashboardView: setting track_map: {}".format(track_map)) self._track_manager.add_track(track_map) track_cfg.track.import_trackmap(track_map) track_cfg.stale = True self._set_rc_track(track_cfg) if self._popup: self._popup.dismiss() self._popup = None def on_close(instance, answer): if not answer: cancelled_track() if self._popup: self._popup.dismiss() self._popup = None if self._popup is not None: # can't open dialog multiple times return content = TrackBuilderView(self._rc_api, self._databus, self._track_manager, current_point=self._gps_sample.geopoint, prompt_track_creation=True) self._popup = editor_popup("Race track setup", content, on_close, hide_ok=True, size_hint=(0.9, 0.9)) content.bind(on_track_complete=on_track_complete) self._popup.open()
def on_customize(self, *args): def popup_dismissed(instance, result): if result: selected_model = instance.content.selected_model self._set_model_pref(selected_model) self.ids.imu.model_path = selected_model popup.dismiss() view = ModelSelectorView(selected_model=self.ids.imu.model_path, model_path=ImuGauge.MODEL_PATH) popup = editor_popup('Select Model', view, popup_dismissed, size=(dp(700), dp(500)), auto_dismiss_time=Gauge.POPUP_DISMISS_TIMEOUT_SHORT)
def _edit_channel(self, channel_index): content = CANChannelConfigView() working_channel_cfg = copy.deepcopy(self.can_channels_cfg.channels[channel_index]) content.init_config(working_channel_cfg, self.can_filters, self.max_sample_rate, self.channels) def _on_answer(instance, answer): if answer: self._replace_config(self.can_channels_cfg.channels[channel_index], working_channel_cfg) self.dispatch('on_modified') self.reload_can_channel_grid(self.can_channels_cfg) popup.dismiss() popup = editor_popup('Edit CAN Channel Mapping', content, _on_answer, size=(dp(500), dp(300)))
def on_customize(self, *args): def popup_dismissed(instance, result): if result: selected_model = instance.content.selected_model self._set_model_pref(selected_model) self.ids.imu.model_path = selected_model popup.dismiss() view = ModelSelectorView(selected_model=self.ids.imu.model_path, model_path=ImuGauge.MODEL_PATH) popup = editor_popup('Select Model', view, popup_dismissed, size=(dp(700), dp(500)), auto_dismiss_time=Gauge.POPUP_DISMISS_TIMEOUT_SHORT)
def _edit_channel(self, channel_index): content = CANChannelConfigView() working_channel_cfg = copy.deepcopy(self.can_channels_cfg.channels[channel_index]) content.init_config(working_channel_cfg, self.can_filters, self.max_sample_rate, self.channels) def _on_answer(instance, answer): if answer: self._replace_config(self.can_channels_cfg.channels[channel_index], working_channel_cfg) self.dispatch('on_modified') self.reload_can_channel_grid(self.can_channels_cfg) popup.dismiss() popup = editor_popup('Edit CAN Channel Mapping', content, _on_answer, size=(dp(500), dp(300)))
def edit_session(self, instance, session_id): def _on_answer(instance, answer): if answer: session_name = session_editor.session_name if not session_name or len(session_name) == 0: alertPopup('Error', 'A session name must be specified') return session.name = session_editor.session_name session.notes = session_editor.session_notes self.datastore.update_session(session) self.refresh_session_list() popup.dismiss() session = self.datastore.get_session_by_id(session_id, self.sessions) session_editor = SessionEditorView() session_editor.session_name = session.name session_editor.session_notes = session.notes popup = editor_popup('Edit Session', session_editor, _on_answer)
def edit_session(self, instance, session_id): def _on_answer(instance, answer): if answer: session_name = session_editor.session_name if not session_name or len(session_name) == 0: alertPopup('Error', 'A session name must be specified') return session.name = session_editor.session_name session.notes = session_editor.session_notes self.datastore.update_session(session) self.refresh_session_list() popup.dismiss() session = self.datastore.get_session_by_id(session_id, self.sessions) session_editor = SessionEditorView() session_editor.session_name = session.name session_editor.session_notes = session.notes popup = editor_popup('Edit Session', session_editor, _on_answer)
def track_builder(self, *args): def popup_dismissed(instance): content.cleanup() def on_track_complete(instance, track_map): popup.dismiss() self._track_manager.add_track(track_map) self._track_cfg.track.import_trackmap(track_map) self._track_cfg.stale = True self._update_track() self.dispatch('on_modified') def on_close(instance, answer): popup.dismiss() content = TrackBuilderView(databus=self._databus, rc_api=self._rc_api, track_manager=self._track_manager) popup = editor_popup("Track Builder", content, on_close, hide_ok=True, size_hint=(0.9, 0.9)) content.bind(on_track_complete=on_track_complete) popup.open()
def on_add_can_channel(self): if not self.can_channels_cfg: return can_channel = CANChannel() can_channel.sampleRate = self.DEFAULT_CAN_SAMPLE_RATE content = CANChannelConfigView() content.init_config(can_channel, self.can_filters, self.max_sample_rate, self.channels) popup = None def _on_answer(instance, answer): if answer: self.add_can_channel(can_channel) self.dispatch('on_modified') self.reload_can_channel_grid(self.can_channels_cfg) popup.dismiss() popup = editor_popup('Add CAN Channel Mapping', content, _on_answer, size=(dp(500), dp(300)))
def on_add_obd2_channel(self): if not self.obd2_cfg: return pid_config = PidConfig() pid_config.sampleRate = self.DEFAULT_OBD2_SAMPLE_RATE def _on_answer(instance, answer): if answer: self.obd2_cfg.pids.append(pid_config) channel_index = len(self.obd2_cfg.pids) - 1 self.add_obd2_channel(channel_index, pid_config) self.dispatch('on_modified') self.reload_obd2_channel_grid(self.obd2_cfg) popup.dismiss() content = OBD2ChannelConfigView(self.obd2_preset_settings, True, self.mapping_capable) content.init_config(pid_config, self.can_filters, self.max_sample_rate, self.channels) popup = editor_popup('Add OBDII channel', content, _on_answer, size=(dp(500), dp(300)))
def on_add_obd2_channel(self): if not self.obd2_cfg: return pid_config = PidConfig() pid_config.sampleRate = self.DEFAULT_OBD2_SAMPLE_RATE def _on_answer(instance, answer): if answer: self.obd2_cfg.pids.append(pid_config) channel_index = len(self.obd2_cfg.pids) - 1 self.add_obd2_channel(channel_index, pid_config) self.dispatch('on_modified') self.reload_obd2_channel_grid(self.obd2_cfg) popup.dismiss() content = OBD2ChannelConfigView(self.obd2_preset_settings, True, self.mapping_capable) content.init_config(pid_config, self.can_filters, self.max_sample_rate, self.channels) popup = editor_popup('Add OBDII channel', content, _on_answer, size=(dp(500), dp(300)))
def on_add_can_channel(self): if not self.can_channels_cfg: return can_channel = CANChannel() can_channel.sampleRate = self.DEFAULT_CAN_SAMPLE_RATE content = CANChannelConfigView() content.init_config(can_channel, self.can_filters, self.max_sample_rate, self.channels) popup = None def _on_answer(instance, answer): if answer: self.add_can_channel(can_channel) self.dispatch('on_modified') self.reload_can_channel_grid(self.can_channels_cfg) popup.dismiss() popup = editor_popup('Add CAN Channel Mapping', content, _on_answer, size=(dp(500), dp(300)))
def _load_track_setup_view(self, track_cfg): """ Present the user with the track setup view """ def cancelled_track(): # user cancelled, store current location as where they cancelled # so we prevent bugging the user again self._settings.userPrefs.set_last_selected_track(0, 0, str(self._gps_sample.geopoint)) HelpInfo.help_popup('lap_setup', self) def on_track_complete(instance, track_map): if track_map is None: cancelled_track() else: Logger.debug("DashboardView: setting track_map: {}".format(track_map)) self._track_manager.add_track(track_map) track_cfg.track.import_trackmap(track_map) track_cfg.stale = True self._set_rc_track(track_cfg) if self._popup: self._popup.dismiss() self._popup = None def on_close(instance, answer): if not answer: cancelled_track() if self._popup: self._popup.dismiss() self._popup = None if self._popup is not None: # can't open dialog multiple times return content = TrackBuilderView(self._rc_api, self._databus, self._track_manager, current_point=self._gps_sample.geopoint, prompt_track_creation=True) self._popup = editor_popup("Race track setup", content, on_close, hide_ok=True, size_hint=(0.9, 0.9)) content.bind(on_track_complete=on_track_complete) self._popup.open()
def on_set_track_press(self, *args): def on_track_select_close(instance, answer): if answer: selected_track = content.selected_track if selected_track is None: toast('Please select a track') return if self._track_cfg: Logger.info("SingleAutoConfigScreen: setting track: {}".format(selected_track.name)) track_cfg = Track.fromTrackMap(selected_track) self._track_cfg.track = track_cfg self._track_cfg.stale = True self._update_track() self.dispatch('on_modified') popup.dismiss() # use the current location, if available current_point = self._gps_sample.geopoint if self._gps_sample.is_locked else None content = TrackSelectView(track_manager=self._track_manager, current_location=current_point) popup = editor_popup("Select a track", content, on_track_select_close, size_hint=(0.9, 0.9)) popup.open()
def edit_session(self, instance, session_id): def _on_answer(instance, answer): if answer: session_name = session_editor.session_name if not session_name or len(session_name) == 0: alertPopup('Error', 'A session name must be specified') return # did the session name change? if so, refresh the view. new_name = session_editor.session_name if new_name != session.name: session.name = new_name session_accordion = self._find_session_accordion_item(session) session_accordion.title = new_name session.notes = session_editor.session_notes self.datastore.update_session(session) self.dispatch('on_session_updated', session) popup.dismiss() session = self.datastore.get_session_by_id(session_id, self.sessions) session_editor = SessionEditorView() session_editor.session_name = session.name session_editor.session_notes = session.notes popup = editor_popup('Edit Session', session_editor, _on_answer)
def on_set_track_press(self, instance): content = TrackSelectView(self._track_manager) self._track_select_view = content self._popup = editor_popup("Select your track", content, self._on_track_select_close) self._popup.open()
def _load_race_setup_view(self): content = TrackSelectView(self._track_manager) self._race_setup_view = content self._popup = editor_popup("Select your track", content, self._on_race_setup_close) self._popup.open()
def _load_race_setup_view(self): content = TrackSelectView(self._track_manager) self._race_setup_view = content self._popup = editor_popup("Select your track", content, self._on_race_setup_close) self._popup.open()