def on_wheel_spin_ctrl(self, event: wx.Event, inc=0.1): # スピンコントロール変更時 if event.GetWheelRotation() > 0: event.GetEventObject().SetValue(event.GetEventObject().GetValue() + inc) else: event.GetEventObject().SetValue(event.GetEventObject().GetValue() - inc)
def _on_picker_delete(self, event: wx.Event = None): logging.info(f'{self.sources.keys()}') id_ = str(event.GetEventObject().GetId()) button: wx.Button = event.GetEventObject() sizer: wx.Sizer = self.sources[id_]['box'] logging.debug(f'{button.GetName()} pressed') child_count = range(len(sizer.GetChildren())) for i in reversed(child_count): sizer.Hide(i) sizer.Remove(i) del self.sources[id_]['box'] self.sources.pop(id_)
def _on_picker_browse(self, event: wx.Event = None): i: int = event.GetEventObject().GetId() browse_button: wx.Button = event.GetEventObject() text_ctrl = self.sources[str(i)]['text_ctrl'] old_path = text_ctrl.GetValue() logging.debug(f'{browse_button.GetName()} pressed') dir_dialog: wx.DirDialog = wx.DirDialog( None, "Choose source directory", "", wx.DD_DEFAULT_STYLE | wx.DD_DIR_MUST_EXIST) dir_dialog.ShowModal() directory = dir_dialog.GetPath() if dir_dialog.GetPath( ) is not '' else old_path text_ctrl.SetValue(directory)
def _on_dvc_selection_changed(self, event: wx.Event): """ This method is called, if the selection in the dvc has changed. Then the infos of the new selected entry is shown. """ dvc = event.GetEventObject() item = dvc.GetSelection() if item.ID is not None: entry: EntryConstruct = dvc.Model.ItemToObject(item) self._entry_details_viewer.set_entry(entry) metadata = get_gui_metadata(entry.obj) if metadata is None: start = None end = None else: start = metadata.offset_start end = metadata.offset_end if self._on_entry_selected is not None: self._on_entry_selected(start, end) else: self._entry_details_viewer.clear()
def button_press(self, e: wx.Event): button_id = e.GetEventObject().GetId() if button_id == ID_UP: self.move_object(0) elif button_id == ID_RIGHT: self.move_object(1) elif button_id == ID_DOWN: self.move_object(2) elif button_id == ID_LEFT: self.move_object(3) elif button_id == ID_ALL: self.set_check_boxes(True) elif button_id == ID_NONE: self.set_check_boxes(False) else: if hasattr(e.GetEventObject(), "entity_id"): self.select_object(e.GetEventObject().entity_id)
def on_trigger_out(self, event: wx.Event): ident = event.GetId() obj = event.GetEventObject() assert isinstance(obj, wx.CheckBox) for ch, x in enumerate(self.channels_ui): if ident == x.trigger_out_check.GetId(): assert isinstance(self.device, osc1lite.OSC1Lite) self.device.set_trigger_out(ch, x.trigger_out_check.GetValue()) break
def on_text_update(self, event: wx.Event) -> None: """On EVT_FANCY_TEXT_UPDATED_EVENT, set dirty flag true.""" ctrl = event.GetEventObject() self.set_value(ctrl.Name, ctrl.num_value) # update point if ctrl.Name in 'xyzpt': self.parent.core.update_selected_points( [self.x, self.y, self.z, self.p, self.t])
def on_wheel_spin_ctrl(self, event: wx.Event, inc=0.1): # スピンコントロール変更時 if event.GetWheelRotation() > 0: event.GetEventObject().SetValue(event.GetEventObject().GetValue() + inc) if event.GetEventObject().GetValue() >= 0: event.GetEventObject().SetBackgroundColour("WHITE") else: event.GetEventObject().SetValue(event.GetEventObject().GetValue() - inc) if event.GetEventObject().GetValue() < 0: event.GetEventObject().SetBackgroundColour("TURQUOISE")
def launch_bci_main(self, event: wx.Event) -> None: """Launch BCI MAIN""" if self.check_input(): self.event_started = True username = self.comboboxes[0].GetValue().replace(" ", "_") experiment_type = event.GetEventObject().GetId() mode = 'RSVP' cmd = 'python bci_main.py -m {} -t {} -u {}'.format( mode, experiment_type, username) subprocess.Popen(cmd, shell=True)
def mode_change(self, e: wx.Event): e_obj: wx.RadioBox = e.GetEventObject() if e_obj.GetId() == ID_CABINS_MODE: target = "cabins" elif e_obj.GetId() == ID_NACELLES_MODE: target = "nacelles" else: return command = f"{target} mode {e_obj.GetItemLabel(e_obj.GetSelection()).lower()}" print(command) resp = self.send_command(command)
def on_check_arm_process_avoidance(self, event: wx.Event): # ラジオボタンかチェックボックスイベントがTrueの場合、切り替え if isinstance(event.GetEventObject(), wx.StaticText): if self.arm_process_flg_avoidance.GetValue() == 0: self.arm_process_flg_avoidance.SetValue(1) else: self.arm_process_flg_avoidance.SetValue(0) # パス再生成 self.set_output_vmd_path(event) event.Skip()
def launch_bci_main(self, event: wx.Event) -> None: """Launch BCI MAIN""" if self.check_input(): username = self.input_text[0].GetValue().replace(" ", "_") experiment_type = self._cast_experiment_type( event.GetEventObject().GetLabel()) mode = 'RSVP' cmd = 'python bci_main.py -m {} -t {} -u {}'.format( mode, experiment_type, username) subprocess.call(cmd, shell=True) self.event_started = True
def on_trigger_source(self, event: wx.Event): val = event.GetEventObject().GetSelection() self.trigger = val self.mf.device.set_trigger_source(self.ch, val) if val == 1: self.mf.device.set_trigger_mode(self.ch, 0) self.continuous_toggle.Disable() self.continuous_toggle.SetLabel('One-shot') self.continuous_toggle.SetValue(False) else: self.continuous_toggle.Enable() self.trigger_button.Enable(self._enabled and not val)
def on_button(self, event: wx.Event): event_obj = event.GetEventObject() if event_obj == self.btn_clear_1: self.set_defaults() elif event_obj == self.btn_clear_2: event.Skip() elif event_obj == self.btn_preview: event.Skip() elif event_obj == self.btn_save: event.Skip() else: event.Skip()
def on_type(self, event: wx.Event): obj = event.GetEventObject() assert isinstance(obj, wx.Choice) if obj.GetSelection() == 0: # Square Wave self.Hide(self.p_custom) self.Show(self.p_square) self.Layout() self.detail = self.p_square else: self.Hide(self.p_square) self.Show(self.p_custom) self.Layout() self.detail = self.p_custom
def check(self, event: wx.Event): if event.GetEventObject().GetLabel() == self.correct: self.correct_questions += 1 self.current_question += 1 if self.current_question < len(self.questions): self.update_question() self.Update() else: self.m_resultText.SetLabelText( "Your result: {}/{}!".format(self.correct_questions, self.current_question)) self.m_simplebook1.ChangeSelection(2) event.Skip()
def on_button(self, event: wx.Event): event_obj = event.GetEventObject() if event_obj == self.btn_reload: self.reload_ui() elif event_obj == self.info_panel.btn_clear_2: self.out_grid.clear() elif event_obj == self.info_panel.btn_preview: self.preview() elif event_obj == self.info_panel.btn_save: self.save() else: print(event_obj) event.Skip()
def on_button(self, e: wx.Event): e_obj = e.GetEventObject() if e_obj == self.btn1: fdlg = wx.FileDialog(self, 'Export to PDF', PDFS_DIR.as_posix(), style=wx.FD_SAVE, wildcard='PDF files (*.pdf)|*.pdf') if fdlg.ShowModal() == wx.ID_OK: fp = Path(fdlg.GetPath()).resolve() self.report(fp) else: return else: e.Skip()
def on_check_arm_process_alignment(self, event: wx.Event): # ラジオボタンかチェックボックスイベントがTrueの場合、切り替え if isinstance(event.GetEventObject(), wx.StaticText): if self.arm_process_flg_alignment.GetValue() == 0: self.arm_process_flg_alignment.SetValue(1) else: self.arm_process_flg_alignment.SetValue(0) else: if self.arm_alignment_finger_flg_ctrl.GetValue( ) == 1 or self.arm_alignment_floor_flg_ctrl.GetValue() == 1: self.arm_process_flg_alignment.SetValue(1) if self.arm_alignment_finger_flg_ctrl.GetValue() and len( self.frame.multi_panel_ctrl.file_set_list) > 0: self.frame.on_popup_finger_warning(event) # パス再生成 self.set_output_vmd_path(event) event.Skip()
def on_save_log(self, event: wx.Event): obj = event.GetEventObject() assert isinstance(obj, wx.CheckBox) if obj.GetValue(): oscgui_config['OSCGUI']['save_log_to_file'] = 'yes' with open('config.ini', 'w') as fp: oscgui_config.write(fp) if self.log_fh is None: self.log_fh = logging.FileHandler( time.strftime('oscgui-%Y%m%d.log'), delay=True) self.log_fh.setLevel(logging.INFO) self.log_fh.setFormatter(self.formatter) logging.getLogger().addHandler(self.log_fh) else: oscgui_config['OSCGUI']['save_log_to_file'] = 'no' with open('config.ini', 'w') as fp: oscgui_config.write(fp) if self.log_fh: logging.getLogger().removeHandler(self.log_fh) self.log_fh.close() self.log_fh = None
def on_delete(self, event: wx.Event): ident = event.GetId() obj = event.GetEventObject() assert isinstance(obj, wx.Button) for idx, x in enumerate(self.waveform_panels): if ident == x.delete_button.GetId(): ch = self.mf.is_wf_using(x.label) if ch != -1: wx.MessageBox( 'Cannot delete waveform.\n' 'Waveform is being used by channel %d.' % ch, 'Error', wx.ICON_ERROR | wx.OK | wx.CENTRE, self.mf) return self.parent.Freeze() del self.waveform_panels[idx] self.box.Detach(x) x.GetStaticBox().DestroyChildren() x.Destroy() break self.mf.update_wf_list() self.parent.Layout() self.parent.Thaw()
def OnButtonClick(self, e: wx.Event): source = e.GetEventObject() if source == self.TablesButton: self.state = 1 self.TablesButton.SetLabel('These are Tables') self.current_table = None self._update_tables() elif source == self.NewButton: if self.state == 1: new_table_name = wx.GetTextFromUser('Enter a new table name', 'Create a new table') if new_table_name == '': return self.dict[new_table_name] = list() self._update_tables() elif self.state == 2: selected_table = self.current_table new_article_text = wx.GetTextFromUser('Enter a new article text', 'Create an article') if new_article_text == '': return articles_list = self.dict[selected_table] articles_list.append(new_article_text) self.dict[selected_table] = articles_list self._update_articles(selected_table) elif source == self.DeleteButton: if self.state == 1: table_name = self.list_wgt.GetStringSelection() del self.dict[table_name] self._update_tables() elif self.state == 2: selected_table = self.current_table selected_text = self.list_wgt.GetStringSelection() articles_list = self.dict[selected_table] for x in range(len(articles_list)): if articles_list[x] == selected_text: articles_list.pop(x) break self._update_articles(selected_table)
def on_toggle(self, event: wx.Event): obj = event.GetEventObject() val = obj.GetValue() obj.SetLabel('Continuous' if val else 'One-shot') self.mf.device.set_trigger_mode(self.ch, val) self.continuous = val
def on_text_enter(self, event: wx.Event): event_obj = event.GetEventObject() if event_obj == self.search_bar: med_id = self.in_grid.current_id self.out_grid.add(med_id)
def on_change_choice(self, event: wx.Event, midx: int): text = event.GetEventObject().GetStringSelection() # 同じ選択肢を初期設定 if len(self.org_choices[midx].GetValue()) == 0 or len(text) == 0: self.org_choices[midx].ChangeValue(text) cidx = self.org_choices[midx].FindString(text) if cidx >= 0: self.org_choices[midx].SetSelection(cidx) if text in self.panel.model_file_ctrl.data.bones: bone_data = self.panel.model_file_ctrl.data.bones[text] if bone_data.getTranslatable(): # 移動ボーン if len(self.rep_mx_choices[midx].GetValue()) == 0: mxtext = f'{text}MX' cidx = self.rep_mx_choices[midx].FindString(mxtext) if cidx >= 0: self.rep_mx_choices[midx].ChangeValue(mxtext) self.rep_mx_choices[midx].SetSelection(cidx) else: self.rep_mx_choices[midx].ChangeValue(text) cidx = self.rep_mx_choices[midx].FindString(text) if cidx >= 0: self.rep_mx_choices[midx].SetSelection(cidx) if len(self.rep_my_choices[midx].GetValue()) == 0: mytext = f'{text}MY' cidx = self.rep_my_choices[midx].FindString(mytext) if cidx >= 0: self.rep_my_choices[midx].ChangeValue(mytext) self.rep_my_choices[midx].SetSelection(cidx) else: self.rep_my_choices[midx].ChangeValue(text) cidx = self.rep_my_choices[midx].FindString(text) if cidx >= 0: self.rep_my_choices[midx].SetSelection(cidx) if len(self.rep_mz_choices[midx].GetValue()) == 0: mztext = f'{text}MZ' cidx = self.rep_mz_choices[midx].FindString(mztext) if cidx >= 0: self.rep_mz_choices[midx].ChangeValue(mztext) self.rep_mz_choices[midx].SetSelection(cidx) else: self.rep_mz_choices[midx].ChangeValue(text) cidx = self.rep_mz_choices[midx].FindString(text) if cidx >= 0: self.rep_mz_choices[midx].SetSelection(cidx) if bone_data.getRotatable(): # 回転ボーン if len(self.rep_rx_choices[midx].GetValue()) == 0: rxtext = f'{text}RX' cidx = self.rep_rx_choices[midx].FindString(rxtext) if cidx >= 0: self.rep_rx_choices[midx].ChangeValue(rxtext) self.rep_rx_choices[midx].SetSelection(cidx) else: self.rep_rx_choices[midx].ChangeValue(text) cidx = self.rep_rx_choices[midx].FindString(text) if cidx >= 0: self.rep_rx_choices[midx].SetSelection(cidx) if len(self.rep_ry_choices[midx].GetValue()) == 0: rytext = f'{text}RY' cidx = self.rep_ry_choices[midx].FindString(rytext) if cidx >= 0: self.rep_ry_choices[midx].ChangeValue(rytext) self.rep_ry_choices[midx].SetSelection(cidx) else: self.rep_ry_choices[midx].ChangeValue(text) cidx = self.rep_ry_choices[midx].FindString(text) if cidx >= 0: self.rep_ry_choices[midx].SetSelection(cidx) if len(self.rep_rz_choices[midx].GetValue()) == 0: rztext = f'{text}RZ' cidx = self.rep_rz_choices[midx].FindString(rztext) if cidx >= 0: self.rep_rz_choices[midx].ChangeValue(rztext) self.rep_rz_choices[midx].SetSelection(cidx) else: self.rep_rz_choices[midx].ChangeValue(text) cidx = self.rep_rz_choices[midx].FindString(text) if cidx >= 0: self.rep_rz_choices[midx].SetSelection(cidx) elif len(text) == 0: # 空にした場合は空に self.org_choices[midx].ChangeValue("") self.org_choices[midx].SetSelection(-1) self.rep_mx_choices[midx].ChangeValue("") self.rep_mx_choices[midx].SetSelection(-1) self.rep_my_choices[midx].ChangeValue("") self.rep_my_choices[midx].SetSelection(-1) self.rep_mz_choices[midx].ChangeValue("") self.rep_mz_choices[midx].SetSelection(-1) self.rep_rx_choices[midx].ChangeValue("") self.rep_rx_choices[midx].SetSelection(-1) self.rep_ry_choices[midx].ChangeValue("") self.rep_ry_choices[midx].SetSelection(-1) self.rep_rz_choices[midx].ChangeValue("") self.rep_rz_choices[midx].SetSelection(-1) # 最後である場合、行追加 if midx == len(self.org_choices) - 1 and self.org_choices[midx].GetSelection() > 0 and \ (len(self.rep_mx_choices[midx].GetStringSelection()) > 0 or len(self.rep_my_choices[midx].GetStringSelection()) > 0 \ or len(self.rep_mz_choices[midx].GetStringSelection()) > 0 or len(self.rep_rx_choices[midx].GetStringSelection()) > 0 \ or len(self.rep_ry_choices[midx].GetStringSelection()) > 0 or len(self.rep_rz_choices[midx].GetStringSelection()) > 0): self.add_line(midx + 1)
def on_enter_choice(self, event: wx.Event, midx: int): idx = event.GetEventObject().FindString( event.GetEventObject().GetValue()) if idx >= 0: event.GetEventObject().SetSelection(idx) self.on_change_choice(event, midx)
def state_change(self, e: wx.Event): e_obj: wx.CheckBox = e.GetEventObject() command = f"{e_obj.GetLabel().lower()} {'on' if e_obj.GetValue() else 'off'}" print(command) resp = self.send_command(command)