def THREADRender( self ): num_frames = self._media.GetNumFrames() while True: time.sleep( 0.00001 ) # thread yield with self._render_lock: if not self._rendered_first_frame or self._next_render_index != ( self._render_to_index + 1 ) % num_frames: self._rendered_first_frame = True frame_index = self._next_render_index # keep this before the get call, as it increments in a clock arithmetic way afterwards try: numpy_image = self._renderer.read_frame() except Exception as e: HC.ShowException( e ) break finally: self._next_render_index = ( self._next_render_index + 1 ) % num_frames frame = HydrusImageHandling.GenerateHydrusBitmapFromNumPyImage( numpy_image ) wx.CallAfter( self.AddFrame, frame_index, frame ) else: break
def updateValuesForCycle(self, actual_resources_values, actual_resources_incomes, actual_resources_consumption, resources_balance, needed_dwellers, available_dwellers): wx.CallAfter( self.viewSetter.getView('Map').update_values_for_cycle, actual_resources_values, actual_resources_incomes, actual_resources_consumption, resources_balance, needed_dwellers, available_dwellers)
def printAll(msg): """ 打印到界面、日志、调试窗口 :param msg: msg :return: None """ try: main_window = wx.FindWindowByName('Main') wx.CallAfter(main_window.PrintLogInfoAuto, msg) except (AttributeError, Exception) as e: printResError('[异常]打印到日志调试窗口和屏幕的时候遭遇异常,异常信息如下 {}'.format(e))
def init(self, resources, domestic_buildings, industrial_buildings, dwellers, texture_one, texture_two, panelTexture, mp3, initial_resources_values, initial_resources_incomes, initial_resources_consumption, initial_resources_balance, available_dwellers): logging.warning("initializing map") wx.CallAfter( self.viewSetter.getView('Map').init, resources, domestic_buildings, industrial_buildings, dwellers, texture_one, texture_two, panelTexture, mp3, initial_resources_values, initial_resources_incomes, initial_resources_consumption, initial_resources_balance, available_dwellers)
def printResInfo(msg): """ 打印到日志、调试窗口 :param msg: msg :return: None """ try: window = wx.FindWindowById(553) logger = wx.FindWindowById(10).logger msg = str(msg) if window and hasattr(window, 'WriteToText'): wx.CallAfter(window.WriteToText, msg + '\n') else: print(msg) if logger: for _msg in msg.split('\n'): logger.info(str(_msg, encoding='utf-8')) # 此处是为了使得html日志回车换行 except (AttributeError, Exception): print(msg) time.sleep(0.05)
def printResError(msg): """ 打印错误信息,如果有Dauto有logger(console log),则按照error级别记录log信息 :param msg: msg :return: None """ try: window = wx.FindWindowById(553) logger = wx.FindWindowById(10).logger msg = str(msg) if window and hasattr(window, 'WriteToText'): wx.CallAfter(window.WriteToText, msg + '\n') else: print(msg) if logger: for _msg in msg.split('\n'): logger.error(str(_msg, encoding='utf-8')) # 此处是为了使得html日志回车换行 except (AttributeError, Exception): print(msg) time.sleep(0.05)
def set_waffirm_end(self): """ 更新testlink服务器上面执行状态,标记为完成 :return: {'Status': 1 or 0, 'Message': 'XXX'} """ try: job_type = self.tl.getJobInfo( self.tl.__args__['job_id'])['job_type'] if self.tl.__args__['notes'] != 'end': # 如果只执行一个模块,直接将任务进度更新为完成状态 if job_type == 'waffirm' or job_type == 'waffirm_X86': self.tl.updateJobInfo(self.tl.__args__['job_id'], 2) print('全部测试用例执行完毕,即将关闭确认测试用例平台') main_window = wx.FindWindowById(10) wx.CallAfter(main_window.OnAutoCloseWindow) del self.tl.__args__['job_id'] return {'Status': 1, 'Message': 'Waffirm Test End'} else: return {'Status': 0, 'Message': 'job type is not waffirm'} else: return {'Status': 0, 'Message': 'notes is end'} except Exception as ex: print('error %s' % ex)
def resumeGame(self): logging.warning("resuming map") wx.CallAfter(self.viewSetter.getView('Map').resume_game)
def sendTutorialHints(self, hints): wx.CallAfter(self.viewSetter.getView('Map').handle_hints, hints)
def displayMsg(self, msg): wx.CallAfter( self.viewSetter.getView("Creator").views["main_panel"].displayMsg, msg)
def displayDependenciesGraph(self, jsonGraph): wx.CallAfter( self.viewSetter.getView( "Creator").views["main_panel"].displayDependenciesGraph, json.loads(jsonGraph.toString()))
def displayDependenciesGraph(self, jsonGraph): wx.CallAfter( self.viewSetter.getView("Loader").displayDependenciesGraph, json.loads(jsonGraph.toString()))
def displayPossibleDependenciesSets(self, possibleSets): wx.CallAfter( self.viewSetter.getView("Loader").displayPossibleDependenciesSets, Converter(self.viewSetter.gateway).convertPyCollectionToJavaList( possibleSets))
def displayLoader(self): wx.CallAfter(self.viewSetter.setView, "Loader")
def displayCreator(self): wx.CallAfter( self.viewSetter.getView("Creator").views["main_panel"].clean, None, WELCOME_MSG) wx.CallAfter(self.viewSetter.setView, "Creator")
def displayMap(self): wx.CallAfter(self.viewSetter.setView, 'Map')
def animateCurrentPrices(self, currentPricesJavaMap): wx.CallAfter( self.viewSetter.getView("GameMenu").animateCurrentPrices, Converter(self.viewSetter.gateway).convertJavaMapToDict( currentPricesJavaMap))
def displayGameMenu(self): wx.CallAfter(self.viewSetter.setView, "GameMenu")
def displayMainMenu(self): wx.CallAfter(self.viewSetter.setView, "MainMenu")
def send_image_to_wx(params): img = params[0] image_data = base64.b64decode(img) sbuf = StringIO.StringIO(image_data) wx.CallAfter(Publisher.sendMessage, "update", sbuf) return True