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

📄 perl_codegen.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
字号:
# perl_codegen.py : perl generator functions for wxMenuBar objects# $Id: perl_codegen.py,v 1.11 2005/08/15 08:03:02 crazyinsomniac Exp $## Copyright (c) 2002-2004 D.H. aka crazyinsomniac on sourceforge.net# License: MIT (see license.txt)# THIS PROGRAM COMES WITH NO WARRANTYimport commonfrom tool import *# yayfrom codegen import ToolsHandlerclass PerlCodeGenerator:    def get_properties_code(self, obj):        prop = obj.properties        plgen = common.code_writers['perl']        out = []        append = out.append                if obj.is_toplevel:            obj_name = '$self'        else:            obj_name = '$self->{%s}' % obj.name                bitmapsize = prop.get('bitmapsize')        if bitmapsize:            try:                w, h = [int(i) for i in bitmapsize.split(',')]                append('%s->SetToolBitmapSize(wxSIZE(%s, %s));\n' % \                       (obj_name, w, h))            except:                pass        margins = prop.get('margins')        if margins:            try:                w, h = [int(i) for i in margins.split(',')]                append('%s->SetMargins(%s, %s);\n' % (obj_name, w, h))            except:                pass        packing = prop.get('packing')        if packing:            append('%s->SetToolPacking(%s);\n' % (obj_name, packing))        separation = prop.get('separation')        if separation:            append('%s->SetToolSeparation(%s);\n' % (obj_name, separation))        append('%s->Realize();\n' % obj_name)        return out    def get_init_code(self, obj):        prop = obj.properties        plgen = common.code_writers['perl']        out = []        append = out.append        tools = obj.properties['toolbar']        ids = []               if obj.is_toplevel:            obj_name = '$self'        else:            obj_name = '$self->{%s}' % obj.name        def _get_bitmap(bitmap):            if not bitmap:                return 'wxNullBitmap'            elif bitmap.startswith('var:'):                # this is a variable holding bitmap path                var = bitmap[4:].strip()                if var[0] != "$":                    var = "$" + var                return 'Wx::Bitmap->new(%s, wxBITMAP_TYPE_ANY)' % var            elif bitmap.startswith('code:'):                return '(%s)' % bitmap[5:].strip()            else:                return 'Wx::Bitmap->new(%s, wxBITMAP_TYPE_ANY)' % \                       plgen.quote_path(bitmap)        for tool in tools:            if tool.id == '---': # item is a separator                append('%s->AddSeparator();\n' % obj_name)            else:                name, val = plgen.generate_code_id(None, tool.id)                if not name and (not val or val == '-1'):                    id = 'Wx::NewId()'                else:                    if name: ids.append(name)                    id = val                kinds = ['wxITEM_NORMAL', 'wxITEM_CHECK', 'wxITEM_RADIO']                try:                    kind = kinds[int(tool.type)]                except (IndexError, ValueError):                    kind = 'wxITEM_NORMAL'                bmp1 = _get_bitmap(tool.bitmap1)                bmp2 = _get_bitmap(tool.bitmap2)#                append('%s->AddLabelTool(%s, %s, %s, %s, %s, %s, %s);\n' %                append('%s->AddTool(%s, %s, %s, %s, %s, %s, %s);\n' %                       (obj_name, id, plgen.quote_str(tool.label),                        bmp1, bmp2, kind, plgen.quote_str(tool.short_help),                        plgen.quote_str(tool.long_help)))                return ids + out    def get_code(self, obj):        """\        function that generates Perl code for the menubar of a wxFrame.        """        plgen = common.code_writers['perl']        style = obj.properties.get('style')        if style:            style = 'wxTB_HORIZONTAL|' + style        else:            style = ''        klass = obj.base;        if klass != obj.klass : klass = obj.klass;         else: klass = klass.replace('wx','Wx::',1);        init = [            '\n# Tool Bar\n',            '$self->{%s} = %s->new($self, -1, wxDefaultPosition, \wxDefaultSize, %s);\n' % (obj.name, klass, style),                 '$self->SetToolBar($self->{%s});\n' % obj.name             ]        init.extend(self.get_init_code(obj))        init.append('# Tool Bar end\n')        return init, self.get_properties_code(obj), []# end of class PerlCodeGeneratordef initialize():    common.class_names['EditToolBar'] = 'wxToolBar'    common.toplevels['EditToolBar'] = 1    plgen = common.code_writers.get('perl')    if plgen:        plgen.add_widget_handler('wxToolBar', PerlCodeGenerator())        plgen.add_property_handler('tools', ToolsHandler)

⌨️ 快捷键说明

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