def OnBtnGenerateLogMsgs(self, event): # If the Log window is not open, open it. if not self.logFrame: # Simulate a 'Show Log' event evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self.logB.GetId()) evt.SetEventObject(self.logB) wx.PostEvent(self.logB, evt) wx.Yield() lines_of_output = 10 id = self.worker.beginTest(LongRunningProcess, lines_of_output)
def swap(self, i, j): self.index_mapping[i], self.index_mapping[j] = self.index_mapping[ j], self.index_mapping[i] self.SetString(i, self.data[self.index_mapping[i]]) self.SetString(j, self.data[self.index_mapping[j]]) self.selected_items[i], self.selected_items[j] = self.selected_items[ j], self.selected_items[i] # self.update_selection() # print("Updated mapping:", self.index_mapping) new_event = wx.PyCommandEvent(wx.EVT_LISTBOX.typeId, self.GetId()) self.GetEventHandler().ProcessEvent(new_event)
def _processEvt(self, commandEvent, point): """ Process the command event passed at the given point """ evt = wx.PyCommandEvent(commandEvent) mySch, myDate, dateExacte = self._findSchedule(point) evt.schedule = mySch evt.date = myDate evt.dateExacte = dateExacte evt.SetEventObject(self) self.ProcessEvent(evt)
def test_check_sample_orientation_bad_good(self): analysis_menu = self.get_menu_from_frame(self.frame, "Analysis") check_sample_menu = analysis_menu.FindItemById( analysis_menu.FindItem("Sample Orientation")).GetSubMenu() check_orient_menu_evt = wx.PyCommandEvent( wx.EVT_MENU.typeId, check_sample_menu.FindItem("&Check Sample Orientations\tCtrl-O")) mark_sample_bad_menu_evt = wx.PyCommandEvent( wx.EVT_MENU.typeId, check_sample_menu.FindItem("&Mark Sample Bad\tCtrl-.")) mark_sample_good_menu_evt = wx.PyCommandEvent( wx.EVT_MENU.typeId, check_sample_menu.FindItem("&Mark Sample Good\tCtrl-,")) self.assertFalse(self.frame.check_orient_on) self.frame.ProcessEvent(check_orient_menu_evt) self.assertFalse(self.frame.check_orient_on) self.ie_add_n_fits_to_all(n_fits) self.assertFalse(self.frame.check_orient_on) self.frame.ProcessEvent(check_orient_menu_evt) self.assertTrue(self.frame.check_orient_on) self.frame.ProcessEvent(mark_sample_bad_menu_evt) samp = self.frame.Data_hierarchy['sample_of_specimen'][self.frame.s] specs = self.frame.Data_hierarchy['samples'][samp]['specimens'] for s in specs: for comp in self.frame.pmag_results_data['specimens'][s]: self.assertTrue(comp in self.frame.bad_fits) self.frame.mark_fit_good(comp, spec=s) self.assertTrue(comp in self.frame.bad_fits) self.frame.ProcessEvent(mark_sample_good_menu_evt) samp = self.frame.Data_hierarchy['sample_of_specimen'][self.frame.s] specs = self.frame.Data_hierarchy['samples'][samp]['specimens'] for s in specs: for comp in self.frame.pmag_results_data['specimens'][s]: self.assertTrue(comp not in self.frame.bad_fits)
def post_event(evt_handler, event_binder, source=None, **kwargs): '''Post an event to an evt_handler.''' # todo: Use wherever I post events # todo: possibly it's a problem that I'm using PyEvent here for any type of # event, because every event has its own type. but i don't know how to get # the event type from `event_binder`. problem. event = wx.PyCommandEvent(event_binder.evtType[0], source.GetId() if source else 0) for key, value in kwargs.iteritems(): setattr(event, key, value) event.SetEventType(event_binder.evtType[0]) wx.PostEvent(evt_handler, event)
def on_fragment_completion(self, event): """Clears the current subtitle and user's answer when current fragment was successfully complete. :param event: Event that entailed an execution of the callback :type event: :class:`events.FragmentComplete` """ self.progress_gauge.SetValue(self.verificator.fragment_length()) self.verificator.clear_subtitle(complete=True) self.answer_edit.ChangeValue(u'') wx.PostEvent(self, wx.PyCommandEvent(wx.EVT_BUTTON.typeId, ids.PLAY))
def setFilterRange(self, nRange): """ Sets the range to filter """ assert type(nRange) is list, "Incorrect input type" assert self.axesRange[self.filterAxis][0] <= nRange[ 0] <= self.axesRange[self.filterAxis][1], "Out of range" assert self.axesRange[self.filterAxis][0] <= nRange[ 1] <= self.axesRange[self.filterAxis][1], "Out of range" self.filterRange = nRange.copy() # Send event to redraw wx.PostEvent(self.GetEventHandler(), wx.PyCommandEvent(wx.EVT_PAINT.typeId, self.GetId()))
def ie_add_n_fits_to_all(self,n): #test initialization of ie tools_menu = self.get_menu_from_frame(self.frame, "Tools") open_ie_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId, tools_menu.FindItem("&Interpretation editor\tCtrl-E")) self.frame.ProcessEvent(open_ie_evt) self.assertTrue(self.frame.ie_open) ie = self.frame.ie addall_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, ie.add_all_button.GetId()) for i in range(n): steps = self.frame.Data[self.frame.s]['zijdblock_steps'] tmin=steps[rn.randint(0,len(steps)-3)] tmax=steps[rn.randint(steps.index(tmin)+2,len(steps)-1)] ie.tmin_box.SetValue(tmin) ie.tmax_box.SetValue(tmax) ie.name_box.Clear() ie.name_box.WriteText("test%d"%i) self.assertEqual(ie.tmin_box.GetValue(),tmin) self.assertEqual(ie.tmax_box.GetValue(),tmax) self.assertEqual(ie.name_box.GetValue(),"test%d"%i) wx.CallAfter(ie.ProcessEvent, addall_evt)
def test_main_app(self): ''' Test Main app opening ''' new_env = dict(os.environ) new_env['DISPLAY'] = '0.0' app = AppGeni(False) frame = MainMenu(None) frame.get_validation_status(True) assert (frame.validation_status) frame.get_validation_status(False) self.assertFalse(frame.validation_status) self.assertFalse(app.provide_validation_key()) #This one checks to call the geni_fs_import evt2 = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, frame.m_button4.GetId()) frame.OnClickIntroductionKey(evt2) #Let's call the geni key caller evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, frame.m_button1.GetId()) frame.OnClickIntroductionKey(evt)
def test_VGP_viewer(self): tools_menu = self.get_menu_from_frame(self.frame, "Tools") viewVGPs_menu_evt = wx.PyCommandEvent( wx.EVT_MENU.typeId, tools_menu.FindItem("&View VGPs\tCtrl-Shift-V")) self.frame.ProcessEvent(viewVGPs_menu_evt) self.ie_add_n_fits_to_all(n_fits) #test actual VGP calculation and display self.frame.ProcessEvent(viewVGPs_menu_evt)
def test_PyCommandEvent(self): id = wx.NewId() typ = wx.NewEventType() evt = wx.PyCommandEvent(id, typ) evt.newAttr = "hello" evt2 = evt.Clone() self.assertTrue(type(evt2) == wx.PyCommandEvent) self.assertTrue(evt is not evt2) self.assertTrue(getattr(evt2, 'newAttr')) self.assertTrue(evt.newAttr == evt2.newAttr) self.assertTrue(evt.Id == evt2.Id) self.assertTrue(evt.EventType == evt2.EventType)
def _imageNext(self, event): """ Called when the slideTimer's timer event fires. Loads the next picture """ self._btnNextInfo = getattr(self, 'btnNext') evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self._btnNextInfo.GetId()) evt.SetEventObject(self.btnNext) wx.PostEvent(self.btnNext, evt) # Reset the gauge self.ssDelayGauge.SetValue(self.gaugeRange) self.gaugeRemaining = self.gaugeRange
def test_log_view(self): """ Test ability to open log view. """ logView = LogView(self.frame) pyCommandEvent = wx.PyCommandEvent(wx.wxEVT_COMMAND_CHECKBOX_CLICKED) logView.debugCheckBox.SetValue(True) logView.OnDebugLogging(pyCommandEvent) self.assertEqual(logger.GetLevel(), logging.DEBUG) logView.debugCheckBox.SetValue(False) logView.OnDebugLogging(pyCommandEvent) self.assertEqual(logger.GetLevel(), logging.INFO)
def test_fit_next_prev(self): edit_menu = self.get_menu_from_frame(self.frame, "Edit") nextfit_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,edit_menu.FindItem("&Next interpretation\tCtrl-Up")) prevfit_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,edit_menu.FindItem("&Previous interpretation\tCtrl-Down")) add_fit_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId,self.frame.add_fit_button.GetId()) self.frame.ProcessEvent(add_fit_evt) self.frame.ProcessEvent(add_fit_evt) self.frame.ProcessEvent(add_fit_evt) self.frame.ProcessEvent(add_fit_evt) fits = self.frame.pmag_results_data['specimens'][self.frame.s] ci = fits.index(self.frame.current_fit) for i in range(len(fits)+ci, ci, -1): self.assertEqual(fits[i%len(fits)], self.frame.current_fit) self.frame.ProcessEvent(nextfit_menu_evt) ci = fits.index(self.frame.current_fit) for i in range(ci, len(fits)+ci): self.assertEqual(fits[i%len(fits)], self.frame.current_fit) self.frame.ProcessEvent(prevfit_menu_evt)
def OnOk(self, event): selitem = self.tree.GetSelection() if not selitem.IsOk(): return dstpath = self.tree.GetItemPyData(selitem) if not dstpath: return self.path = dstpath self.dirstack = self.get_dirstack(selitem) cw.cwpy.setting.installed_dir[self.scedir] = self.get_dirstack(selitem) self.SetReturnCode(wx.ID_OK) btnevent = wx.PyCommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, wx.ID_OK) self.ProcessEvent(btnevent)
def test_add_delete_fit(self): add_fit_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self.frame.add_fit_button.GetId()) delete_fit_evt = wx.PyCommandEvent( wx.EVT_BUTTON.typeId, self.frame.delete_fit_button.GetId()) edit_menu = self.get_menu_from_frame(self.frame, "Edit") add_fit_menu_evt = wx.PyCommandEvent( wx.EVT_MENU.typeId, edit_menu.FindItem("&New interpretation\tCtrl-N")) delete_fit_menu_evt = wx.PyCommandEvent( wx.EVT_MENU.typeId, edit_menu.FindItem("&Delete interpretation\tCtrl-D")) #add fit with no bounds using menu self.frame.ProcessEvent(add_fit_menu_evt) self.assertEqual( len(self.frame.pmag_results_data['specimens'][self.frame.s]), 1) #add fit with bounds using button tmin = self.frame.Data[self.frame.s]['zijdblock_steps'][0] tmax = self.frame.Data[self.frame.s]['zijdblock_steps'][-1] self.frame.tmin_box.SetValue(tmin) self.frame.tmax_box.SetValue(tmax) self.frame.ProcessEvent(add_fit_evt) self.assertEqual( len(self.frame.pmag_results_data['specimens'][self.frame.s]), 2) self.assertEqual(self.frame.tmin_box.GetValue(), tmin) self.assertEqual(self.frame.tmax_box.GetValue(), tmax) self.assertEqual(self.frame.current_fit.tmin, tmin) self.assertEqual(self.frame.current_fit.tmax, tmax) self.frame.ProcessEvent(delete_fit_menu_evt) self.assertEqual( len(self.frame.pmag_results_data['specimens'][self.frame.s]), 1) self.frame.ProcessEvent(delete_fit_evt) self.assertEqual( len(self.frame.pmag_results_data['specimens'][self.frame.s]), 0)
def keep_updated(self): """Periodically refresh the displayed settings.""" from time import time,sleep while True: try: t0 = time() while time() < t0+self.refresh_period: sleep(0.5) if self.Shown: self.update_data() if self.data_changed: event = wx.PyCommandEvent(wx.EVT_TIMER.typeId,self.Id) # call OnUpdate in GUI thread wx.PostEvent(self.EventHandler,event) except wx.PyDeadObjectError: break
def __on_pref_menu(self, event): settings = edsettings.EDSettings(self, wx.ID_ANY, "Settings Configuration") if settings.ShowModal() == wx.ID_OK: if self.stop_button.IsEnabled(): self.log.info("The preferences have changed. Stop the proxy and then attempt to restart it.") self.stop_button.Disable() self.__stop() self.start_button.Enable() wx.PostEvent(self.GetEventHandler(), wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self.start_button.GetId())) settings.Destroy()
def SetData(self, nData): """ Insert the media at the front of the list of data. The purpose is to have a data history """ if nData <= self.Range[0]: self.Range[0] = nData - 1 if nData >= self.Range[1]: self.Range[1] = nData + 1 # Insert at front most recent value self.data.insert(0, nData) # Send event for redrawing (update) wx.PostEvent(self.GetEventHandler(), wx.PyCommandEvent(wx.EVT_PAINT.typeId, self.GetId()))
def OnType(self, event): """Called when any text is typed""" debug("%s: Key %s" % (self.Name, key_name(event.KeyCode))) skip_event = True old_bkg = wx.TextCtrl.GetBackgroundColour(self) if event.KeyCode == wx.WXK_ESCAPE: # On ESC, cancel the editing and replace the original text. self.cancel_edit() elif event.KeyCode == wx.WXK_TAB: # Tab navigates between controls shifting the keyboard focus. if self.RequireEnter: self.cancel_edit() else: changed = (self.DiplayedValue != self.CachedValue) self.accept_edit() if changed: # Make sure the callback for EVT_TEXT_ENTER is called. new_event = wx.PyCommandEvent(wx.EVT_TEXT_ENTER.typeId, self.Id) wx.PostEvent(self.EventHandler, new_event) elif event.KeyCode == wx.WXK_RETURN: skip_event = False changed = (self.DiplayedValue != self.CachedValue) self.accept_edit() if changed: # Make sure the callback for EVT_TEXT_ENTER is called. new_event = wx.PyCommandEvent(wx.EVT_TEXT_ENTER.typeId, self.Id) wx.PostEvent(self.EventHandler, new_event) else: # Enter 'editing mode' by changing the background color. self.Edited = True wx.TextCtrl.SetBackgroundColour(self, self.EditedBackgroundColour) wx.TextCtrl.SetForegroundColour(self, self.EditedForegroundColour) if wx.TextCtrl.GetBackgroundColour(self) != old_bkg: self.Refresh() # Pass this event on to further event handlers bound to this event. # Otherwise, the typed text does not appear in the window. if skip_event: event.Skip()
def test_read_write_redo(self): self.frame.COORDINATE_SYSTEM = 'specimen' self.mark_all_meas_good(self.frame) self.frame.update_selection() self.assertFalse(self.frame.ie_open) self.frame.on_menu_edit_interpretations(-1) self.assertTrue(self.frame.ie_open) ie = self.frame.ie addall_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, ie.add_all_button.GetId()) ie.ProcessEvent(addall_evt) ie.ProcessEvent(addall_evt) ie.ProcessEvent(addall_evt) file_menu = self.get_menu_from_frame(self.frame, "File") importredo_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,file_menu.FindItem("&Import interpretations from a redo file\tCtrl-R")) writeredo_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,file_menu.FindItem("&Save interpretations to a redo file\tCtrl-S")) self.frame.ProcessEvent(writeredo_menu_evt) old_frame = str(self.frame) old_interpretations = [] for speci in list(self.frame.pmag_results_data['specimens'].keys()): old_interpretations += sorted(self.frame.pmag_results_data['specimens'][speci],key=fit_key) self.frame.clear_interpretations() self.frame.ProcessEvent(importredo_menu_evt) imported_frame = str(self.frame) imported_interpretations = [] for speci in list(self.frame.pmag_results_data['specimens'].keys()): imported_interpretations += sorted(self.frame.pmag_results_data['specimens'][speci],key=fit_key) for ofit,ifit in zip(old_interpretations,imported_interpretations): self.assertTrue(ofit.equal(ifit))
def on_repeat(self, event): """Rewinds a position in a video stream to the beginning of the current subtitle fragment. :param event: Event which entailed execution of the callback :type event: :class:`wx.ScrollEvent` """ if self.verificator.has_subtitle(): last = self.verificator.get_subtitle() self.video.Seek( int((last.start.hours * 3600 + last.start.minutes * 60 + last.start.seconds) * 1000)) wx.PostEvent(self, wx.PyCommandEvent(wx.EVT_BUTTON.typeId, ids.PLAY))
def StopAllJobs(self): """ Stop tasks """ for control in self.panel.GetChildren(): try: if isinstance( control, wx.Button ) and control.GetLabel() != control.__start_label__: control.SetLabel(control.__stop_label__) control.GetEventHandler().ProcessEvent( wx.PyCommandEvent(wx.EVT_BUTTON.typeId, control.GetId())) except AttributeError: pass
def change_frame(self, frame_image_file): if os.path.exists(frame_image_file): # 记录新边框图片为当前边框图片,并设置其透明 self._frame_image = wx.Image(frame_image_file, wx.BITMAP_TYPE_ANY) if not self._frame_image.HasAlpha(): self._frame_image.InitAlpha() # 获取当前边框图片的副本 frame_image = self._frame_image.Copy() # 将边框图片副本调整为Panel的大小 client_size = self.GetClientSize() frame_image = frame_image.Rescale(client_size[0], client_size[1]) # 生成边框图片的bitmap self._frame_bitmap = wx.Bitmap(frame_image) # 发送绘制背景消息 wx.QueueEvent(self, wx.PyCommandEvent(wx.wxEVT_ERASE_BACKGROUND))
def ErrorManager(self, msg): """ An error is occured. """ ### simulate event button for the code editor from Core.Components.Components import MsgBoxError event = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self._btn1.GetId()) ### try to find the file which have the error from traceback try: typ, val, tb = msg.data trace = traceback.format_exception(typ, val, tb)[-2].split(',') path = trace[0] except Exception, info: path = ""
def fdir_dialogue(self, event): fdir = "" # Use folder as a flag currentdir = self.dirchooser.textctrl.GetValue() dlg = wx.DirDialog(self, defaultPath = currentdir) if dlg.ShowModal() == wx.ID_OK: fdir = dlg.GetPath() + "/" dlg.SetPath(fdir) dlg.Destroy() # best to do this sooner than later if fdir: self.dirchooser.textctrl.SetValue(fdir) event = wx.PyCommandEvent(wx.EVT_TEXT_ENTER.typeId, self.dirchooser.textctrl.GetId()) self.GetEventHandler().ProcessEvent(event) self.fdir = fdir
def _navigateUpOrDown(self, keyEvent): item = self.GetSelection() if item: navigationMethods = { wx.WXK_DOWN: self._tree.GetNextItem, wx.WXK_UP: self._tree.GetPreviousItem } getNextItem = navigationMethods[keyEvent.GetKeyCode()] nextItem = getNextItem(item) else: nextItem = self._tree.GetFirstItem() if nextItem: self.SetSelection(nextItem) event = wx.PyCommandEvent(wx.wxEVT_COMMAND_COMBOBOX_SELECTED) event.SetEventObject(self) self.ProcessEvent(event)
def _cExpandoTextCtrl_after_on_focus(self): # robustify against PyDeadObjectError - since we are called # from wx's CallAfter this SoapCtrl may be gone by the time # we get to handling this layout request, say, on patient # change or some such if not self: return #wx. CallAfter(self._adjustCtrl) evt = wx.PyCommandEvent(wx.lib.expando.wxEVT_ETC_LAYOUT_NEEDED, self.GetId()) evt.SetEventObject(self) #evt.height = None #evt.numLines = None #evt.height = self.GetSize().height #evt.numLines = self.GetNumberOfLines() self.GetEventHandler().ProcessEvent(evt)
def FinalECRadSetup(self, scenario_updated): # Thinga we need to do just before we get going if(scenario_updated): self.Results.Scenario.autosave() self.Results.set_dimensions() self.ProgressBar.SetRange(self.Results.Scenario["dimensions"]["N_time"]) evt = NewStatusEvt(Unbound_EVT_NEW_STATUS, self.GetId()) evt.SetStatus('ECRad is running - please wait.') wx.PostEvent(self, evt) self.Progress_label.SetLabel("ECRad running - ({0:d}/{1:d})".format(self.index + 1,len(self.Results.Scenario["time"]))) self.ProgressBar.SetValue(self.index) self.ExportButton.Disable() self.NameButton.Disable() self.StartECRadButton.Disable() evt = wx.PyCommandEvent(Unbound_EVT_MAKE_ECRAD, self.GetId()) wx.PostEvent(self, evt)
def changeAxes(self, axis1, axis2): """ Change the position of the axis 1 to the position of the axis 2, and viceversa """ # Get the position index1 = 0 index2 = 0 for i in range(len(self.axesOrder)): if self.axesOrder[i] == axis1: index1 = i if self.axesOrder[i] == axis2: index2 = i # Change the order self.axesOrder[index1] = axis2 self.axesOrder[index2] = axis1 # Send event to redraw wx.PostEvent(self.GetEventHandler(), wx.PyCommandEvent(wx.EVT_PAINT.typeId, self.GetId()))