def create_console_wnd_for_app(self, param): ''' Start an app with full path and parameters passed in a list param: [appFullPath, param1, param2, ...] ''' l = logDir.logDir(str(param)) t = ConsoleOutputWnd(self, l.getLogFilePath()) collector = ConsoleOutputCollector() cwd = localLibSys.get_root_dir() collector.runConsoleApp(t, cwd, param) self.wnd_to_console_dict[t] = collector cnt = 1 app_name = os.path.basename(param[0]) app_path = os.path.dirname(param[0]) app_path_and_param_gen_str = "%s(%s) %s"%(app_name, app_path, str(param[1:])) if self.app_name_to_task_dict.has_key(app_path_and_param_gen_str): while self.app_name_to_task_dict.has_key(app_path_and_param_gen_str + '-' + str(cnt)): cnt +=1 app_path_and_param_gen_str = app_path_and_param_gen_str + '-' + str(cnt) self.app_name_to_task_dict[app_path_and_param_gen_str] = t self.task_to_menu_item_dict[collector] = self.icon.addMenuItem(app_path_and_param_gen_str) return collector
def startAppWithParam(self, param): l = logDir.logDir(str(param)) t = logWnd.logWnd(self, l.getLogFilePath()) t.startAppWithParam(param) cnt = 1 paN = str(param) if self.mD.has_key(paN): while self.mD.has_key(paN + '-' + str(cnt)): cnt +=1 paN = paN + '-' + str(cnt) self.mD[paN] = t self.tL[t] = self.icon.addMenuItem(paN)
def create_console_wnd_for_app(self, param): ''' Start an app with full path and parameters passed in a list param: [appFullPath, param1, param2, ...] ''' l = logDir.logDir(str(param)) t = logWnd.logWnd(self, l.getLogFilePath()) t.startAppWithParam(param) cnt = 1 app_path_and_param_gen_str = str(param) if self.app_name_to_task_dict.has_key(app_path_and_param_gen_str): while self.app_name_to_task_dict.has_key(app_path_and_param_gen_str + '-' + str(cnt)): cnt +=1 app_path_and_param_gen_str = app_path_and_param_gen_str + '-' + str(cnt) self.app_name_to_task_dict[app_path_and_param_gen_str] = t self.task_to_menu_item_dict[t] = self.icon.addMenuItem(app_path_and_param_gen_str)
def runConsoleApp(self, target, cwd = 'D:\\code\\python\\developing\\ufs', progAndParam = ['D:\\code\\python\\developing\\ufs\\webserver-cgi.py']): checkExistPath = progAndParam if type(checkExistPath) == list: checkExistPath = checkExistPath[0] if not os.path.exists(checkExistPath): #Do not execute if the file does not exist return self.cwd = cwd self.progAndParm = progAndParam try: target.set_title(str(progAndParam)) except: traceback.print_exc() print "set title not supported" #print target #print '-------------------------',progAndParam #print cwd #self.prog = ['D:\\cygwin\\bin\\ls.exe','-l'] ext = os.path.splitext(checkExistPath)[1] #print 'ext is:', ext pythonWinPathList = [] try: pythonWinPathList.append(os.path.join(os.environ['VIRTUAL_ENV'], 'script/pythonw.exe')) print pythonWinPathList[0] except: pass if ".py" == ext: pythonWinPathList.extend(['c:/Python27/pythonw.exe','d:/python27/pythonw.exe','d:/python25/pythonw.exe', 'c:/python27/pythonw.exe', 'c:/python26/pythonw.exe', 'c:/python25/pythonw.exe']) for i in pythonWinPathList: if os.path.exists(i): targetPythonExePath = i break self.prog = [targetPythonExePath,'-u'] self.prog.extend(progAndParam)#Param 2 is the app else: self.prog = [] self.prog.extend(progAndParam) #print self.prog #self.SetTitle(progAndParam[0]) if True:#try: #print self.prog p = subprocess.Popen(self.prog, cwd = self.cwd, stdout = subprocess.PIPE, stderr = subprocess.PIPE, bufsize=0, creationflags = CREATE_NO_WINDOW) self.pList.append(p) #print "created pid:", p.pid find_flag = False for z in self.normal_priority_tasks: if progAndParam[0].find(z) != -1: #Need normal priority for this app find_flag = True if not find_flag: processManager.setPriority(p.pid, 1) pass #print "setting pid: %d, %s to below normal priority"%(p.pid, progAndParam[0]) else: #print "pid: %d, %s use normal priority"%(p.pid, progAndParam[0]) pass #print 'taskid:%d, pid:%d'%(int(p._handle), int(p.pid)) normal_log_path = logDir.logDir(str(progAndParam) + "_normal") err_log_path = logDir.logDir(str(progAndParam) + "_error") thr1 = taskConsoleThread(target, p.stdout, progAndParam[0], False, normal_log_path.getLogFilePath()) thr1.start() self.log_collector_thread_list.append(thr1) thr2 = taskConsoleThread(target, p.stderr, progAndParam[0], True, err_log_path.getLogFilePath()) thr2.start() self.log_collector_thread_list.append(thr2) #print 'launch ok' else:#except: print 'launch exception'