def create_address_panel(self, toolbar_page): if self.address_bar: bar = self.ti.create_panel_in_main_page(_("Address"), TYPE_PANELBAR) if hasattr(bar, "panel"): width = 350 panel = bar.panel self.address = SchAutoComplete(panel, size=wx.Size(width, -1)) self.address.SetCallbackFun(self.OpenPage) self.tbs["browser"]["address"] = self.address self.webmenu = FM.FlatMenuBar(panel, spacer=5) self.webmenu.GetRendererManager().SetTheme(FM.Style2007) self.tbs["browser"]["webmenu"] = self.webmenu webmenu_source = self.WebMenu() self.web_info = wx.html.HtmlWindow( panel, style=wx.html.HW_SCROLLBAR_NEVER, size=(width, 25) ) self.web_info.SetBorders(0) self._info_clear() self.MemkeMenu(self.webmenu, webmenu_source) controls = (self.address, self.web_info, self.webmenu) controls = (self.webmenu, self.web_info, self.address) bar.AddPanel(controls) else: self.tbs["browser"]["address"] = EmpytControl() self.web_info = None else: self.tbs["browser"]["address"] = EmpytControl() self.web_info = None
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 test_lib_agw_fmcustomizedlgCtor(self): minibarPanel= wx.Panel(self.frame, wx.ID_ANY) self._mtb = FM.FlatMenuBar(minibarPanel, wx.ID_ANY, 16, 6, options = FM.FM_OPT_SHOW_TOOLBAR|FM.FM_OPT_MINIBAR) fileMenu = FM.FlatMenu() styleMenu = FM.FlatMenu() self._mtb.Append(fileMenu, "&File") self._mtb.Append(styleMenu, "&Style") # above is to excersize OrderedDict self._dlg = FDLG.FMCustomizeDlg(self._mtb)
def CreateMenu(self): # File menu filemenu = FM.FlatMenu() filemenu.Append(1, "Open", "Text", None) filemenu.Append(2, "Save As", "Text", None) exitItem = filemenu.Append(3, "Exit", "Text", None) self.Bind(wx.EVT_MENU, self.OnClose, exitItem) # Edit menu editmenu = FM.FlatMenu() editmenu.Append(1, "Cut", "Text", wx.ITEM_NORMAL) editmenu.Append(2, "Copy", "Text", wx.ITEM_NORMAL) editmenu.Append(3, "Paste", "Text", wx.ITEM_NORMAL) editmenu.Append(4, "Delete", "Text", wx.ITEM_NORMAL) editmenu.Append(5, "Delete All", "Text", wx.ITEM_NORMAL) # Tools menu toolsmenu = FM.FlatMenu() toolsmenu.Append(1, "Verify Program", "Text", wx.ITEM_NORMAL) toolsmenu.Append(2, "Open code in Arduino IDE", "Text", wx.ITEM_NORMAL) toolsmenu.Append(3, "Upload to Arduino Board", "Text", wx.ITEM_NORMAL) toolsmenu.Append(4, "Open Command Line", "Text", wx.ITEM_NORMAL) toolsmenu.Append(5, "Settings", "Text", wx.ITEM_NORMAL) # Examples menu examplesmenu = FM.FlatMenu() examplesmenu.Append(1, "Example 1", "Text", wx.ITEM_NORMAL) examplesmenu.Append(2, "Example 2", "Text", wx.ITEM_NORMAL) examplesmenu.Append(3, "Example 3", "Text", wx.ITEM_NORMAL) examplesmenu.Append(4, "Example 4", "Text", wx.ITEM_NORMAL) examplesmenu.Append(5, "Example 5", "Text", wx.ITEM_NORMAL) # About menu aboutmenu = FM.FlatMenu() aboutmenu.Append(1, "About Ardublockly", "Text", wx.ITEM_NORMAL) # Adding menubar self.menubar = FM.FlatMenuBar(self, id=wx.ID_ANY, iconSize=FM.SmallIcons, spacer=4) self.menubar.SetBackgroundColour(wx.Colour(0x00, 0x87, 0x8F, 0xFF)) self.menubar.ShowCustomize(False) self.menubar.SetMargin(4) self.menubar.SetToolbarMargin(0) self.menubar.SetBarHeight() self.menubar.Append(filemenu, "&File") self.menubar.Append(editmenu, "&Edit") self.menubar.Append(toolsmenu, "&Tools") self.menubar.Append(examplesmenu, "&Examples") self.menubar.Append(aboutmenu, "&About") self.menubar.SetBarHeight()
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 _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 __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): 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()