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 __init__(self, parent): gladefile = "consoleWnd.glade" fullPath = fileTools.findFileInProduct(gladefile) # Loads the UI from GtkBuilder XML file self.builder.add_from_file(fullPath) # Lets extract a reference to window object to use later self.window = self.builder.get_object(self.windowname) self.parent = parent #self.minimized = False window = self.window window.set_resizable(True) window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_UTILITY) #window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_NORMAL) #window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) #window.connect("destroy", self.on_quit_clicked) #window.connect('window-state-event', self.new_window_state) window.set_title("Python console log window") window.set_border_width(1) dic = { "destory_cb":self.on_quit_clicked, "minimize_clicked_cb":self.min, 'topmost_toggled_cb':self.topMost } self.builder.connect_signals (dic) self.textview = self.builder.get_object(self.textWndName) self.topMostFlag = True self.topMost(None) self.console_output_collector = ConsoleOutputCollector() #window.show() self.isMinimized = True self.window.hide()
class consoleWnd: windowname = 'window1' textWndName = 'consoleTextWnd' builder = gtk.Builder() ''' This class manages console windows, it will kill applications for every console window. ''' def __init__(self, parent): gladefile = "consoleWnd.glade" fullPath = fileTools.findFileInProduct(gladefile) # Loads the UI from GtkBuilder XML file self.builder.add_from_file(fullPath) # Lets extract a reference to window object to use later self.window = self.builder.get_object(self.windowname) self.parent = parent #self.minimized = False window = self.window window.set_resizable(True) window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_UTILITY) #window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_NORMAL) #window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) #window.connect("destroy", self.on_quit_clicked) #window.connect('window-state-event', self.new_window_state) window.set_title("Python console log window") window.set_border_width(1) dic = { "destory_cb":self.on_quit_clicked, "minimize_clicked_cb":self.min, 'topmost_toggled_cb':self.topMost } self.builder.connect_signals (dic) self.textview = self.builder.get_object(self.textWndName) self.topMostFlag = True self.topMost(None) self.console_output_collector = ConsoleOutputCollector() #window.show() self.isMinimized = True self.window.hide() def on_quit_clicked(self, widget): self.close_app() def close_app(self): try: #Remove menu item in parent (taskbar menu) self.parent.consoleClose(self) except: pass try: self.console_output_collector.kill_console_process_tree() except: pass def updateViewCallback(self, data): #print 'callback called' #self.data = data #print "updateView:", data gobject.idle_add(self.updateView, data) import time time.sleep(0.1) def updateView(self, data): buf = self.textview.get_buffer() buf.insert(buf.get_end_iter(), data) #self.data = '' def topMost(self, widget): self.topMostFlag = not self.topMostFlag self.window.set_keep_above(self.topMostFlag) def min(self, data): self.isMinimized = True self.window.hide() def startAppWithParam(self, progAndParam = ['D:\\code\\python\\developing\\ufs\\webserver-cgi.py']): cwd = os.path.dirname(progAndParam[0]) #self.startApp(cwd, progAndParm) self.console_output_collector.runConsoleApp(self, cwd, progAndParam) self.window.set_title(' '.join(progAndParam)) self.progAndParam = progAndParam