Beispiel #1
0
    def CreateUI(self, parent, sizer):
        fold_panel = self.CreateFoldPanel(sizer)

        pnl = wx.Panel(fold_panel)
        pnl.SetBackgroundColour(wx.Colour("#464646"))

        vbox = wx.BoxSizer(wx.VERTICAL)
        hbox = wx.BoxSizer(wx.HORIZONTAL)

        self.textcontrol = TextCtrl(pnl,
                                    value=self.GetValue(),
                                    style=wx.BORDER_SIMPLE,
                                    placeholder="",
                                    size=(-1, 32))
        hbox.Add(self.textcontrol, proportion=1, flag=wx.EXPAND | wx.BOTH)

        self.button = Button(pnl, label=self.GetBtnLabel(), size=(-1, 32))
        hbox.Add(self.button, flag=wx.LEFT, border=5)
        self.button.Bind(EVT_BUTTON, self.WidgetEvent)

        vbox.Add(hbox, flag=wx.EXPAND | wx.BOTH | wx.ALL, border=6)

        vbox.Fit(pnl)
        pnl.SetSizer(vbox)

        self.AddToFoldPanel(sizer, fold_panel, pnl, spacing=10)
Beispiel #2
0
    def BuildUI(self):
        main_sizer = wx.BoxSizer(wx.VERTICAL)

        topbar = wx.Panel(self)
        topbar.SetBackgroundColour("#424242")

        topbar_sizer = wx.GridBagSizer(vgap=1, hgap=1)

        self.area_icon = wx.StaticBitmap(topbar, bitmap=ICON_NODEGRAPH_PANEL.GetBitmap())
        self.area_label = wx.StaticText(topbar, label="")
        self.area_label.SetForegroundColour("#fff")
        self.area_label.SetFont(self.area_label.GetFont().Bold())

        self.zoom_field = NumberField(topbar, default_value=100, label=_("Zoom"),
                                      min_value=25, max_value=250, suffix="%",
                                      show_p=False)
        self.menu_button = Button(topbar, label="", flat=True,
                                  bmp=(ICON_MORE_MENU_SMALL.GetBitmap(), 'left'))

        topbar_sizer.Add(self.area_icon, (0, 0), flag=wx.LEFT | wx.TOP | wx.BOTTOM, border=8)
        topbar_sizer.Add(self.area_label, (0, 1), flag=wx.ALL, border=8)
        topbar_sizer.Add(self.zoom_field, (0, 3), flag=wx.ALL, border=3)
        topbar_sizer.Add(self.menu_button, (0, 4), flag=wx.ALL, border=3)
        topbar_sizer.AddGrowableCol(2)

        topbar.SetSizer(topbar_sizer)

        self.nodegraph = NodeGraph(self, self.registry, size=(-1, self.Size[0]-20))

        # here for testing
        self.nodegraph.AddNode('image_node', wx.Point(100, 10))
        self.nodegraph.AddNode('image_node', wx.Point(400, 100))
        self.nodegraph.AddNode('blur_node', wx.Point(600, 200))
        self.nodegraph.AddNode('mix_node', wx.Point(100, 200))
        self.nodegraph.AddNode('output_node', wx.Point(300, 270))
        self.nodegraph.AddNode('flip_node', wx.Point(400, 270))

        main_sizer.Add(topbar, flag=wx.EXPAND | wx.LEFT | wx.RIGHT)
        main_sizer.Add(self.nodegraph, 1, flag=wx.EXPAND | wx.BOTH)

        self.SetSizer(main_sizer)

        self.nodegraph.Bind(EVT_GSNODEGRAPH_NODESELECT, self.UpdateNodePropertiesPnl)
        self.nodegraph.Bind(EVT_GSNODEGRAPH_NODECONNECT, self.NodeConnectEvent)
        self.nodegraph.Bind(EVT_GSNODEGRAPH_NODEDISCONNECT, self.NodeDisconnectEvent)
        self.nodegraph.Bind(EVT_GSNODEGRAPH_MOUSEZOOM, self.ZoomNodeGraph)
        self.zoom_field.Bind(EVT_NUMBERFIELD_CHANGE, self.ChangeZoom)
        self.menu_button.Bind(EVT_BUTTON, self.OnAreaMenuButton)
        self.Bind(wx.EVT_MENU, self.OnMenuUndockPanel, id=ID_MENU_UNDOCKPANEL)
        self.Bind(wx.EVT_MENU, self.OnMenuHidePanel, id=ID_MENU_HIDEPANEL)
        self.nodegraph.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)
    def UpdatePanelContents(self, selected_node):
        self.main_panel.DestroyChildren()

        if selected_node is not None:

            # Node info
            nodeinfo_pnl = wx.Panel(self.main_panel, size=(-1, 50))
            nodeinfo_pnl.SetBackgroundColour("#464646")

            nodeinfo_pnl_sizer = wx.GridBagSizer(vgap=1, hgap=1)

            node_label = wx.StaticText(nodeinfo_pnl, label=selected_node._label)
            node_label.SetForegroundColour("#fff")
            node_label.SetFont(self.area_label.GetFont().Bold())

            self.help_button = Button(nodeinfo_pnl, label="", flat=True,
                                      bmp=(ICON_HELP.GetBitmap(), 'left'))

            nodeinfo_pnl_sizer.Add(node_label, (0, 1),
                                   flag=wx.TOP | wx.BOTTOM, border=6)
            nodeinfo_pnl_sizer.Add(self.help_button, (0, 4),
                                   flag=wx.TOP | wx.BOTTOM | wx.RIGHT, border=6)
            nodeinfo_pnl_sizer.AddGrowableCol(2)
            nodeinfo_pnl.SetSizer(nodeinfo_pnl_sizer)

            self._mainsizer.Add(nodeinfo_pnl, flag=wx.EXPAND)

            # Node Properties
            panel_bar = fpb.FoldPanelBar(self.main_panel, agwStyle=fpb.FPB_VERTICAL)

            selected_node.NodePanelUI(self.main_panel, panel_bar)

            style = fpb.CaptionBarStyle()
            style.SetCaptionFont(self.Parent.GetFont())
            style.SetCaptionColour(wx.Colour("#fff"))
            style.SetFirstColour(wx.Colour('#5c5c5c'))
            style.SetSecondColour(wx.Colour('#5c5c5c'))
            panel_bar.ApplyCaptionStyleAll(style)

            self._mainsizer.Add(panel_bar, 1, wx.EXPAND | wx.ALL)

            self._mainsizer.Layout()

            # Also bind the focus handler to the main panel and panel_bar
            nodeinfo_pnl.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)
            panel_bar.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)

        else:
            # Delete the window if the node is not selected
            self._mainsizer.Clear(delete_windows=True)

        self.AUIManager.Update()
        self.Parent.Refresh()
        self.Parent.Update()
    def BuildUI(self):
        main_sizer = wx.BoxSizer(wx.VERTICAL)

        topbar = wx.Panel(self)
        topbar.SetBackgroundColour("#424242")

        topbar_sizer = wx.GridBagSizer(vgap=1, hgap=1)

        self.area_icon = wx.StaticBitmap(topbar,
                                         bitmap=ICON_NODEPROPERTIES_PANEL.GetBitmap())
        self.area_label = wx.StaticText(topbar, label="")
        self.area_label.SetForegroundColour("#fff")
        self.area_label.SetFont(self.area_label.GetFont().Bold())

        self.menu_button = Button(topbar, label="", flat=True,
                                  bmp=(ICON_MORE_MENU_SMALL.GetBitmap(), 'left'))

        topbar_sizer.Add(self.area_icon, (0, 0), flag=wx.LEFT | wx.TOP | wx.BOTTOM,
                         border=8)
        topbar_sizer.Add(self.area_label, (0, 1), flag=wx.ALL, border=8)
        topbar_sizer.Add(self.menu_button, (0, 4), flag=wx.ALL, border=3)
        topbar_sizer.AddGrowableCol(2)

        topbar.SetSizer(topbar_sizer)

        self.main_panel = wx.Panel(self)
        self._mainsizer = wx.BoxSizer(wx.VERTICAL)
        self.main_panel.SetSizer(self._mainsizer)
        self._mainsizer.Fit(self.main_panel)

        main_sizer.Add(topbar, flag=wx.EXPAND | wx.LEFT | wx.RIGHT)
        main_sizer.Add(self.main_panel, 1, flag=wx.EXPAND | wx.BOTH)

        self.SetSizer(main_sizer)

        self.menu_button.Bind(EVT_BUTTON, self.OnAreaMenuButton)
        self.Bind(wx.EVT_MENU, self.OnMenuUndockPanel, id=ID_MENU_UNDOCKPANEL)
        self.Bind(wx.EVT_MENU, self.OnMenuHidePanel, id=ID_MENU_HIDEPANEL)
        self.main_panel.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)
class NodePropertiesPanel(wx.Panel):
    def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize,
                 style=wx.NO_BORDER | wx.TAB_TRAVERSAL):
        wx.Panel.__init__(self, parent, id, pos, size, style)

        self.parent = parent

        self.SetBackgroundColour(wx.Colour("#464646"))

        self.BuildUI()

    @property
    def Parent(self):
        return self.parent

    @property
    def AUIManager(self):
        return self.parent._mgr

    @property
    def Statusbar(self):
        return self.parent.statusbar

    def BuildUI(self):
        main_sizer = wx.BoxSizer(wx.VERTICAL)

        topbar = wx.Panel(self)
        topbar.SetBackgroundColour("#424242")

        topbar_sizer = wx.GridBagSizer(vgap=1, hgap=1)

        self.area_icon = wx.StaticBitmap(topbar,
                                         bitmap=ICON_NODEPROPERTIES_PANEL.GetBitmap())
        self.area_label = wx.StaticText(topbar, label="")
        self.area_label.SetForegroundColour("#fff")
        self.area_label.SetFont(self.area_label.GetFont().Bold())

        self.menu_button = Button(topbar, label="", flat=True,
                                  bmp=(ICON_MORE_MENU_SMALL.GetBitmap(), 'left'))

        topbar_sizer.Add(self.area_icon, (0, 0), flag=wx.LEFT | wx.TOP | wx.BOTTOM,
                         border=8)
        topbar_sizer.Add(self.area_label, (0, 1), flag=wx.ALL, border=8)
        topbar_sizer.Add(self.menu_button, (0, 4), flag=wx.ALL, border=3)
        topbar_sizer.AddGrowableCol(2)

        topbar.SetSizer(topbar_sizer)

        self.main_panel = wx.Panel(self)
        self._mainsizer = wx.BoxSizer(wx.VERTICAL)
        self.main_panel.SetSizer(self._mainsizer)
        self._mainsizer.Fit(self.main_panel)

        main_sizer.Add(topbar, flag=wx.EXPAND | wx.LEFT | wx.RIGHT)
        main_sizer.Add(self.main_panel, 1, flag=wx.EXPAND | wx.BOTH)

        self.SetSizer(main_sizer)

        self.menu_button.Bind(EVT_BUTTON, self.OnAreaMenuButton)
        self.Bind(wx.EVT_MENU, self.OnMenuUndockPanel, id=ID_MENU_UNDOCKPANEL)
        self.Bind(wx.EVT_MENU, self.OnMenuHidePanel, id=ID_MENU_HIDEPANEL)
        self.main_panel.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)

    def UpdatePanelContents(self, selected_node):
        self.main_panel.DestroyChildren()

        if selected_node is not None:

            # Node info
            nodeinfo_pnl = wx.Panel(self.main_panel, size=(-1, 50))
            nodeinfo_pnl.SetBackgroundColour("#464646")

            nodeinfo_pnl_sizer = wx.GridBagSizer(vgap=1, hgap=1)

            node_label = wx.StaticText(nodeinfo_pnl, label=selected_node._label)
            node_label.SetForegroundColour("#fff")
            node_label.SetFont(self.area_label.GetFont().Bold())

            self.help_button = Button(nodeinfo_pnl, label="", flat=True,
                                      bmp=(ICON_HELP.GetBitmap(), 'left'))

            nodeinfo_pnl_sizer.Add(node_label, (0, 1),
                                   flag=wx.TOP | wx.BOTTOM, border=6)
            nodeinfo_pnl_sizer.Add(self.help_button, (0, 4),
                                   flag=wx.TOP | wx.BOTTOM | wx.RIGHT, border=6)
            nodeinfo_pnl_sizer.AddGrowableCol(2)
            nodeinfo_pnl.SetSizer(nodeinfo_pnl_sizer)

            self._mainsizer.Add(nodeinfo_pnl, flag=wx.EXPAND)

            # Node Properties
            panel_bar = fpb.FoldPanelBar(self.main_panel, agwStyle=fpb.FPB_VERTICAL)

            selected_node.NodePanelUI(self.main_panel, panel_bar)

            style = fpb.CaptionBarStyle()
            style.SetCaptionFont(self.Parent.GetFont())
            style.SetCaptionColour(wx.Colour("#fff"))
            style.SetFirstColour(wx.Colour('#5c5c5c'))
            style.SetSecondColour(wx.Colour('#5c5c5c'))
            panel_bar.ApplyCaptionStyleAll(style)

            self._mainsizer.Add(panel_bar, 1, wx.EXPAND | wx.ALL)

            self._mainsizer.Layout()

            # Also bind the focus handler to the main panel and panel_bar
            nodeinfo_pnl.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)
            panel_bar.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)

        else:
            # Delete the window if the node is not selected
            self._mainsizer.Clear(delete_windows=True)

        self.AUIManager.Update()
        self.Parent.Refresh()
        self.Parent.Update()

    def OnAreaFocus(self, event):
        self.Statusbar.PushContextHints(2, mouseicon=ICON_MOUSE_LMB, text="",
                                        clear=True)
        self.Statusbar.PushContextHints(3, mouseicon=ICON_MOUSE_MMB, text="")
        self.Statusbar.PushContextHints(4, mouseicon=ICON_MOUSE_RMB, text="")
        self.Statusbar.PushMessage(_("Node Properties Area"))
        self.Statusbar.UpdateStatusBar()

    def OnAreaMenuButton(self, event):
        self.CreateAreaMenu()
        pos = ComputeMenuPosAlignedLeft(self.area_dropdownmenu, self.menu_button)
        self.area_dropdownmenu.Popup(pos, self)

    def OnMenuUndockPanel(self, event):
        self.AUIManager.GetPane("nodeproperties").Float()
        self.AUIManager.Update()

    def OnMenuHidePanel(self, event):
        self.AUIManager.GetPane("nodeproperties").Hide()
        self.AUIManager.Update()

    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)
Beispiel #6
0
class NodeGraphPanel(wx.Panel):
    def __init__(self,
                 parent,
                 registry,
                 id=wx.ID_ANY,
                 pos=wx.DefaultPosition,
                 size=wx.DefaultSize,
                 style=wx.NO_BORDER | wx.TAB_TRAVERSAL):
        wx.Panel.__init__(self, parent, id, pos, size, style)

        self.parent = parent
        self.registry = registry

        self.SetBackgroundColour(wx.Colour("#464646"))

        self.BuildUI()

    def BuildUI(self):
        main_sizer = wx.BoxSizer(wx.VERTICAL)

        topbar = wx.Panel(self)
        topbar.SetBackgroundColour("#424242")

        topbar_sizer = wx.GridBagSizer(vgap=1, hgap=1)

        self.area_icon = wx.StaticBitmap(
            topbar, bitmap=ICON_NODEGRAPH_PANEL.GetBitmap())
        self.area_label = wx.StaticText(topbar, label="")
        self.area_label.SetForegroundColour("#fff")
        self.area_label.SetFont(self.area_label.GetFont().Bold())

        self.zoom_field = NumberField(topbar,
                                      default_value=100,
                                      label=_("Zoom"),
                                      min_value=25,
                                      max_value=250,
                                      suffix="%",
                                      show_p=False)
        self.menu_button = Button(topbar,
                                  label="",
                                  flat=True,
                                  bmp=(ICON_MORE_MENU_SMALL.GetBitmap(),
                                       'left'))

        topbar_sizer.Add(self.area_icon, (0, 0),
                         flag=wx.LEFT | wx.TOP | wx.BOTTOM,
                         border=8)
        topbar_sizer.Add(self.area_label, (0, 1), flag=wx.ALL, border=8)
        topbar_sizer.Add(self.zoom_field, (0, 3), flag=wx.ALL, border=3)
        topbar_sizer.Add(self.menu_button, (0, 4), flag=wx.ALL, border=3)
        topbar_sizer.AddGrowableCol(2)

        topbar.SetSizer(topbar_sizer)

        self.nodegraph = NodeGraph(self,
                                   self.registry,
                                   size=(-1, self.Size[0] - 20))

        # here for testing
        self.nodegraph.AddNode('image_node', wx.Point(100, 10))
        self.nodegraph.AddNode('image_node', wx.Point(400, 100))
        self.nodegraph.AddNode('blur_node', wx.Point(600, 200))
        self.nodegraph.AddNode('mix_node', wx.Point(100, 200))
        self.nodegraph.AddNode('output_node', wx.Point(300, 270))

        main_sizer.Add(topbar, flag=wx.EXPAND | wx.LEFT | wx.RIGHT)
        main_sizer.Add(self.nodegraph, 1, flag=wx.EXPAND | wx.BOTH)

        self.SetSizer(main_sizer)

        self.nodegraph.Bind(EVT_GSNODEGRAPH_NODESELECT,
                            self.UpdateNodePropertiesPnl)
        self.nodegraph.Bind(EVT_GSNODEGRAPH_NODECONNECT, self.NodeConnectEvent)
        self.nodegraph.Bind(EVT_GSNODEGRAPH_NODEDISCONNECT,
                            self.NodeDisconnectEvent)
        self.nodegraph.Bind(EVT_GSNODEGRAPH_MOUSEZOOM, self.ZoomNodeGraph)
        self.zoom_field.Bind(EVT_NUMBERFIELD_CHANGE, self.ChangeZoom)
        self.menu_button.Bind(EVT_BUTTON, self.OnAreaMenuButton)
        self.Bind(wx.EVT_MENU, self.OnMenuUndockPanel, id=ID_MENU_UNDOCKPANEL)
        self.Bind(wx.EVT_MENU, self.OnMenuHidePanel, id=ID_MENU_HIDEPANEL)
        self.nodegraph.Bind(wx.EVT_ENTER_WINDOW, self.OnAreaFocus)

    @property
    def AUIManager(self):
        return self.parent._mgr

    @property
    def NodeGraph(self):
        return self.nodegraph

    @property
    def PropertiesPanel(self):
        return self.parent.prop_pnl

    @property
    def Statusbar(self):
        return self.parent.statusbar

    @property
    def ImageViewport(self):
        return self.parent.imageviewport_pnl

    def UpdateNodePropertiesPnl(self, event):
        self.PropertiesPanel.UpdatePanelContents(event.value)

    def NodeConnectEvent(self, event):
        self.parent.Render()

    def NodeDisconnectEvent(self, event):
        pass

    def ChangeZoom(self, event):
        level = event.value / 100.0
        self.nodegraph.SetZoomLevel(level)

    def ZoomNodeGraph(self, event):
        self.zoom_field.SetValue(event.value)
        self.zoom_field.UpdateDrawing()
        self.zoom_field.Refresh()

    def OnAreaFocus(self, event):
        self.Statusbar.PushContextHints(2,
                                        mouseicon=ICON_MOUSE_LMB_MOVEMENT,
                                        text=_("Box Select Nodes"),
                                        clear=True)
        self.Statusbar.PushContextHints(3,
                                        mouseicon=ICON_MOUSE_LMB,
                                        text=_("Select Node"))
        self.Statusbar.PushContextHints(
            4,
            mouseicon=ICON_MOUSE_LMB,
            keyicon=ICON_KEY_CTRL,
            text=_("Connect Selected Node To Output"))
        self.Statusbar.PushContextHints(5,
                                        mouseicon=ICON_MOUSE_MMB_MOVEMENT,
                                        text=_("Pan Nodegraph"))
        self.Statusbar.PushContextHints(6,
                                        mouseicon=ICON_MOUSE_RMB,
                                        text=_("Node Context Menu"))
        self.Statusbar.PushMessage(_("Nodegraph Area"))
        self.Statusbar.UpdateStatusBar()

    def OnAreaMenuButton(self, event):
        self.CreateAreaMenu()
        pos = ComputeMenuPosAlignedLeft(self.area_dropdownmenu,
                                        self.menu_button)
        self.area_dropdownmenu.Popup(pos, self)

    def OnMenuUndockPanel(self, event):
        self.AUIManager.GetPane("nodegraph").Float()
        self.AUIManager.Update()

    def OnMenuHidePanel(self, event):
        self.AUIManager.GetPane("nodegraph").Hide()
        self.AUIManager.Update()

    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)
Beispiel #7
0
class OpenFileChooserProp(Property):
    """ Allows the user to select a file to open.

    (e.g: use this to open an .PNG, .JPG, .JPEG image, etc.)
    """
    def __init__(self,
                 idname,
                 default="",
                 dlg_msg="Choose file...",
                 wildcard="All files (*.*)|*.*",
                 btn_lbl="Choose...",
                 label="",
                 visible=True):
        Property.__init__(self, idname, default, label, visible)
        self.dlg_msg = dlg_msg
        self.wildcard = wildcard
        self.btn_lbl = btn_lbl

        self._RunErrorCheck()

    def _RunErrorCheck(self):
        if type(self.value) != str:
            raise TypeError("OpenFileChooserField value must be a string!")

    def GetDlgMessage(self):
        return self.dlg_msg

    def GetWildcard(self):
        return self.wildcard

    def GetBtnLabel(self):
        return self.btn_lbl

    def CreateUI(self, parent, sizer):
        fold_panel = self.CreateFoldPanel(sizer)

        pnl = wx.Panel(fold_panel)
        pnl.SetBackgroundColour(wx.Colour("#464646"))

        vbox = wx.BoxSizer(wx.VERTICAL)
        hbox = wx.BoxSizer(wx.HORIZONTAL)

        self.textcontrol = TextCtrl(pnl,
                                    value=self.GetValue(),
                                    style=wx.BORDER_SIMPLE,
                                    placeholder="",
                                    size=(-1, 32))
        hbox.Add(self.textcontrol, proportion=1, flag=wx.EXPAND | wx.BOTH)

        self.button = Button(pnl, label=self.GetBtnLabel(), size=(-1, 32))
        hbox.Add(self.button, flag=wx.LEFT, border=5)
        self.button.Bind(EVT_BUTTON, self.WidgetEvent)

        vbox.Add(hbox, flag=wx.EXPAND | wx.BOTH | wx.ALL, border=6)

        vbox.Fit(pnl)
        pnl.SetSizer(vbox)

        self.AddToFoldPanel(sizer, fold_panel, pnl, spacing=10)

    def WidgetEvent(self, event):
        dlg = wx.FileDialog(None,
                            message=self.GetDlgMessage(),
                            defaultDir=os.getcwd(),
                            defaultFile="",
                            wildcard=self.GetWildcard(),
                            style=wx.FD_OPEN | wx.FD_CHANGE_DIR
                            | wx.FD_FILE_MUST_EXIST | wx.FD_PREVIEW)

        if dlg.ShowModal() == wx.ID_OK:
            paths = dlg.GetPaths()
            self.SetValue(paths[0])
            self.textcontrol.ChangeValue(self.GetValue())
Beispiel #8
0
    def __init__(self, *args, **kwds):
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.SetSize((600, 800))
        self.SetBackgroundColour(wx.Colour("#464646"))

        sz = wx.BoxSizer(wx.VERTICAL)

        ctrl1 = NumberField(self,
                            default_value=10,
                            label="Resolution",
                            min_value=0,
                            max_value=25,
                            suffix="px")
        ctrl2 = NumberField(self,
                            default_value=98,
                            label="Opacity",
                            min_value=0,
                            max_value=100,
                            suffix="%")

        ctrl3 = NumberField(self,
                            default_value=0,
                            label="Radius",
                            min_value=0,
                            max_value=10,
                            suffix="",
                            show_p=False)

        ctrl4 = NumberField(self,
                            default_value=50,
                            label="X:",
                            min_value=0,
                            max_value=100,
                            suffix="",
                            show_p=False)
        ctrl5 = NumberField(self,
                            default_value=13,
                            label="Y:",
                            min_value=0,
                            max_value=100,
                            suffix="",
                            show_p=False)

        ctrl6 = TextCtrl(self,
                         value="",
                         style=wx.BORDER_SIMPLE,
                         placeholder="",
                         size=(-1, 24))
        ctrl7 = NativeTextCtrl(self, size=(-1, 26))

        ctrl8 = ColorPickerButton(self, label="Background Color:")
        ctrl9 = ColorPickerButton(self,
                                  label="Highlight Color:",
                                  default=(0, 54, 78, 215))
        ctrl10 = ColorPickerButton(self,
                                   label="Text Color:",
                                   default=(255, 255, 255, 255))

        ctrl11 = Button(self,
                        label="Contrast",
                        bmp=(TEST_ICON.GetBitmap(), 'left'))
        ctrl12 = Button(self, label="Render Image")
        ctrl13 = Button(self,
                        label="Contrast",
                        bmp=(TEST_ICON.GetBitmap(), 'top'))
        ctrl14 = Button(self,
                        label="Choose Layer",
                        bmp=(TEST_ICON.GetBitmap(), 'left'))

        sz2 = wx.BoxSizer(wx.HORIZONTAL)

        ctrl15 = Button(self, label="", bmp=(TEST_ICON.GetBitmap(), 'left'))
        ctrl16 = Button(self, label="", bmp=(TEST_ICON.GetBitmap(), 'left'))
        ctrl17 = Button(self, label="", bmp=(TEST_ICON.GetBitmap(), 'left'))
        ctrl18 = Button(self, label="", bmp=(TEST_ICON.GetBitmap(), 'left'))

        sz2.Add(ctrl15, flag=wx.EXPAND | wx.ALL, border=6)
        sz2.Add(ctrl16, flag=wx.EXPAND | wx.ALL, border=6)
        sz2.Add(ctrl17, flag=wx.EXPAND | wx.ALL, border=6)
        sz2.Add(ctrl18, flag=wx.EXPAND | wx.ALL, border=6)

        sz.Add(ctrl1, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl2, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl3, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl4, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl5, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl6, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl7, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl8, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl9, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl10, flag=wx.EXPAND | wx.ALL, border=6)

        sz.Add(ctrl11, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl12, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl13, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(ctrl14, flag=wx.EXPAND | wx.ALL, border=6)
        sz.Add(sz2, border=20)

        self.SetSizer(sz)

        # Events
        self.Bind(EVT_NUMBERFIELD_CHANGE, self.OnFieldChange, ctrl1)
        self.Bind(EVT_NUMBERFIELD, self.OnField, ctrl1)
        self.Bind(EVT_BUTTON, self.OnColorChosen, ctrl8)
        self.Bind(EVT_BUTTON, self.OnColorChosen, ctrl9)
        self.Bind(EVT_BUTTON, self.OnColorChosen, ctrl10)
        self.Bind(EVT_BUTTON, self.OnButtonClick, ctrl11)
        self.Bind(EVT_BUTTON, self.OnButtonClick, ctrl12)
        self.Bind(EVT_BUTTON, self.OnButtonClick, ctrl13)
        self.Bind(EVT_BUTTON, self.OnButtonClick, ctrl14)