コード例 #1
0
    def OnDrop(self, files):
        """Opens dropped files
        @param files: list of file paths
        @postcondition: all files that could be properly opend are added to
                        the notebook

        """
        # Check file properties and make a "clean" list of file(s) to open
        valid_files = list()
        for fname in files:
            self.LOG("[ed_pages][evt] File(s) Dropped: %s" % fname)
            if not os.path.exists(fname):
                self.frame.PushStatusText(_("Invalid file: %s") % fname, \
                                          ed_glob.SB_INFO)
            elif os.path.isdir(fname):
                dcnt = glob.glob(os.path.join(fname, '*'))
                dcnt = util.FilterFiles(dcnt)
                dlg = None
                if not len(dcnt):
                    dlg = wx.MessageDialog(self,
                                           _("There are no files that Editra"
                                             " can open in %s") % fname,
                                           _("No Valid Files to Open"),
                                           style=wx.OK | wx.CENTER | \
                                                 wx.ICON_INFORMATION)
                elif len(dcnt) > 5:
                    # Warn when the folder contains many files
                    dlg = wx.MessageDialog(self,
                                           _("Do you wish to open all %d files"
                                             " in this directory?\n\nWarning"
                                             " opening many files at once may"
                                             " cause the editor to temporarly "
                                             " freeze.") % len(dcnt),
                                           _("Open Directory?"),
                                           style=wx.YES | wx.NO | \
                                                 wx.ICON_INFORMATION)
                if dlg is not None:
                    result = dlg.ShowModal()
                    dlg.Destroy()
                else:
                    result = wx.ID_YES

                if result == wx.ID_YES:
                    valid_files.extend(dcnt)
                else:
                    pass
            else:
                valid_files.append(fname)

        for fname in valid_files:
            pathname = util.GetPathName(fname)
            the_file = util.GetFileName(fname)
            self.OpenPage(pathname, the_file)
            self.frame.PushStatusText(_("Opened file: %s") % fname, \
                                      ed_glob.SB_INFO)
        return
コード例 #2
0
ファイル: ed_main.py プロジェクト: wangdyna/wxPython
    def DoOpen(self, evt, fname=u''):
        """ Do the work of opening a file and placing it
        in a new notebook page.
        @keyword fname: can be optionally specified to open
                        a file without opening a FileDialog
        @type fname: string

        """
        try:
            e_id = evt.GetId()
        except AttributeError:
            e_id = evt

        if e_id == ID_OPEN:
            fdir = self.GetNotebook().GetCurrentCtrl().GetFileName()
            if len(fdir):
                fdir = os.path.dirname(fdir)
            elif not hasattr(sys, 'frozen'):
                fdir = os.curdir

            dlg = wx.FileDialog(self, _("Choose a File"), fdir, "",
                                ''.join(syntax.GenFileFilters()),
                                wx.OPEN | wx.MULTIPLE)
            dlg.SetFilterIndex(_PGET('FFILTER', 'int', 0))

            if dlg.ShowModal() == wx.ID_OK:
                _PSET('FFILTER', dlg.GetFilterIndex())
                for path in dlg.GetPaths():
                    if _PGET('OPEN_NW', default=False):
                        wx.GetApp().OpenNewWindow(path)
                    else:
                        self.nb.OpenPage(util.GetPathName(path),
                                         util.GetFileName(path))
                        self.nb.GoCurrentPage()

            dlg.Destroy()
        else:
            self.LOG("[ed_main][info] CMD Open File: %s" % fname)
            self.nb.OpenPage(util.GetPathName(fname),
                             util.GetFileName(fname),
                             quiet=True)
            self.Raise()
コード例 #3
0
ファイル: testUtil.py プロジェクト: wangdyna/wxPython
    def testGetFileName(self):
        """Test that getting the file name from a string returns the correct
        string.

        """
        roots = (("Home", "foo", "projects"), ("usr", "bin"),
                 ("Users", "bar", "Desktop"))
        fname = "test.py"
        paths = [os.path.join(os.sep.join(root), fname) for root in roots]
        for path in paths:
            self.assertEqual(fname, util.GetFileName(path),
                             "util.GetFileName(%s) != %s" % (path, fname))
コード例 #4
0
ファイル: generator.py プロジェクト: wangdyna/wxPython
    def GenerateHead(self):
        """Generates the html head block
        @return: html header information
        @rtype: string

        """
        return "<head>\n<title>%s</title>\n" \
               "<meta name=\"Generator\" content=\"Editra/%s\">\n" \
               "<meta http-equiv=\"content-type\" content=\"text/html; " \
               "charset=utf-8\">" \
               "\n</head>" % (util.GetFileName(self.stc.GetFileName()),
                              ed_glob.VERSION)
コード例 #5
0
    def DoOpen(self, evt, fname=u''):
        """ Do the work of opening a file and placing it
        in a new notebook page.
        @keyword fname: can be optionally specified to open
                        a file without opening a FileDialog
        @type fname: string

        """
        result = wx.ID_CANCEL
        try:
            e_id = evt.GetId()
        except AttributeError:
            e_id = evt

        if e_id == ID_OPEN:
            dlg = wx.FileDialog(self, _("Choose a File"), '', "",
                                ''.join(syntax.GenFileFilters()),
                                wx.OPEN | wx.MULTIPLE)
            dlg.SetFilterIndex(_PGET('FFILTER', 'int', 0))
            result = dlg.ShowModal()
            _PSET('FFILTER', dlg.GetFilterIndex())
            paths = dlg.GetPaths()
            dlg.Destroy()

            if result != wx.ID_OK:
                self.LOG('[mainw][info] Canceled Opening File')
            else:
                for path in paths:
                    if _PGET('OPEN_NW', default=False):
                        wx.GetApp().OpenNewWindow(path)
                    else:
                        dirname = util.GetPathName(path)
                        filename = util.GetFileName(path)
                        self.nb.OpenPage(dirname, filename)
                        self.nb.GoCurrentPage()
        else:
            self.LOG("[mainw][info] CMD Open File: %s" % fname)
            filename = util.GetFileName(fname)
            dirname = util.GetPathName(fname)
            self.nb.OpenPage(dirname, filename)
コード例 #6
0
ファイル: gen_version_file.py プロジェクト: easyz/tools_2
def ResetAtalsConfig(root, prefixRoot, prefix, outDir):
    print("reset atals config")
    configName = "resource\\default.res.json"
    jsonData = json.load(file(os.path.join(root, configName), "r"))
    resJsonData = jsonData["resources"]
    jsonData["resources"] = []
    newResJsonData = []
    # 移除旧的配置
    for data in resJsonData:
        if not data["url"].startswith(prefix):
            newResJsonData.append(data)
    # 增加新的配置文件
    checkDir = os.path.join(outDir, prefixRoot, prefix.replace("/", "\\"))
    # 读取新生成的文件目录
    for parent, dirnames, filenames in os.walk(checkDir):
        for filename in filenames:
            # 文件路径
            realFilePath = os.path.join(parent, filename)
            # 配置路径
            filePath = os.path.join(parent, filename).replace(
                checkDir, prefix).replace("\\", "/")
            fileType = "image"
            if filename.endswith(".json"):
                fileType = "sheet"

            # 如果是sheet的图片,不添加到列表
            if fileType == "image" and realFilePath.endswith(
                    ".png") and os.path.exists(
                        realFilePath.replace(".png", ".json")):
                continue
            typeData = {
                "url":
                filePath,
                "type":
                fileType,
                "name":
                util.GetFileName(filePath) +
                (fileType == "sheet" and "_json" or "")
            }
            # 增加图集元素
            if fileType == "sheet":
                frameJsonData = json.load(file(realFilePath, "r"))
                sheetArray = []
                for sheetKey in frameJsonData["frames"]:
                    sheetArray.append(sheetKey)
                typeData["subkeys"] = ",".join(sheetArray)
            newResJsonData.append(typeData)

    jsonData["resources"] = newResJsonData
    json.dump(jsonData, file(os.path.join(outDir, configName), "w"))
コード例 #7
0
ファイル: ed_pages.py プロジェクト: wangdyna/wxPython
    def ChangePage(self, pgid):
        """Change the page and focus to the the given page id
        @param pgid: Page number to change to

        """
        window = self.GetPage(pgid)  # returns current stc
        window.SetFocus()
        self.control = window
        fname = self.control.GetFileName()

        if fname == "":
            fname = self.GetPageText(pgid)
        self.frame.SetTitle("%s - file://%s" %
                            (util.GetFileName(fname), fname))
コード例 #8
0
    def OpenFileObject(self, fileobj):
        """Open a new text editor page with the given file object. The file
        object must be an instance of ed_txt.EdFile.
        @param fileobj: File Object

        """
        # Create the control
        self.GetTopLevelParent().Freeze()
        control = ed_editv.EdEditorView(self, wx.ID_ANY)
        control.Hide()

        # Load the files data
        path = fileobj.GetPath()
        filename = util.GetFileName(path)
        control.SetDocument(fileobj)
        result = control.ReloadFile()

        # Setup the buffer
        fileobj.AddModifiedCallback(control.FireModified)

        # Setup the notebook
        self.control = control
        self.control.FindLexer()
        self.control.EmptyUndoBuffer()
        self.control.Show()
        self.AddPage(self.control, filename)

        self.frame.SetTitle(self.control.GetTitleString())
        self.frame.AddFileToHistory(path)
        self.SetPageText(self.GetSelection(), filename)
        self.LOG("[ed_pages][evt] Opened Page: %s" % filename)

        # Set tab image
        cpage = self.GetSelection()
        if fileobj.ReadOnly:
            super(EdPages, self).SetPageImage(cpage,
                                              self._index[ed_glob.ID_READONLY])
        else:
            self.SetPageImage(cpage, str(self.control.GetLangId()))

        self.GetTopLevelParent().Thaw()

        # Refocus on selected page
        self.GoCurrentPage()
        ed_msg.PostMessage(ed_msg.EDMSG_FILE_OPENED,
                           self.control.GetFileName())

        if Profile_Get('WARN_EOL', default=True):
            self.control.CheckEOL()
コード例 #9
0
ファイル: ed_cmdbar.py プロジェクト: wangdyna/wxPython
    def EditCommand(self, cmd):
        """Perform an edit related command
        @param cmd: command string to execute

        """
        # e fname: edit file
        cmd = cmd[1:].strip()
        frame = self.GetTopLevelParent()
        if not os.path.isabs(cmd):
            cmd = os.path.join(self._curdir, cmd)

        if os.path.exists(cmd):
            frame.DoOpen(ed_glob.ID_COMMAND_LINE_OPEN, cmd)
        else:
            frame.nb.OpenPage(util.GetPathName(cmd), util.GetFileName(cmd))
コード例 #10
0
    def OpenDocPointer(self, ptr, doc, title=u''):
        """Open a page using an stc document poiner
        @param ptr: EdEditorView document Pointer
        @param doc: EdFile instance
        @keyword title: tab title

        """
        self.GetTopLevelParent().Freeze()
        nbuff = self.GetCurrentPage()
        need_add = False
        if nbuff.GetFileName() or nbuff.GetLength():
            need_add = True
            nbuff = ed_editv.EdEditorView(self)

        nbuff.SetDocPointer(ptr)
        nbuff.SetDocument(doc)
        doc.AddModifiedCallback(nbuff.FireModified)
        nbuff.FindLexer()

        path = nbuff.GetFileName()
        if Profile_Get('SAVE_POS'):
            pos = self.DocMgr.GetPos(path)
            nbuff.GotoPos(pos)
            nbuff.ScrollToColumn(0)

        if title:
            filename = title
        else:
            filename = util.GetFileName(path)

        if need_add:
            self.AddPage(nbuff, filename)
        else:
            self.SetPageText(self.GetSelection(), filename)

        self.frame.SetTitle(nbuff.GetTitleString())
        self.LOG("[ed_pages][evt] Opened Page: %s" % filename)

        # Set tab image
        # TODO: Handle read only images
        self.SetPageImage(self.GetSelection(), str(nbuff.GetLangId()))

        # Refocus on selected page
        self.control = nbuff
        self.GoCurrentPage()
        self.GetTopLevelParent().Thaw()
        ed_msg.PostMessage(ed_msg.EDMSG_FILE_OPENED, nbuff.GetFileName())
コード例 #11
0
ファイル: ed_main.py プロジェクト: wangdyna/wxPython
    def OnSave(self, evt):
        """Save Current or All Buffers
        @param evt: Event fired that called this handler
        @type evt: wxMenuEvent

        """
        e_id = evt.GetId()
        ctrls = list()
        if e_id == ID_SAVE:
            page = self.nb.GetSelection()
            ctrls = [(self.nb.GetPageText(page), self.nb.GetCurrentCtrl(),
                      page)]
        elif e_id == ID_SAVEALL:
            # Collect all open editor buffers
            for page in xrange(self.nb.GetPageCount()):
                if issubclass(
                        self.nb.GetPage(page).__class__,
                        wx.stc.StyledTextCtrl):
                    ctrls.append((self.nb.GetPageText(page),
                                  self.nb.GetPage(page), page))
        else:
            evt.Skip()
            return

        for ctrl in ctrls:
            fname = util.GetFileName(ctrl[1].GetFileName())
            if fname != '':
                fpath = ctrl[1].GetFileName()
                result = ctrl[1].SaveFile(fpath)
                if result:
                    self.PushStatusText(_("Saved File: %s") % fname, SB_INFO)
                    if e_id == ID_SAVEALL:
                        if ctrl[2] != self.nb.GetSelection():
                            self.nb.SetPageText(ctrl[2], fname)
                        else:
                            self.nb.OnUpdatePageText(None)
                else:
                    err = ctrl[1].GetDocument().GetLastError()
                    self.PushStatusText(_("ERROR: %s") % err, SB_INFO)
                    ed_mdlg.SaveErrorDlg(self, fname, err)
                    ctrl[1].GetDocument().ResetAll()
            else:
                ret_val = self.OnSaveAs(ID_SAVEAS, ctrl[0], ctrl[1])
                if ret_val:
                    self.AddFileToHistory(ctrl[1].GetFileName())
コード例 #12
0
    def OnSave(self, evt):
        """Save Current or All Buffers
        @param evt: Event fired that called this handler
        @type evt: wxMenuEvent

        """
        e_id = evt.GetId()
        ctrls = list()
        if e_id == ID_SAVE:
            ctrls = [(self.nb.GetPageText(self.nb.GetSelection()),
                      self.nb.GetCurrentCtrl())]
        elif e_id == ID_SAVEALL:
            for page in xrange(self.nb.GetPageCount()):
                if issubclass(
                        self.nb.GetPage(page).__class__,
                        wx.stc.StyledTextCtrl):
                    ctrls.append(
                        (self.nb.GetPageText(page), self.nb.GetPage(page)))
        else:
            evt.Skip()
            return

        for ctrl in ctrls:
            fname = util.GetFileName(ctrl[1].GetFileName())
            if fname != '':
                fpath = ctrl[1].GetFileName()
                result = ctrl[1].SaveFile(fpath)
                if result:
                    self.PushStatusText(_("Saved File: %s") % fname, SB_INFO)
                else:
                    self.PushStatusText(
                        _("ERROR: Failed to save %s") % fname, SB_INFO)
                    dlg = wx.MessageDialog(self,
                                           _("Failed to save file: %s\n\nError:\n%d") % \
                                             (fname, result), _("Save Error"),
                                            wx.OK | wx.ICON_ERROR)
                    dlg.ShowModal()
                    dlg.Destroy()
            else:
                ret_val = self.OnSaveAs(ID_SAVEAS, ctrl[0], ctrl[1])
                if ret_val:
                    self.AddFileToHistory(ctrl[1].GetFileName())
        self.UpdateToolBar()
コード例 #13
0
ファイル: ed_main.py プロジェクト: wangdyna/wxPython
    def OnSaveAs(self, evt, title=u'', page=None):
        """Save File Using a new/different name
        @param evt: Event fired that called this handler
        @type evt: wxMenuEvent

        """
        if page:
            ctrl = page
        else:
            ctrl = self.nb.GetCurrentCtrl()

        if title == u'':
            title = os.path.split(ctrl.GetFileName())[1]

        dlg = wx.FileDialog(self, _("Choose a Save Location"),
                            os.path.dirname(ctrl.GetFileName()),
                            title.lstrip("*"),
                            ''.join(syntax.GenFileFilters()),
                            wx.SAVE | wx.OVERWRITE_PROMPT)

        if dlg.ShowModal() == wx.ID_OK:
            path = dlg.GetPath()
            dlg.Destroy()

            result = ctrl.SaveFile(path)
            fname = util.GetFileName(ctrl.GetFileName())
            if not result:
                err = ctrl.GetDocument().GetLastError()
                ed_mdlg.SaveErrorDlg(self, fname, err)
                ctrl.GetDocument().ResetAll()
                self.PushStatusText(
                    _("ERROR: Failed to save %s") % fname, SB_INFO)
            else:
                self.PushStatusText(_("Saved File As: %s") % fname, SB_INFO)
                self.SetTitle("%s - file://%s" % (fname, ctrl.GetFileName()))
                self.nb.SetPageText(self.nb.GetSelection(), fname)
                self.nb.GetCurrentCtrl().FindLexer()
                self.nb.UpdatePageImage()
            return result
        else:
            dlg.Destroy()
コード例 #14
0
    def ChangePage(self, pg_num):
        """Change the page and focus to the the given page id
        @param pg_num: Page number to change 

        """
        if self.GetSelection() != pg_num:
            self.SetSelection(pg_num)

        # Get the window that is the current page
        window = self.GetPage(pg_num)
        window.SetFocus()
        self.control = window
        fname = self.control.GetFileName()

        # Update Frame Title
        if fname == "":
            fname = self.GetPageText(pg_num)
        self.frame.SetTitle("%s - file://%s" %
                            (util.GetFileName(fname), fname))
        if not self.frame.IsExiting():
            ed_msg.PostMessage(ed_msg.EDMSG_UI_NB_CHANGED, (self, pg_num))
コード例 #15
0
    def DocDuplicated(self, path):
        """Check for if the given path is open elswhere and duplicate the
        docpointer.
        @param path: string

        """
        doc = ed_msg.RequestResult(ed_msg.EDREQ_DOCPOINTER, [self, path])
        if hasattr(doc, 'GetDocPointer'):
            self.GetTopLevelParent().Freeze()
            nbuff = ed_editv.EdEditorView(self, wx.ID_ANY)
            nbuff.SetDocPointer(doc.GetDocPointer())
            doc = doc.GetDocument()
            nbuff.SetDocument(doc)
            doc.AddModifiedCallback(nbuff.FireModified)
            nbuff.FindLexer()
            nbuff.EmptyUndoBuffer()

            if Profile_Get('SAVE_POS'):
                pos = self.DocMgr.GetPos(nbuff.GetFileName())
                nbuff.GotoPos(pos)
                nbuff.ScrollToColumn(0)

            filename = util.GetFileName(path)
            self.AddPage(nbuff, filename)

            self.frame.SetTitle(nbuff.GetTitleString())
            self.SetPageText(self.GetSelection(), filename)
            self.LOG("[ed_pages][evt] Opened Page: %s" % filename)

            # Set tab image
            self.SetPageImage(self.GetSelection(), str(nbuff.GetLangId()))

            # Refocus on selected page
            self.control = nbuff
            self.GoCurrentPage()
            self.GetTopLevelParent().Thaw()
            ed_msg.PostMessage(ed_msg.EDMSG_FILE_OPENED, nbuff.GetFileName())
            return True
        else:
            return False
コード例 #16
0
    def OnSaveAs(self, evt, title=u'', page=None):
        """Save File Using a new/different name
        @param evt: Event fired that called this handler
        @type evt: wxMenuEvent

        """
        dlg = wx.FileDialog(self, _("Choose a Save Location"), u'',
                            title.lstrip(u"*"),
                            ''.join(syntax.GenFileFilters()),
                            wx.SAVE | wx.OVERWRITE_PROMPT)

        if dlg.ShowModal() == wx.ID_OK:
            path = dlg.GetPath()
            dlg.Destroy()

            if page:
                ctrl = page
            else:
                ctrl = self.nb.GetCurrentCtrl()

            result = ctrl.SaveFile(path)
            fname = util.GetFileName(ctrl.GetFileName())
            if not result:
                dlg = wx.MessageDialog(self, _("Failed to save file: %s\n\nError:\n%d") % \
                                       (fname, result), _("Save Error"),
                                       wx.OK | wx.ICON_ERROR)
                dlg.ShowModal()
                dlg.Destroy()
                self.PushStatusText(
                    _("ERROR: Failed to save %s") % fname, SB_INFO)
            else:
                self.PushStatusText(_("Saved File As: %s") % fname, SB_INFO)
                self.SetTitle(u"%s - file://%s" % (fname, ctrl.GetFileName()))
                self.nb.SetPageText(self.nb.GetSelection(), fname)
                self.nb.GetCurrentCtrl().FindLexer()
                self.nb.UpdatePageImage()
            return result
        else:
            dlg.Destroy()
コード例 #17
0
ファイル: style_editor.py プロジェクト: zendbit/peppy
    def OpenPreviewFile(self, file_lbl):
        """Opens a file using the names in the Syntax Files choice
        control as a search query.
        @param file_lbl: name of file to open in test data directory

        """
        fname = file_lbl.replace(u" ", u"_").replace(u"/", u"_").lower()
        fname = fname.replace('#', 'sharp')
        try:
            #            fname = glob.glob(ed_glob.CONFIG['TEST_DIR'] + fname + ".*")[0]
            fname = glob.glob(
                os.path.join(util.GetResourceDir('tests'), fname) + ".*")[0]
        except IndexError:
            self.LOG('[style_editor][err] File %s Does not exist' % fname)
            return False

        #self.preview.SetFileName(fname)
        self.preview.dirname = util.GetPathName(fname)
        self.preview.filename = util.GetFileName(fname)
        self.preview.ClearAll()
        self.preview.LoadFile(fname)
        self.preview.FindLexer()
        self.preview.EmptyUndoBuffer()
        return True