Beispiel #1
0
 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
Beispiel #2
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)
Beispiel #3
0
    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)        
Beispiel #4
0
    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()
Beispiel #5
0
    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()
Beispiel #6
0
    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)
Beispiel #7
0
    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()
Beispiel #8
0
    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()