def test_lib_agw_flatmenuCtor(self): self._popUpMenu = FM.FlatMenu() # First we create the sub-menu item subMenu = FM.FlatMenu() subSubMenu = FM.FlatMenu() # Create the menu items menuItem = FM.FlatMenuItem(self._popUpMenu, 20001, "First Menu Item", "", wx.ITEM_CHECK) self._popUpMenu.AppendItem(menuItem) menuItem = FM.FlatMenuItem(self._popUpMenu, 20002, "Sec&ond Menu Item", "", wx.ITEM_CHECK) self._popUpMenu.AppendItem(menuItem) menuItem = FM.FlatMenuItem(self._popUpMenu, wx.ID_ANY, "Checkable-Disabled Item", "", wx.ITEM_CHECK) menuItem.Enable(False) self._popUpMenu.AppendItem(menuItem) menuItem = FM.FlatMenuItem(self._popUpMenu, 20003, "Third Menu Item", "", wx.ITEM_CHECK) self._popUpMenu.AppendItem(menuItem) self._popUpMenu.AppendSeparator()
def __init__(self, Parent_): """ Конструктор. """ flatmenu.FlatMenu.__init__(self) self._Parent = Parent_ # Контрол дерева проекта prj_tree_ctrl = self._Parent.getParentRoot().getParent() # Обновление подсистемы refresh_id = wx.NewId() item = flatmenu.FlatMenuItem(self, refresh_id, u'Обновить подсистему', u'Обновить подсистему', normalBmp=imglib.imgRefreshPage) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRefreshSubSys, id=refresh_id) self.AppendSeparator() # Переподключить подсистему link_id = wx.NewId() # Связь с подсистемой item = flatmenu.FlatMenuItem(self, link_id, u'Связь с подсистемой', u'Связь с подсистемой', normalBmp=imglib.imgEdtPluginIn) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnLinkSubSys, id=link_id) # Отключение подсистемы unlink_id = wx.NewId() item = flatmenu.FlatMenuItem(self, unlink_id, u'Отключить подсистему', u'Отключить подсистему', normalBmp=imglib.imgEdtPluginOut) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnUnlinkSubSys, id=unlink_id)
def CreatePopupMenu(self): if not self._popUpMenu: self._popUpMenu = flatmenu.FlatMenu() menuItem = flatmenu.FlatMenuItem(self._popUpMenu, self.ID_NEW_ZIP, _("Add Zip File"), "", wx.ITEM_NORMAL) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.AddNewFilePath, id=self.ID_NEW_ZIP) self._popUpMenu.AppendItem(menuItem) menuItem = flatmenu.FlatMenuItem(self._popUpMenu, self.ID_NEW_EGG, _("Add Egg File"), "", wx.ITEM_NORMAL) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.AddNewFilePath, id=self.ID_NEW_EGG) self._popUpMenu.AppendItem(menuItem) menuItem = flatmenu.FlatMenuItem(self._popUpMenu, self.ID_NEW_WHEEL, _("Add Wheel File"), "", wx.ITEM_NORMAL) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.AddNewFilePath, id=self.ID_NEW_WHEEL) self._popUpMenu.AppendItem(menuItem)
def __init__(self, Parent_): """ Конструктор. """ flatmenu.FlatMenu.__init__(self) self._Parent = Parent_ # Контрол дерева проекта prj_tree_ctrl = self._Parent.getParentRoot().getParent() # Дополнительные ресурсы if self._Parent.include_nodes: # Дополнительные ресурсы для добавления # Внутренний реестр ресурсов для доступа к ним по идентификатору self._node_reg = {} for node_class in self._Parent.include_nodes: node = node_class(self._Parent) # Обработка меню добавления ресурса res_id = wx.NewId() # Зарегистрировать ресурс во внутреннем реестре self._node_reg[res_id] = node item = flatmenu.FlatMenuItem(self, res_id, node.label, node.label, normalBmp=node.img) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnAddSubSys, id=res_id) self.AppendSeparator() # Обновление подсистем refresh_id = wx.NewId() item = flatmenu.FlatMenuItem(self, refresh_id, u'Обновить подсистему', u'Обновить подсистему', normalBmp=imglib.imgRefreshPage) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRefreshSubSys, id=refresh_id)
def _create(self, menuitem_handler=None): """ Create component palette menu. :param menuitem_handler: Menuitem activate handler. :return: wx.FlatMenu object or None if error. """ self.menuitem2component_spc = dict() package_names = list(self.component_palette.keys()) package_names.sort() for package_name in package_names: package_menu = flatmenu.FlatMenu() # log_func.debug(u'Component palette. Package name <%s>' % package_name) component_specifications = self.component_palette[package_name] component_specifications = sorted( component_specifications, key=lambda component_spc: component_spc.get('type', '')) for component_spc in component_specifications: icon = component_spc.get(spc_func.ICON_ATTR_NAME, None) bmp = wxbitmap_func.createIconBitmap(icon) component_type = component_spc.get('type', 'UndefinedType') menuitem_id = wx.NewId() if bmp is None: menuitem = flatmenu.FlatMenuItem(package_menu, menuitem_id, label=component_type) else: menuitem = flatmenu.FlatMenuItem(package_menu, menuitem_id, label=component_type, normalBmp=bmp) if isinstance( self.content, (list, tuple)) and component_type not in self.content: menuitem.Enable(False) package_menu.AppendItem(menuitem) # log_func.debug(u'Component palette. Component type <%s>' % component_type) if self._parent and menuitem_handler is None: self._parent.Bind(wx.EVT_MENU, self.onSelectComponentMenuItem, id=menuitem_id) elif self._parent and menuitem_handler: self._parent.Bind(wx.EVT_MENU, menuitem_handler, id=menuitem_id) else: log_func.warning( u'Be sure to specify the parent window when calling the component selection menu' ) self.menuitem2component_spc[menuitem_id] = component_spc menu_id = wx.NewId() self.AppendMenu(menu_id, package_name, package_menu) return self
def CreateLongPopupMenu(self): popMenu = FM.FlatMenu() sub = FM.FlatMenu() #----------------------------------------------- # Flat Menu test #----------------------------------------------- for ii in range(30): if ii == 0: menuItem = FM.FlatMenuItem(popMenu, wx.ID_ANY, "Menu Item #%ld" % (ii + 1), "", wx.ITEM_NORMAL, sub) popMenu.AppendItem(menuItem) for k in range(5): menuItem = FM.FlatMenuItem( sub, wx.ID_ANY, "Sub Menu Item #%ld" % (k + 1)) sub.AppendItem(menuItem) else: menuItem = FM.FlatMenuItem(popMenu, wx.ID_ANY, "Menu Item #%ld" % (ii + 1)) popMenu.AppendItem(menuItem) return popMenu
def CreateAreaMenu(self): self.area_dropdownmenu = flatmenu.FlatMenu() undockpanel_menuitem = flatmenu.FlatMenuItem(self.area_dropdownmenu, ID_MENU_UNDOCKPANEL, _("Undock panel"), "", wx.ITEM_NORMAL) self.area_dropdownmenu.AppendItem(undockpanel_menuitem) hidepanel_menuitem = flatmenu.FlatMenuItem(self.area_dropdownmenu, ID_MENU_HIDEPANEL, _("Hide panel"), "", wx.ITEM_NORMAL) self.area_dropdownmenu.AppendItem(hidepanel_menuitem)
def memke_menu(self, menubar, menulist): for item in menulist: menu = FM.FlatMenu() for pos in item[1]: menuitem = FM.FlatMenuItem(menu, pos[1], pos[0], pos[0], wx.ITEM_NORMAL) menu.AppendItem(menuitem) menubar.Append(menu, item[0])
def __init__(self, *args, **kwargs): wx.Panel.__init__(self, *args, **kwargs) self._comps = {} self.app = wx.GetApp() self.filter = pm.PandaNode # Build display filter menu. fileMenu = fm.FlatMenu() item = fm.FlatMenuItem(fileMenu, DISPLAY_NODEPATHS, '&NodePaths Only', '', wx.ITEM_CHECK) item.Check() fileMenu.AppendItem(item) self.fm = fm.FlatMenuBar(self, -1, 16, 1, options=fmr.FM_OPT_IS_LCD) self.fm.Append(fileMenu, '&Display') self.fm.GetRendererManager().SetTheme(fm.StyleVista) ln = wx.StaticLine(self, -1, style=wx.LI_HORIZONTAL) # Bind menu controls self.Bind(fm.EVT_FLAT_MENU_SELECTED, self.OnFlatMenuSelected, id=DISPLAY_NODEPATHS) # Build tree control self.tc = CustomTreeCtrl(self, -1, agwStyle=ct.TR_EDIT_LABELS | ct.TR_HIDE_ROOT | ct.TR_FULL_ROW_HIGHLIGHT | ct.TR_NO_LINES | ct.TR_HAS_BUTTONS | ct.TR_TWIST_BUTTONS | ct.TR_MULTIPLE) self.tc.AddRoot('root') # Bind tree control events self.tc.Bind(wx.EVT_TREE_BEGIN_LABEL_EDIT, self.OnTreeBeginLabelEdit) self.tc.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnTreeEndLabelEdit) self.tc.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick) self.tc.Bind(wx.EVT_KEY_UP, p3d.wx.OnKeyUp) self.tc.Bind(wx.EVT_KEY_DOWN, p3d.wx.OnKeyDown) self.tc.Bind(wx.EVT_LEFT_UP, p3d.wx.OnLeftUp) self.tc.Bind(wx.EVT_MIDDLE_DOWN, self.OnMiddleDown) # Build tree control drop target self.dt = CustomDropTarget(['filePath', 'nodePath'], self) self.tc.SetDropTarget(self.dt) # Bind publisher events pub.subscribe(self.OnUpdate, 'Update') # Build sizers self.bs1 = wx.BoxSizer(wx.VERTICAL) self.bs1.Add(self.fm, 0, wx.EXPAND) self.bs1.Add(ln, 0, wx.EXPAND) self.bs1.Add(self.tc, 1, wx.EXPAND) self.SetSizer(self.bs1)
def appendMenu(self, FlatMenu_): """ Добавить меню. @param FlatMenu_: Объект меню. """ if FlatMenu_ is None: return None id = wx.NewId() label = FlatMenu_.getLabel() menu_item = flatmenu.FlatMenuItem(self, id, label, '', wx.ITEM_NORMAL, FlatMenu_) self.AppendItem(menu_item) return menu_item
def CreateContextMenu(self): """ Creates the context menu. """ self._contextMenu = flatmenu.FlatMenu() # If there is an active node, then we know # that there shouldn't be any other nodes # selected, thus we handle the active node first. if self._activeNode != None: # Do not allow the output node to be # deleted or duplicated at all. if self._activeNode.IsOutputNode() != True: duplicate_menuitem = flatmenu.FlatMenuItem( self._contextMenu, ID_CONTEXTMENU_DUPLICATENODE, "Duplicate\tShift+D", "", wx.ITEM_NORMAL) self._contextMenu.AppendItem(duplicate_menuitem) delete_menuitem = flatmenu.FlatMenuItem( self._contextMenu, ID_CONTEXTMENU_DELETENODE, "Delete\tDel", "", wx.ITEM_NORMAL) self._contextMenu.AppendItem(delete_menuitem) else: if self._selectedNodes != []: deletenodes_menuitem = flatmenu.FlatMenuItem( self._contextMenu, ID_CONTEXTMENU_DELETENODES, "Delete Selected\tDel", "", wx.ITEM_NORMAL) self._contextMenu.AppendItem(deletenodes_menuitem) selectallnodes_menuitem = flatmenu.FlatMenuItem( self._contextMenu, ID_CONTEXTMENU_SELECTALLNODES, "Select All", "", wx.ITEM_NORMAL) self._contextMenu.AppendItem(selectallnodes_menuitem) deselectallnodes_menuitem = flatmenu.FlatMenuItem( self._contextMenu, ID_CONTEXTMENU_DESELECTALLNODES, "Deselect All", "", wx.ITEM_NORMAL) self._contextMenu.AppendItem(deselectallnodes_menuitem)
def __init__(self, Parent_): """ Конструктор. """ flatmenu.FlatMenu.__init__(self) self._Parent = Parent_ # Контрол дерева проекта prj_tree_ctrl = self._Parent.getParentRoot().getPrjTreeCtrl() # Копирование ресурсов из импортированных подсистемм copy_id = wx.NewId() item = flatmenu.FlatMenuItem(self, copy_id, u'Копировать', u'Копировать', normalBmp=imglib.imgEdtMnuCopy) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnCopyRes, id=copy_id)
def onNodePopup(self, event): """ Вызов всплывающего меню узла. """ if not self.readonly: popup_menu = flatmenu.FlatMenu() popup_menuitem_id = wx.NewId() item = flatmenu.FlatMenuItem(popup_menu, popup_menuitem_id, u'Сгенерировать модуль формы...', u'Сгенерировать модуль формы...', normalBmp=imglib.imgPy) popup_menu.AppendItem(item) ctrl = self._root.getParent() ctrl.Bind(wx.EVT_MENU, self.onGenFormModuleMenuItem, id=popup_menuitem_id) popup_menu.Popup(wx.GetMousePosition(), ctrl)
def __init__(self): wx.Frame.__init__(self, None, title="Gimel Studio", size=(1000, 800)) self.appdata = AppData(self) self.renderer = Renderer(self) # Set the program icon self.SetIcon(ICON_GIMELSTUDIO_ICO.GetIcon()) # Create main sizer self.mainSizer = wx.BoxSizer(wx.VERTICAL) # Create the menubar self._menubar = flatmenu.FlatMenuBar(self, wx.ID_ANY, 40, 6, options=0) # Set the dark theme rm = self._menubar.GetRendererManager() theme = rm.AddRenderer(artproviders.UIMenuBarRenderer()) rm.SetTheme(theme) # Init menus file_menu = flatmenu.FlatMenu() view_menu = flatmenu.FlatMenu() render_menu = flatmenu.FlatMenu() window_menu = flatmenu.FlatMenu() help_menu = flatmenu.FlatMenu() # File self.openprojectfile_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Open Project\tCtrl+O", helpString="Open and load a Gimel Studio project file", kind=wx.ITEM_NORMAL, subMenu=None, normalBmp=ICON_NODEPROPERTIES_PANEL.GetBitmap()) self.saveprojectfile_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Save Project...\tCtrl+S", helpString="Save the current project file", kind=wx.ITEM_NORMAL, subMenu=None) self.saveprojectfileas_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Save Project As...\tCtrl+Shift+S", helpString="Save the current project as a Gimel Studio project", kind=wx.ITEM_NORMAL, subMenu=None) self._menubar.AddSeparator() self.exportasimage_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Export Image As...\tShift+E", helpString="Export rendered composite image to a file", kind=wx.ITEM_NORMAL, subMenu=None) self._menubar.AddSeparator() self.quit_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Quit\tShift+Q", helpString="Quit Gimel Studio", kind=wx.ITEM_NORMAL, subMenu=None, normalBmp=ICON_NODEPROPERTIES_PANEL.GetBitmap()) # Append menu items to menus file_menu.AppendItem(self.openprojectfile_menuitem) file_menu.AppendItem(self.saveprojectfile_menuitem) file_menu.AppendItem(self.saveprojectfileas_menuitem) file_menu.AppendItem(self.exportasimage_menuitem) file_menu.AppendItem(self.quit_menuitem) # Append menus to the menubar self._menubar.Append(file_menu, "File") self._menubar.Append(view_menu, "View") self._menubar.Append(render_menu, "Render") self._menubar.Append(window_menu, "Window") self._menubar.Append(help_menu, "Help") # Add menubar to main sizer self.mainSizer.Add(self._menubar, 0, wx.EXPAND) # Window manager self._mgr = AUIManager(self) self._mgr.SetArtProvider(artproviders.UIDockArt()) art = self._mgr.GetArtProvider() extra_flags = aui.AUI_MGR_LIVE_RESIZE | aui.AUI_MGR_ALLOW_ACTIVE_PANE self._mgr.SetAGWFlags(self._mgr.GetAGWFlags() ^ extra_flags) art.SetMetric(aui.AUI_DOCKART_CAPTION_SIZE, 29) art.SetMetric(aui.AUI_DOCKART_GRIPPER_SIZE, 3) art.SetMetric(aui.AUI_DOCKART_SASH_SIZE, 6) art.SetMetric(aui.AUI_DOCKART_PANE_BORDER_SIZE, 0) art.SetMetric(aui.AUI_DOCKART_GRADIENT_TYPE, aui.AUI_GRADIENT_NONE) art.SetColour(aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR, wx.Colour("#424242")) art.SetColour(aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR, wx.Colour("#4D4D4D")) art.SetColour(aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR, wx.Colour("#fff")) art.SetColour(aui.AUI_DOCKART_SASH_COLOUR, wx.Colour("#232323")) self.imageviewport_pnl = ImageViewportPanel(self) self.prop_pnl = NodePropertiesPanel(self, size=(350, 500)) registry = { 'image_node': ImageNode, 'mix_node': MixNode, 'output_node': OutputNode, 'blur_node': BlurNode } self.nodegraph_pnl = NodeGraphPanel(self, registry, size=(100, 100)) # Add panes self._mgr.AddPane( self.nodegraph_pnl, aui.AuiPaneInfo().Name('nodegraph').CaptionVisible( False).Bottom().CloseButton(visible=False).BestSize(750, 800)) self._mgr.AddPane( self.prop_pnl, aui.AuiPaneInfo().Name('nodeproperties').Right().CaptionVisible( False).CloseButton(visible=False).BestSize(750, 500)) self._mgr.AddPane( self.imageviewport_pnl, aui.AuiPaneInfo().Name('imageviewport').CaptionVisible( False).Center().CloseButton(visible=False).BestSize(750, 500)) # self._mgr.AddPane( # layer_pnl, # aui.AuiPaneInfo() # .Name('layers') # .Caption('Layers') # .Left() # .CloseButton(visible=False) # .Icon(ICON_LAYERS.GetBitmap()) # .BestSize(750, 500) # ) # Maximize the window & tell the AUI window # manager to "commit" all the changes just made, etc self.Maximize() self._menubar.PositionAUI(self._mgr) self._mgr.Update() self._menubar.Refresh()
def __init__(self, Parent_): """ Конструктор. """ flatmenu.FlatMenu.__init__(self) self._Parent = Parent_ # Контрол дерева проекта prj_tree_ctrl = self._Parent.getRoot().getParent() # Новый проект self.newPrjID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.newPrjID, u'Новый проект', u'Новый проект', normalBmp=imglib.imgNewPrj) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnNew, id=self.newPrjID) # Открыть self.openID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.openID, u'Открыть', u'Открыть', normalBmp=imglib.imgFolderOpen) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnOpen, id=self.openID) # Последний открытый проект pth = ini.loadParamINI(PRJ_INI_FILE, 'PRJ', 'LastOpenedPaths') if pth: self.lastOpenID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.lastOpenID, u'Последний открытый проект: %s' % pth, u'Последний открытый проект', normalBmp=imglib.imgFolderOpen) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnLastOpen, id=self.lastOpenID) # Список открытых ранее проектов prj_paths = ini.loadParamINIValue(PRJ_INI_FILE, 'PRJ', 'OpenedPaths') if prj_paths: prj_submenu = flatmenu.FlatMenu() for prj_path in prj_paths: if prj_path != pth: item_id = wx.NewId() item = flatmenu.FlatMenuItem(prj_submenu, item_id, prj_path, u'Проект', normalBmp=imglib.imgFolderOpen) prj_submenu.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnOpenPrj, id=item_id) self.AppendSubMenu(prj_submenu, u'Ранее открытые проекты') # Определен проект открыт уже или нет? prj_none = self._Parent.isOpened() io_prnt.outLog(u'Проект открыт <%s>' % self._Parent.isOpened()) # 'Сохранить' self.saveID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.saveID, u'Сохранить', u'Сохранить', normalBmp=imglib.imgSave) self.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnSave, id=self.saveID) # Обновить self.refreshID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.refreshID, u'Обновить', u'Обновить', normalBmp=imglib.imgRefreshPage) self.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRefresh, id=self.refreshID) self.AppendSeparator() # Запустить self.runID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.runID, u'Выполнить', u'Выполнить', normalBmp=imglib.imgPlay) self.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRun, id=self.runID) # Отладка self.debugID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.debugID, u'Отладка', u'Отладка', normalBmp=imglib.imgDebug) self.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnDebug, id=self.debugID) self.AppendSeparator() # 'Редактировать' self.editID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.editID, u'Редактировать', u'Редактировать', normalBmp=imglib.imgEdit) self.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnEdit, id=self.editID) self.editIniID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.editIniID, u'Параметры проекта', u'Параметры проекта', normalBmp=imglib.imgProperty) self.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnEditIni, id=self.editIniID) self.AppendSeparator() # 'Переименовать' self.renameID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.renameID, u'Переименовать', u'Переименовать', normalBmp=imglib.imgRename) self.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRename, id=self.renameID) self.AppendSeparator() # Подменю инструментов tool_submenu = flatmenu.FlatMenu() # 'Создать инсталяционный пакет' if wx.Platform == '__WXMSW__': self.installID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.installID, _('Install package'), _('Install package'), normalBmp=imglib.imgDemo) tool_submenu.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnMakeInstall, id=self.installID) # 'Создать демо-проект' self.demoID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.demoID, u'Демо', u'Демо', normalBmp=imglib.imgDemo) tool_submenu.AppendItem(item) item.Enable(False) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnMakeDemo, id=self.demoID) # 'Создать публикацию' self.publicID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.publicID, u'Публикация', u'Публикация', normalBmp=imglib.imgInstall) tool_submenu.AppendItem(item) item.Enable(prj_none) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnMakePublic, id=self.publicID) # 'Браузер библиотеки образов' self.imglibID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.imglibID, u'Библиотека образов', u'Библиотека образов', normalBmp=imglib.imgEdtImgBrowser) tool_submenu.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnImgLibBrowser, id=self.imglibID) # 'Редактор регулярных выражений' self.regexpeditID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.regexpeditID, u'Редактор регулярных выражений', u'Редактор регулярных выражений', normalBmp=ic_bmp.createLibraryBitmap('regular-expression-delimiter.png')) tool_submenu.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRegExpEditor, id=self.regexpeditID) # 'Утилита сравнения файлов' self.diffID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.diffID, u'Утилита сравнения файлов', u'Утилита сравнения файлов', normalBmp=ic_bmp.createLibraryBitmap('edit-diff.png')) tool_submenu.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnDiffTool, id=self.diffID) # 'Импорт метаобъектов 1С' self.imp1cID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.imp1cID, u'Импорт метаобъектов 1С', u'Импорт метаобъектов 1С', normalBmp=ic_bmp.createLibraryBitmap('1c.png')) tool_submenu.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnImport1C, id=self.imp1cID) # 'Дизайнер форм wxFormBuilder' self.wxfbID = wx.NewId() item = flatmenu.FlatMenuItem(tool_submenu, self.wxfbID, u'Дизайнер форм wxFormBuilder', u'Дизайнер форм wxFormBuilder', normalBmp=ic_bmp.createLibraryBitmap('wxformbuilder.png')) tool_submenu.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnWXFormBuilder, id=self.wxfbID) self.AppendSubMenu(tool_submenu, u'Инструменты') self.AppendSeparator() # 'Показывать всплывающие подсказки' self.popup_helpID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.popup_helpID, u'Всплывающая подсказка', u'Всплывающая подсказка', kind=wx.ITEM_CHECK) self.AppendItem(item) # Галку ставить только после присоединения пункта к меню item.Check(self._Parent.show_popup_help) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnPopupHelp, id=self.popup_helpID) # 'Помощь' self.hlpID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.hlpID, u'Помощь', u'Помощь', normalBmp=imglib.imgHelpBook) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnHelp, id=self.hlpID)
def _InitMenuBar(self): # Create main sizer self.mainSizer = wx.BoxSizer(wx.VERTICAL) # Create the menubar self._menubar = flatmenu.FlatMenuBar(self, wx.ID_ANY, 40, 8, options=0) # Set the dark theme rm = self._menubar.GetRendererManager() theme = rm.AddRenderer(DarkMenuRenderer()) rm.SetTheme(theme) self._menubar.Refresh() self.Update() # Init menus file_menu = flatmenu.FlatMenu() view_menu = flatmenu.FlatMenu() render_menu = flatmenu.FlatMenu() window_menu = flatmenu.FlatMenu() help_menu = flatmenu.FlatMenu() # File self.openprojectfile_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Open Project\tCtrl+O", helpString="Open and load a Gimel Studio project file", kind=wx.ITEM_NORMAL, subMenu=None) self.saveprojectfile_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Save Project...\tCtrl+S", helpString="Save the current project file", kind=wx.ITEM_NORMAL, subMenu=None) self.saveprojectfileas_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Save Project As...\tCtrl+Shift+S", helpString= "Save the current project as a Gimel Studio project file", kind=wx.ITEM_NORMAL, subMenu=None) self._menubar.AddSeparator() self.exportasimage_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Export Image As...\tShift+E", helpString="Export rendered composite image to a file", kind=wx.ITEM_NORMAL, subMenu=None) self._menubar.AddSeparator() self.quit_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="Quit\tShift+Q", helpString="Quit Gimel Studio", kind=wx.ITEM_NORMAL, subMenu=None) # View self.togglenodegraphgrid_menuitem = flatmenu.FlatMenuItem( view_menu, id=wx.ID_ANY, label="Toggle Graph Grid", helpString="Toggle the Node Graph grid background", kind=wx.ITEM_CHECK, subMenu=None) self.renderasbackground_menuitem = flatmenu.FlatMenuItem( view_menu, id=wx.ID_ANY, label="Toggle Render as Background", helpString= "Toggle the Render showing behind the Node Graph as the background", kind=wx.ITEM_CHECK, subMenu=None) self._menubar.AddSeparator() self.centernodegraph_menuitem = flatmenu.FlatMenuItem( view_menu, id=wx.ID_ANY, label="Center Node Graph", helpString="Move the view to the center of the Node Graph", kind=wx.ITEM_NORMAL, subMenu=None) # Render self.toggleautorender_menuitem = flatmenu.FlatMenuItem( render_menu, id=wx.ID_ANY, label="Auto Render", helpString= "Toggle auto rendering after editing node properties, connections, etc", kind=wx.ITEM_CHECK, subMenu=None) self.renderimage_menuitem = flatmenu.FlatMenuItem( render_menu, id=wx.ID_ANY, label="Render Image \tF12", helpString= "Force an immediate, updated render of the current node graph image", kind=wx.ITEM_NORMAL, subMenu=None) # Window self.togglefullscreen_menuitem = flatmenu.FlatMenuItem( window_menu, id=wx.ID_ANY, label="Toggle Window Fullscreen", helpString="Toggle the window fullscreen", kind=wx.ITEM_CHECK, subMenu=None) self.maximizewindow_menuitem = flatmenu.FlatMenuItem( window_menu, id=wx.ID_ANY, label="Maximize Window", helpString="Maximize the window size", kind=wx.ITEM_NORMAL, subMenu=None) self._menubar.AddSeparator() self.toggleimageviewport_menuitem = flatmenu.FlatMenuItem( window_menu, id=wx.ID_ANY, label="Show Image Viewport", helpString="Toggle showing the Image Viewport panel", kind=wx.ITEM_CHECK, subMenu=None) self.toggledevlog_menuitem = flatmenu.FlatMenuItem( window_menu, id=wx.ID_ANY, label="Show Developer Log", helpString= "Toggle showing the Developer Log panel (this is useful if you are developing custom nodes with the Python API)", kind=wx.ITEM_CHECK, subMenu=None) # Help self.onlinedocs_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label="Online Manual", helpString="Open the Gimel Studio manual online in a browser", kind=wx.ITEM_NORMAL, subMenu=None) self._menubar.AddSeparator() self.visithomepage_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label="Visit Homepage", helpString="Visit the Gimel Studio homepage online", kind=wx.ITEM_NORMAL, subMenu=None) self.feedbacksurvey_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label="Feedback Survey", helpString= "Take a short survey online about Gimel Studio v0.5.x beta", kind=wx.ITEM_NORMAL, subMenu=None) self.license_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label="License", helpString="Show Gimel Studio license", kind=wx.ITEM_NORMAL, subMenu=None) self._menubar.AddSeparator() self.about_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label="About", helpString="Show information about GimelStudio", kind=wx.ITEM_NORMAL, subMenu=None) # Append menu items to menus # file_menu.AppendItem(self.openprojectfile_menuitem) # file_menu.AppendItem(self.saveprojectfile_menuitem) # file_menu.AppendItem(self.saveprojectfileas_menuitem) file_menu.AppendItem(self.exportasimage_menuitem) file_menu.AppendItem(self.quit_menuitem) view_menu.AppendItem(self.togglenodegraphgrid_menuitem) view_menu.AppendItem(self.renderasbackground_menuitem) view_menu.AppendItem(self.centernodegraph_menuitem) render_menu.AppendItem(self.toggleautorender_menuitem) render_menu.AppendItem(self.renderimage_menuitem) window_menu.AppendItem(self.togglefullscreen_menuitem) window_menu.AppendItem(self.maximizewindow_menuitem) window_menu.AppendItem(self.toggleimageviewport_menuitem) window_menu.AppendItem(self.toggledevlog_menuitem) help_menu.AppendItem(self.onlinedocs_menuitem) help_menu.AppendItem(self.visithomepage_menuitem) help_menu.AppendItem(self.feedbacksurvey_menuitem) help_menu.AppendItem(self.license_menuitem) help_menu.AppendItem(self.about_menuitem) # Append menus to the menubar self._menubar.Append(file_menu, "File") self._menubar.Append(view_menu, "View") self._menubar.Append(render_menu, "Render") self._menubar.Append(window_menu, "Window") self._menubar.Append(help_menu, "Help") # Set defaults self.togglenodegraphgrid_menuitem.Check(True) self.toggleautorender_menuitem.Check(True) self.toggleimageviewport_menuitem.Check(True) self.renderasbackground_menuitem.Check(False) # Add menubar to main sizer self.mainSizer.Add(self._menubar, 0, wx.EXPAND) self.SetSizer(self.mainSizer) self.mainSizer.Layout() # Bind events self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnExportImage, self.exportasimage_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnQuit, self.quit_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleNodeGraphGrid, self.togglenodegraphgrid_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnCenterNodeGraph, self.centernodegraph_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleRenderAsBackground, self.renderasbackground_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleAutoRender, self.toggleautorender_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnRender, self.renderimage_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleFullscreen, self.togglefullscreen_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnMaximizeWindow, self.maximizewindow_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleShowImageViewport, self.toggleimageviewport_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleDeveloperLog, self.toggledevlog_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnReadOnlineDocs, self.onlinedocs_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnVisitWebsite, self.visithomepage_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnFeedbackSurvey, self.feedbacksurvey_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnLicenseDialog, self.license_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnAboutDialog, self.about_menuitem)
def createPopupMenu(self): """ Create a pop-up menu for managing the query tree. :return: wx.Menu object. """ try: cur_item = self.GetSelection() if not cur_item: log_func.warning(u'No tree item selected ') return None item_data = self.getTreeCtrlItemData(treectrl=self, item=cur_item) menu = flatmenu.FlatMenu() rename_menuitem_id = wx.NewId() bmp = wxbitmap_func.createIconBitmap('fatcow/textfield_rename') menuitem = flatmenu.FlatMenuItem(menu, rename_menuitem_id, _(u'Rename'), normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onRenameMenuItem, id=rename_menuitem_id) moveup_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap( wx.ART_GO_UP, wx.ART_MENU, (treectrl_manager.DEFAULT_ITEM_IMAGE_WIDTH, treectrl_manager.DEFAULT_ITEM_IMAGE_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, moveup_menuitem_id, _(u'Move up'), normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onMoveUpMenuItem, id=moveup_menuitem_id) menuitem.Enable( not self.isTreeCtrlFirstItem(treectrl=self, item=cur_item)) movedown_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap( wx.ART_GO_DOWN, wx.ART_MENU, (treectrl_manager.DEFAULT_ITEM_IMAGE_WIDTH, treectrl_manager.DEFAULT_ITEM_IMAGE_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, movedown_menuitem_id, _(u'Move down'), normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onMoveDownMenuItem, id=movedown_menuitem_id) menuitem.Enable( not self.isTreeCtrlLastItem(treectrl=self, item=cur_item)) menu.AppendSeparator() add_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap( wx.ART_PLUS, wx.ART_MENU, (treectrl_manager.DEFAULT_ITEM_IMAGE_WIDTH, treectrl_manager.DEFAULT_ITEM_IMAGE_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, add_menuitem_id, _(u'Add'), normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onAddMenuItem, id=add_menuitem_id) menuitem.Enable(self._canEditOLAPRequest()) del_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap( wx.ART_MINUS, wx.ART_MENU, (treectrl_manager.DEFAULT_ITEM_IMAGE_WIDTH, treectrl_manager.DEFAULT_ITEM_IMAGE_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, del_menuitem_id, _(u'Delete'), normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onDelMenuItem, id=del_menuitem_id) menuitem.Enable(self._canEditOLAPRequest()) request_menuitem_id = wx.NewId() bmp = wxbitmap_func.createIconBitmap('fatcow/table_lightning') # cur_request = item_data.get('__request__', None) if item_data else None label = u'%s: %s' % (_(u'Query'), item_data.get('label', DEFAULT_ROOT_LABEL) if item_data else _(u'Query')) menuitem = flatmenu.FlatMenuItem(menu, request_menuitem_id, label, normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onRequestMenuItem, id=request_menuitem_id) menuitem.Enable(self._canEditOLAPRequest()) indicator_menuitem_id = wx.NewId() bmp = wxbitmap_func.createIconBitmap('fugue/traffic-light') cur_indicator = item_data.get('__indicator__', None) if item_data else None label = u'%s: %s' % (_(u'Indicator'), self.getLabelIndicator(cur_indicator) if cur_indicator else _(u'Indicator')) menuitem = flatmenu.FlatMenuItem(menu, indicator_menuitem_id, label, normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onIndicatorMenuItem, id=indicator_menuitem_id) menuitem.Enable(self._canEditOLAPRequest()) return menu except: log_func.fatal(u'Error creating menu for managing query tree') return None
def __init__(self, Parent_): """ Конструктор. """ flatmenu.FlatMenu.__init__(self) self._Parent = Parent_ # Контрол дерева проекта prj_tree_ctrl = self._Parent.getRoot().getParent() if issubclass(self._Parent.__class__, prj_node.PrjFolder): # Дополнительные ресурсы для добавления # Внутренний реестр ресурсов для доступа к ним по идентификатору self._node_reg = {} node = self._Parent.include_nodes[0](self._Parent) # Добавить Модуль self.addModuleID = wx.NewId() # Зарегистрировать Модуль во внутреннем реестре self._node_reg[self.addModuleID] = node item = flatmenu.FlatMenuItem(self, self.addModuleID, u'Добавить модуль', u'Добавить модуль', normalBmp=imglib.imgEdtModule) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnAddModule, id=self.addModuleID) # Добавить Пакет self.addPackageID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.addPackageID, u'Добавить пакет', u'Добавить пакет', normalBmp=imglib.imgPackageOpen) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnAddPackage, id=self.addPackageID) # Добавить проект wxFormBuilder self.addFBPID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.addFBPID, u'Добавить wxFormBuilder проект', u'Добавить wxFormBuilder проект', normalBmp=imglib.imgDesigner) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnAddFBP, id=self.addFBPID) self._node_reg[self.addFBPID] = self._Parent.include_nodes[1]( self._Parent) # Подменю 'Добавить' res_class_menu = flatmenu.FlatMenu() for node_class in self._Parent.include_nodes[2:]: node = node_class(self._Parent) # Обработка меню добавления ресурсного класса class_id = wx.NewId() # Зарегистрировать ресурс во внутреннем реестре self._node_reg[class_id] = node item = flatmenu.FlatMenuItem(res_class_menu, class_id, node.description, node.description, normalBmp=node.img) res_class_menu.AppendItem(item) # ВНИМАНИЕ! Выключение пункта меню делать только после # присоединения к меню. Иначе выключение не срабатывает. if not node.enable: item.Enable(node.enable) res_class_menu.Bind(wx.EVT_MENU, self.OnAddResClass, id=class_id) self.AppendMenu(wx.NewId(), u'Добавить ресурсный класс', res_class_menu) self.AppendSeparator() if not issubclass(self._Parent.__class__, prj_module.PrjModules): # Подменю 'Буфер обмена' self.cutID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.cutID, u'Вырезать', u'Вырезать', normalBmp=imglib.imgCut) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnCut, id=self.cutID) self.copyID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.copyID, u'Копировать', u'Копировать', normalBmp=imglib.imgEdtMnuCopy) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnCopy, id=self.copyID) self.pasteID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.pasteID, u'Вставить', u'Вставить', normalBmp=imglib.imgEdtMnuPaste) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnPaste, id=self.pasteID) item.Enable(not clipboard.emptyClipboard()) self.AppendSeparator() # Подменю 'Клонировать' self.cloneID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.cloneID, u'Клонировать', u'Клонировать', normalBmp=imglib.imgClone) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnClone, id=self.cloneID) # Подменю 'Удалить' self.delID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.delID, u'Удалить', u'Удалить', normalBmp=imglib.imgTrash) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnDelete, id=self.delID) self.AppendSeparator() # Подменю 'Переименовать' # Первый уровень нельзя переименовать if self._Parent.getLevel() > 1: self.renameID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.renameID, u'Переименовать', u'Переименовать', normalBmp=imglib.imgRename) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRename, id=self.renameID) self.AppendSeparator() if issubclass(self._Parent.__class__, prj_module.PrjImageModule): # Библиотека картинок # Открыть в браузере self.brwsID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.brwsID, u'Просмотр', u'Просмотр', normalBmp=imglib.imgEdtImgBrowser) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnImgLibBrowser, id=self.brwsID) self.AppendSeparator() # Редактировать self.editID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.editID, u'Редактировать', u'Редактировать', normalBmp=imglib.imgEdit) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnEdit, id=self.editID) self.AppendSeparator() # Подменю 'Сохранить' self.saveID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.saveID, u'Сохранить', u'Сохранить', normalBmp=imglib.imgSave) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnSave, id=self.saveID)
def __init__(self): wx.Frame.__init__(self, None, title="Gimel Studio", size=(1000, 800)) self.appconfig = AppConfiguration(self) self.renderer = Renderer(self) # Set the program icon self.SetIcon(ICON_GIMELSTUDIO_ICO.GetIcon()) # Create main sizer self.mainSizer = wx.BoxSizer(wx.VERTICAL) # Create the menubar self.menubar = flatmenu.FlatMenuBar(self, wx.ID_ANY, 40, 6, options=0) # Set the dark theme rm = self.menubar.GetRendererManager() theme = rm.AddRenderer(artproviders.UIMenuBarRenderer()) rm.SetTheme(theme) # Init menus file_menu = flatmenu.FlatMenu() edit_menu = flatmenu.FlatMenu() view_menu = flatmenu.FlatMenu() render_menu = flatmenu.FlatMenu() window_menu = flatmenu.FlatMenu() help_menu = flatmenu.FlatMenu() # File self.newprojectfile_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="{0}{1}".format(_("New Project"), "\tCtrl+N"), helpString=_("Create a new Gimel Studio project file"), kind=wx.ITEM_NORMAL, subMenu=None) self.openprojectfile_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="{0}{1}".format(_("Open Project"), "\tCtrl+O"), helpString=_("Open and load a Gimel Studio project file"), kind=wx.ITEM_NORMAL, subMenu=None) self.saveprojectfile_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="{0}{1}".format(_("Save Project..."), "\tCtrl+S"), helpString=_("Save the current project file"), kind=wx.ITEM_NORMAL, subMenu=None) self.saveprojectfileas_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="{0}{1}".format(_("Save Project As..."), "\tCtrl+Shift+S"), helpString=_("Save the current project as a Gimel Studio project"), kind=wx.ITEM_NORMAL, subMenu=None) self.menubar.AddSeparator() self.exportasimage_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="{0}{1}".format(_("Export Image As..."), "\tShift+E"), helpString=_("Export rendered image to a file"), kind=wx.ITEM_NORMAL, subMenu=None) self.menubar.AddSeparator() self.quit_menuitem = flatmenu.FlatMenuItem( file_menu, id=wx.ID_ANY, label="{0}{1}".format(_("Quit"), "\tShift+Q"), helpString=_("Quit Gimel Studio"), kind=wx.ITEM_NORMAL, subMenu=None, normalBmp=ICON_NODEPROPERTIES_PANEL.GetBitmap()) # Edit self.copytoclipboard_menuitem = flatmenu.FlatMenuItem( edit_menu, id=wx.ID_ANY, label=_("Copy Image to Clipboard"), helpString=_( "Copy the current rendered image to the system clipboard"), kind=wx.ITEM_NORMAL, subMenu=None) self.preferences_menuitem = flatmenu.FlatMenuItem( edit_menu, id=wx.ID_ANY, label=_("User Preferences"), helpString=_( "Edit user preferences and settings for Gimel Studio"), kind=wx.ITEM_NORMAL, subMenu=None) # View self.showstatusbar_menuitem = flatmenu.FlatMenuItem( edit_menu, id=wx.ID_ANY, label=_("Toggle Statusbar"), helpString=_("Toggle showing the statusbar"), kind=wx.ITEM_CHECK, subMenu=None) # Render self.toggleautorender_menuitem = flatmenu.FlatMenuItem( render_menu, id=wx.ID_ANY, label=_("Auto Render"), helpString= _("Toggle auto rendering after editing node properties, connections, etc" ), kind=wx.ITEM_CHECK, subMenu=None) self.renderimage_menuitem = flatmenu.FlatMenuItem( render_menu, id=wx.ID_ANY, label="{0}{1}".format(_("Render Image"), "\tF12"), helpString=_( "Force an immediate, updated render of the current node graph" ), kind=wx.ITEM_NORMAL, subMenu=None) # Window self.togglewindowfullscreen_menuitem = flatmenu.FlatMenuItem( window_menu, id=wx.ID_ANY, label=_("Toggle Window Fullscreen"), helpString=_("Toggle the window to be fullscreen"), kind=wx.ITEM_CHECK, subMenu=None) self.maximizewindow_menuitem = flatmenu.FlatMenuItem( window_menu, id=wx.ID_ANY, label=_("Maximize Window"), helpString=_("Maximize the window size"), kind=wx.ITEM_NORMAL, subMenu=None) # Help self.onlinemanual_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label=_("Online Manual"), helpString=_( "Open the online Gimel Studio manual in your browser"), kind=wx.ITEM_NORMAL, subMenu=None) self.visitwebsite_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label=_("Visit Website"), helpString=_( "Open the offical Gimel Studio website in your browser"), kind=wx.ITEM_NORMAL, subMenu=None) self.reportabug_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label=_("Report a Bug"), helpString=_("Report a bug in Gimel Studio"), kind=wx.ITEM_NORMAL, subMenu=None) self.about_menuitem = flatmenu.FlatMenuItem( help_menu, id=wx.ID_ANY, label=_("About Gimel Studio"), helpString=_("Information about Gimel Studio"), kind=wx.ITEM_NORMAL, subMenu=None) # Set defaults self.showstatusbar_menuitem.Check(True) self.toggleautorender_menuitem.Check(True) # Append menu items to menus file_menu.AppendItem(self.newprojectfile_menuitem) file_menu.AppendItem(self.openprojectfile_menuitem) file_menu.AppendItem(self.saveprojectfile_menuitem) file_menu.AppendItem(self.saveprojectfileas_menuitem) file_menu.AppendItem(self.exportasimage_menuitem) file_menu.AppendItem(self.quit_menuitem) edit_menu.AppendItem(self.copytoclipboard_menuitem) edit_menu.AppendItem(self.preferences_menuitem) view_menu.AppendItem(self.showstatusbar_menuitem) render_menu.AppendItem(self.toggleautorender_menuitem) render_menu.AppendItem(self.renderimage_menuitem) window_menu.AppendItem(self.togglewindowfullscreen_menuitem) window_menu.AppendItem(self.maximizewindow_menuitem) help_menu.AppendItem(self.onlinemanual_menuitem) help_menu.AppendItem(self.visitwebsite_menuitem) help_menu.AppendItem(self.reportabug_menuitem) help_menu.AppendItem(self.about_menuitem) # Append menus to the menubar self.menubar.Append(file_menu, _("File")) self.menubar.Append(edit_menu, _("Edit")) self.menubar.Append(view_menu, _("View")) self.menubar.Append(render_menu, _("Render")) self.menubar.Append(window_menu, _("Window")) self.menubar.Append(help_menu, _("Help")) # Menu event bindings self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnQuit, self.quit_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnPreferencesDialog, self.preferences_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleStatusbar, self.showstatusbar_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnToggleFullscreen, self.togglewindowfullscreen_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnMaximizeWindow, self.maximizewindow_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnOnlineManual, self.onlinemanual_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnReportABug, self.reportabug_menuitem) self.Bind(flatmenu.EVT_FLAT_MENU_SELECTED, self.OnVisitWebsite, self.visitwebsite_menuitem) # Add menubar to main sizer self.mainSizer.Add(self.menubar, 0, wx.EXPAND) # Create the statusbar self.statusbar = StatusBar(self) self.SetStatusBar(self.statusbar) # Window manager self._mgr = AUIManager(self) self._mgr.SetArtProvider(artproviders.UIDockArt()) art = self._mgr.GetArtProvider() extra_flags = aui.AUI_MGR_LIVE_RESIZE | aui.AUI_MGR_ALLOW_ACTIVE_PANE self._mgr.SetAGWFlags(self._mgr.GetAGWFlags() ^ extra_flags) art.SetMetric(aui.AUI_DOCKART_CAPTION_SIZE, 29) art.SetMetric(aui.AUI_DOCKART_GRIPPER_SIZE, 3) art.SetMetric(aui.AUI_DOCKART_SASH_SIZE, 6) art.SetMetric(aui.AUI_DOCKART_PANE_BORDER_SIZE, 0) art.SetMetric(aui.AUI_DOCKART_GRADIENT_TYPE, aui.AUI_GRADIENT_NONE) art.SetColour(aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR, wx.Colour("#424242")) art.SetColour(aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR, wx.Colour("#4D4D4D")) art.SetColour(aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR, wx.Colour("#fff")) art.SetColour(aui.AUI_DOCKART_SASH_COLOUR, wx.Colour("#232323")) # Panels self.imageviewport_pnl = ImageViewportPanel(self) self.prop_pnl = NodePropertiesPanel(self, size=(350, 500)) # Eventually this will be a part of the node registry registry = { 'image_node': ImageNode, 'mix_node': MixNode, 'output_node': OutputNode, 'blur_node': BlurNode, 'flip_node': FlipNode } self.nodegraph_pnl = NodeGraphPanel(self, registry, size=(100, 100)) # Add panes self._mgr.AddPane( self.imageviewport_pnl, aui.AuiPaneInfo().Name('imageviewport').CaptionVisible(False).Top( ).Row(0).Maximize().CloseButton(visible=False).BestSize(500, 500)) self._mgr.AddPane( self.prop_pnl, aui.AuiPaneInfo().Name('nodeproperties').Top().Position(1).Row( 0).CaptionVisible(False).CloseButton(visible=False).BestSize( 500, 500)) self._mgr.AddPane( self.nodegraph_pnl, aui.AuiPaneInfo().Name('nodegraph').CaptionVisible( False).Center().CloseButton(visible=False).BestSize(500, 500)) # This sorta feels like a hack to get the default proportions correct! self._mgr.GetPane("nodeproperties").dock_proportion = 10 self._mgr.GetPane("imageviewport").dock_proportion = 25 # Maximize the window & tell the AUI window # manager to "commit" all the changes just made, etc self.Maximize() self.menubar.PositionAUI(self._mgr) self._mgr.Update() self.statusbar.UpdateStatusBar() self.statusbar.Refresh() self.menubar.Refresh()
def createPopupMenu(self): """ Create a pop-up menu for managing the filter tree. :return: wx.Menu object. """ try: cur_item = self.GetSelection() if not cur_item: log_func.warning(u'No tree item selected') return None # item_data = self.getItemData_tree(ctrl=self, item=cur_item) item_data = self.getTreeCtrlItemData(treectrl=self, item=cur_item) menu = flatmenu.FlatMenu() rename_menuitem_id = wx.NewId() bmp = wxbitmap_func.createIconBitmap('fatcow/textfield_rename') menuitem = flatmenu.FlatMenuItem(menu, rename_menuitem_id, u'Rename', normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onRenameMenuItem, id=rename_menuitem_id) moveup_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_UP, wx.ART_MENU, (wxbitmap_func.DEFAULT_ICON_WIDTH, wxbitmap_func.DEFAULT_ICON_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, moveup_menuitem_id, u'Move up', normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onMoveUpMenuItem, id=moveup_menuitem_id) menuitem.Enable(not self.isTreeCtrlFirstItem(treectrl=self, item=cur_item)) movedown_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap(wx.ART_GO_DOWN, wx.ART_MENU, (wxbitmap_func.DEFAULT_ICON_WIDTH, wxbitmap_func.DEFAULT_ICON_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, movedown_menuitem_id, u'Move down', normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onMoveDownMenuItem, id=movedown_menuitem_id) menuitem.Enable(not self.isTreeCtrlLastItem(treectrl=self, item=cur_item)) menu.AppendSeparator() add_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap(wx.ART_PLUS, wx.ART_MENU, (wxbitmap_func.DEFAULT_ICON_WIDTH, wxbitmap_func.DEFAULT_ICON_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, add_menuitem_id, u'Add', normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onAddMenuItem, id=add_menuitem_id) menuitem.Enable(self._canEditFilter()) del_menuitem_id = wx.NewId() bmp = wx.ArtProvider.GetBitmap(wx.ART_MINUS, wx.ART_MENU, (wxbitmap_func.DEFAULT_ICON_WIDTH, wxbitmap_func.DEFAULT_ICON_HEIGHT)) menuitem = flatmenu.FlatMenuItem(menu, del_menuitem_id, u'Del', normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onDelMenuItem, id=del_menuitem_id) menuitem.Enable(self._canEditFilter()) filter_menuitem_id = wx.NewId() bmp = wxbitmap_func.createIconBitmap('fatcow/filter') cur_filter = item_data.get('__filter__', None) if item_data else None label = u'Filter: %s' % filter_choicectrl.getFilterAsStr(cur_filter) if cur_filter else u'Filter' menuitem = flatmenu.FlatMenuItem(menu, filter_menuitem_id, label, normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onFilterMenuItem, id=filter_menuitem_id) menuitem.Enable(self._canEditFilter()) indicator_menuitem_id = wx.NewId() bmp = wxbitmap_func.createIconBitmap('fatcow/traffic_lights') cur_indicator = item_data.get('__indicator__', None) if item_data else None label = u'Indicator: %s' % self.getLabelIndicator(cur_indicator) if cur_indicator else u'Indicator' menuitem = flatmenu.FlatMenuItem(menu, indicator_menuitem_id, label, normalBmp=bmp) menu.AppendItem(menuitem) self.Bind(wx.EVT_MENU, self.onIndicatorMenuItem, id=indicator_menuitem_id) menuitem.Enable(self._canEditFilter()) return menu except: log_func.fatal(u'Error creating menu for managing filter tree') return None
def __init__(self, geo=None, start=True, size=(400, 400), param_dict={}, disc_xy_coords=None): wx.Frame.__init__(self, None, wx.ID_ANY, "Scroll Model GUI") # Add a panel so it looks the correct on all platforms panel = wx.Panel(self, wx.ID_ANY) import wx.lib.agw.flatmenu as FM self._mb = FM.FlatMenuBar(panel, wx.ID_ANY, 32, 5) layersMenu = FM.FlatMenu() self.LayerCoordinateAxes = FM.FlatMenuItem(layersMenu, -1, "Show coordinate axes", "Tooltip", wx.ITEM_CHECK) self.LayerCoordinateAxes.Check(False) self.Bind(FM.EVT_FLAT_MENU_SELECTED, self.OnApplyLayers, id=self.LayerCoordinateAxes.GetId()) layersMenu.AppendItem(self.LayerCoordinateAxes) self.LayerOldham = FM.FlatMenuItem(layersMenu, -1, "Oldham ring", "Tooltip", wx.ITEM_CHECK) self.LayerOldham.Check(False) self.Bind(FM.EVT_FLAT_MENU_SELECTED, self.OnApplyLayers, id=self.LayerOldham.GetId()) layersMenu.AppendItem(self.LayerOldham) self.LayerOrbitingScroll = FM.FlatMenuItem(layersMenu, -1, "Orbiting scroll", "Tooltip", wx.ITEM_CHECK) self.LayerOrbitingScroll.Check(False) self.Bind(FM.EVT_FLAT_MENU_SELECTED, self.OnApplyLayers, id=self.LayerOrbitingScroll.GetId()) layersMenu.AppendItem(self.LayerOrbitingScroll) self._mb.Append(layersMenu, "&Layers") animMenu = FM.FlatMenu() self.SaveAnimation = FM.FlatMenuItem(layersMenu, -1, "Save animation", "Tooltip", wx.ITEM_NORMAL) self.Bind(FM.EVT_FLAT_MENU_SELECTED, self.OnSaveAnimation, id=self.SaveAnimation.GetId()) animMenu.AppendItem(self.SaveAnimation) self._mb.Append(animMenu, "&Animation") # Create the items self.btn = btn = wx.ToggleButton(panel, -1, "Start") self.pltpanel = PlotPanel(panel, -1, size=size) # Do the layout sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self._mb, 0, wx.EXPAND) sizer.Add(self.btn, 0, wx.ALL | wx.CENTER, 5) sizer.Add(self.pltpanel, 0, wx.ALL | wx.CENTER, 5) panel.SetSizer(sizer) # Bind the events btn.Bind(wx.EVT_TOGGLEBUTTON, self.onButton) self.Bind(wx.EVT_CLOSE, self.preClose) self.theta = 0 self.N = 100 self.geo = geo self.OS = plotScrollSet(0, axis=self.pltpanel.axes, geo=self.geo, lw=1, discOn=False, offsetScroll=self.geo.phi_ie_offset > 0) self.ax = self.pltpanel.axes if disc_xy_coords is not None: self.ax.plot(disc_xy_coords[0], disc_xy_coords[1]) sizer.Layout() self.SetSize(sizer.GetMinSize()) self.writing_animation = False self.param_dict = param_dict self.orbiting_layers = [] if start: self.start()
def __init__(self, Parent_): """ Конструктор. """ flatmenu.FlatMenu.__init__(self) self._Parent = Parent_ # Контрол дерева проекта prj_tree_ctrl = self._Parent.getRoot().getParent() is_folder = issubclass(self._Parent.__class__, prj_node.PrjFolder) if is_folder: # Дополнительные ресурсы if self._Parent.include_nodes: # Подменю 'Добавить ресурс' submenu_res = flatmenu.FlatMenu() # Дополнительные ресурсы для добавления # Внутренний реестр ресурсов для доступа к ним по идентификатору self._node_reg = {} for node_class in self._Parent.include_nodes: node = node_class(self._Parent) # Обработка меню добавления ресурса res_id = wx.NewId() # Зарегистрировать ресурс во внутреннем реестре self._node_reg[res_id] = node item = flatmenu.FlatMenuItem(submenu_res, res_id, node.description, node.description, normalBmp=node.img) submenu_res.AppendItem(item) # ВНИМАНИЕ! Выключение пункта меню делать только после # присоединения к меню. Иначе выключение не срабатывает. if not node.enable: item.Enable(node.enable) if wx.Platform == '__WXMSW__': prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnAddResource, id=res_id) elif wx.Platform == '__WXGTK__': prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnAddResource, id=res_id) self.AppendMenu(wx.NewId(), u'Добавить ресурс', submenu_res) # Импортировть ресурс... self.importResID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.importResID, u'Импорт ресурса', u'Импорт ресурса', normalBmp=imglib.imgEdtImport) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnImportResource, id=self.importResID) self.AppendSeparator() # Добавить папку self.addFolderID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.addFolderID, u'Добавить папку', u'Добавить папку', normalBmp=imglib.imgFolder) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnAddFolder, id=self.addFolderID) self.AppendSeparator() # Подменю 'Буфер обмена' self.cutID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.cutID, u'Вырезать', u'Вырезать', normalBmp=imglib.imgCut) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnCut, id=self.cutID) item.Enable(not is_folder) self.copyID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.copyID, u'Копировать', u'Копировать', normalBmp=imglib.imgEdtMnuCopy) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnCopy, id=self.copyID) item.Enable(not is_folder) self.pasteID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.pasteID, u'Вставить', u'Вставить', normalBmp=imglib.imgEdtMnuPaste) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnPaste, id=self.pasteID) item.Enable(not is_folder and not clipboard.emptyClipboard()) self.AppendSeparator() # Подменю 'Клогировать' self.cloneID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.cloneID, u'Клонировать', u'Клонировать', normalBmp=imglib.imgClone) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnClone, id=self.cloneID) item.Enable(not is_folder) # Подменю 'Удалить' self.delID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.delID, u'Удалить', u'Удалить', normalBmp=imglib.imgTrash) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnDel, id=self.delID) self.AppendSeparator() # Подменю 'Редактировать' # Редактировать только ресурсы if not is_folder: self.editID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.editID, u'Редактировать', u'Редактировать', normalBmp=imglib.imgEdit) self.AppendItem(item) self.AppendSeparator() # Подменю 'Переименовать' # Первый уровень нельзя переименовать if self._Parent.getLevel() > 1: self.renameID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.renameID, u'Переименовать', u'Переименовать', normalBmp=imglib.imgRename) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRename, id=self.renameID) self.AppendSeparator() # Подменю 'Сохранить' self.saveID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.saveID, u'Сохранить', u'Сохранить', normalBmp=imglib.imgSave) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnSave, id=self.saveID) # Пункт дополнительных функций узла self.extID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.extID, u'Дополнительно', u'Дополнительно', normalBmp=imglib.imgAdvanced) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnExtend, id=self.extID)
def __init__(self, Parent_): """ Конструктор. """ flatmenu.FlatMenu.__init__(self) self._Parent = Parent_ # Контрол дерева проекта prj_tree_ctrl = self._Parent.getRoot().getParent() if issubclass(self._Parent.__class__, prj_security.PrjSecurity): # 'Новый пользователь' self.newID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.newID, u'Новый пользователь', u'Новый пользователь', normalBmp=imglib.imgUser) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnNewUser, id=self.newID) # 'Новая группа пользователей' self.newGrpID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.newGrpID, u'Новая группа пользователей', u'Новая группа пользователей', normalBmp=imglib.imgUsers) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnNewUserGroup, id=self.newGrpID) # 'Новая роль' self.newID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.newID, u'Новая роль', u'Новая роль', normalBmp=imglib.imgRole) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnNewRole, id=self.newID) elif issubclass(self._Parent.__class__, prj_security.PrjUser) or \ issubclass(self._Parent.__class__, prj_security.PrjUserGroup) or \ issubclass(self._Parent.__class__, prj_security.PrjRole): if issubclass(self._Parent.__class__, prj_security.PrjUserGroup): # Новый юзер self.newID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.newID, u'Новый пользователь', u'Новый пользователь', normalBmp=imglib.imgUser) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnNewUser, id=self.newID) self.AppendSeparator() # 'Переиментвать пользователя' self.renameID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.renameID, u'Переименовать', u'Переименовать', normalBmp=imglib.imgRename) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnRenameUser, id=self.renameID) self.AppendSeparator() # 'Удалить пользователя' self.delID = wx.NewId() item = flatmenu.FlatMenuItem(self, self.delID, u'Удалить', u'Удалить', normalBmp=imglib.imgTrash) self.AppendItem(item) prj_tree_ctrl.Bind(wx.EVT_MENU, self.OnDelUser, id=self.delID)
def createResourceItemContextMenu(self, item=None): """ Create item context menu. :param item: Resource tree item. If None then get selected item. :return: wx.FlatMenu object or None if error. """ if item is None: item = self.resource_treeListCtrl.GetMainWindow().GetSelection() if item and item.IsOk(): resource_item = self.resource_treeListCtrl.GetMainWindow().GetItemData(item) context_menu = flatmenu.FlatMenu() self.component_menu = select_component_menu.iqSelectComponentFlatMenu() self.component_menu.init(parent=self.resource_treeListCtrl, parent_component=resource_item) self.component_menu.create(menuitem_handler=self.onSelectComponentMenuItem) context_menu.AppendMenu(wx.NewId(), 'Add', self.component_menu) context_menu.AppendSeparator() menuitem_id = wx.NewId() menuitem = flatmenu.FlatMenuItem(context_menu, menuitem_id, label='Cut', normalBmp=wx.ArtProvider.GetBitmap(wx.ART_CUT, wx.ART_MENU)) self.Bind(wx.EVT_MENU, self.onCutResourceMenuitem, id=menuitem_id) context_menu.AppendItem(menuitem) menuitem_id = wx.NewId() menuitem = flatmenu.FlatMenuItem(context_menu, menuitem_id, label='Copy', normalBmp=wx.ArtProvider.GetBitmap(wx.ART_COPY, wx.ART_MENU)) self.Bind(wx.EVT_MENU, self.onCopyResourceMenuitem, id=menuitem_id) context_menu.AppendItem(menuitem) menuitem_id = wx.NewId() menuitem = flatmenu.FlatMenuItem(context_menu, menuitem_id, label='Paste', normalBmp=wx.ArtProvider.GetBitmap(wx.ART_PASTE, wx.ART_MENU)) self.Bind(wx.EVT_MENU, self.onPasteResourceMenuitem, id=menuitem_id) context_menu.AppendItem(menuitem) context_menu.AppendSeparator() root_item = self.resource_treeListCtrl.GetMainWindow().GetRootItem() parent_item = self.resource_treeListCtrl.GetMainWindow().GetItemParent(item) first_child_item = self.resource_treeListCtrl.GetMainWindow().GetFirstChild(parent_item)[0] if parent_item and parent_item.IsOk() else None last_child_item = self.resource_treeListCtrl.GetMainWindow().GetLastChild(parent_item) if parent_item and parent_item.IsOk() else None menuitem_id = wx.NewId() menuitem = flatmenu.FlatMenuItem(context_menu, menuitem_id, label='Move up', normalBmp=wx.ArtProvider.GetBitmap(wx.ART_GO_UP, wx.ART_MENU)) self.Bind(wx.EVT_MENU, self.onMoveUpResourceMenuitem, id=menuitem_id) context_menu.AppendItem(menuitem) menuitem.Enable(item != root_item and first_child_item and item != first_child_item) menuitem_id = wx.NewId() menuitem = flatmenu.FlatMenuItem(context_menu, menuitem_id, label='Move down', normalBmp=wx.ArtProvider.GetBitmap(wx.ART_GO_DOWN, wx.ART_MENU)) self.Bind(wx.EVT_MENU, self.onMoveDownResourceMenuitem, id=menuitem_id) context_menu.AppendItem(menuitem) menuitem.Enable(item != root_item and last_child_item and item != last_child_item) return context_menu return None