def OnTreeChar(self, event = None): keycode = event.GetKeyCode() # Toggle the value in the first column def toggle(items): for s in items: if self.tree.GetCheckedState(s) == wx.CHK_CHECKED: self.tree.CheckItem(s, wx.CHK_UNCHECKED) else: self.tree.CheckItem(s, wx.CHK_CHECKED) if keycode == ord('*'): if len(self.tree.GetSelections()) != 1: wx.LogMessage("Can only select one item for glob select with *") item = self.tree.GetSelections()[0] # Get the file extension of the selected entity root_ext = os.path.splitext(self.tree.GetItemText(item, col_tree))[1] if self.ItemIsDirectory(item): wx.LogMessage("Can only apply glob select to files") return # Rewind to the first sibling parent = self.tree.GetItemParent(item) item = self.tree.GetFirstChild(parent) while item.IsOk(): fname = self.tree.GetItemText(item, col_tree) ext = os.path.splitext(fname)[1] if ext and ext.upper() == root_ext.upper() and not self.ItemIsDirectory(item): toggle([item]) item = self.tree.GetNextSibling(item) else: event.Skip()
def line_chart(self, data): wx.LogMessage( "Start with the phone performance data to generate a report") PATH = lambda p: os.path.abspath(p) cpu_data = [] mem_data = [] # 去掉cpu占用率中的百分号,并转换为int型 for cpu in data[0]: cpu_data.append(string.atoi(cpu.split("%")[0])) # 去掉内存占用中的单位K,并转换为int型,以M为单位 for mem in data[1]: mem_data.append(string.atof(mem.split("K")[0]) / 1024) # 将包名当做图的title,将时间当做x轴的长度 title = data[2] x_limit = data[3] # 横坐标 labels = [] for i in range(1, x_limit + 1): labels.append(str(i)) # 自动设置图表区域宽度 if x_limit <= 50: xArea = x_limit * 40 elif 50 < x_limit <= 90: xArea = x_limit * 20 else: xArea = 1800 c = XYChart(xArea, 800, 0xCCEEFF, 0x000000, 1) c.setPlotArea(60, 100, xArea - 100, 650) c.addLegend(50, 30, 0, "arialbd.ttf", 15).setBackground(Transparent) c.addTitle("cpu and memery info (%s)" % title, "timesbi.ttf", 15).setBackground(0xCCEEFF, 0x000000, glassEffect()) c.yAxis().setTitle("The numerical", "arialbd.ttf", 12) c.xAxis().setTitle("Times", "arialbd.ttf", 12) c.xAxis().setLabels(labels) # 自动设置X轴步长 if x_limit <= 50: step = 1 else: step = x_limit / 50 + 1 c.xAxis().setLabelStep(step) layer = c.addLineLayer() layer.setLineWidth(2) layer.addDataSet(cpu_data, 0xff0000, "cpu(%)") layer.addDataSet(mem_data, 0x008800, "mem(M)") # 图片保存至脚本当前目录的chart目录下 time_str = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())) report_path = self.fp.get_app_performance_result_path("%s.png" % time_str) c.makeChart(report_path) wx.LogMessage("End of generating report, cheak file in %s" % report_path)
def OnChar(self, event): keycode = event.GetUnicodeKey() if keycode != wx.WXK_NONE: # It's a printable character wx.LogMessage("You pressed '%c'"%keycode) else: wx.LogMessage("You pressed a non ASCII key '%c'"%keycode)
def get_crash_log(self, sno): # 获取app发生crash的时间列表 time_list = [] result_list = self.android.shell( sno, "dumpsys dropbox | findstr data_app_crash").stdout.readlines() for time in result_list: temp_list = time.split(" ") temp_time = [] temp_time.append(temp_list[0]) temp_time.append(temp_list[1]) time_list.append(" ".join(temp_time)) if time_list is None or len(time_list) <= 0: wx.LogMessage("No crash log to get") return None log_file = self.fp.get_exception_logs_file_path( "Exception_log_%s.txt" % self.android.timestamp()) f = open(log_file, "wb") for time in time_list: cash_log = self.android.shell(sno, "dumpsys dropbox --print %s" % time).stdout.read() f.write(cash_log) f.close() wx.LogMessage("check local file")
def current_package_name(self, sno): if sno is None or sno == "": wx.LogMessage("Device_items No Choice Device") return current_pkg = self.android.get_current_package_name(sno) wx.LogMessage("package name of current app is [" + current_pkg + "]") return current_pkg
def OnRip(self, e): """ starts a cdparanoia process, changes GUI state to 'ripping' """ if not self.cmdRip.GetValue(): # the button should really be disabled while ripping, but it looks # ugly next to an enabled button (Detect CD) wx.LogError( "Click the Stop button if you want to interrupt ripping.") self.cmdRip.SetValue(True) return wx.LogMessage("preparing cue sheet") self._create_cue() # popen the cdparanoia process and set non-blocking reads on its output cmd = [flaccfg.BIN_CDPARANOIA, '-e'] if self.cddevice: cmd.extend(['-d', self.cddevice]) if TESTMODE: cmd.append('1-2') wx.LogMessage("TEST MODE active: Only ripping track 1!") wx.LogMessage("command is: %s" % cmd) else: cmd.append('1-') self.child = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) fcntl.fcntl(self.child.stdout.fileno(), fcntl.F_SETFL, os.O_NONBLOCK) self.childbuffer = "" wx.LogMessage("spawned cdparanoia process %d" % self.child.pid) self.setUIState(STATE_RIPPING)
def UpdatePropertyGrid(self, name=None, TMP=None): """ update Template Parameter within a wx.PropertyGrid Parameter --------- name: name of experiment TMP : the template structure as dict """ # print(self.Template.TMP._template_data) if name: self.Template.update_template(name=name) if TMP: data = TMP.template_data else: data = self.Template.TMP.template_data if self.verbose: wx.LogMessage("Update " + self.title + " : " + self.Template.GetExperiment() ) #data["experiment"].get("name")) wx.LogMessage(jb.pp_list2str(data)) self.PropertyGridNoteBoook.update(data=data)
def Dragging(self, position): if JHDragState.DRAG_INIT == self.dragState: self.dragTPoint = position if self.startPoint.Contains(position): self.isDragStartPoint = True self.dragState = JHDragState.DRAG_SHAPEPOINT wx.LogMessage('drag start') elif self.endPoint.Contains(position): self.isDragStartPoint = False self.dragState = JHDragState.DRAG_SHAPEPOINT wx.LogMessage('drag end') else: self.dragState = JHDragState.DRAG_MOVING wx.LogMessage('drag move') elif JHDragState.DRAG_MOVING == self.dragState: vector = position - self.dragTPoint self.dragTPoint = position dx = vector.x dy = vector.y self.startPoint.Move(dx, dy) self.endPoint.Move(dx, dy) self.midPoint.Move(dx, dy) else: vector = position - self.dragTPoint self.dragTPoint = position dx = vector.x dy = vector.y if self.isDragStartPoint: self.startPoint.Move(dx, dy) else: self.endPoint.Move(dx, dy) tPoint = (self.startPoint.point + self.endPoint.point) / 2 diff = tPoint - self.midPoint.point self.midPoint.Move(diff.x, diff.y)
def install_all_devices(self, apk_name, apk_package_name): wx.LogMessage("Install all devices") device_list = self.sno_list if device_list is None: wx.LogMessage("No device is connected") else: for sno in device_list: self.install_one_device(sno, apk_name, apk_package_name)
def uninstall_one(self, sno, package_name): uninstall_result = self.android.adb(sno, 'uninstall %s' % package_name).stdout.read() if re.findall(r'Success', uninstall_result): wx.LogMessage('[%s] uninstall [%s] [SUCCESS]' % (sno, package_name)) else: wx.LogMessage('no assign package')
def UpdateAll(self): wx.LogMessage('Flushing changes to hard disk.') if not self.CheckAny(): wx.LogMessage('No changes found.') return for f in self._files: f.update() wx.LogMessage('Completed hard disk flush.')
def ClickOnApply(self): """ get selected pdfs structure make commands with argparser parameter apply cmds to subprocess """ self.PDFBox.verbose = self.verbose pdfs = self.PDFBox.GetSelectedPDFs() if not pdfs: wx.CallAfter(pub.sendMessage, "MAIN_FRAME.MSG.ERROR", data="\nPlease select PDFs first\n in: " + self.GetName()) return #cmd_parameter = self.AP.GetParameter() cmd_command = self.AP.get_fullfile_command(ShowFileIO=True) joblist = [] #--- del "stage" cmd_list = cmd_command.split() for k in [ "--meg_stage", "--eeg_stage", "-smeg", "-seeg", "--list_path" ]: for idx in range(len(cmd_list)): if cmd_list[idx].startswith(k): del cmd_list[idx] break cmd_command = " ".join(cmd_list) # print(cmd_command) for subject_id in pdfs.get('mne'): for idx in range(len(pdfs['mne'][subject_id])): if not pdfs['mne'][subject_id][idx]["selected"]: continue cmd = cmd_command eeg_idx = pdfs["eeg_index"][subject_id][idx] cmd += " --meg_stage=" + pdfs["stage"] cmd += " -fmeg " + pdfs["mne"][subject_id][idx]["pdf"] cmd += " --eeg_stage=" + pdfs["stage"] cmd += " -feeg " + pdfs["eeg"][subject_id][eeg_idx]["pdf"] #cmd += " "+ cmd_parameter joblist.append(cmd) if self.verbose: wx.LogMessage( jb.pp_list2str(joblist, head="MEEG Merger Job list: ")) wx.LogMessage( jb.pp_list2str(self.HostCtrl.HOST.GetParameter(), head="HOST Parameter")) if joblist: # wx.CallAfter(pub.sendMessage,"SUBPROCESS.RUN.START",jobs=joblist,host_parameter=self.HostCtrl.HOST.GetParameter(),verbose=self.verbose) wx.CallAfter(self.SubProcess.run, jobs=joblist, host_parameter=self.HostCtrl.HOST.GetParameter(), verbose=self.verbose)
def OnToggleUseInputStream(self, event): model = self.getModel() if model: model.useInputStream = not model.useInputStream if model.useInputStream: self.editor.erroutFrm.displayInput(True) wx.LogMessage(_('Using input stream for running')) else: wx.LogMessage(_('Not using input stream for running'))
def ClickOnSave(self): """ show File Save DLG save template data in json format """ data = self.PropertyGridNoteBoook.GetData() #--- make file name self.Template.TMP.template_name = self.GetDataName(data) #fjson = self.Template.TMP.template_full_filename SaveDLG = wx.FileDialog( self, message='Save Template data.', wildcard='template (*.' + self.Template.TMP.template_extention + ')|*.json|All Files|*', style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT | wx.FD_PREVIEW) SaveDLG.SetDirectory(self.Template.TMP.template_path) SaveDLG.SetFilename(self.Template.TMP.template_filename) if SaveDLG.ShowModal() == wx.ID_OK: #--- update templatev info data["info"] = self.Template.TMP.update_template_info( gui_version=__version__) fout = os.path.join(SaveDLG.GetDirectory(), SaveDLG.GetFilename()) if self.verbose: wx.LogMessage(" ---> experiment template : " + data["experiment"]["name"]) wx.LogMessage(" --> saving experiment template file : " + fout) if self.debug: wx.LogDebug(" -> experiment template data: \n" + json.dumps(data, indent=4)) try: with open(fout, "w") as f: f.write(json.dumps(data, indent=4)) os.fsync(f.fileno()) # make to disk f.close() if self.verbose: wx.LogMessage( " ---> done saving experiment template file: " + fout) #--- update Experiment Template lists and update ExpTmp ComboBox with new template name #--- TEST_jumeg_experiment_template.json => TEST name = SaveDLG.GetFilename().split( "_" + self.Template.TMP.template_postfix)[0] self.Template.update_template(name=name) except Exception as e: wx.LogError("Save failed!\n" + jb.pp_list2str( e, head="Error writing experiment template file: " + fout)) pub.sendMessage("MAIN_FRAME.MSG.ERROR", data="Error writing template file: " + fout) raise finally: SaveDLG.Destroy()
def get_performance(self, sno, time1, pkg): wx.LogMessage( "get preforence func threading process is running: {}".format( self.performace_t.is_alive())) apm = AppPerformanceMonitor() data = apm.top(sno, time1, pkg) reporter = Reporter() reporter.line_chart(data) wx.LogMessage("threading is running? {}".format( self.performace_t.is_alive()))
def cover_install(self, sno, apk_name, apk_package_name): install_result = self.android.adb(sno, 'install -r %s' % apk_name).stdout.read() boolean = self.is_has_package(sno, apk_package_name) if re.findall(r'Success', install_result) or boolean: wx.LogMessage('[%s] adb install %s [SUCCESS]' % (sno, os.path.basename(apk_name))) else: wx.LogMessage('[%s] install %s [FALSE]' % (sno, os.path.basename(apk_name)))
def OnDetectCD(self, e): """ this is what runs when the "Detect CD" button is clicked (believe it or not). First we try to identify the CD using the musicbrainz library, then cddb, if that fails, then give up. """ if self.cmdDetectCD.GetValue(): self.goToWorkDir() if self.cddevice: wx.LogMessage("using CD device %s" % self.cddevice) wx.LogMessage("Checking musicbrainz for tags") wx.LogMessage("For information, see http://www.musicbrainz.org") info = None try: info = self._lookup_mb() except mbdisc.DiscError, e: wx.LogMessage("can't read disc: %s" % e) self.cmdDetectCD.SetValue(False) return if info == None: wx.LogMessage("musicbrainz failed, trying cddb") try: info = self._lookup_cddb() except: info = None if info == None: # nowhere else to look wx.LogMessage("nothing in cddb either: no tags available") info = cdinfo() # try to use musicbrainz library to at least find out the # number of tracks disc = mbdisc.readDisc(self.cddevice) for i in range(disc.firstTrackNum, disc.lastTrackNum + 1): info.titles[i] = "" # get cover art from Amazon if info.artist and info.album: wx.LogMessage("searching Amazon for cover art") urls = None try: info.releasedate, urls = amazon.LookupDisc( info.artist, info.album) except amazon.NoAmazonKeys: wx.LogMessage("not configured with amazon keys; skipping") # urls is a list, but we only bother with the first entry if urls: data = urllib.urlopen(urls[0]) ext = os.path.splitext(urls[0])[1] fd, imgfile = tempfile.mkstemp(ext, "amazon.", self.workdir) os.write(fd, data.read()) os.close(fd) self.setCoverArt(imgfile) else: wx.LogMessage("no results from Amazon search") # fill out tags box self.txtTags.SetValue(info.convertToTags())
def msg_stdout(self,msg): if msg: if isinstance(msg,(list)): msg="\n".join(msg) elif not jb.isNotEmptyString(msg): s = str(msg,'utf-8') # byte blob wx.LogMessage(self.msg_prefix +"\n" + re.sub(r'\n+',"\n",s).strip()) else: wx.LogMessage(self.msg_prefix+"\n"+msg) else: wx.LogMessage(self.msg_prefix + " STDOUT: None")
def __on_run(self, event): start_time = time() generator = Generator(self.__file_name_ctrl.GetValue()) result = generator.process(self.__new_cards.GetValue()) duration = time() - start_time total = sum(result.values()) wx.LogMessage("Summary:") wx.LogMessage(f" This took {duration:.1f} seconds for {total} cards.") for sheet, num in result.items(): wx.LogMessage(f" Sheet {sheet}: {num} cards generated") wx.LogMessage("Do you have more?")
def clear_app_data(self, sno, package_name): b = self.is_has_package(sno, package_name) if b: res = self.android.shell(sno, "pm clear %s" % package_name).stdout.read() if re.search(r'Success', res): wx.LogMessage("Clear data Success with [%s]" % package_name) else: wx.LogMessage("Clear work ERROR") else: wx.LogMessage("NO Package :", package_name)
def capture_window(self, sno): wx.LogMessage("begin to capture device window as a picture") desktop_path = self.android.get_win_destop_path() self.android.shell(sno, "rm /sdcard/screenshot.png").wait() self.android.shell( sno, "/system/bin/screencap -p /sdcard/screenshot.png").wait() c_time = time.strftime("%Y_%m_%d_%H-%M-%S") file_path = os.path.join(desktop_path, '%s.png"' % c_time) self.android.adb(sno, 'pull /sdcard/screenshot.png %s' % file_path).wait() wx.LogMessage( "do capture successed, and check file on windows desktop")
def OnEndLabelEdit(self, event): if event.IsEditCancelled() or not event.GetLabel(): event.Veto() return row_id = event.GetIndex() pos = self.GetItemData(row_id) # 0-based unsorted index new_name = event.GetLabel() old_path = self.listdata[pos][config.D_FILENAME] old_name = old_path.name new_name_clean = utils.strip_extra_whitespace(utils.strip_illegal_chars(new_name)) event.Veto() # do not allow further process as we will edit ourself the item label if new_name_clean == old_name: return old_file = str(old_path) new_file = os.path.join(str(old_path.parent), new_name_clean) new_path = Path(new_file) try: if not old_path.is_file(): return os.rename(old_file, new_file) wx.LogMessage("Renaming : %s --> %s" % (old_file, new_file)) Qview_fullpath = get_config()["show_fullpath"] Qhide_extension = get_config()["hide_extension"] new_match = match.get_match(new_path) if new_match: matching_results = new_match[0]["candidates"] nb_match = len(matching_results) self.RefreshItem( row_id, score=new_match[0]["score"], matchnames=matching_results, nbmatch=nb_match, status=config.MatchStatus.MATCH, Qview_fullpath=Qview_fullpath, Qhide_extension=Qhide_extension, ) else: self.RefreshItem( row_id, score=0, matchnames=[], nbmatch=0, status=config.MatchStatus.NOMATCH, Qview_fullpath=Qview_fullpath, Qhide_extension=Qhide_extension, ) except (OSError, IOError): wx.LogMessage("Error when renaming : %s --> %s" % (old_file, new_file))
def ClickOnApply(self): """ apply to subprocess """ self.PDFBox.verbose = self.verbose pdfs = self.PDFBox.GetSelectedPDFs( ) # returns list of list [[pdf,extention] ..] if not pdfs: wx.CallAfter(pub.sendMessage, "MAIN_FRAME.MSG.ERROR", data="\nPlease select PDFs first\n in: " + self.GetName()) return cmd_command = self.AP.get_fullfile_command(ShowFileIO=False) joblist = [] #--- del "--fif_extention=" cmd_list = [] for s in cmd_command.split(): if s.startswith("--fif"): continue #del cmd_list[idx] cmd_list.append(s) cmd_command = " ".join(cmd_list) fif_stage = self.GetFIFStage() logger.info("FIF stage 2: {}".format(fif_stage)) for pdf in pdfs: cmd = cmd_command #cmd += " --pdf_stage=" + os.path.expandvars( os.path.expanduser(os.path.dirname( self.PDFBox.GetStage() +"/"+ pdf ))) cmd += " --pdf_stage=" + self.PDFBox.GetStage( ) + "/" + os.path.dirname(pdf[0]) cmd += " --fif_stage=" + fif_stage cmd += " --fif_extention=" + pdf[1] joblist.append(cmd) # logger.info(joblist) if self.verbose: wx.LogMessage( jb.pp_list2str(joblist, head="MEEG Merger Job list: ")) wx.LogMessage( jb.pp_list2str(self.HostCtrl.HOST.GetParameter(), head="HOST Parameter")) if joblist: # wx.CallAfter(pub.sendMessage,"SUBPROCESS.RUN.START",jobs=joblist,host_parameter=self.HostCtrl.HOST.GetParameter(),verbose=self.verbose) wx.CallAfter(self.SubProcess.run, jobs=joblist, host_parameter=self.HostCtrl.HOST.GetParameter(), verbose=self.verbose)
def SaveContents(self, evt): #(td,desc)=evt.data print 'Saving in editor...' if 0: if self.demoModules.Exists(modModified): if self.demoModules.GetActiveID() == modOriginal: overwriteMsg = "You are about to overwrite an already existing modified copy\n" + \ "Do you want to continue?" dlg = wx.MessageDialog( self, overwriteMsg, "TaCo Developer", wx.YES_NO | wx.NO_DEFAULT | wx.ICON_EXCLAMATION) result = dlg.ShowModal() if result == wx.ID_NO: return dlg.Destroy() #self.demoModules.SetActive(modModified) #modifiedFilename = GetModifiedFilename(self.demoModules.name) fn = self.demoModules.name if 0: # Create the demo directory if one doesn't already exist if not os.path.exists(GetModifiedDirectory()): try: os.makedirs(GetModifiedDirectory()) if not os.path.exists(GetModifiedDirectory()): wx.LogMessage( "BUG: Created demo directory but it still doesn't exist" ) raise AssertionError except: wx.LogMessage("Error creating demo directory: %s" % GetModifiedDirectory()) return else: wx.LogMessage("Created directory for modified demos: %s" % GetModifiedDirectory()) # Save f = open(fn, "wt") source = self.editor.GetText() try: f.write(source) finally: f.close() busy = wx.BusyInfo("Reloading demo module...") #self.demoModules.LoadFromFile(modModified, fn) #self.ActiveModuleChanged() self.mainFrame.SetTreeModified(True) self.btnSave.Enable(False)
def onSelectMenuItemFileOpen(self, event): fileDialog = wx.FileDialog(self, pos=wx.Point(100, 100)) if wx.ID_OK == fileDialog.ShowModal(): self.fileName = fileDialog.GetPath() try: fileHandle = open(self.fileName, 'rb') openList = pickle.load(fileHandle) self.paintObjList.clear() self.paintObjList.extend(openList) fileHandle.close() self.__Draw() except Exception as e: wx.LogMessage(type(e)) wx.LogMessage('open file err')
def WriteText(parent, text): """Send text to log window after colorizing""" parent.busywriting = 1 #TODO: No idea why this is output at the end of every ExecuteInLog: #TODO: Log file to disk code can go here if string.find(text, "md5 src_uri") == 4: if parent.action != 'unpack': return if parent.pref['logfile'] == 1: parent.logfile.write(text + "\n") if text[-1:] == '\n': text = text[:-1] #Remove color and other esc codes text = text.replace('\b', '') text = text.replace("\x1b[0m", '') text = text.replace("\x1b[01m", '') text = text.replace("\x1b[32;01m", '') text = text.replace("\x1b[32;06m", '') text = text.replace("\x1b[31;06m", '') text = text.replace("\x1b[31;01m", '') text = text.replace("\x1b[33;06m", '') text = text.replace("\x1b[33;01m", '') text = text.replace("\x1b[32;06m", '') text = text.replace("\x1b[32;01m", '') text = text.replace("\x1b[34;06m", '') text = text.replace("\x1b[35;06m", '') text = text.replace("\x1b[34;01m", '') text = text.replace("\x1b[35;01m", '') text = text.replace("\x1b[36;01m", '') text = text.replace("\x1b[36;06m", '') # For the [ok]'s text = text.replace("\x1b[A", '') text = text.replace("\x1b[-7G", '') pref = text[0:3] if pref == ">>>" or pref == "<<<" or pref == "---" \ or pref == ")))" or pref == " * ": log_color(parent, "BLUE") wx.LogMessage(text) log_color(parent, "BLACK") elif pref == "!!!": log_color(parent, "RED") wx.LogMessage(text) log_color(parent, "BLACK") else: wx.LogMessage(text) parent.busywriting = 0
def install_one_device(self, sno, apk_name, apk_package_name): had_package = self.android.shell( sno, 'pm list packages |findstr "%s"' % apk_package_name).stdout.read() if re.search(apk_package_name, had_package): self.uninstall_one(sno, apk_package_name) install_result = self.android.adb(sno, 'install %s' % apk_name).stdout.read() boolean = self.is_has_package(sno, apk_package_name) if re.findall(r'Success', install_result) or boolean: wx.LogMessage('[%s] adb install %s [SUCCESS]' % (sno, os.path.basename(apk_name))) else: wx.LogMessage('[%s] install %s [FALSE]' % (sno, os.path.basename(apk_name)))
def __init__(self): #database info self.database_dir = wx.GetApp().GetDatabaseDir() dbFile = os.path.join(self.database_dir, filePath) #connect to database self.con = sqlite3.connect(dbFile, isolation_level=None, detect_types=sqlite3.PARSE_DECLTYPES) self.cur = self.con.cursor() try: # create/execute userPasswords table. self.cur.execute("""CREATE TABLE IF NOT EXISTS userPasswords ( pwID INTEGER PRIMARY KEY, Website VARCHAR (140), URL VARCHAR (140), Login VARCHAR (40), Question VARCHAR (100), Answer VARCHAR (100), Password VARCHAR (15)); """) except sqlite3.OperationalError: wx.LogMessage("already exists") return #commit self.con.commit()
def _process_event(self, event): """Process any kind of events. :param event: (wx.Event) """ event_obj = event.GetEventObject() event_name = event_obj.GetName() event_id = event_obj.GetId() wx.LogMessage("Received event id {:d} of {:s}" "".format(event_id, event_name)) if event_name == "exit": self.exit() elif event_name == "view_log": self.log_window.focus() elif event_name == "about": About(self) elif event_name == "settings": self.on_settings() elif event_name in ("home", "files", "annotate", "analyze", "plugins"): self.show_page("page_" + event_name) else: event.Skip()
def loadSizes(self, filename): from Explorers.Explorer import openEx, TransportError t = openEx(filename) try: persProps = pickle.loads(t.load()) except SyntaxError: if wx.MessageBox(_('%s is possibly corrupt (cannot be unpickled), delete it?'\ 'Default layout will be used.')%filename, _('Corrupt file'), style = wx.YES_NO | wx.ICON_EXCLAMATION) == wx.YES: # XXX update to use transport !! if filename[:7] != 'file://': wx.LogMessage(_('Sorry, only supported on the filesystem')) else: os.remove(filename[7:]) raise TransportError(_('Corrupt layout file')) unmatchedPcls = persProps.keys() matchedShapes = [] for shape in self.shapes: if persProps.has_key(shape.unqPclName): unmatchedPcls.remove(shape.unqPclName) else: unmatchedPcls.append(shape.unqPclName) for shape in self.shapes: if persProps.has_key(shape.unqPclName): pos = persProps[shape.unqPclName] shape.setPos(pos) self.redraw()