📄 core.py
字号:
# Name: core.py# Purpose: Core components# Author: Roman Rolinsky <rolinsky@femagsoft.com># Created: 31.05.2007# RCS-ID: $Id: core.py 49455 2007-10-26 10:58:11Z ROL $from component import *import imagesimport _bitmaps as bitmapsTRACE('*** creating core components')# Set panel imagesManager.panelImages['Windows'] = images.getToolPanel_WindowsImage()Manager.panelImages['Menus'] = images.getToolPanel_MenusImage()Manager.panelImages['Sizers'] = images.getToolPanel_SizersImage()Manager.panelImages['Panels'] = images.getToolPanel_PanelsImage()Manager.panelImages['Gizmos'] = images.getToolPanel_GizmosImage()### wxFrameclass Frame(Container): def getChildObject(self, node, obj, index): # Do not count toolbar and menubar objects = filter(is_object, node.childNodes) for i,o in enumerate(objects): if o.getAttribute('class') == 'wxMenuBar': if i == index: return obj.GetMenuBar() elif i < index: index -= 1 elif o.getAttribute('class') == 'wxToolBar': if i == index: return obj.GetToolBar() elif i < index: index -= 1 return Container.getChildObject(self, node, obj, index)c = Frame('wxFrame', ['frame','window','top_level'], ['pos', 'size', 'title', 'centered'], image=images.getTreeFrameImage())c.isTopLevel = Truec.addStyles('wxDEFAULT_FRAME_STYLE', 'wxDEFAULT_DIALOG_STYLE', 'wxCAPTION', 'wxSTAY_ON_TOP', 'wxSYSTEM_MENU', 'wxTHICK_FRAME', 'wxRESIZE_BORDER', 'wxRESIZE_BOX', 'wxCLOSE_BOX', 'wxMAXIMIZE_BOX', 'wxMINIMIZE_BOX', 'wxFRAME_NO_TASKBAR', 'wxFRAME_SHAPED', 'wxFRAME_TOOL_WINDOW', 'wxFRAME_FLOAT_ON_PARENT', 'wxNO_3D', 'wxTAB_TRAVERSAL')c.addExStyles('wxFRAME_EX_CONTEXTHELP', 'wxWS_EX_VALIDATE_RECURSIVELY', 'wxFRAME_EX_METAL')c.addEvents('EVT_SIZE', 'EVT_CLOSE', 'EVT_MENU_HIGHLIGHT', 'EVT_ICONIZE', 'EVT_MAXIMIZE', 'EVT_ACTIVATE', 'EVT_UPDATE_UI')Manager.register(c)Manager.setMenu(c, 'TOP_LEVEL', 'frame', 'wxFrame', 10)Manager.setTool(c, 'Windows', bitmaps.getwxFrameBitmap(), (0,0))### wxDialogc = Container('wxDialog', ['frame','window','top_level'], ['pos', 'size', 'title', 'centered', 'icon'], image=images.getTreeFrameImage())c.isTopLevel = Truec.setSpecial('icon', BitmapAttribute)c.addStyles('wxDEFAULT_DIALOG_STYLE', 'wxDEFAULT_FRAME_STYLE', 'wxCAPTION', 'wxSTAY_ON_TOP', 'wxSYSTEM_MENU', 'wxTHICK_FRAME', 'wxRESIZE_BORDER', 'wxRESIZE_BOX', 'wxCLOSE_BOX', 'wxMAXIMIZE_BOX', 'wxMINIMIZE_BOX', 'wxDIALOG_MODAL', 'wxDIALOG_MODELESS', 'wxDIALOG_NO_PARENT', 'wxNO_3D', 'wxTAB_TRAVERSAL')c.addExStyles('wxDIALOG_EX_CONTEXTHELP', 'wxWS_EX_VALIDATE_RECURSIVELY', 'wxDIALOG_EX_METAL')c.addEvents('EVT_INIT_DIALOG', 'EVT_SIZE', 'EVT_CLOSE', 'EVT_ICONIZE', 'EVT_MAXIMIZE', 'EVT_ACTIVATE', 'EVT_UPDATE_UI')Manager.register(c)Manager.setMenu(c, 'TOP_LEVEL', 'dialog', 'wxDialog', 20)Manager.setTool(c, 'Windows', bitmaps.getwxDialogBitmap(), (0,1))### wxPanelc = Container('wxPanel', ['window', 'top_level', 'control'], ['pos', 'size'], image=images.getTreePanelImage())c.addStyles('wxNO_3D', 'wxTAB_TRAVERSAL')Manager.register(c)Manager.setMenu(c, 'TOP_LEVEL', 'panel', 'wxPanel', 30)Manager.setMenu(c, 'container', 'panel', 'wxPanel', 10)Manager.setTool(c, 'Windows', bitmaps.getwxPanelBitmap(), (0,2))### wxWizardclass Wizard(Container): genericStyles = genericExStyles = [] def makeTestWin(self, res, name): wiz = wx.wizard.PreWizard() res.LoadOnObject(wiz, view.frame, STD_NAME, self.klass) # Find and select first page firstPage = None for w in wiz.GetChildren(): if isinstance(w, wx.wizard.WizardPage): firstPage = w break if firstPage: wiz.RunWizard(w) else: wx.LogMessage('Wizard is empty') wiz.Destroy() return None, Nonec = Wizard('wxWizard', ['wizard', 'top_level'], ['pos', 'title', 'bitmap'], image=images.getTreePanelImage())c.addExStyles('wxWIZARD_EX_HELPBUTTON')c.setSpecial('bitmap', BitmapAttribute)Manager.register(c)Manager.setMenu(c, 'TOP_LEVEL', 'wizard', 'wxWizard', 40)Manager.setTool(c, 'Windows', bitmaps.getwxWizardBitmap(), (1,0), (1,2))### wxWizardPagec = Container('wxWizardPage', ['wizard_page', 'window'], ['bitmap'], image=images.getTreePanelImage())c.setSpecial('bitmap', BitmapAttribute)Manager.register(c)Manager.setMenu(c, 'container', 'wizard page', 'wxWizardPage')### wxWizardPageSimplec = Container('wxWizardPageSimple', ['wizard_page', 'window'], ['bitmap'], image=images.getTreePanelImage())c.setSpecial('bitmap', BitmapAttribute)Manager.register(c)Manager.setMenu(c, 'container', 'simple wizard page', 'wxWizardPageSimple')### wxPropertySheetDialogclass ParamButtons(params.ParamBinaryOr): '''Button flags.''' values = ['wxOK', 'wxCANCEL', 'wxYES', 'wxNO', 'wxHELP', 'wxNO_DEFAULT']class ParamSheetStyle(params.ParamBinaryOr): '''Button flags.''' values = ['wxPROPSHEET_DEFAULT', 'wxPROPSHEET_NOTEBOOK', 'wxPROPSHEET_CHOICEBOOK', 'wxPROPSHEET_LISTBOOK', # Tool book needs an image list# 'wxPROPSHEET_TOOLBOOK', 'wxPROPSHEET_BUTTONTOOLBOOK', 'wxPROPSHEET_TREEBOOK', 'wxPROPSHEET_SHRINKTOFIT']c = SmartContainer('wxPropertySheetDialog', ['frame','book','window','top_level'], ['pos', 'size', 'title', 'centered', 'icon', 'sheetstyle', 'buttons'], params={'buttons': ParamButtons, 'sheetstyle': ParamSheetStyle}, implicit_klass='propertysheetpage', implicit_page='PropertySheetPage', implicit_attributes=['label', 'selected', 'bitmap'], implicit_params={'label': params.ParamText, 'selected': params.ParamBool}, image=images.getTreeDialogImage())c.isTopLevel = Truec.setSpecial('bitmap', BitmapAttribute)c.setSpecial('icon', BitmapAttribute)c.addStyles('wxDEFAULT_DIALOG_STYLE', 'wxCAPTION', 'wxFRAME_SHAPED', 'wxTAB_TRAVERSAL', 'wxSTAY_ON_TOP', 'wxSYSTEM_MENU', 'wxRESIZE_BORDER', 'wxCLOSE_BOX', 'wxMAXIMIZE_BOX', 'wxMINIMIZE_BOX', 'wxDIALOG_MODAL', 'wxDIALOG_MODELESS', 'wxDIALOG_NO_PARENT', 'wxNO_3D', 'wxTAB_TRAVERSAL')c.addExStyles('wxDIALOG_EX_CONTEXTHELP', 'wxWS_EX_VALIDATE_RECURSIVELY', 'wxDIALOG_EX_METAL')c.addEvents('EVT_INIT_DIALOG', 'EVT_SIZE', 'EVT_CLOSE', 'EVT_ICONIZE', 'EVT_MAXIMIZE', 'EVT_ACTIVATE', 'EVT_UPDATE_UI')Manager.register(c)Manager.setMenu(c, 'TOP_LEVEL', 'propery sheet dialog', 'wxPropertySheetDialog', 50)Manager.setTool(c, 'Windows', bitmaps.getwxPropertySheetDialogBitmap(), (1,1))### wxBoxSizerc = BoxSizer('wxBoxSizer', ['sizer'], ['orient'], defaults={'orient': 'wxVERTICAL'}, images=[images.getTreeSizerVImage(), images.getTreeSizerHImage()])Manager.register(c)Manager.setMenu(c, 'sizer', 'box sizer', 'wxBoxSizer', 10)Manager.setTool(c, 'Sizers', pos=(0,0))### wxStaticBoxSizerc = BoxSizer('wxStaticBoxSizer', ['sizer'], ['label', 'orient'], defaults={'orient': 'wxVERTICAL'}, images=[images.getTreeSizerVImage(), images.getTreeSizerHImage()])Manager.register(c)Manager.setMenu(c, 'sizer', 'static box sizer', 'wxStaticBoxSizer', 20)Manager.setTool(c, 'Sizers', pos=(0,2))### wxGridSizerc = Sizer('wxGridSizer', ['sizer'], ['cols', 'rows', 'vgap', 'hgap'], defaults={'cols': '2', 'rows': '2'}, image=images.getTreeSizerGridImage())Manager.register(c)Manager.setMenu(c, 'sizer', 'grid sizer', 'wxGridSizer', 30)Manager.setTool(c, 'Sizers', pos=(0,1))### wxFlexGridSizerc = Sizer('wxFlexGridSizer', ['sizer'], ['cols', 'rows', 'vgap', 'hgap', 'growablecols', 'growablerows'], defaults={'cols': '2', 'rows': '2'}, image=images.getTreeSizerFlexGridImage())c.setSpecial('growablecols', MultiAttribute)c.setParamClass('growablecols', params.ParamIntList)c.setSpecial('growablerows', MultiAttribute)c.setParamClass('growablerows', params.ParamIntList)Manager.register(c)Manager.setMenu(c, 'sizer', 'flex grid sizer', 'wxFlexGridSizer', 40)Manager.setTool(c, 'Sizers', pos=(1,0))### wxGridBagSizerc = Sizer('wxGridBagSizer', ['sizer'], ['vgap', 'hgap', 'growablecols', 'growablerows'], image=images.getTreeSizerGridBagImage(), implicit_attributes=['option', 'flag', 'border', 'minsize', 'ratio', 'cellpos', 'cellspan'])c.setSpecial('growablecols', MultiAttribute)c.setParamClass('growablecols', params.ParamIntList)c.setSpecial('growablerows', MultiAttribute)c.setParamClass('growablerows', params.ParamIntList)c.setImplicitParamClass('cellpos', params.ParamPosSize)c.setImplicitParamClass('cellspan', params.ParamPosSize)Manager.register(c)Manager.setMenu(c, 'sizer', 'grid bag sizer', 'wxGridBagSizer', 50)Manager.setTool(c, 'Sizers', pos=(1,1))### wxStdDialogButtonSizerclass StdDialogButtonSizer(Sizer): def getChildObject(self, node, obj, index): # This sizer orders buttons by fixed ordering, so we must # get the ID to find them try: n = filter(is_object, node.childNodes)[index] n = filter(is_object, n.childNodes)[0] id = n.getAttribute('name') except IndexError: return None items = filter(wx.SizerItem.IsWindow, obj.GetChildren()) for item in items: w = item.GetWindow() if w.GetName() == id: return w return Nonec = StdDialogButtonSizer('wxStdDialogButtonSizer', ['btnsizer'], [], implicit_klass='button', implicit_attributes=[])Manager.register(c)Manager.setMenu(c, 'sizer', 'dialog button sizer', 'wxStdDialogButtonSizer', 60)#Manager.setTool(c, 'Sizers', pos=(0,2))### spacerc = SimpleComponent('spacer', ['spacer'], ['size', 'option', 'flag', 'border'])c.hasName = FalseManager.register(c)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -