예제 #1
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        try:
            default_colour = wx.SystemSettings.GetColour(wx.SYS_COLOUR_MENUBAR)
        except AttributeError:
            default_colour = wx.SystemSettings_GetColour(wx.SYS_COLOUR_MENUBAR)
        self.SetBackgroundColour(default_colour)

        ## LINE 1
        text1 = wx.StaticText(self, -1,
                              _("Choose brush type, size or operation:"))

        ## LINE 2
        menu = wx.Menu()

        CIRCLE_BMP = wx.Bitmap(
            os.path.join(const.ICON_DIR, "brush_circle.jpg"),
            wx.BITMAP_TYPE_JPEG)
        item = wx.MenuItem(menu, MENU_BRUSH_CIRCLE, _("Circle"))
        item.SetBitmap(CIRCLE_BMP)

        SQUARE_BMP = wx.Bitmap(
            os.path.join(const.ICON_DIR, "brush_square.jpg"),
            wx.BITMAP_TYPE_JPEG)
        item2 = wx.MenuItem(menu, MENU_BRUSH_SQUARE, _("Square"))
        item2.SetBitmap(SQUARE_BMP)

        menu.Append(item)
        menu.Append(item2)

        bmp_brush_format = {
            const.BRUSH_CIRCLE: CIRCLE_BMP,
            const.BRUSH_SQUARE: SQUARE_BMP
        }
        selected_bmp = bmp_brush_format[const.DEFAULT_BRUSH_FORMAT]

        btn_brush_format = pbtn.PlateButton(self,
                                            wx.ID_ANY,
                                            "",
                                            selected_bmp,
                                            style=pbtn.PB_STYLE_SQUARE)
        btn_brush_format.SetMenu(menu)
        self.btn_brush_format = btn_brush_format

        spin_brush_size = InvSpinCtrl(self,
                                      -1,
                                      value=const.BRUSH_SIZE,
                                      min_value=1,
                                      max_value=1000,
                                      spin_button=False)
        # To calculate best width to spinctrl
        spin_brush_size.CalcSizeFromTextSize("MMMM")
        spin_brush_size.Bind(wx.EVT_SPINCTRL, self.OnBrushSize)
        self.spin = spin_brush_size

        combo_brush_op = wx.ComboBox(self,
                                     -1,
                                     "",
                                     size=(15, -1),
                                     choices=const.BRUSH_OP_NAME,
                                     style=wx.CB_DROPDOWN | wx.CB_READONLY)
        combo_brush_op.SetSelection(const.DEFAULT_BRUSH_OP)
        if sys.platform != 'win32':
            combo_brush_op.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
        self.combo_brush_op = combo_brush_op

        # Sizer which represents the second line
        line2 = wx.BoxSizer(wx.HORIZONTAL)
        line2.Add(btn_brush_format, 0, wx.EXPAND | wx.GROW | wx.RIGHT, 5)
        line2.Add(spin_brush_size, 0, wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 5)
        line2.Add(combo_brush_op, 1,
                  wx.RIGHT | wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 5)

        ## LINE 3
        text_thresh = wx.StaticText(self, -1, _("Brush threshold range:"))

        ## LINE 4
        gradient_thresh = grad.GradientCtrl(self, -1, 0, 5000, 0, 5000,
                                            (0, 0, 255, 100))
        self.gradient_thresh = gradient_thresh
        self.bind_evt_gradient = True

        # Add lines into main sizer
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.AddSpacer(7)
        sizer.Add(text1, 0, wx.GROW | wx.EXPAND | wx.LEFT | wx.RIGHT, 5)
        sizer.AddSpacer(2)
        sizer.Add(line2, 0, wx.GROW | wx.EXPAND | wx.LEFT | wx.RIGHT, 5)
        sizer.AddSpacer(5)
        sizer.Add(text_thresh, 0, wx.GROW | wx.EXPAND | wx.LEFT | wx.RIGHT, 5)
        sizer.AddSpacer(5)
        sizer.Add(gradient_thresh, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 5)
        sizer.AddSpacer(7)
        sizer.Fit(self)

        self.SetSizerAndFit(sizer)
        self.Update()
        self.SetAutoLayout(1)

        self.__bind_events()
        self.__bind_events_wx()
예제 #2
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        ## LINE 1

        # Combo related to mask naem
        combo_mask_name = wx.ComboBox(self,
                                      -1,
                                      "",
                                      choices=MASK_LIST,
                                      style=wx.CB_DROPDOWN | wx.CB_READONLY)
        #combo_mask_name.SetSelection(0) # wx.CB_SORT
        if sys.platform != 'win32':
            combo_mask_name.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
        self.combo_mask_name = combo_mask_name

        # Mask colour
        button_colour = csel.ColourSelect(self,
                                          111,
                                          colour=(0, 255, 0),
                                          size=(22, -1))
        self.button_colour = button_colour

        # Sizer which represents the first line
        line1 = wx.BoxSizer(wx.HORIZONTAL)
        line1.Add(combo_mask_name, 1, wx.EXPAND | wx.GROW | wx.TOP | wx.RIGHT,
                  2)
        line1.Add(button_colour, 0,
                  wx.TOP | wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER_VERTICAL, 2)

        ### LINE 2
        text_thresh = wx.StaticText(self, -1,
                                    _("Set predefined or manual threshold:"))

        ### LINE 3
        THRESHOLD_LIST = [
            "",
        ]
        combo_thresh = wx.ComboBox(
            self,
            -1,
            "",  #size=(15,-1),
            choices=THRESHOLD_LIST,
            style=wx.CB_DROPDOWN | wx.CB_READONLY)
        combo_thresh.SetSelection(0)
        if sys.platform != 'win32':
            combo_thresh.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
        self.combo_thresh = combo_thresh

        ## LINE 4
        gradient = grad.GradientCtrl(self, -1, -5000, 5000, 0, 5000,
                                     (0, 255, 0, 100))
        self.gradient = gradient

        # Add all lines into main sizer
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.AddSpacer(7)
        sizer.Add(line1, 0, wx.GROW | wx.EXPAND | wx.LEFT | wx.RIGHT, 5)

        sizer.AddSpacer(5)
        sizer.Add(text_thresh, 0, wx.GROW | wx.EXPAND | wx.LEFT | wx.RIGHT, 5)
        sizer.AddSpacer(2)
        sizer.Add(combo_thresh, 0, wx.EXPAND | wx.GROW | wx.LEFT | wx.RIGHT, 5)

        sizer.AddSpacer(5)
        sizer.Add(gradient, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5)
        sizer.AddSpacer(7)

        sizer.Fit(self)

        self.SetSizerAndFit(sizer)
        self.Update()
        self.SetAutoLayout(1)

        # Non GUI stuff

        proj = Project()
        self.threshold_modes = proj.threshold_modes
        self.threshold_modes_names = []
        self.bind_evt_gradient = True
        self.__bind_events()
        self.__bind_events_wx()