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

📄 lisp_codegen.py

📁 用python写的ide开发环境,巨强大,不过需要wxpython的支持
💻 PY
字号:
# lisp_codegen.py : lisp generator functions for wxMenuBar objects# $Id: lisp_codegen.py,v 1.2 2005/09/25 08:23:40 efuzzyone 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 LispCodeGenerator:    def get_properties_code(self, obj):        prop = obj.properties        plgen = common.code_writers['lisp']        out = []        append = out.append                obj_name = '(slot-%s obj)' % obj.name                bitmapsize = prop.get('bitmapsize')        if bitmapsize:            try:                w, h = [int(i) for i in bitmapsize.split(',')]                append('(wxToolBar_SetToolBitmapSize %s %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('(wxToolBar_SetMargins %s %s %s)\n'                       % (obj_name, w, h))            except:                pass        packing = prop.get('packing')        if packing:            append('(wxToolBar_SetToolPacking %s %s)\n' % (obj_name, packing))        separation = prop.get('separation')        if separation:            append('(wxToolBar_SetToolSeparation %s %s)\n' % (obj_name, separation))        append('(wxToolBar_Realize %s)\n' % obj_name)        return out    def get_init_code(self, obj):        prop = obj.properties        plgen = common.code_writers['lisp']        out = []        append = out.append        tools = obj.properties['toolbar']        ids = []        obj_name = '(slot-%s obj)' % 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 '(wxBitmap:wxBitmap_CreateLoad %s wxBITMAP_TYPE_ANY)' % var            elif bitmap.startswith('code:'):                return '(%s)' % bitmap[5:].strip()            else:                return '(wxBitmap:wxBitmap_CreateLoad %s wxBITMAP_TYPE_ANY)' % \                       plgen.quote_str(bitmap)        for tool in tools:            if tool.id == '---': # item is a separator                append('(wxToolBar_AddSeparator %s)\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('(wxToolBar_AddTool %s %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 Lisp code for the toolbar of a wxFrame.        """        plgen = common.code_writers['lisp']        style = obj.properties.get('style')        if style:            style = style.strip().replace('|',' ')            if style.find(' ') != -1:                style = '(logior wxTB_HORIZONTAL %s)' % style        else:            style = 'wxTB_HORIZONTAL'        if not obj.parent.is_toplevel:            parent = '(slot-%s obj)' % obj.parent.name        else:            parent = '(slot-top-window obj)'        init = [            '\n\t;;; Tool Bar\n',            '(setf (slot-%s obj) (wxToolBar_Create %s -1 -1 -1 -1 -1 %s))\n' % (obj.name, parent, style),                 '(wxFrame_SetToolBar (slot-top-window obj) (slot-%s obj))\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 LispCodeGeneratordef initialize():    common.class_names['EditToolBar'] = 'wxToolBar'    common.toplevels['EditToolBar'] = 1    plgen = common.code_writers.get('lisp')    if plgen:        plgen.add_widget_handler('wxToolBar', LispCodeGenerator())        plgen.add_property_handler('tools', ToolsHandler)

⌨️ 快捷键说明

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