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

📄 perleditor.py

📁 wxPython的基本示例程序
💻 PY
字号:
#----------------------------------------------------------------------------# Name:         PerlEditor.py# Purpose:      Perl Script Editor for pydocview tbat uses the Styled Text Control## Author:       Morgan Hua## Created:      1/5/04# CVS-ID:       $Id: PerlEditor.py,v 1.5 2006/04/20 06:25:58 RD Exp $# Copyright:    (c) 2005 ActiveGrid, Inc.# License:      wxWindows License#----------------------------------------------------------------------------import wximport stringimport STCTextEditorimport CodeEditorclass PerlDocument(CodeEditor.CodeDocument):    passclass PerlView(CodeEditor.CodeView):    def GetCtrlClass(self):        """ Used in split window to instantiate new instances """        return PerlCtrl    def GetAutoCompleteHint(self):        pos = self.GetCtrl().GetCurrentPos()        if pos == 0:            return None, None                    validLetters = string.letters + string.digits + '_/'        word = ''        while (True):            pos = pos - 1            if pos < 0:                break            char = chr(self.GetCtrl().GetCharAt(pos))            if char not in validLetters:                break            word = char + word                    return None, word    def GetAutoCompleteDefaultKeywords(self):        return PERLKEYWORDSclass PerlService(CodeEditor.CodeService):    def __init__(self):        CodeEditor.CodeService.__init__(self)class PerlCtrl(CodeEditor.CodeCtrl):    def __init__(self, parent, id=-1, style=wx.NO_FULL_REPAINT_ON_RESIZE):        CodeEditor.CodeCtrl.__init__(self, parent, id, style)        self.SetLexer(wx.stc.STC_LEX_PERL)        self.SetKeyWords(0, string.join(PERLKEYWORDS))    def CanWordWrap(self):        return True    def SetViewDefaults(self):        CodeEditor.CodeCtrl.SetViewDefaults(self, configPrefix = "Perl", hasWordWrap = True, hasTabs = True, hasFolding=True)    def GetFontAndColorFromConfig(self):        return CodeEditor.CodeCtrl.GetFontAndColorFromConfig(self, configPrefix = "Perl")    def UpdateStyles(self):        CodeEditor.CodeCtrl.UpdateStyles(self)                if not self.GetFont():            return        faces = { 'font' : self.GetFont().GetFaceName(),                  'size' : self.GetFont().GetPointSize(),                  'size2': self.GetFont().GetPointSize() - 2,                  'color' : "%02x%02x%02x" % (self.GetFontColor().Red(), self.GetFontColor().Green(), self.GetFontColor().Blue())                  }        # Perl Styles        self.StyleSetSpec(wx.stc.STC_PL_DEFAULT, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_COMMENTLINE, "face:%(font)s,fore:#007F00,italic,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_NUMBER, "face:%(font)s,fore:#007F7F,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_CHARACTER, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_STRING, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_STRING_Q, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_STRING_QQ, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_STRING_QX, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_STRING_QR, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_STRING_QW, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_BACKTICKS, "face:%(font)s,fore:#7F007F,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_WORD, "face:%(font)s,fore:#00007F,bold,size:%(size)d" % faces) # keyword        self.StyleSetSpec(wx.stc.STC_PL_IDENTIFIER, "face:%(font)s,fore:#%(color)s,face:%(font)s,size:%(size)d" % faces)        # Default        self.StyleSetSpec(wx.stc.STC_PL_ARRAY, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_DATASECTION, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_ERROR, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_HASH, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_HERE_DELIM, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_HERE_Q, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_HERE_QQ, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_HERE_QX, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_LONGQUOTE, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_OPERATOR, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_POD, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_PREPROCESSOR, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_PUNCTUATION, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_REGEX, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_REGSUBST, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_SCALAR, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)        self.StyleSetSpec(wx.stc.STC_PL_SYMBOLTABLE, "face:%(font)s,fore:#000000,face:%(font)s,size:%(size)d" % faces)class PerlOptionsPanel(STCTextEditor.TextOptionsPanel):    def __init__(self, parent, id):        STCTextEditor.TextOptionsPanel.__init__(self, parent, id, configPrefix = "Perl", label = "Perl", hasWordWrap = True, hasTabs = True, hasFolding=True)    def GetIcon(self):        return getPerlIcon()PERLKEYWORDS = [        "abs",        "accept",        "alarm",        "atan2",        "bind",        "binmode",        "bless",        "caller",        "chdir",        "chmod",        "chomp",        "chop",        "chown",        "chr",        "chroot",        "close",        "closedir",        "connect",        "continue",        "cos",        "crypt",        "dbmclose",        "dbmopen",        "defined",        "delete",        "die",        "do",        "dump",        "each",        "endgrent",        "endhostent",        "endnetent",        "endprotoent",        "endpwent",        "endservent",        "eof",        "eval",        "exec",        "exists",        "exit",        "exp",        "fcntl",        "fileno",        "flock",        "fork",        "format",        "formline",        "getc",        "getgrent",        "getgrgid",        "getgrnam",        "gethostbyaddr",        "gethostbyname",        "gethostent",        "getlogin",        "getnetbyaddr",        "getnetbyname",        "getnetent",        "getpeername",        "getpgrp",        "getppid",        "getpriority",        "getprotobyname",        "getprotobynumber",        "getprotoent",        "getpwent",        "getpwnam",        "getpwuid",        "getservbyname",        "getservbyport",        "getservent",        "getsockname",        "getsockopt",        "glob",        "gmtime",        "goto",        "grep",        "hex",        "import",        "index",        "int",        "ioctl",        "join",        "keys",        "kill",        "last",        "lc",        "lcfirst",        "length",        "link",        "listen",        "local",        "localtime",        "log",        "lstat",        "m//",        "map",        "mkdir",        "msgctl",        "msgget",        "msgrcv",        "msgsnd",        "my",        "next",        "no",        "oct",        "open",        "opendir",        "ord",        "pack",        "package",        "pipe",        "pop",        "pos",        "print",        "printf",        "prototype",        "push",        "q/STRING/",        "qq/STRING/",        "quotemeta",        "qw",        "qw/STRING/",        "qx",        "qx/STRING/",        "rand",        "read",        "readdir",        "readline",        "readlink",        "readpipe",        "recv",        "redo",        "ref",        "rename",        "require",        "reset",        "return",        "reverse",        "rewinddir",        "rindex",        "rmdir",        "s///",        "scalar",        "seek",        "seekdir",        "select",        "semctl",        "semget",        "semop",        "send",        "setgrent",        "sethostent",        "setnetent",        "setpgrp",        "setpriority",        "setprotoent",        "setpwent",        "setservent",        "setsockopt",        "shift",        "shmctl",        "shmget",        "shmread",        "shmwrite",        "shutdown",        "sin",        "sleep",        "socket",        "socketpair",        "sort",        "splice",        "split",        "sprintf",        "sqrt",        "srand",        "stat",        "study",        "sub",        "substr",        "symlink",        "syscall",        "sysopen",        "sysread",        "sysseek",        "system",        "syswrite",        "tell",        "telldir",        "tie",        "tied",        "times",        "tr///",        "truncate",        "uc",        "ucfirst",        "umask",        "undef",        "unlink",        "unpack",        "unshift",        "untie",        "use",        "utime",        "values",        "vec",        "wait",        "waitpid",        "wantarray",        "warn",        "write",        "y///",        "eq",        "ne",        "lt",        "le",        "gt",        "ge",        "cmp",        "if",        "else"        "not",        "and",        "xor",        "or",        "if",        "while",        "until",        "for",        "foreach",        "last",        "next",        "redo",        "goto",        "STDIN",        "STDOUT",        "STDERR",        "WHEncE",        "BEGIN",        "END",        "require",        "integer",        "less",        "sigtrap",        "strict",        "subs"    ]#----------------------------------------------------------------------------# Icon Bitmaps - generated by encode_bitmaps.py#----------------------------------------------------------------------------from wx import ImageFromStream, BitmapFromImageimport cStringIOdef getPerlData():    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\x01CIDAT8\x8d\x95\x93\xbfN\x02A\x10\x87\xbf[\xef\x05\xach|\x02m}\x008\\x881Z\xd2\x1a\x13\x0bKx\x02{\xa3\xa13\xc6\xc6\xc6\xd2DZ+s\\\x83\x95\x1d\xa2\&V\x104\x01/p\x01\t\xa0\xe8X\xc0\x9d\x87\xdc^\xf0\x97Lfw3\xdf\xec\xcc\xfe1\\xca\x95\xba0\x95\xeb\xf5\x01h\xb4\xda\x00x\xde\x90\x83\xfd\r\x838\x95+u\xa9\\rDj\x03\x91\xe7\xbe\xc8}wb\xa7\xc5\xb2\xdc\xbe\x89\xe4\x8f\xae\xc4PK\xe8L\\xc5%\xef\x8da{7K\xee\xf0Rt1\xa6\xeb\xf5Y\x01>\xbea\xf45Y\xec\x8e&\xe5\xdf]\\xdb4\xdd\x0e\xaf/-\xed&&\x110\xc0\xfa\x96\xc5\xf1N\x06\x80\xe5\xb5\xac6\x81\\x82y\xb87\x9e\r\xeaT\x8b3s+\x95\x14+\x95\x14\x00\xd5h\xb5\xe9\x8e\xe6a\x7f\\xf70\x14\xf6\xfeXy\xde0\x08\xf2\xe1\xf6gt\xb9V*)v\xc9\t\xae\xd5.9\x86\x19\\x05\x9e\xefe\xe6i\x8dT\xd3\xed\xfc\x0b\x0e\xb7\x00\xd3C\xd4\x95\x1c'\xbf\\x15\x15\xbe\xe3\xc6;l\x9e\xdc\x00\xbf\xfe/`\x97\x1c#|\x0e&@\xb1p\x16\x04>U\\x1fI\x00\x17\xb9<\t\xa0\xc9*\t\x1e\xf4\xa5D\xbd\xeft:-q~\xe1\xbf\xb0\x88b\\x13\x84{\x8d\x9a\x03\xfc\x00\xea\x7f\xa9A\xa7\xc3Vo\x00\x00\x00\x00IEND\xae\B`\x82" def getPerlBitmap():    return BitmapFromImage(getPerlImage())def getPerlImage():    stream = cStringIO.StringIO(getPerlData())    return ImageFromStream(stream)def getPerlIcon():    return wx.IconFromBitmap(getPerlBitmap())

⌨️ 快捷键说明

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