示例#1
0
 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()
示例#2
0
    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)
示例#3
0
 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)
示例#4
0
    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")
示例#5
0
 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
示例#6
0
    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)
示例#7
0
    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)
示例#8
0
 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)
示例#10
0
 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')
示例#11
0
 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'))
示例#14
0
    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()
示例#15
0
 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()))
示例#16
0
 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)))
示例#17
0
    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())
示例#18
0
 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")
示例#19
0
 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?")
示例#20
0
 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)
示例#21
0
 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")
示例#22
0
    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))
示例#23
0
    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)
示例#24
0
    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)
示例#25
0
 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')
示例#26
0
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
示例#27
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)))
示例#28
0
    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()
示例#29
0
    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()
示例#30
0
    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()