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

📄 perl_codegen.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
字号:
# perl_codegen.py : perl generator functions for wxMenuBar objects# $Id: perl_codegen.py,v 1.11 2007/06/23 10:57:58 agriggio Exp $## Copyright (c) 2002-2004 D.H. aka crazyinsomniac on sourceforge.net# License: MIT (see license.txt)# THIS PROGRAM COMES WITH NO WARRANTYimport commonfrom MenuTree import *from codegen import MenuHandlerclass PerlCodeGenerator:    def get_properties_code(self, obj):        return []            def get_init_code(self, obj):        prop = obj.properties        plgen = common.code_writers['perl']        out = []        append = out.append        menus = obj.properties['menubar']        ids = []        # We need to keep track of tmpnames used.        tmpsused = {}        def append_items(menu, items):            for item in items:                if item.name == '---': # item is a separator                    append('%s->AppendSeparator();\n' % menu)                    continue                name, val = plgen.generate_code_id(None, item.id)                if not name and ( not val or val == '-1'):                    id = 'Wx::NewId()'                else:                    if name: ids.append(name)                    id = val                if item.children:                    if item.name:                        name = item.name                    else:                        name = '%s_sub' % menu                        if not tmpsused.has_key(name):                            tmpsused[name] = 1                            append('my %s;\n' % name)                    append('%s = Wx::Menu->new();\n' % name)                    append_items(name, item.children)                    append('%s->Append(%s, %s, %s, %s);\n' %                           (menu, id, plgen.quote_str(item.label),                            name, plgen.quote_str(item.help_str)))                else:                    item_type = 0                    if item.checkable == '1':                        item_type = 1                    elif item.radio == '1':                        item_type = 2                                            if item.name: itemname = '$self->{%s} = ' % item.name                    else: itemname = ''                                        if item_type:                        append('%s%s->Append(%s, %s, %s, %s);\n' %                               (itemname, menu, id, plgen.quote_str(item.label),                                plgen.quote_str(item.help_str), item_type))                    else:                        append('%s%s->Append(%s, %s, %s);\n' %                               (itemname, menu, id, plgen.quote_str(item.label),                                plgen.quote_str(item.help_str)))        #print 'menus = %s' % menus        if obj.is_toplevel: obj_name = '$self'        else: obj_name = '$self->{%s}' % obj.name        append('my $wxglade_tmp_menu;\n') # NOTE below name =        for m in menus:            menu = m.root            if menu.name: name = '$self->{%s}' % menu.name            else: name = '$wxglade_tmp_menu'            append('%s = Wx::Menu->new();\n' % name)            if menu.children:                append_items(name, menu.children)            append('%s->Append(%s, %s);\n' %                   (obj_name, name, plgen.quote_str(menu.label)))        return ids + out    def get_code(self, obj):        """\        function that generates Perl code for the menubar of a wxFrame.        """        klass = obj.base;        if klass != obj.klass : klass = obj.klass;         else: klass = klass.replace('wx','Wx::',1);        plgen = common.code_writers['perl']        init = [ '\n\n', '# Menu Bar\n\n', '$self->{%s} = %s->new();\n' %                 (obj.name, klass) ]##                  '$self->SetMenuBar($self->{%s});\n' % obj.name ]        init.extend(self.get_init_code(obj))        init.append('$self->SetMenuBar($self->{%s});\n' % obj.name)        init.append('\n# Menu Bar end\n\n')        return init, [], []    # 2004-12-05    def get_events(self, obj):        pygen = common.code_writers['perl']        cn = pygen.cn        out = []        #print 'get_events', obj.properties['menubar']        def do_get(item):            ret = []            if item.name:                #val = '#self.%s' % item.name # see py_codegen.py, ~480                val = item.name            else:                name, val = pygen.generate_code_id(None, item.id)                if not val: val = '-1' # but this is wrong anyway...            if item.handler:                ret.append((val, 'EVT_MENU', item.handler))            if item.children:                for c in item.children:                    ret.extend(do_get(c))            return ret                for menu in obj.properties['menubar']:            out.extend(do_get(menu.root))        return out# end of class PerlCodeGeneratordef initialize():    common.class_names['EditMenuBar'] = 'wxMenuBar'    common.toplevels['EditMenuBar'] = 1    plgen = common.code_writers.get('perl')    if plgen:        plgen.add_widget_handler('wxMenuBar', PerlCodeGenerator())        plgen.add_property_handler('menus', MenuHandler)

⌨️ 快捷键说明

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