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

📄 sizers_codegen.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
字号:
# sizers_codegen.py: code generation functions for the various wxSizerS# $Id: sizers_codegen.py,v 1.16 2007/03/27 07:02:06 agriggio Exp $## Copyright (c) 2002-2007 Alberto Griggio <agriggio@users.sourceforge.net># License: MIT (see license.txt)# THIS PROGRAM COMES WITH NO WARRANTYimport commonclass PythonBoxSizerBuilder:    def get_code(self, obj):        pygen = common.code_writers['python']        cn = pygen.cn        orient = obj.properties.get('orient', 'wxHORIZONTAL')        init = [('%s = ' + cn('wxBoxSizer') + '(%s)\n') % \                (obj.name, cn(orient))]        layout = []        if obj.is_toplevel:            if not obj.parent.is_toplevel: parent = 'self.%s' % obj.parent.name            else: parent = 'self'            #layout.append('%s.SetAutoLayout(True)\n' % parent)            layout.append('%s.SetSizer(%s)\n' % (parent, obj.name))            if not obj.parent.properties.has_key('size') and \                   obj.parent.is_toplevel:                layout.append('%s.Fit(%s)\n' % (obj.name, parent))            if obj.parent.properties.get('sizehints', False):                layout.append('%s.SetSizeHints(%s)\n' % (obj.name, parent))        return init, [], layout# end of class PythonBoxSizerBuilderclass PythonStaticBoxSizerBuilder:    def get_code(self, obj):        pygen = common.code_writers['python']        cn = pygen.cn        orient = obj.properties.get('orient', 'wxHORIZONTAL')        label = obj.properties.get('label', '')        if not obj.parent.is_toplevel: parent = 'self.%s' % obj.parent.name        else: parent = 'self'        init = [            ('self.%s_staticbox = ' + cn('wxStaticBox') + '(%s, -1, %s)\n') %            (obj.name, parent, pygen.quote_str(label)),            ('%s = ' + cn('wxStaticBoxSizer') + '(self.%s_staticbox, %s)\n') %            (obj.name, obj.name, cn(orient))            ]        layout = []        if obj.is_toplevel:            #layout.append('%s.SetAutoLayout(True)\n' % parent)            layout.append('%s.SetSizer(%s)\n' % (parent, obj.name))            if not obj.parent.properties.has_key('size') and \                   obj.parent.is_toplevel:                layout.append('%s.Fit(%s)\n' % (obj.name, parent))            if obj.parent.properties.get('sizehints', False):                layout.append('%s.SetSizeHints(%s)\n' % (obj.name, parent))        return init, [], layout# end of class PythonStaticBoxSizerBuilderclass PythonGridSizerBuilder:    klass = 'wxGridSizer'    def get_code(self, obj):        pygen = common.code_writers['python']        cn = pygen.cn        props = obj.properties        if not obj.parent.is_toplevel: parent = 'self.%s' % obj.parent.name        else: parent = 'self'        rows = props.get('rows', '0')        cols = props.get('cols', '0')        vgap = props.get('vgap', '0')        hgap = props.get('hgap', '0')        init = [ '%s = %s(%s, %s, %s, %s)\n' %                 (obj.name, cn(self.klass), rows, cols, vgap, hgap) ]        layout = []        if obj.is_toplevel:            #layout.append('%s.SetAutoLayout(True)\n' % parent)            layout.append('%s.SetSizer(%s)\n' % (parent, obj.name))            if not obj.parent.properties.has_key('size') and \                   obj.parent.is_toplevel:                layout.append('%s.Fit(%s)\n' % (obj.name, parent))            if obj.parent.properties.get('sizehints', False):                layout.append('%s.SetSizeHints(%s)\n' % (obj.name, parent))        return init, [], layout   # end of class PythonGridSizerBuilderclass PythonFlexGridSizerBuilder(PythonGridSizerBuilder):    klass = 'wxFlexGridSizer'    def get_code(self, obj):        init, p, layout = PythonGridSizerBuilder.get_code(self, obj)        props = obj.properties        if props.has_key('growable_rows'):            for r in props['growable_rows'].split(','):                layout.append('%s.AddGrowableRow(%s)\n' %                              (obj.name, r.strip()))        if props.has_key('growable_cols'):            for r in props['growable_cols'].split(','):                layout.append('%s.AddGrowableCol(%s)\n' %                              (obj.name, r.strip()))        return init, p, layout# end of class PythonFlexGridSizerBuilderclass CppBoxSizerBuilder:    def get_code(self, obj):        """\        generates the C++ code for wxBoxSizer objects.        """        orient = obj.properties.get('orient', 'wxHORIZONTAL')        init = ['wxBoxSizer* %s = new wxBoxSizer(%s);\n' % (obj.name, orient)]        layout = []        if obj.is_toplevel:            if not obj.parent.is_toplevel: parent = '%s->' % obj.parent.name            else: parent = ''            #layout.append('%sSetAutoLayout(true);\n' % parent)            layout.append('%sSetSizer(%s);\n' % (parent, obj.name))            if not obj.parent.properties.has_key('size'):                if not obj.parent.is_toplevel: parent = '%s' % obj.parent.name                else: parent = 'this'                if obj.parent.is_toplevel:                    layout.append('%s->Fit(%s);\n' % (obj.name, parent))            if obj.parent.properties.get('sizehints', False):                layout.append('%s->SetSizeHints(%s);\n' % (obj.name, parent))        return init, [], [], layout# end of class CppBoxSizerBuilderclass CppStaticBoxSizerBuilder:    def get_code(self, obj):        """\        generates the C++ code for wxStaticBoxSizer objects.        """        cppgen = common.code_writers['C++']        orient = obj.properties.get('orient', 'wxHORIZONTAL')        label = obj.properties.get('label', '')        if not obj.parent.is_toplevel: parent = '%s' % obj.parent.name        else: parent = 'this'        init = [            '%s_staticbox = new wxStaticBox(%s, -1, %s);\n' %            (obj.name, parent, cppgen.quote_str(label)),            'wxStaticBoxSizer* %s = new wxStaticBoxSizer(%s_staticbox, %s);\n'            % (obj.name, obj.name, orient)]        layout = []        if obj.is_toplevel:            if not obj.parent.is_toplevel: parent = '%s->' % obj.parent.name            else: parent = ''            #layout.append('%sSetAutoLayout(true);\n' % parent)            layout.append('%sSetSizer(%s);\n' % (parent, obj.name))            if not obj.parent.properties.has_key('size'):                if not obj.parent.is_toplevel: parent = '%s' % obj.parent.name                else: parent = 'this'                if obj.parent.is_toplevel:                    layout.append('%s->Fit(%s);\n' % (obj.name, parent))            if obj.parent.properties.get('sizehints', False):                layout.append('%s->SetSizeHints(%s);\n' % (obj.name, parent))        return init, [], [], layout# end of class CppStaticBoxSizerBuilderclass CppGridSizerBuilder:    klass = 'wxGridSizer'    def get_code(self, obj):        props = obj.properties        rows = props.get('rows', '0')        cols = props.get('cols', '0')        vgap = props.get('vgap', '0')        hgap = props.get('hgap', '0')        init = [ '%s* %s = new %s(%s, %s, %s, %s);\n' % \                 (self.klass, obj.name, self.klass, rows, cols, vgap, hgap) ]        layout = []        if obj.is_toplevel:            if not obj.parent.is_toplevel: parent = '%s->' % obj.parent.name            else: parent = ''            #layout.append('%sSetAutoLayout(true);\n' % parent)            layout.append('%sSetSizer(%s);\n' % (parent, obj.name))            if not obj.parent.properties.has_key('size'):                if not obj.parent.is_toplevel: parent = '%s' % obj.parent.name                else: parent = 'this'                if obj.parent.is_toplevel:                    layout.append('%s->Fit(%s);\n' % (obj.name, parent))            if obj.parent.properties.get('sizehints', False):                layout.append('%s->SetSizeHints(%s);\n' % (obj.name, parent))        return init, [], [], layout   # end of class CppGridSizerBuilderclass CppFlexGridSizerBuilder(CppGridSizerBuilder):    klass = 'wxFlexGridSizer'    def get_code(self, obj):        """\        function used to generate the C++ code for wxFlexGridSizer objects.        """        init, ids, p, layout = CppGridSizerBuilder.get_code(self, obj)        props = obj.properties        if props.has_key('growable_rows'):            for r in props['growable_rows'].split(','):                layout.append('%s->AddGrowableRow(%s);\n' %                              (obj.name, r.strip()))        if props.has_key('growable_cols'):            for r in props['growable_cols'].split(','):                layout.append('%s->AddGrowableCol(%s);\n' %                              (obj.name, r.strip()))        return init, ids, p, layout# end of class CppFlexGridSizerBuilderdef xrc_wxFlexGridSizer_builder(obj):    xrcgen = common.code_writers['XRC']    class FlexGridSizerXrcObject(xrcgen.DefaultXrcObject):        def write_property(self, name, val, outfile, tabs):            if val and name in ('growable_rows', 'growable_cols'):                if name == 'growable_rows': name2 = 'growablerows'                else: name2 = 'growablecols'                outfile.write('    '*tabs + '<%s>%s</%s>\n' %                                  (name2, val, name2))            else:                xrcgen.DefaultXrcObject.write_property(self, name, val,                                                       outfile, tabs)    # end of class FlexGridSizerXrcObject    return FlexGridSizerXrcObject(obj)    def initialize():    cn = common.class_names    cn['EditBoxSizer'] = 'wxBoxSizer'    cn['EditStaticBoxSizer'] = 'wxStaticBoxSizer'    cn['EditGridSizer'] = 'wxGridSizer'    cn['EditFlexGridSizer'] = 'wxFlexGridSizer'    pygen = common.code_writers.get("python")    if pygen:        awh = pygen.add_widget_handler        awh('wxBoxSizer', PythonBoxSizerBuilder())        awh('wxStaticBoxSizer', PythonStaticBoxSizerBuilder())        awh('wxGridSizer', PythonGridSizerBuilder())        awh('wxFlexGridSizer', PythonFlexGridSizerBuilder())    cppgen = common.code_writers.get("C++")    if cppgen:        awh = cppgen.add_widget_handler        awh('wxBoxSizer', CppBoxSizerBuilder())        awh('wxStaticBoxSizer', CppStaticBoxSizerBuilder())        awh('wxGridSizer', CppGridSizerBuilder())        awh('wxFlexGridSizer', CppFlexGridSizerBuilder())    xrcgen = common.code_writers.get("XRC")    if xrcgen:        xrcgen.add_widget_handler('wxFlexGridSizer',                                  xrc_wxFlexGridSizer_builder)

⌨️ 快捷键说明

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