Пример #1
0
 def show_color_picker(self, current_color):
     popup = Popup(title='Color Picker',
                   size_hint=(0.5, 0.5))
     color_picker = ColorPicker(color=current_color)
     color_picker.bind(color=self.on_paint_color)
     popup.content = color_picker
     popup.open()
Пример #2
0
    def color_picker(self, wid, btn_color):

        colPckr = ColorPicker()
        
        select_button = Button(text = "Select", size = (100, 25))
        layout = GridLayout(cols = 1, padding = 10)

        layout.add_widget(select_button)
        layout.add_widget(colPckr)

        color_popup = Popup(title = 'Color Wheel', content = layout,
                            size_hint = (None, None), size = (600, 600))
        color_popup.open()

        # To monitor changes, we can bind to color property changes
        def on_color(instance, value):
            print ("RGBA = ", str(value))  #  or instance.color
            print ("HSV = ", str(instance.hsv))
            print ("HEX = ", str(instance.hex_color))

            global col
            col = value
            wid.selected_color = value

        colPckr.bind(color = on_color)
        select_button.bind(on_press = color_popup.dismiss)
Пример #3
0
    def addGraph(self,datapoint,xData,yData,dt):
        points = [t for t in zip((xData).astype(int),yData)];
        ymin = int(min(yData))
        ymax = int(max(yData))
        xmin = int(min(xData))
        xmax = int(max(xData))

        if self.setMinMax :
            if self.ids.graph.ymin > ymin:
                self.ids.graph.ymin = ymin
            if self.ids.graph.ymax < ymax:
                self.ids.graph.ymax = ymax
            if self.ids.graph.xmin > xmin:
                self.ids.graph.xmin = xmin
            if self.ids.graph.xmax < xmax:
                self.ids.graph.xmax = xmax  
        else:
            self.ids.graph.ymin = ymin
            self.ids.graph.ymax = ymax
            self.ids.graph.xmin = xmin
            self.ids.graph.xmax = xmax  
            self.setMinMax = True

        plot = LinePlot(color=self.color)
        plot.points = points
        self.ids.graph.add_plot(plot)
        index = random.randint(0,3)
        btn1 = ToggleButton(text=datapoint,background_color=self.color)
        btn1.bind(state=partial(self.on_press,datapoint))
        cp = ColorPicker(color=self.color)
        cp.bind(color=partial(self.on_color,datapoint))
        self.plotdata[datapoint] = {'color':self.color,'button':btn1,'plot':plot,'colorpick':cp,'points':points}
        self.color[index]=self.color[index] - (random.random());
        self.ids.hBox.add_widget(btn1)
        self.ids.hBoxColor.add_widget(cp)
Пример #4
0
    def color_chooser(self):
        if uiApp.current_selected_widget == None:
            toast("select a wire first")
            return

        content = Button(text='Close me!', size_hint_y=0.1)
        popup = Popup(title="Theme color")

        box = BoxLayout(orientation='vertical')
        clr_picker = ColorPicker()

        def on_color(instance, value):
            # self.current_selected_widget.clr.color=instance.color

            for i in (uiApp.current_selected_widget.parent.parent).children:
                for j in i.children:
                    if isinstance(j, DraggableWire):
                        child = j.children[0]
                        child.canvas.before.children[0].rgba = instance.color
            # child = self.current_selected_widget.children[0]
            # child.canvas.before.children[0].rgba = instance.color

        clr_picker.bind(color=on_color)
        box.add_widget(clr_picker)
        content.bind(on_press=popup.dismiss)
        box.add_widget(content)
        popup.add_widget(box)
        popup.open()
Пример #5
0
def show_popup():
    show = P()  # Create a new instance of the P class
    clr_picker = ColorPicker()
    clr_picker.pos_hint = {"x": 0.05, "top": 0.99}
    show.add_widget(clr_picker)

    def on_color(instance, value):
        print("RGBA = ", str(value))  # or instance.color
        global mcolor
        res = tuple(value)
        mcolor = list(map(mul, res, (255, 255, 255, 255)))
        temp = 0
        temp = mcolor[0]
        mcolor[0] = mcolor[2]
        mcolor[2] = temp
        mcolor = tuple(mcolor)

        print(mcolor)

    clr_picker.bind(color=on_color)
    popupWindow = Popup(title="Popup Window",
                        content=show,
                        size_hint=(None, None),
                        size=(600, 600))
    # Create the popup window

    popupWindow.open()  # show the popup
Пример #6
0
class ColorPopup(Popup):
    color = ColorProperty()
    cp = ObjectProperty()

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.auto_dismiss = False
        self.size = (500, 500)
        self.size_hint = (None, None)
        self.cp = ColorPicker(size_hint=(1, 0.9), color=self.color)
        self.title_align = "center"
        self.title_color = [0, 0, 0, 1]
        self.background = ""
        self.separator_height = 0
        self.cp.bind(color=self.setter("background_color"))
        box = BoxLayout(orientation="vertical")
        box.add_widget(self.cp)
        self.ok_button = Button(text="Ok", on_press=self.on_choosed, size_hint=(1, 1))
        self.cancel_button = Button(
            text="Annuler", on_press=self.dismiss, size_hint=(1, 1)
        )
        button_box = BoxLayout(orientation="horizontal", size_hint=(1, 0.1))
        button_box.add_widget(self.ok_button)
        button_box.add_widget(self.cancel_button)
        box.add_widget(button_box)
        self.content = box

    def on_choosed(self, button):
        self.color = self.cp.color
        self.dismiss()
    def show(self, rgba, title="", width=400, height=430):

        self._accept = False
        self._rgba = rgba
        vbox_main = BoxLayout(orientation="vertical")
        hbox_buttons = BoxLayout(orientation="horizontal")
        hbox_buttons.size_hint_y = None
        hbox_buttons.height = 35
        btn_ok = Button(text="Ok", size_hint_y=None, height=30)
        btn_cancel = Button(text="Cancel", size_hint_y=None, height=30)
        self.cp = ColorPicker()
        self.cp.color = self._rgba

        #bind
        self.cp.bind(color=self.on_color)
        btn_ok.on_release = lambda: self.handle_color_picked(self._rgba)
        btn_cancel.on_release = lambda: self.popup.dismiss()

        #layout
        hbox_buttons.add_widget(btn_ok)
        hbox_buttons.add_widget(btn_cancel)
        vbox_main.add_widget(self.cp)
        vbox_main.add_widget(hbox_buttons)

        self.popup = Popup(title='',
                           content=vbox_main,
                           size_hint=(None, None),
                           size=(width, height))
        self.popup.open()
        print("size:", btn_ok.on_release)
Пример #8
0
 def choose_color(self):
     view = ModalView()
     clrpr = ColorPicker()
     view.add_widget(clrpr)
     view.open()
     def on_color(instance, value):
         self.color_picked = value
     clrpr.bind(color=on_color)
Пример #9
0
 def __init__(self, **kw):
     super(ColorPickerContainer, self).__init__(**kw)
     brush = APP_CONTEXT.get('brush')
     self.color_picker = ColorPicker()
     if brush:
         self.color_picker.color = brush.color
     self.color_picker.bind(color=self.picker_callback)
     self.add_widget(self.color_picker)
Пример #10
0
class ColorPickerContainer(Bubble):
    def __init__(self, *args, **kw):
        picked_callback = kw.get("picker_callback")
        super(ColorPickerContainer, self).__init__(*args, **kw)
        brush = APP_CONTEXT.get("brush")
        self.color_picker = ColorPicker()
        if brush:
            self.color_picker.color = brush.color
        self.color_picker.bind(color=picked_callback)
        self.add_widget(self.color_picker)
Пример #11
0
 def __init__(self, can, **kwargs):
     super(clr_pkr, self).__init__(**kwargs)
     self.pkr = ColorPicker(pos_hint={
         'center_x': 0.5,
         'center_y': 0.5
     },
                            size_hint=(1, 1))
     self.pkr.bind(color=lambda instance, value: can.add(
         Color(value[0], value[1], value[2], value[3])))
     self.pk()
Пример #12
0
    def draw_colorwheel(self, name) :
        draw.name = name
        clr_picker = ColorPicker(size_hint =(.5, .5), pos_hint ={"top":0.72, "right": 0.86})
        clr_picker.bind(color=self.on_color)

        if name == "ennemies_glow" :
            try :
                self.rl_visuals.remove_widget(self.rl_wheel_ennemies)
                self.rl_wheel_ennemies = None
                return
            except :
                self.rl_wheel_ennemies = RelativeLayout(size =(0, 0))
                self.rl_wheel_ennemies.add_widget(clr_picker)
                self.rl_visuals.add_widget(self.rl_wheel_ennemies)
        
        elif name == "allies_glow" :
            try :
                self.rl_visuals.remove_widget(self.rl_wheel_allies)
                self.rl_wheel_allies = None
                return
            except :
                self.rl_wheel_allies = RelativeLayout(size =(0, 0))
                self.rl_wheel_allies.add_widget(clr_picker)
                self.rl_visuals.add_widget(self.rl_wheel_allies)
        
        elif name == "ennemies_chams" :
            try :
                self.rl_visuals.remove_widget(self.rl_wheel_ennemies_chams)
                self.rl_wheel_ennemies_chams = None
                return
            except :
                self.rl_wheel_ennemies_chams = RelativeLayout(size =(0, 0))
                self.rl_wheel_ennemies_chams.add_widget(clr_picker)
                self.rl_visuals.add_widget(self.rl_wheel_ennemies_chams)
        
        elif name == "allies_chams" :
            try :
                self.rl_visuals.remove_widget(self.rl_wheel_allies_chams)
                self.rl_wheel_allies_chams = None
                return
            except :
                self.rl_wheel_allies_chams = RelativeLayout(size =(0, 0))
                self.rl_wheel_allies_chams.add_widget(clr_picker)
                self.rl_visuals.add_widget(self.rl_wheel_allies_chams)
            
        elif name == "ui_color" :
            try :
                self.rl_settings.remove_widget(self.rl_wheel_ui)
                self.rl_wheel_ui = None
                return
            except :
                self.rl_wheel_ui = RelativeLayout(size =(0, 0))
                self.rl_wheel_ui.add_widget(clr_picker)
                self.rl_settings.add_widget(self.rl_wheel_ui)
Пример #13
0
 def __init__(self, title, paint, **kwargs):
     super().__init__(**kwargs)
     self.paint = paint
     self.title = title
     self.colorpicker = ColorPicker(color=self.paint.BACKGROUND_COLOR)
     self.colorpicker.bind(color=self.set_bg)
     self.colorbox.add_widget(self.colorpicker)
     self.colorbox.add_widget(
         MDRectangleFlatButton(size_hint=(1, .1),
                               text='Close',
                               on_release=lambda btn: self.dismiss()))
Пример #14
0
class ColorPickerContainer(Bubble):
    """ color picker container """
    picker_callback = ObjectProperty()

    def __init__(self, **kw):
        super(ColorPickerContainer, self).__init__(**kw)
        brush = APP_CONTEXT.get('brush')
        self.color_picker = ColorPicker()
        if brush:
            self.color_picker.color = brush.color
        self.color_picker.bind(color=self.picker_callback)
        self.add_widget(self.color_picker)
Пример #15
0
    def dispMenu(self, sth):
        if self.evr.elemSelected is not None and self.isInfoDisplayed is False:
            self.rows = 2
            self.deleteBtn = DeleteBtn()
            self.deleteBtn.bind(on_press=self.evr.deleteElemSelec)
            self.add_widget(self.deleteBtn)
            self.isInfoDisplayed = True
            self.clr_picker = ColorPicker()
            self.clr_picker.bind(color=self.evr.elemSelected.changecolor)
            self.add_widget(self.clr_picker)

        if self.evr.elemSelected is None and self.isInfoDisplayed is True:
            self.clear_widgets()
            self.isInfoDisplayed = False
Пример #16
0
 def show_color_dialog(self, colname):
     setcol = self.formatter.get_colors_to_set()[colname]
     hex_color = setcol.get(self.formatter)
     if hex_color and hex_color[0] == '#':
         colors = dict(hex_color=hex_color)
     elif hex_color and hex_color in FORMATTER_COLORS:
         colors = dict(hex_color=FORMATTER_COLORS[hex_color])
     else:
         colors = dict(color=(0, 0, 0, 0))
     cp = ColorPicker(size_hint_y=None, height=dp(300), **colors)
     dialog = MDDialog(
         title="Color choice",
         type="custom",
         content_cls=cp,
         buttons=[
             MDRaisedButton(text="Cancel",
                            on_release=partial(self.on_new_color,
                                               renc=cp,
                                               colname=colname)),
             MDFlatButton(text="OK",
                          on_release=partial(self.on_new_color,
                                             renc=cp,
                                             colname=colname)),
         ])
     dialog.open()
Пример #17
0
    def _create_popup(self, instance) -> None:
        """ create popup layout  """
        oContent:BoxLayout = BoxLayout(orientation='vertical', spacing='5dp')
        self.popup = popup = Popup(title=self.title,content=oContent, size_hint=(0.9, 0.9))

        # Create the slider used for numeric input
        oColorpicker:ColorPicker = ColorPicker()
        self.oColorpicker = oColorpicker

        oContent.add_widget(oColorpicker)
        oContent.add_widget(SettingSpacer())

        oBtn:cMultiLineButton

        # 2 buttons are created for accept or cancel the current value
        oBtnlayout:BoxLayout = BoxLayout(size_hint_y=None, height='50dp', spacing='5dp')
        oBtn = cMultiLineButton(text=ReplaceVars('$lvar(5008)'), halign='center', valign='middle')
        oBtn.bind(on_release=self._validate)
        oBtnlayout.add_widget(oBtn)
        oBtn = cMultiLineButton(text=ReplaceVars('$lvar(5009)'), halign='center', valign='middle')
        oBtn.bind(on_release=self._dismiss)
        oBtnlayout.add_widget(oBtn)
        oContent.add_widget(oBtnlayout)
        oColorpicker.bind(color= self.On_Color)
        # all done, open the popup !

        oColorpicker.hex_color = self.value

        popup.open()
Пример #18
0
   def colorDialog(self, button): 
       # Create a layout for the widget
       layout = GridLayout(cols = 1, padding = 10);
       layout.spacing = [0, 5];
       # Add widget and close button
       clr_picker = ColorPicker();
       closeButton = Button(text ='Close', size_hint=(1, 0.075));
       layout.add_widget(clr_picker);          
       layout.add_widget(closeButton);      
 
       # Instantiate the modal popup and display 
       popup = Popup(title ='Pick a Color', content = layout, auto_dismiss=False);
       popup.open();
       # Bind the widgets with respective functions
       clr_picker.bind(color=self.pickColor);
       closeButton.bind(on_press=popup.dismiss);
Пример #19
0
    def _create_popup(self, instance):
        # create popup layout
        content = BoxLayout(orientation='vertical', spacing='5dp')

        popup_width = min(0.95 * Window.width, dp(500))

        self.colorpicker = ColorPicker(
            color=list(map(float, self.value.split(','))))
        content.add_widget(self.colorpicker)

        # 2 buttons are created for accept or cancel the current value
        btnlayout = BoxLayout(size_hint_y=None, height='50dp', spacing='5dp')
        btn = Button(text='Ok')
        btn.bind(on_release=self._validate)
        btnlayout.add_widget(btn)
        btn = Button(text='Cancel')
        btn.bind(on_release=self._dismiss)
        btnlayout.add_widget(btn)
        content.add_widget(btnlayout)

        self.popup = popup = Popup(title=self.title,
                                   content=content,
                                   size_hint=(None, 0.8),
                                   width=popup_width)

        # all done, open the popup !
        popup.open()
Пример #20
0
    def _create_popup(self, instance):
        # create popup layout
        content = BoxLayout(orientation='vertical', spacing='5dp')
        popup_width = 0.95 * Window.width
        self.popup = popup = Popup(title=self.title,
                                   content=content,
                                   size_hint=(None, 0.9),
                                   width=popup_width)

        self.colorpicker = colorpicker = ColorPicker(
            color=utils.get_color_from_hex(self.value))
        colorpicker.bind(on_color=self._validate)

        self.colorpicker = colorpicker
        content.add_widget(colorpicker)

        # 2 buttons are created for accept or cancel the current value
        btnlayout = BoxLayout(size_hint_y=None, height='50dp', spacing='5dp')
        btn = Button(text='Ok')
        btn.bind(on_release=self._validate)
        btnlayout.add_widget(btn)
        btn = Button(text='Cancel')
        btn.bind(on_release=self._dismiss)
        btnlayout.add_widget(btn)
        content.add_widget(btnlayout)

        popup.open()
Пример #21
0
class ColorPopup(Popup):
    '''Color selector for background and center point'''
    colorbox = ObjectProperty()
    no_bg_switch = ObjectProperty()
    no_center_point_switch = ObjectProperty()

    def __init__(self, title, paint, **kwargs):
        super().__init__(**kwargs)
        self.paint = paint
        self.title = title
        self.colorpicker = ColorPicker(color=self.paint.BACKGROUND_COLOR)
        self.colorpicker.bind(color=self.set_bg)
        self.colorbox.add_widget(self.colorpicker)
        self.colorbox.add_widget(
            MDRectangleFlatButton(size_hint=(1, .1),
                                  text='Close',
                                  on_release=lambda btn: self.dismiss()))

    def set_bg(self, instance, value):
        '''sets the background to the selected color'''
        if self.no_bg_switch.active:
            Window.clearcolor = list(value)
            self.paint.canvas.before.get_group('background')[0].a = 0
        else:
            current_bg = self.paint.canvas.before.get_group('background')[0]
            current_bg.r = value[0]
            current_bg.g = value[1]
            current_bg.b = value[2]
            current_bg.a = value[3]
            self.paint.BACKGROUND_COLOR = value

    def disable_center_point(self):
        '''on off center point'''
        if self.no_center_point_switch.active:
            self.paint.canvas.before.get_group('center')[0].a = 0
        else:
            self.paint.canvas.before.get_group('center')[0].a = 1

    def disable_bg(self):
        '''makes the background invisible for saving or turns it back on'''
        if self.no_bg_switch.active:
            Window.clearcolor = list(self.paint.BACKGROUND_COLOR)
            self.paint.canvas.before.get_group('background')[0].a = 0
        else:
            Window.clearcolor = (0, 0, 0, 1)
            self.paint.canvas.before.get_group('background')[0].a = 1
    def change_color(self,*args):

        r,g,b,a = self.col[0], self.col[1], self.col[2], self.col[3]
        self.picker = ColorPicker(pos_hint={'center_x': .5, 'center_y': .5},
                                color = [r,g,b,a],
                                size_hint = (1,1))

        self.picker.add_widget(Button(text = 'Select',
                                  pos_hint = {'center_x': .76, 'y': -.02},
                                  size_hint = (.08, .08),
                                #   size = (100, 35),
                                  on_press = self.selected))

        self.edge_toggle = ToggleButton(text = 'Edge',
                                       pos_hint = {'center_x': .55, 'y': -.02},
                                       size_hint = (.08, .08),
                                    #    size = (100, 35),
                                       group = 'color',
                                       state = 'down')
        self.edge_toggle.bind(on_press = self.pressed_toggle_edge)
        self.picker.add_widget(self.edge_toggle)

        self.fill_toggle = ToggleButton(text = 'Fill',
                                            pos_hint = {'center_x': .63, 'y': -.02},
                                            size_hint = (.08, .08),
                                            # size = (100, 35),
                                            group = 'color')
        self.fill_toggle.bind(on_press = self.pressed_toggle_fill)
        self.picker.add_widget(self.fill_toggle)

        self.match_toggle = ToggleButton(text = 'Match',
                                            pos_hint = {'x': .8, 'y': -.02},
                                            size_hint = (.08, .08),
                                            # size = (100, 35),
                                            group = 'match')
        self.picker.add_widget(self.match_toggle)


        self.ColPop = Popup(title = "Choose Color",
                        size_hint = (.50, .50),
                        content = self.picker,
                        # size = (1500, 750),
                        auto_dismiss = True)

        self.ColPop.open()
Пример #23
0
    def createGraphicsPanel(self):
        self.graphicsPanel = BoxLayout(orientation='vertical', size_hint_y=0.6)

        graphicsIntro = BoxLayout(orientation='horizontal', size_hint_y=0.15)
        graphicsLabel = Label(text="Graphics")
        self.graphicsName = TextInput(hint_text="Object Name (e.g. center)",
                                      multiline=False)
        graphicsIntro.add_widget(graphicsLabel)
        graphicsIntro.add_widget(self.graphicsName)

        graphicsShape = BoxLayout(orientation='horizontal', size_hint_y=0.15)
        shapeLabel = Label(text="Shape")
        self.shapeSpinner = Spinner(values=["circle", "box", "arrow"])
        graphicsShape.add_widget(shapeLabel)
        graphicsShape.add_widget(self.shapeSpinner)

        graphicsColor = BoxLayout(orientation='horizontal')
        self.colorPicker = ColorPicker()
        graphicsColor.add_widget(self.colorPicker)

        graphicsSize = BoxLayout(orientation='horizontal', size_hint_y=0.15)
        self.sizeX = TextInput(hint_text="Size X",
                               multiline=False,
                               input_filter="float")
        self.sizeY = TextInput(hint_text="Size Y",
                               multiline=False,
                               input_filter="float")
        self.sizeZ = TextInput(hint_text="Size Z",
                               multiline=False,
                               input_filter="float")
        graphicsSize.add_widget(self.sizeX)
        graphicsSize.add_widget(self.sizeY)
        graphicsSize.add_widget(self.sizeZ)

        graphicsPosition = BoxLayout(orientation='horizontal',
                                     size_hint_y=0.15)
        self.posX = TextInput(hint_text="Pos X",
                              multiline=False,
                              input_filter="float")
        self.posY = TextInput(hint_text="Pos Y",
                              multiline=False,
                              input_filter="float")
        self.posZ = TextInput(hint_text="Pos Z",
                              multiline=False,
                              input_filter="float")
        graphicsSize.add_widget(self.posX)
        graphicsSize.add_widget(self.posY)
        graphicsSize.add_widget(self.posZ)

        graphicsButton = Button(text="Add Graphics Object to State", on_release=self.addGraphics,\
                                size_hint_y=0.15)
        self.graphicsPanel.add_widget(graphicsIntro)
        self.graphicsPanel.add_widget(graphicsShape)
        self.graphicsPanel.add_widget(graphicsColor)
        self.graphicsPanel.add_widget(graphicsSize)
        self.graphicsPanel.add_widget(graphicsPosition)
        self.graphicsPanel.add_widget(graphicsButton)
Пример #24
0
 def create_color_popup(self):
     self.color_popup = MyPopup()
     self.color_popup.title = 'Colors'
     bxl = BoxLayout(orientation='vertical', padding=25)
     clr_picker = ColorPicker(color=self.COLOR)
     clr_picker.bind(color=self.on_color)
     bxl.add_widget(clr_picker)
     self.random_color_select = MDSwitch()
     radmcolrbx = BoxLayout(size_hint=(1, .15))
     radmcolrbx.add_widget(Label(text='Use random colors:'))
     radmcolrbx.add_widget(self.random_color_select)
     bxl.add_widget(radmcolrbx)
     bxl.add_widget(
         MDRectangleFlatButton(
             text="Close",
             size_hint=(1, .1),
             on_release=lambda btn: self.color_popup.dismiss()))
     self.color_popup.add_widget(bxl)
    def change_color_background(self,*args):

        r,g,b,a = self.col_background[0], self.col_background[1], self.col_background[2], self.col_background[3]
        self.picker_background = ColorPicker(pos_hint={'center_x': .5, 'center_y': .5},
                                color = [r,g,b,a],
                                size_hint = (1, 1))

        self.picker_background.add_widget(Button(text = 'Select',
                                  pos_hint = {'center_x': .76, 'y': -.02},
                                  size_hint = (.08, .08),
                                #   size = (100, 35),
                                  on_press = self.background_selected))
        self.ColPop_background = Popup(title = "Choose Background",
                        size_hint = (.5, .5),
                        content = self.picker_background,
                        # size = (1500, 750),
                        auto_dismiss = True)

        self.ColPop_background.open()
Пример #26
0
	def build(self):
		self.ids.setbox.clear_widgets()
		
		#create layout to display the data
		color_picker = ColorPicker()
		self.ids.setbox.add_widget(color_picker)
		
		#capture color selection
		def on_color(instance, value):
			RGBA = list(color_picker.hex_color[1:])
			
			A = (RGBA[6] + RGBA[7])
			B = (RGBA[4] + RGBA[5])
			G = (RGBA[2] + RGBA[3])
			R = (RGBA[0] + RGBA[1])
			
			global ARGB
			ARGB = A+R+G+B
			
		color_picker.bind(color=on_color) #binds to function above
Пример #27
0
class Modif(GridLayout):
    def __init__(self, evr):
        super(Modif, self).__init__()
        self.evr = evr
        self.isInfoDisplayed = False
        Clock.schedule_interval(self.dispMenu, 1 / 10)

    def dispMenu(self, sth):
        if self.evr.elemSelected is not None and self.isInfoDisplayed is False:
            self.rows = 2
            self.deleteBtn = DeleteBtn()
            self.deleteBtn.bind(on_press=self.evr.deleteElemSelec)
            self.add_widget(self.deleteBtn)
            self.isInfoDisplayed = True
            self.clr_picker = ColorPicker()
            self.clr_picker.bind(color=self.evr.elemSelected.changecolor)
            self.add_widget(self.clr_picker)

        if self.evr.elemSelected is None and self.isInfoDisplayed is True:
            self.clear_widgets()
            self.isInfoDisplayed = False
Пример #28
0
    def build(self):
        #create layout to display the data
        color_picker = ColorPicker()
        self.ids.setbox.add_widget(color_picker)

        #capture color selection
        def on_color(instance, value):
            #print "RGBA = ", str(value)  #  or instance.color
            #print "HSV = ", str(instance.hsv)
            #print "HEX = ", str(instance.hex_color)
            RGBA = list(color_picker.hex_color[1:])

            A = (RGBA[6] + RGBA[7])
            B = (RGBA[4] + RGBA[5])
            G = (RGBA[2] + RGBA[3])
            R = (RGBA[0] + RGBA[1])

            global ARGB
            ARGB = A + R + G + B
            print(ARGB)

        color_picker.bind(color=on_color)  #binds to function above
Пример #29
0
    def get_configuration_subpanel(self, prop, owner, key):
        layout = StackLayout(orientation='lr-tb',
                             size_hint=(None, None),
                             width=dc.col_width,
                             height=20)

        clr_picker = ColorPicker()
        if (key in rvit.core.pars.keys()):
            current_color = rvit.core.pars[key]
            clr_picker.color = current_color

        def on_color(instance, value):
            prop.set(owner, list(instance.color))
            rvit.core.pars[key] = list(instance.color)

        clr_picker.bind(color=on_color)
        layout.add_widget(
            Label(text=prop.name, size_hint=(1.0, None),
                  height=dc.text_height))
        layout.add_widget(clr_picker)

        layout.height = 550

        return layout
Пример #30
0
class ColorPickerScreen(Screen):
    def __init__(self, **kw):
        super().__init__(**kw)
        self.size_hint = 0.9, 0.9
        self.pos_hint = {"center_x": 0.5, "center_y": 0.5}
        box = BoxLayout()
        box.orientation = "vertical"
        self.add_widget(box)

        self.pick_btn = MDRaisedButton(on_press=self.press_ok)
        self.pick_btn.size_hint = 1, 0.1
        self.pick_btn.text = "пример"

        self.app = MDApp.get_running_app()
        self.current_color = None
        self.clr_picker = ColorPicker()
        self.clr_picker.bind(color=self.on_color)

        okbtn = MDRaisedButton(on_press=self.press_ok)
        okbtn.text = "принять"

        box.add_widget(self.pick_btn)
        box.add_widget(self.clr_picker)

        box.add_widget(okbtn)

    def press_ok(self, v):

        self.app.screen_manager.current = "settings_view"
        self.app.settings_view.options["color"].set_color(self.current_color)
        self.app.view.set_color(self.current_color)
        self.pick_btn.md_bg_color = self.current_color

    def on_color(self, instance, value):
        self.current_color = value
        self.pick_btn.md_bg_color = self.current_color
Пример #31
0
    def __init__(self, **kw):
        super().__init__(**kw)
        self.size_hint = 0.9, 0.9
        self.pos_hint = {"center_x": 0.5, "center_y": 0.5}
        box = BoxLayout()
        box.orientation = "vertical"
        self.add_widget(box)

        self.pick_btn = MDRaisedButton(on_press=self.press_ok)
        self.pick_btn.size_hint = 1, 0.1
        self.pick_btn.text = "пример"

        self.app = MDApp.get_running_app()
        self.current_color = None
        self.clr_picker = ColorPicker()
        self.clr_picker.bind(color=self.on_color)

        okbtn = MDRaisedButton(on_press=self.press_ok)
        okbtn.text = "принять"

        box.add_widget(self.pick_btn)
        box.add_widget(self.clr_picker)

        box.add_widget(okbtn)
Пример #32
0
class RGBW_Layout_Container(GridLayout):
    rgbw1 = ObjectProperty(RGBW_Led_Widget)
    rgbw2 = ObjectProperty(RGBW_Led_Widget)
    clr_picker = ColorPicker()

    def __init__(self, colors, config):
        super(RGBW_Layout_Container, self).__init__()
        self.rgbw1 = RGBW_Led_Widget(1, config)
        self.rgbw2 = RGBW_Led_Widget(2, config)
        #self.cols = 3
        self.cols = 2
        self.rgbw1.build(colors[1])
        self.add_widget(self.rgbw1)
        self.rgbw2.build(colors[2])
        self.add_widget(self.rgbw2)
        #self.add_widget(self.clr_picker)
    def build(self):
        return self
Пример #33
0
    def open_colorpicker_popup(self, popup, _id, buttoninstance):
        colorPicker = ColorPicker(id=_id)
        buttonLayout = BoxLayout(orientation="horizontal",
                                 padding="5sp",
                                 size_hint_y=0.2)
        okButton = Button(
            text="OK",
            on_release= lambda but: \
                self.popup_dismissed(_id, colorPicker.hex_color, colorPicker.color, buttoninstance) and \
                popup.dismiss())
        cancelButton = Button(text="Cancel",
                              on_release=lambda but: popup.dismiss())
        buttonLayout.add_widget(okButton)
        buttonLayout.add_widget(cancelButton)

        mainLayout = BoxLayout(orientation="vertical")
        mainLayout.add_widget(colorPicker)
        mainLayout.add_widget(buttonLayout)
        return mainLayout
Пример #34
0
from kivy.uix.colorpicker import ColorPicker

clr_picker = ColorPicker()
add_widget(clr_picker)
    
def on_color():
    print "RGBA = ", str(value)
    print "HSV = ", str(instance.hsv)
    print "HEX = ", str(instance.hex_color)
        
clr_picker.bind(color=on_color)
Пример #35
0
    def __init__(self, **kwargs):
        '''
        Init main class ui
        '''
        super(MainBox, self).__init__(**kwargs)
        self.f_size = '15sp'

        # Shape Widget
        self.shape = Shape(size_hint=(0.7, 1))
        self.add_widget(self.shape)

        # Right Menu
        self.panel = TabbedPanel(size_hint=(0.3, 1), do_default_tab=False)
        self.tab_param = TabbedPanelItem(text='Parameters')
        self.tab_color = TabbedPanelItem(text='Shape')
        self.tab_color_bg = TabbedPanelItem(text='Background')
        self.tab_export = TabbedPanelItem(text='Export')
        self.panel.add_widget(self.tab_param)
        self.panel.add_widget(self.tab_color)
        self.panel.add_widget(self.tab_color_bg)
        self.panel.add_widget(self.tab_export)

        self.menu_right = RightMenu(
            padding=15,
            orientation="vertical")

        # Switch mode line
        self.box_switch = BoxLayout(orientation='horizontal')
        self.mode_label = Label(
            text="Line mode",
            font_size=self.f_size,
            markup=True)
        self.box_switch.add_widget(self.mode_label)
        self.switch_mode = Switch(active=False)
        self.switch_mode.bind(active=self.on_switch)
        self.box_switch.add_widget(self.switch_mode)
        self.menu_right.add_widget(self.box_switch)

        # Size value
        self.box_size = BoxLayout(orientation='horizontal')
        self.size_label = Label(
            text="Shape size",
            font_size=self.f_size,
            markup=True)
        self.size_label_value = Label(
            text=str(self.shape.shape_size),
            font_size=self.f_size,
            markup=True)
        self.box_size.add_widget(self.size_label)
        self.box_size.add_widget(self.size_label_value)
        self.slider_shape_size = Slider(
            min=self.shape.property('shape_size').get_min(self.shape),
            max=self.shape.property('shape_size').get_max(self.shape),
            value=self.shape.shape_size, step=1)
        self.slider_shape_size.bind(value=self.change_shape_size)
        self.menu_right.add_widget(self.box_size)
        self.menu_right.add_widget(self.slider_shape_size)

        # Width point or line
        self.box_stroke = BoxLayout(orientation='horizontal')
        self.wdth_label = Label(
            text="Stroke width",
            font_size=self.f_size,
            markup=True)
        self.wdth_label_value = Label(
            text=str(self.shape.wdth),
            font_size=self.f_size,
            markup=True)
        self.box_stroke.add_widget(self.wdth_label)
        self.box_stroke.add_widget(self.wdth_label_value)
        self.slider_wdth = Slider(
            min=self.shape.property('wdth').get_min(self.shape),
            max=self.shape.property('wdth').get_max(self.shape),
            value=self.shape.wdth, step=1)
        self.slider_wdth.bind(value=self.change_wdth)
        self.menu_right.add_widget(self.box_stroke)
        self.menu_right.add_widget(self.slider_wdth)

        # a value
        self.box_a = BoxLayout(orientation='horizontal')
        self.a_label = Label(
            text="Param a ",
            font_size=self.f_size,
            markup=True)
        self.a_label_value = Label(
            text=str(self.shape.a),
            font_size=self.f_size,
            markup=True)
        self.box_a.add_widget(self.a_label)
        self.box_a.add_widget(self.a_label_value)
        self.slider_a = Slider(
            min=self.shape.property('a').get_min(self.shape),
            max=self.shape.property('a').get_max(self.shape),
            value=self.shape.a)
        self.slider_a.bind(value=self.change_a)
        self.menu_right.add_widget(self.box_a)
        self.menu_right.add_widget(self.slider_a)

        # b value
        self.box_b = BoxLayout(orientation='horizontal')
        self.b_label = Label(
            text="Param b ",
            font_size=self.f_size,
            markup=True)
        self.b_label_value = Label(
            text=str(self.shape.b),
            font_size=self.f_size,
            markup=True)
        self.box_b.add_widget(self.b_label)
        self.box_b.add_widget(self.b_label_value)
        self.slider_b = Slider(
            min=self.shape.property('b').get_min(self.shape),
            max=self.shape.property('b').get_max(self.shape),
            value=self.shape.b)
        self.slider_b.bind(value=self.change_b)
        self.menu_right.add_widget(self.box_b)
        self.menu_right.add_widget(self.slider_b)

        # m value
        self.box_m = BoxLayout(orientation='horizontal')
        self.m_label = Label(
            text="Param m ",
            font_size=self.f_size,
            markup=True)
        self.m_label_value = Label(
            text=str(self.shape.m),
            font_size=self.f_size,
            markup=True)
        self.box_m.add_widget(self.m_label)
        self.box_m.add_widget(self.m_label_value)
        self.slider_m = Slider(
            min=self.shape.property('m').get_min(self.shape),
            max=self.shape.property('m').get_max(self.shape),
            value=self.shape.m)
        self.slider_m.bind(value=self.change_m)
        self.menu_right.add_widget(self.box_m)
        self.menu_right.add_widget(self.slider_m)

        # n1 value
        self.box_n1 = BoxLayout(orientation='horizontal')
        self.n1_label = Label(
            text="Param n1 ",
            font_size=self.f_size,
            markup=True)
        self.n1_label_value = Label(
            text=str(self.shape.n1),
            font_size=self.f_size,
            markup=True)
        self.box_n1.add_widget(self.n1_label)
        self.box_n1.add_widget(self.n1_label_value)
        self.slider_n1 = Slider(
            min=self.shape.property('n1').get_min(self.shape),
            max=self.shape.property('n1').get_max(self.shape),
            value=self.shape.n1)
        self.slider_n1.bind(value=self.change_n1)
        self.menu_right.add_widget(self.box_n1)
        self.menu_right.add_widget(self.slider_n1)

        # n2 value
        self.box_n2 = BoxLayout(orientation='horizontal')
        self.n2_label = Label(
            text="Param n2 ",
            font_size=self.f_size,
            markup=True)
        self.n2_label_value = Label(
            text=str(self.shape.n2),
            font_size=self.f_size,
            markup=True)
        self.box_n2.add_widget(self.n2_label)
        self.box_n2.add_widget(self.n2_label_value)
        self.slider_n2 = Slider(
            min=self.shape.property('n2').get_min(self.shape),
            max=self.shape.property('n2').get_max(self.shape),
            value=self.shape.n2)
        self.slider_n2.bind(value=self.change_n2)
        self.menu_right.add_widget(self.box_n2)
        self.menu_right.add_widget(self.slider_n2)

        # n3 value
        self.box_n3 = BoxLayout(orientation='horizontal')
        self.n3_label = Label(
            text="Param n3 ",
            font_size=self.f_size,
            markup=True)
        self.n3_label_value = Label(
            text=str(self.shape.n3),
            font_size=self.f_size,
            markup=True)
        self.box_n3.add_widget(self.n3_label)
        self.box_n3.add_widget(self.n3_label_value)
        self.slider_n3 = Slider(
            min=self.shape.property('n3').get_min(self.shape),
            max=self.shape.property('n3').get_max(self.shape),
            value=self.shape.n3)
        self.slider_n3.bind(value=self.change_n3)
        self.menu_right.add_widget(self.box_n3)
        self.menu_right.add_widget(self.slider_n3)

        # Nb points
        self.box_nbp = BoxLayout(orientation='horizontal')
        self.nbp_label = Label(
            text="Points number ",
            font_size=self.f_size,
            markup=True)
        self.nbp_label_value = Label(
            text=str(self.shape.nbp),
            font_size=self.f_size,
            markup=True)
        self.box_nbp.add_widget(self.nbp_label)
        self.box_nbp.add_widget(self.nbp_label_value)
        self.slider_nbp = Slider(
            min=self.shape.property('nbp').get_min(self.shape),
            max=self.shape.property('nbp').get_max(self.shape),
            value=self.shape.nbp, step=2)
        self.slider_nbp.bind(value=self.change_nbp)
        self.menu_right.add_widget(self.box_nbp)
        self.menu_right.add_widget(self.slider_nbp)

        # Percent
        self.box_percent = BoxLayout(orientation='horizontal')
        self.percent_label = Label(
            text="Percent ",
            font_size=self.f_size,
            markup=True)
        self.percent_label_value = Label(
            text=str(self.shape.percent),
            font_size=self.f_size,
            markup=True)
        self.box_percent.add_widget(self.percent_label)
        self.box_percent.add_widget(self.percent_label_value)
        self.slider_percent = Slider(
            min=self.shape.property('percent').get_min(self.shape),
            max=self.shape.property('percent').get_max(self.shape),
            value=self.shape.percent, step=1)
        self.slider_percent.bind(value=self.change_percent)
        self.menu_right.add_widget(self.box_percent)
        self.menu_right.add_widget(self.slider_percent)

        # Travel
        self.box_travel = BoxLayout(orientation='horizontal')
        self.travel_label = Label(
            text="Travel ",
            font_size=self.f_size,
            markup=True)
        self.travel_label_value = Label(
            text=str(self.shape.travel),
            font_size=self.f_size,
            markup=True)
        self.box_travel.add_widget(self.travel_label)
        self.box_travel.add_widget(self.travel_label_value)
        self.slider_travel = Slider(
            min=self.shape.property('travel').get_min(self.shape),
            max=self.shape.property('travel').get_max(self.shape),
            value=self.shape.travel, step=2)
        self.slider_travel.bind(value=self.change_travel)
        self.menu_right.add_widget(self.box_travel)
        self.menu_right.add_widget(self.slider_travel)

        # ColorPicker for Shape
        self.picker = ColorPicker()
        self.picker.bind(color=self.on_color)

        # ColorPicker for background
        self.picker_bg = ColorPicker()
        self.picker_bg.bind(color=self.on_color_bg)

        # Export svg button
        self.export_button = Button(text='Export', size_hint=(1, 0.15))
        self.export_button.bind(on_press=self.export)

        # Tab packs
        self.tab_param.add_widget(self.menu_right)
        self.tab_color.add_widget(self.picker)
        self.tab_color_bg.add_widget(self.picker_bg)
        self.tab_export.add_widget(self.export_button)
        self.add_widget(self.panel)

        # Popups
        self.pop_export = Popup(
            title="Export file",
            content=Label(text="File exported"),
            size_hint=(None, None),
            size=(640, 240))
Пример #36
0
class MainBox(BoxLayout):
    '''
    Mainbox class
    '''

    def __init__(self, **kwargs):
        '''
        Init main class ui
        '''
        super(MainBox, self).__init__(**kwargs)
        self.f_size = '15sp'

        # Shape Widget
        self.shape = Shape(size_hint=(0.7, 1))
        self.add_widget(self.shape)

        # Right Menu
        self.panel = TabbedPanel(size_hint=(0.3, 1), do_default_tab=False)
        self.tab_param = TabbedPanelItem(text='Parameters')
        self.tab_color = TabbedPanelItem(text='Shape')
        self.tab_color_bg = TabbedPanelItem(text='Background')
        self.tab_export = TabbedPanelItem(text='Export')
        self.panel.add_widget(self.tab_param)
        self.panel.add_widget(self.tab_color)
        self.panel.add_widget(self.tab_color_bg)
        self.panel.add_widget(self.tab_export)

        self.menu_right = RightMenu(
            padding=15,
            orientation="vertical")

        # Switch mode line
        self.box_switch = BoxLayout(orientation='horizontal')
        self.mode_label = Label(
            text="Line mode",
            font_size=self.f_size,
            markup=True)
        self.box_switch.add_widget(self.mode_label)
        self.switch_mode = Switch(active=False)
        self.switch_mode.bind(active=self.on_switch)
        self.box_switch.add_widget(self.switch_mode)
        self.menu_right.add_widget(self.box_switch)

        # Size value
        self.box_size = BoxLayout(orientation='horizontal')
        self.size_label = Label(
            text="Shape size",
            font_size=self.f_size,
            markup=True)
        self.size_label_value = Label(
            text=str(self.shape.shape_size),
            font_size=self.f_size,
            markup=True)
        self.box_size.add_widget(self.size_label)
        self.box_size.add_widget(self.size_label_value)
        self.slider_shape_size = Slider(
            min=self.shape.property('shape_size').get_min(self.shape),
            max=self.shape.property('shape_size').get_max(self.shape),
            value=self.shape.shape_size, step=1)
        self.slider_shape_size.bind(value=self.change_shape_size)
        self.menu_right.add_widget(self.box_size)
        self.menu_right.add_widget(self.slider_shape_size)

        # Width point or line
        self.box_stroke = BoxLayout(orientation='horizontal')
        self.wdth_label = Label(
            text="Stroke width",
            font_size=self.f_size,
            markup=True)
        self.wdth_label_value = Label(
            text=str(self.shape.wdth),
            font_size=self.f_size,
            markup=True)
        self.box_stroke.add_widget(self.wdth_label)
        self.box_stroke.add_widget(self.wdth_label_value)
        self.slider_wdth = Slider(
            min=self.shape.property('wdth').get_min(self.shape),
            max=self.shape.property('wdth').get_max(self.shape),
            value=self.shape.wdth, step=1)
        self.slider_wdth.bind(value=self.change_wdth)
        self.menu_right.add_widget(self.box_stroke)
        self.menu_right.add_widget(self.slider_wdth)

        # a value
        self.box_a = BoxLayout(orientation='horizontal')
        self.a_label = Label(
            text="Param a ",
            font_size=self.f_size,
            markup=True)
        self.a_label_value = Label(
            text=str(self.shape.a),
            font_size=self.f_size,
            markup=True)
        self.box_a.add_widget(self.a_label)
        self.box_a.add_widget(self.a_label_value)
        self.slider_a = Slider(
            min=self.shape.property('a').get_min(self.shape),
            max=self.shape.property('a').get_max(self.shape),
            value=self.shape.a)
        self.slider_a.bind(value=self.change_a)
        self.menu_right.add_widget(self.box_a)
        self.menu_right.add_widget(self.slider_a)

        # b value
        self.box_b = BoxLayout(orientation='horizontal')
        self.b_label = Label(
            text="Param b ",
            font_size=self.f_size,
            markup=True)
        self.b_label_value = Label(
            text=str(self.shape.b),
            font_size=self.f_size,
            markup=True)
        self.box_b.add_widget(self.b_label)
        self.box_b.add_widget(self.b_label_value)
        self.slider_b = Slider(
            min=self.shape.property('b').get_min(self.shape),
            max=self.shape.property('b').get_max(self.shape),
            value=self.shape.b)
        self.slider_b.bind(value=self.change_b)
        self.menu_right.add_widget(self.box_b)
        self.menu_right.add_widget(self.slider_b)

        # m value
        self.box_m = BoxLayout(orientation='horizontal')
        self.m_label = Label(
            text="Param m ",
            font_size=self.f_size,
            markup=True)
        self.m_label_value = Label(
            text=str(self.shape.m),
            font_size=self.f_size,
            markup=True)
        self.box_m.add_widget(self.m_label)
        self.box_m.add_widget(self.m_label_value)
        self.slider_m = Slider(
            min=self.shape.property('m').get_min(self.shape),
            max=self.shape.property('m').get_max(self.shape),
            value=self.shape.m)
        self.slider_m.bind(value=self.change_m)
        self.menu_right.add_widget(self.box_m)
        self.menu_right.add_widget(self.slider_m)

        # n1 value
        self.box_n1 = BoxLayout(orientation='horizontal')
        self.n1_label = Label(
            text="Param n1 ",
            font_size=self.f_size,
            markup=True)
        self.n1_label_value = Label(
            text=str(self.shape.n1),
            font_size=self.f_size,
            markup=True)
        self.box_n1.add_widget(self.n1_label)
        self.box_n1.add_widget(self.n1_label_value)
        self.slider_n1 = Slider(
            min=self.shape.property('n1').get_min(self.shape),
            max=self.shape.property('n1').get_max(self.shape),
            value=self.shape.n1)
        self.slider_n1.bind(value=self.change_n1)
        self.menu_right.add_widget(self.box_n1)
        self.menu_right.add_widget(self.slider_n1)

        # n2 value
        self.box_n2 = BoxLayout(orientation='horizontal')
        self.n2_label = Label(
            text="Param n2 ",
            font_size=self.f_size,
            markup=True)
        self.n2_label_value = Label(
            text=str(self.shape.n2),
            font_size=self.f_size,
            markup=True)
        self.box_n2.add_widget(self.n2_label)
        self.box_n2.add_widget(self.n2_label_value)
        self.slider_n2 = Slider(
            min=self.shape.property('n2').get_min(self.shape),
            max=self.shape.property('n2').get_max(self.shape),
            value=self.shape.n2)
        self.slider_n2.bind(value=self.change_n2)
        self.menu_right.add_widget(self.box_n2)
        self.menu_right.add_widget(self.slider_n2)

        # n3 value
        self.box_n3 = BoxLayout(orientation='horizontal')
        self.n3_label = Label(
            text="Param n3 ",
            font_size=self.f_size,
            markup=True)
        self.n3_label_value = Label(
            text=str(self.shape.n3),
            font_size=self.f_size,
            markup=True)
        self.box_n3.add_widget(self.n3_label)
        self.box_n3.add_widget(self.n3_label_value)
        self.slider_n3 = Slider(
            min=self.shape.property('n3').get_min(self.shape),
            max=self.shape.property('n3').get_max(self.shape),
            value=self.shape.n3)
        self.slider_n3.bind(value=self.change_n3)
        self.menu_right.add_widget(self.box_n3)
        self.menu_right.add_widget(self.slider_n3)

        # Nb points
        self.box_nbp = BoxLayout(orientation='horizontal')
        self.nbp_label = Label(
            text="Points number ",
            font_size=self.f_size,
            markup=True)
        self.nbp_label_value = Label(
            text=str(self.shape.nbp),
            font_size=self.f_size,
            markup=True)
        self.box_nbp.add_widget(self.nbp_label)
        self.box_nbp.add_widget(self.nbp_label_value)
        self.slider_nbp = Slider(
            min=self.shape.property('nbp').get_min(self.shape),
            max=self.shape.property('nbp').get_max(self.shape),
            value=self.shape.nbp, step=2)
        self.slider_nbp.bind(value=self.change_nbp)
        self.menu_right.add_widget(self.box_nbp)
        self.menu_right.add_widget(self.slider_nbp)

        # Percent
        self.box_percent = BoxLayout(orientation='horizontal')
        self.percent_label = Label(
            text="Percent ",
            font_size=self.f_size,
            markup=True)
        self.percent_label_value = Label(
            text=str(self.shape.percent),
            font_size=self.f_size,
            markup=True)
        self.box_percent.add_widget(self.percent_label)
        self.box_percent.add_widget(self.percent_label_value)
        self.slider_percent = Slider(
            min=self.shape.property('percent').get_min(self.shape),
            max=self.shape.property('percent').get_max(self.shape),
            value=self.shape.percent, step=1)
        self.slider_percent.bind(value=self.change_percent)
        self.menu_right.add_widget(self.box_percent)
        self.menu_right.add_widget(self.slider_percent)

        # Travel
        self.box_travel = BoxLayout(orientation='horizontal')
        self.travel_label = Label(
            text="Travel ",
            font_size=self.f_size,
            markup=True)
        self.travel_label_value = Label(
            text=str(self.shape.travel),
            font_size=self.f_size,
            markup=True)
        self.box_travel.add_widget(self.travel_label)
        self.box_travel.add_widget(self.travel_label_value)
        self.slider_travel = Slider(
            min=self.shape.property('travel').get_min(self.shape),
            max=self.shape.property('travel').get_max(self.shape),
            value=self.shape.travel, step=2)
        self.slider_travel.bind(value=self.change_travel)
        self.menu_right.add_widget(self.box_travel)
        self.menu_right.add_widget(self.slider_travel)

        # ColorPicker for Shape
        self.picker = ColorPicker()
        self.picker.bind(color=self.on_color)

        # ColorPicker for background
        self.picker_bg = ColorPicker()
        self.picker_bg.bind(color=self.on_color_bg)

        # Export svg button
        self.export_button = Button(text='Export', size_hint=(1, 0.15))
        self.export_button.bind(on_press=self.export)

        # Tab packs
        self.tab_param.add_widget(self.menu_right)
        self.tab_color.add_widget(self.picker)
        self.tab_color_bg.add_widget(self.picker_bg)
        self.tab_export.add_widget(self.export_button)
        self.add_widget(self.panel)

        # Popups
        self.pop_export = Popup(
            title="Export file",
            content=Label(text="File exported"),
            size_hint=(None, None),
            size=(640, 240))

    def change_wdth(self, *args):
        '''
        Change stroke width
        '''
        self.shape.wdth = self.slider_wdth.value
        self.wdth_label_value.text = str(self.slider_wdth.value)

    def on_switch(self, *args):
        '''
        Switch mode line or point
        '''
        self.shape.line = self.switch_mode.active

    def on_color(self, *args):
        '''
        Shape color
        '''
        self.shape.color = self.picker.hex_color

    def on_color_bg(self, *args):
        '''
        Shape background color
        '''
        self.shape.bg_color = self.picker_bg.hex_color

    def change_shape_size(self, *args):
        '''
        Shape size
        '''
        self.shape.shape_size = self.slider_shape_size.value
        self.size_label_value.text = str(self.slider_shape_size.value)

    def change_a(self, *args):
        '''
        a value
        '''
        self.shape.a = self.slider_a.value
        self.a_label_value.text = str(self.slider_a.value)

    def change_b(self, *args):
        '''
        b value
        '''
        self.shape.b = self.slider_b.value
        self.b_label_value.text = str(self.slider_b.value)

    def change_m(self, *args):
        '''
        m value
        '''
        self.shape.m = self.slider_m.value
        self.m_label_value.text = str(self.slider_m.value)

    def change_n1(self, *args):
        '''
        n1 value
        '''
        self.shape.n1 = self.slider_n1.value
        self.n1_label_value.text = str(self.slider_n1.value)

    def change_n2(self, *args):
        '''
        n2 value
        '''
        self.shape.n2 = self.slider_n2.value
        self.n2_label_value.text = str(self.slider_n2.value)

    def change_n3(self, *args):
        '''
        n3 value
        '''
        self.shape.n3 = self.slider_n3.value
        self.n3_label_value.text = str(self.slider_n3.value)

    def change_nbp(self, *args):
        '''
        point number
        '''
        self.shape.nbp = self.slider_nbp.value
        self.nbp_label_value.text = str(self.slider_nbp.value)

    def change_percent(self, *args):
        '''
        Percent value
        '''
        self.shape.percent = self.slider_percent.value
        self.percent_label_value.text = str(self.slider_percent.value)

    def change_travel(self, *args):
        '''
        Travel number
        '''
        self.shape.travel = self.slider_travel.value
        self.travel_label_value.text = str(self.slider_travel.value)

    def export(self, *args):
        '''
        Export to svg file
        '''
        document = svgwrite.Drawing(filename='export.svg', debug=True)
        tmp = [(float("%.4g" % e)) for e in self.shape.path]
        # Export polygon
        if self.shape.line:
            svg_path = coupled(tmp)
            document.add(document.polygon(points=svg_path))
        else:  # Export points
            svg_path = coupled(coupled(tmp))
            for elem in svg_path:
                document.add(document.line(
                    start=elem[0],
                    end=elem[1]
                ))
        document.save()
        self.shape.export_to_png('export.png')
        self.pop_export.open()