⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findservice.py

📁 wxPython的基本示例程序
💻 PY
📖 第 1 页 / 共 2 页
字号:
            wholeWord = match whole word only            matchCase = match case            regExpr = use regular expressions in search pattern            wrap = return to top/bottom of file on search            upDown = search up or down from current cursor position            replaceString = replace string        """        config = wx.ConfigBase_Get()        config.Write(FIND_MATCHPATTERN, findString)        config.WriteInt(FIND_MATCHCASE, matchCase)        config.WriteInt(FIND_MATCHWHOLEWORD, wholeWord)        if replaceString != None:            config.Write(FIND_MATCHREPLACE, replaceString)        if regExpr != None:            config.WriteInt(FIND_MATCHREGEXPR, regExpr)        if wrap != None:            config.WriteInt(FIND_MATCHWRAP, wrap)        if upDown != None:            config.WriteInt(FIND_MATCHUPDOWN, upDown)    def GetFindString(self):        """ Load the search pattern from registry """        return wx.ConfigBase_Get().Read(FIND_MATCHPATTERN, "")    def GetReplaceString(self):        """ Load the replace pattern from registry """        return wx.ConfigBase_Get().Read(FIND_MATCHREPLACE, "")    def GetFlags(self):        """ Load search parameters from registry """        config = wx.ConfigBase_Get()        flags = 0        if config.ReadInt(FIND_MATCHWHOLEWORD, False):            flags = flags | wx.FR_WHOLEWORD        if config.ReadInt(FIND_MATCHCASE, False):            flags = flags | wx.FR_MATCHCASE        if config.ReadInt(FIND_MATCHUPDOWN, False):            flags = flags | wx.FR_DOWN        if config.ReadInt(FIND_MATCHREGEXPR, False):            flags = flags | FindService.FR_REGEXP        if config.ReadInt(FIND_MATCHWRAP, False):            flags = flags | FindService.FR_WRAP        return flagsclass FindDialog(wx.Dialog):    """ Find Dialog with regular expression matching and wrap to top/bottom of file. """    def __init__(self, parent, id, title, size, findString=None):        wx.Dialog.__init__(self, parent, id, title, size=size)        config = wx.ConfigBase_Get()        borderSizer = wx.BoxSizer(wx.VERTICAL)        gridSizer = wx.GridBagSizer(SPACE, SPACE)        lineSizer = wx.BoxSizer(wx.HORIZONTAL)        lineSizer.Add(wx.StaticText(self, -1, _("Find what:")), 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, SPACE)        if not findString:            findString = config.Read(FIND_MATCHPATTERN, "")        self._findCtrl = wx.TextCtrl(self, -1, findString, size=(200,-1))        lineSizer.Add(self._findCtrl, 0)        gridSizer.Add(lineSizer, pos=(0,0), span=(1,2))        choiceSizer = wx.BoxSizer(wx.VERTICAL)        self._wholeWordCtrl = wx.CheckBox(self, -1, _("Match whole word only"))        self._wholeWordCtrl.SetValue(config.ReadInt(FIND_MATCHWHOLEWORD, False))        self._matchCaseCtrl = wx.CheckBox(self, -1, _("Match case"))        self._matchCaseCtrl.SetValue(config.ReadInt(FIND_MATCHCASE, False))        self._regExprCtrl = wx.CheckBox(self, -1, _("Regular expression"))        self._regExprCtrl.SetValue(config.ReadInt(FIND_MATCHREGEXPR, False))        self._wrapCtrl = wx.CheckBox(self, -1, _("Wrap"))        self._wrapCtrl.SetValue(config.ReadInt(FIND_MATCHWRAP, False))        choiceSizer.Add(self._wholeWordCtrl, 0, wx.BOTTOM, SPACE)        choiceSizer.Add(self._matchCaseCtrl, 0, wx.BOTTOM, SPACE)        choiceSizer.Add(self._regExprCtrl, 0, wx.BOTTOM, SPACE)        choiceSizer.Add(self._wrapCtrl, 0)        gridSizer.Add(choiceSizer, pos=(1,0), span=(2,1))        self._radioBox = wx.RadioBox(self, -1, _("Direction"), choices = ["Up", "Down"])        self._radioBox.SetSelection(config.ReadInt(FIND_MATCHUPDOWN, 1))        gridSizer.Add(self._radioBox, pos=(1,1), span=(2,1))        buttonSizer = wx.BoxSizer(wx.VERTICAL)        findBtn = wx.Button(self, FindService.FINDONE_ID, _("Find Next"))        findBtn.SetDefault()        wx.EVT_BUTTON(self, FindService.FINDONE_ID, self.OnActionEvent)        cancelBtn = wx.Button(self, wx.ID_CANCEL)        wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnClose)        BTM_SPACE = HALF_SPACE        if wx.Platform == "__WXMAC__":            BTM_SPACE = SPACE        buttonSizer.Add(findBtn, 0, wx.BOTTOM, BTM_SPACE)        buttonSizer.Add(cancelBtn, 0)        gridSizer.Add(buttonSizer, pos=(0,2), span=(3,1))        borderSizer.Add(gridSizer, 0, wx.ALL, SPACE)        self.Bind(wx.EVT_CLOSE, self.OnClose)        self.SetSizer(borderSizer)        self.Fit()        self._findCtrl.SetFocus()    def SaveConfig(self):        """ Save find patterns and search flags to registry. """        findService = wx.GetApp().GetService(FindService)        if findService:            findService.SaveFindConfig(self._findCtrl.GetValue(),                                       self._wholeWordCtrl.IsChecked(),                                       self._matchCaseCtrl.IsChecked(),                                       self._regExprCtrl.IsChecked(),                                       self._wrapCtrl.IsChecked(),                                       self._radioBox.GetSelection(),                                       )    def DoClose(self):        self.SaveConfig()        self.Destroy()    def OnClose(self, event):        findService = wx.GetApp().GetService(FindService)        if findService:            findService.OnFindClose(event)        self.DoClose()    def OnActionEvent(self, event):        self.SaveConfig()        if wx.GetApp().GetDocumentManager().GetFlags() & wx.lib.docview.DOC_MDI:            if wx.GetApp().GetTopWindow().ProcessEvent(event):                return True        else:            view = wx.GetApp().GetDocumentManager().GetLastActiveView()            if view and view.ProcessEvent(event):                return True        return Falseclass FindReplaceDialog(FindDialog):    """ Find/Replace Dialog with regular expression matching and wrap to top/bottom of file. """    def __init__(self, parent, id, title, size, findString=None):        wx.Dialog.__init__(self, parent, id, title, size=size)        config = wx.ConfigBase_Get()        borderSizer = wx.BoxSizer(wx.VERTICAL)        gridSizer = wx.GridBagSizer(SPACE, SPACE)        gridSizer2 = wx.GridBagSizer(SPACE, SPACE)        gridSizer2.Add(wx.StaticText(self, -1, _("Find what:")), flag=wx.ALIGN_CENTER_VERTICAL, pos=(0,0))        if not findString:            findString = config.Read(FIND_MATCHPATTERN, "")        self._findCtrl = wx.TextCtrl(self, -1, findString, size=(200,-1))        gridSizer2.Add(self._findCtrl, pos=(0,1))        gridSizer2.Add(wx.StaticText(self, -1, _("Replace with:")), flag=wx.ALIGN_CENTER_VERTICAL, pos=(1,0))        self._replaceCtrl = wx.TextCtrl(self, -1, config.Read(FIND_MATCHREPLACE, ""), size=(200,-1))        gridSizer2.Add(self._replaceCtrl, pos=(1,1))        gridSizer.Add(gridSizer2, pos=(0,0), span=(1,2))        choiceSizer = wx.BoxSizer(wx.VERTICAL)        self._wholeWordCtrl = wx.CheckBox(self, -1, _("Match whole word only"))        self._wholeWordCtrl.SetValue(config.ReadInt(FIND_MATCHWHOLEWORD, False))        self._matchCaseCtrl = wx.CheckBox(self, -1, _("Match case"))        self._matchCaseCtrl.SetValue(config.ReadInt(FIND_MATCHCASE, False))        self._regExprCtrl = wx.CheckBox(self, -1, _("Regular expression"))        self._regExprCtrl.SetValue(config.ReadInt(FIND_MATCHREGEXPR, False))        self._wrapCtrl = wx.CheckBox(self, -1, _("Wrap"))        self._wrapCtrl.SetValue(config.ReadInt(FIND_MATCHWRAP, False))        choiceSizer.Add(self._wholeWordCtrl, 0, wx.BOTTOM, SPACE)        choiceSizer.Add(self._matchCaseCtrl, 0, wx.BOTTOM, SPACE)        choiceSizer.Add(self._regExprCtrl, 0, wx.BOTTOM, SPACE)        choiceSizer.Add(self._wrapCtrl, 0)        gridSizer.Add(choiceSizer, pos=(1,0), span=(2,1))        self._radioBox = wx.RadioBox(self, -1, _("Direction"), choices = ["Up", "Down"])        self._radioBox.SetSelection(config.ReadInt(FIND_MATCHUPDOWN, 1))        gridSizer.Add(self._radioBox, pos=(1,1), span=(2,1))        buttonSizer = wx.BoxSizer(wx.VERTICAL)        findBtn = wx.Button(self, FindService.FINDONE_ID, _("Find Next"))        findBtn.SetDefault()        wx.EVT_BUTTON(self, FindService.FINDONE_ID, self.OnActionEvent)        cancelBtn = wx.Button(self, wx.ID_CANCEL)        wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnClose)        replaceBtn = wx.Button(self, FindService.REPLACEONE_ID, _("Replace"))        wx.EVT_BUTTON(self, FindService.REPLACEONE_ID, self.OnActionEvent)        replaceAllBtn = wx.Button(self, FindService.REPLACEALL_ID, _("Replace All"))        wx.EVT_BUTTON(self, FindService.REPLACEALL_ID, self.OnActionEvent)                BTM_SPACE = HALF_SPACE        if wx.Platform == "__WXMAC__":            BTM_SPACE = SPACE                    buttonSizer.Add(findBtn, 0, wx.BOTTOM, BTM_SPACE)        buttonSizer.Add(replaceBtn, 0, wx.BOTTOM, BTM_SPACE)        buttonSizer.Add(replaceAllBtn, 0, wx.BOTTOM, BTM_SPACE)        buttonSizer.Add(cancelBtn, 0)        gridSizer.Add(buttonSizer, pos=(0,2), span=(3,1))        borderSizer.Add(gridSizer, 0, wx.ALL, SPACE)        self.Bind(wx.EVT_CLOSE, self.OnClose)        self.SetSizer(borderSizer)        self.Fit()        self._findCtrl.SetFocus()            def SaveConfig(self):        """ Save find/replace patterns and search flags to registry. """        findService = wx.GetApp().GetService(FindService)        if findService:            findService.SaveFindConfig(self._findCtrl.GetValue(),                                       self._wholeWordCtrl.IsChecked(),                                       self._matchCaseCtrl.IsChecked(),                                       self._regExprCtrl.IsChecked(),                                       self._wrapCtrl.IsChecked(),                                       self._radioBox.GetSelection(),                                       self._replaceCtrl.GetValue()                                       )#----------------------------------------------------------------------------# Menu Bitmaps - generated by encode_bitmaps.py#----------------------------------------------------------------------------from wx import ImageFromStream, BitmapFromImageimport cStringIOdef getFindData():    return \'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\\x00\x01\xb1IDAT8\x8d\xa5\x93=o\xd3P\x14\x86\x1f\xa7\x11\x95<\xdc\xc6\xecN+5\[\x86B\x99\xacLQ2Zr[\x89\xa1\xfd\x0b%\x95\x90\x00\xf1\x03\x80\x01\x98\x80\\x19G\xac\x0cm\xff@Y\xd9:\xd9Ck\x94\xd6\xddb\x94\x9b\x98\xc8\xd2e1C\xe5\x8b\\xdd\x14\x96\xbe\xdb=\x1f\xefy\xef\xf90\x8c\xda\x12wA\xbd\xfc\x18\xfa\x9fs\\x80\xf9|\x0e\xc0\x93\xc1\x81\x01\xf0\xe6\xf5\xab\x1c`:\x9d\x02\xf0\xf6\xdd{\\xa3\xc8\xa9\xddd\xec\xf5z\xb4Z\xeb\x00\x1c\x1f\x1d\xe6\x85\xdd\xf3<\x06\x83\\xc1\x82\xbd\xa2 \x0cCL\xd3d<\x1e\x13\xc71\xb6m\x030\x1a\x8d\x08\x82\x00\x80\\xb3\xb3s:\x9d\x8e\xce\xa9(h6\x9b8\x8e\x83m\xdb4\x1a\r\x82 \xe0\xc5\xf3g\xb9\eY\xb4\xdbm\x1c\xc7Y\xe8\x81&\xf8\xf4\xf1C\xde\xedv+\xce\x97Owx\xfc\xe8k\xc5\\xb6\xb7\xb7\x8b\xef\x0foW \x84\xe0\xea\xea\x02\xa5\x94n\x18\x80\x94\x92\xd9\l\x02@\x96e\x95>\xd4nVO\xd3\xb9\x0e\xba\r\xa6i\xd2\xef\xf7\xf0\xfd!\xc7G\x87\y\xed:)\xd5\x01J\xfd\xd6c\xfc~\x9a\xfc\x93\xe8\xf2\xf2\x02(Ma6\x9b \x84@)\\xa5\t}\xff\x0b\xd0\'I~R\x14\xca\xb2L\xfb\x97\x97\xef-\xeeA!_J\x89\xeb\xba\\xb8\xae\xab\xbf\x06\x7f\x97\xacP[\x87\xeb9\x0b!H\x92\ta\x18"\xa5\xd4U\xbd\\xadm\xe3\xe1\x83\x8d<\x8a~\x90\xa6\xbf\x88\xe3\x18)\xa5&\xa9\x03X\x96E\xab\\xb5\x8em7\xf5\xc2\x94\xb1\xba\xba\xc6\xe6\xe6\x06++\xf7\x89\xa2\xa8\xe2\xd3\=89\xf9Va.\x14\x14\xd8\xdf?X VJa\x14\xd7X\xde\xef2\xbc\xadm\xe3\x7f~\xe3\xae\\xe7\xfc\x07\x84;\xc5\x82\xa1m&\x95\x00\x00\x00\x00IEND\xaeB`\x82' def getFindBitmap():    return BitmapFromImage(getFindImage())def getFindImage():    stream = cStringIO.StringIO(getFindData())    return ImageFromStream(stream)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -