📄 perl_codegen.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 + -