Ejemplo n.º 1
1
    def test_widget_root_from_code_with_kv(self):
        from kivy.lang import Builder
        from kivy.factory import Factory
        from kivy.properties import ObjectProperty, StringProperty
        from kivy.uix.floatlayout import FloatLayout
        
        Builder.load_string("""
<MyWidget>:
    Label:
        text: root.title
        
<BaseWidget>:
    CallerWidget:
""")
        
        class CallerWidget(FloatLayout):
            def __init__(self, **kwargs):
                super(CallerWidget, self).__init__(**kwargs)
                self.add_widget(MyWidget(title="Hello World"))
            
        class NestedWidget(FloatLayout):
            title = StringProperty('aa')
            
        class MyWidget(NestedWidget):
            pass
        
        class BaseWidget(FloatLayout):
            pass
        
        Factory.register('MyWidget', cls=MyWidget)
        Factory.register('CallerWidget', cls=CallerWidget)

        r = self.render
        root = BaseWidget()
        r(root)
Ejemplo n.º 2
0
 def __init__(self, ctrl, **kwargs):
     Builder.load_file("playing.kv")
     self.ctrl = ctrl
     super(PlayingScreen, self).__init__(**kwargs)
     Clock.schedule_interval(self._update_progress, 1/25)
     self.volume_slider.value = self.ctrl.volume
     self.init_display()
Ejemplo n.º 3
0
	def __init__(self):
		ScreenManager.__init__(self)

		self.apps = {}

		rr = SimPlanRR(3, name='RoundRobin', archivo='gui/kv/rr.kv')
		Builder.unload_file('gui/kv/rr.kv')

		pr = SimPlanPR(1, name='Prioridad Apropiativa', archivo='gui/kv/pr.kv')
		Builder.unload_file('gui/kv/pr.kv')

		sjf = SimPlanSJF(2, name='Short Job First', archivo='gui/kv/sjf.kv')
		Builder.unload_file('gui/kv/sjf.kv')

		srjf = SimPlanSRJF(5, name='Short Remainnig Job First', archivo='gui/kv/sjf.kv')
		Builder.unload_file('gui/kv/sjf.kv')

		prn = SimPlanPRN(2, name='Prioridad No Apropiativa', archivo='gui/kv/pr.kv')
		Builder.unload_file('gui/kv/pr.kv')

		self.apps['RR'] = rr
		self.apps['PR'] = pr
		self.apps['SJF'] = sjf
		self.apps['SRJF'] = srjf
		self.apps['PRN'] = prn

		self.agregar_procesos_defecto()

		for app in self.apps.values():
			self.add_widget(app)
Ejemplo n.º 4
0
    def update_serial_choices(self, *largs):
        extra_mac_ports = set(glob.glob('/dev/tty.usbserial*'))
        new_serial_choices = set([port for port, _, _ in comports()])
        for i_hate_macs in extra_mac_ports:
            new_serial_choices.add(i_hate_macs)

        if not sets_equal(self.last_serial_choices, new_serial_choices):
            self.indicators.serial_choices.clear_widgets()
            self.last_serial_choices = new_serial_choices
            for port in sorted(list(new_serial_choices)):
                port_name = port
                if port_name.startswith('/dev/'):
                    port_name = port[5:]
                btn = Builder.load_string('''
CheckBox:
    size_hint_y: 1
    group: 'serial_choice_group'
                ''')
                lbl = Builder.load_string('''
SaneLabel:
    size_hint_y: 1
    text: '%s'
                ''' % (port_name,))
                btn.bind(active=self.on_serial_choice)
                btn.port = port
                if self.serial is not None and self.serial.port == port:
                    btn.active = True
                self.indicators.serial_choices.add_widget(btn)
                self.indicators.serial_choices.add_widget(lbl)
Ejemplo n.º 5
0
Archivo: widget.py Proyecto: kmike/kivy
    def __init__(self, **kwargs):
        # Before doing anything, ensure the windows exist.
        EventLoop.ensure_window()

        # Register touch events
        self.register_event_type('on_touch_down')
        self.register_event_type('on_touch_move')
        self.register_event_type('on_touch_up')

        super(Widget, self).__init__(**kwargs)

        # Create the default canvas if not exist
        if self.canvas is None:
            self.canvas = Canvas()

        # Apply all the styles
        if '__no_builder' not in kwargs:
            #current_root = Builder.idmap.get('root')
            #Builder.idmap['root'] = self
            Builder.apply(self)
            #if current_root is not None:
            #    Builder.idmap['root'] = current_root
            #else:
            #    Builder.idmap.pop('root')

        # Bind all the events
        for argument, value in kwargs.items():
            if argument.startswith('on_'):
                self.bind(**{argument: value})
Ejemplo n.º 6
0
    def __init__(self, serverip, serverport, team, nick, **kwargs):
        Builder.load_file(utils.kvPath.format('game_screen'))
        super(GameScreen, self).__init__(**kwargs)  # init with the name

        game = SpylightGame(serverip, serverport, team, nick, self)
        self.add_widget(game)
        self.app = kwargs['app']
Ejemplo n.º 7
0
 def BuildConnectTitle(self, *largs):
   t1 = time.time()
   if t1 - self.timecontitle < 30.0: #allow update every 30seconds
     return
   txt = self.GetConnectTitle()
   #print txt
   #print "BuildConnectTitle"
   kv_container = self.current_screen.children[0]
   for child in kv_container.children[:]:
     if isinstance(child, BoxLayout):
       kv_widget = child
       break
   try:
     parser = Parser(content=txt)
     kv_container.remove_widget(kv_widget)
     widget = Factory.get(parser.root.name)()
     Builder._apply_rule(widget, parser.root, parser.root)
     for child in widget.children[:]:
       if isinstance(child, Button):
         if isinstance(child, Spinner):
           print "Spinner", child
           child.bind(text=self.ConfigPopupOpen)
           self.btncamsetup = child
         else:
           print "Button", child
           child.bind(on_release=self.RefreshAllControls)
     kv_container.add_widget(widget)
     #self.current_screen.ids['btnCamSetup'].bind(text=self.ConfigPopupOpen) #.btnCamSetup.text #bind(on_text=self.ConfigPopupOpen)
     self.timecontitle = t1
   except (SyntaxError, ParserException) as e:
     print "SyntaxError, ParserException", e
   except Exception as e:
     print "Exception", e
Ejemplo n.º 8
0
 def __init__(self, sm, ctrl, playlist, **kwargs):
     Builder.load_file("playlist.kv")
     self.sm = sm
     self.playlist = playlist
     self.ctrl = ctrl
     super(
         PlayListScreen, self).__init__(**kwargs)
Ejemplo n.º 9
0
    def __init__(self, *largs):
        self.resources = list(self.search_data_files())
        resource_add_path(dirname(__file__))
        Builder.load_file(join(dirname(__file__), 'map.kv'))
        super(MapServer, self).__init__(*largs)
        self.timeout = 0
        self.timemsg = 0
        self.players = {}

        # init client table
        for client in self.controler.clients:
            self.players[client] = {
                'client': client,
                'name': self.controler.get_client_name(client),
                'ready': False,
                'done': False,
                'place': self.controler.metadata[client]['place'],
                'count': 0
            }
        #store mapitems and thumbs in order to display them on main screen
        #or remove them from clients
        self.mapitems = {} #filename: [client, index]
        self.thumbs = {} #index: [client, pos]

        #get map layers list from json
        self.load_json() 
Ejemplo n.º 10
0
    def test_kv_python_init(self):
        from kivy.lang import Builder, Factory
        from kivy.uix.widget import Widget

        class MyObject(object):
            value = 55

        class MyWidget(Widget):
            cheese = MyObject()

        Builder.load_string('''
<MyWidget>:
    x: 55
    y: self.width + 10
    height: self.cheese.value
    width: 44

<MySecondWidget@Widget>:
    x: 55
    Widget:
        x: 23
''')

        w = MyWidget(x=22, height=12, y=999)
        self.assertEqual(w.x, 22)
        self.assertEqual(w.width, 44)
        self.assertEqual(w.y, 44 + 10)
        self.assertEqual(w.height, 12)

        w2 = Factory.MySecondWidget(x=999)
        self.assertEqual(w2.x, 999)
        self.assertEqual(w2.children[0].x, 23)
Ejemplo n.º 11
0
    def __init__(self, **kwargs):
        # Before doing anything, ensure the windows exist.
        EventLoop.ensure_window()

        # Register touch events
        self.register_event_type("on_touch_down")
        self.register_event_type("on_touch_move")
        self.register_event_type("on_touch_up")

        super(Widget, self).__init__(**kwargs)

        # Create the default canvas if not exist
        if self.canvas is None:
            self.canvas = Canvas(opacity=self.opacity)

        # Apply all the styles
        if "__no_builder" not in kwargs:
            # current_root = Builder.idmap.get('root')
            # Builder.idmap['root'] = self
            Builder.apply(self)
            # if current_root is not None:
            #    Builder.idmap['root'] = current_root
            # else:
            #    Builder.idmap.pop('root')

        # Bind all the events
        for argument in kwargs:
            if argument[:3] == "on_":
                self.bind(**{argument: kwargs[argument]})
Ejemplo n.º 12
0
    def __init__(self, **kwargs):
        # Before doing anything, ensure the windows exist.
        EventLoop.ensure_window()

        # Assign the default context of the widget creation.
        if not hasattr(self, '_context'):
            self._context = get_current_context()

        no_builder = '__no_builder' in kwargs
        if no_builder:
            del kwargs['__no_builder']
        on_args = {k: v for k, v in kwargs.items() if k[:3] == 'on_'}
        for key in on_args:
            del kwargs[key]

        super(Widget, self).__init__(**kwargs)

        # Create the default canvas if it does not exist.
        if self.canvas is None:
            self.canvas = Canvas(opacity=self.opacity)

        # Apply all the styles.
        if not no_builder:
            #current_root = Builder.idmap.get('root')
            #Builder.idmap['root'] = self
            Builder.apply(self)
            #if current_root is not None:
            #    Builder.idmap['root'] = current_root
            #else:
            #    Builder.idmap.pop('root')

        # Bind all the events.
        if on_args:
            self.bind(**on_args)
Ejemplo n.º 13
0
    def __init__(self, **kwargs):
        # Before doing anything, ensure the windows exist.
        EventLoop.ensure_window()

        # assign the default context of the widget creation
        if not hasattr(self, '_context'):
            self._context = get_current_context()

        super(Widget, self).__init__(**kwargs)

        # Create the default canvas if not exist
        if self.canvas is None:
            self.canvas = Canvas(opacity=self.opacity)

        # Apply all the styles
        if '__no_builder' not in kwargs:
            #current_root = Builder.idmap.get('root')
            #Builder.idmap['root'] = self
            Builder.apply(self)
            #if current_root is not None:
            #    Builder.idmap['root'] = current_root
            #else:
            #    Builder.idmap.pop('root')

        # Bind all the events
        for argument in kwargs:
            if argument[:3] == 'on_':
                self.bind(**{argument: kwargs[argument]})
Ejemplo n.º 14
0
    def __init__(self, **kwargs):
        super(Widget, self).__init__()

        # Register touch events
        self.register_event_type('on_touch_down')
        self.register_event_type('on_touch_move')
        self.register_event_type('on_touch_up')

        # Before doing anything, ensure the windows exist.
        EventLoop.ensure_window()

        # Auto bind on own handler if exist
        properties = self.__properties.keys()
        for func in dir(self):
            if not func.startswith('on_'):
                continue
            name = func[3:]
            if name in properties:
                self.bind(**{name: getattr(self, func)})

        # Create the default canvas
        self.canvas = Canvas()

        # Apply the existing arguments to our widget
        for key, value in kwargs.iteritems():
            if hasattr(self, key):
                setattr(self, key, value)

        # Apply all the styles
        if '__no_builder' not in kwargs:
            Builder.apply(self)
Ejemplo n.º 15
0
	def __init__(self, n_procesadores, **kwargs):

		Builder.load_file(kwargs['archivo'])

		Screen.__init__(self, **kwargs)

		self.procesadores = None
		self.tabla_procesos = None
		self.popup_proceso = None

		self.inicializar(n_procesadores)

		self.tabla_procesos = self.tabla_procesos or TablaProcesosGUI(self.sistema.procesos)
		self.procesadores = self.procesadores or [ProcesadorGUI(p, self.tabla_procesos) for p in self.sistema.procesadores]
		
		self.popup_proceso = self.popup_proceso or ProcesoPopup(self.sistema)

		self.ids.titulo.text = "Simulacion para "+self.name
		
		self.popup_recurso = RecursoPopup(self.sistema)
		self.tabla_recursos = TablaRecursosGUI(self.sistema.recursos)

		self.ejecutando = False
		self.paso = False

		for p in self.procesadores:
			self.ids.procesadores.add_widget(p)

		self.c_procesos.add_widget(self.tabla_procesos)
		self.c_recursos.add_widget(self.tabla_recursos)

		self.sistema.asignar_vista(self)
Ejemplo n.º 16
0
 def __init__(self, title, *args, **kwargs):
     """
         @title - tytul (nazwa) cwiczenia
     """
     Builder.load_file("kv/genericlevels.kv")
     Screen.__init__(self, *args, **kwargs)
     self.title = title
Ejemplo n.º 17
0
	def __init__(self, **kwargs):
		Builder.load_string(materiallbl_kv)
		super(MaterialLabel, self).__init__(**kwargs)
		self.bind(theme_text_color=self._update_color,
				  theme_style=self._update_color,
				  text_color=self._update_color)
		self.theme_style = self._theme_cls.theme_style
Ejemplo n.º 18
0
	def build(self):
		self.title = "Pong"
		Builder.load_file('ui.kv')

		self.ponggame = PongGame()
		self.ponggame.serve_ball()
		return self.ponggame
Ejemplo n.º 19
0
 def BuildConnectControl(self, *largs):
   txt = self.GetConnectControl()
   if txt == self.textctrlbtn:
     return
   kv_container = self.current_screen.children[0]
   kv_widget = kv_container.children[0]
   for child in kv_container.children[:]:
     if isinstance(child, AnchorLayout):
       kv_widget = child
       break
   try:
     parser = Parser(content=txt)
     if isinstance(kv_widget, AnchorLayout):
       kv_container.remove_widget(kv_widget)
     widget = Factory.get(parser.root.name)()
     Builder._apply_rule(widget, parser.root, parser.root)
     widget.children[0].children[2].bind(on_release=self.Connect)
     widget.children[0].children[1].bind(on_release=self.Record)
     widget.children[0].children[0].bind(on_release=self.Buzzer)
     self.btnphoto = widget.children[0].children[0]
     self.btnrecord = widget.children[0].children[1]
     self.btnconnect = widget.children[0].children[2]
     self.lblrecordtime = widget.children[0].children[4]
     #print "self.lblrecordtime.text",self.lblrecordtime.text
     kv_container.add_widget(widget)
     self.textctrlbtn = txt
   except (SyntaxError, ParserException) as e:
     print "SyntaxError, ParserException", e
   except Exception as e:
     print "BuildConnectControl Exception", e
 def build(self):
     Builder.load_file('bouncing.kv')
     self.title = 'Two bouncing balls'
     root = RootWidget()
     Clock.schedule_interval(root.update1, 1.0/60)
     Clock.schedule_interval(root.update2, 1.0/60)
     return root
Ejemplo n.º 21
0
 def build(self):
     Builder.load_string(textwrap.dedent(
     '''
         <CustomButtonClass@Button>:
             description_a: ''
             description_b: ''
             text: root.description_a + ' <newline> ' + root.description_b
             halign:'center'
             size_hint:(1, 0.1)
         <MyListView>:
             size_hint:(0.5, 0.5)
             ListView:
                 item_strings: [str(index) for index in range(10)]
         <OtherNamedScreen>:
             GridLayout:
                 cols: 2
                 MyListView
                 ScrollView:
                     ContainerForButtons:
                         cols:1
                         row_default_height:150
                         size_hint_y: None
     '''))
     Window.bind(on_keyboard=self.check_what_key_was_pressed)
     self.screen_mgr = ScreenManager()
     first = Screen(name='First')
     self.screen_mgr.add_widget(first)
     first.add_widget(Button(text="click me", bind=self.swap_screen))
     self.screen_mgr.add_widget(OtherNamedScreen(name='Second'))
     return self.screen_mgr
Ejemplo n.º 22
0
 def __init__(self, **kwargs):
     super(Container, self).__init__(**kwargs)
     self.previous_text = open(self.kv_file).read()
     parser = Parser(content=self.previous_text)
     widget = Factory.get(parser.root.name)()
     Builder._apply_rule(widget, parser.root, parser.root)
     self.add_widget(widget)
Ejemplo n.º 23
0
    def __init__(self, **kwargs):
        # Before doing anything, ensure the windows exist.
        EventLoop.ensure_window()

        # Assign the default context of the widget creation.
        if not hasattr(self, '_context'):
            self._context = get_current_context()

        no_builder = '__no_builder' in kwargs
        self._disabled_value = False
        if no_builder:
            del kwargs['__no_builder']
        on_args = {k: v for k, v in kwargs.items() if k[:3] == 'on_'}
        for key in on_args:
            del kwargs[key]

        self._disabled_count = 0

        super(Widget, self).__init__(**kwargs)

        # Create the default canvas if it does not exist.
        if self.canvas is None:
            self.canvas = Canvas(opacity=self.opacity)

        # Apply all the styles.
        if not no_builder:
            Builder.apply(self, ignored_consts=self._kwargs_applied_init)

        # Bind all the events.
        if on_args:
            self.bind(**on_args)
Ejemplo n.º 24
0
    def test_list_view_declared_in_kv_with_adapter(self):
        from kivy.lang import Builder
        from kivy.uix.modalview import ModalView
        from kivy.uix.widget import Widget
        from kivy.factory import Factory
        from kivy.properties import StringProperty, ObjectProperty, BooleanProperty

        Builder.load_string(
            """
#:import label kivy.uix.label
#:import sla kivy.adapters.simplelistadapter

<ListViewModal>:
    size_hint: None,None
    size: 400,400
    lvm: lvm
    ListView:
        id: lvm
        size_hint: .8,.8
        adapter:
            sla.SimpleListAdapter(
            data=["Item #{0}".format(i) for i in xrange(100)],
            cls=label.Label)
"""
        )

        class ListViewModal(ModalView):
            def __init__(self, **kwargs):
                super(ListViewModal, self).__init__(**kwargs)

        list_view_modal = ListViewModal()

        list_view = list_view_modal.lvm

        self.assertEqual(len(list_view.adapter.data), 100)
Ejemplo n.º 25
0
Archivo: main.py Proyecto: jtobard/kivy
    def change_kv(self, *largs):
        '''Called when the update button is clicked. Needs to update the
        interface for the currently active kv widget, if there is one based
        on the kv file the user entered. If there is an error in their kv
        syntax, show a nice popup.'''

        kv_container = self.screen_manager.current_screen.content.children[0]
        try:
            parser = Parser(content=self.language_box.text.encode('utf8'))
            kv_container.clear_widgets()
            widget = Factory.get(parser.root.name)()
            Builder._apply_rule(widget, parser.root, parser.root)
            kv_container.add_widget(widget)
        except (SyntaxError, ParserException) as e:
            self.info_label.text = str(e)
            self.anim = Animation(top=190.0, opacity=1, d=2, t='in_back') +\
                Animation(top=190.0, d=2) +\
                Animation(top=0, opacity=0, d=2)
            self.anim.start(self.info_label)
        except:
            import traceback
            traceback.print_exc()
            popup = Popup(title="Boom",
                content=Label(text='Something horrible happened while parsing'
                        + 'your Kivy Language', text_size=(350, None),
                size_hint=(None, None), size=(400, 400)))
            popup.open()
Ejemplo n.º 26
0
Archivo: base.py Proyecto: duerrp/kivy
    def idle(self):
        '''This function is called every frames. By default :
        * it "tick" the clock to the next frame
        * read all input and dispatch event
        * dispatch on_update + on_draw + on_flip on window
        '''

        # update dt
        Clock.tick()

        # read and dispatch input from providers
        self.dispatch_input()

        # flush all the canvas operation
        Builder.sync()

        # tick before draw
        Clock.tick_draw()

        # flush all the canvas operation
        Builder.sync()

        window = self.window
        if window and window.canvas.needs_redraw:
            window.dispatch('on_draw')
            window.dispatch('on_flip')

        # don't loop if we don't have listeners !
        if len(self.event_listeners) == 0:
            Logger.error('Base: No event listeners have been created')
            Logger.error('Base: Application will leave')
            self.exit()
            return False

        return self.quit
Ejemplo n.º 27
0
def make_button_class(class_name, img_up, img_down, img_path, color_down='000000', color_up='000000', color_dis='000000'):
    template = """
<{cls}@RemoteKey>:
    canvas:
        Clear
        Color:
            rgb: self.hextorgb('{bgdis}' if self.disabled else '{bgup}')
        RoundedRectangle:
            size: self.size
            pos: self.pos
    bgup: '{bgup}'
    bgdown: '{bgdn}'
    bgdis: '{bgdis}'
    #background_normal: 'img/white.png'
    #background_down: ''#''
    border: 0,0,0,0
    Image:
        id: btnimg
        source: '{btnimg}'
        y: self.parent.y
        x: self.parent.x
        size: self.parent.size
        mipmap: True
""".format(cls=class_name, bgup=color_up, bgdn=color_down, bgdis=color_dis,
           btnimg=('{}/{}.png'.format(img_path, img_up) if img_up != '' else ''))
    Builder.load_string(template)
Ejemplo n.º 28
0
 def FromFile(cls, filename, use_cache = False):
     Logger.info('From File with ' + str(filename))
     if not use_cache:
         Logger.info(' From File without cache')
     from os.path import split
     from kivy.resources import resource_add_path
     import sys
     resource_add_path(split(filename)[0])
     sys.path.append(split(filename)[0])
     name, filename = find_template_path(filename)
     #Add filename dir to ressources folder to facilitate relativ import
     #Load  & return all templates from a file as a list. Take an optionnal filter
     from kivy.lang import Builder
     # Remove any former trace of the file
     if use_cache and filename in templateList.templates:
         res = templateList[filename]
         res = [r.blank() for r in res]
     else:
         Builder.unload_file(filename)
         # Now create a widget
         try:
             Builder.load_file(filename)
             res = cls._process_file_build(filename)
             templateList[filename] = res
         except Exception, E:
             from utils import alert
             from utils import log
             import traceback
             alert(str(E))
             Logger.error('[Error] While trying to import Template %s'%filename)
             log(E, traceback.print_exc())
             res = list()
Ejemplo n.º 29
0
def load_all_kv_files(start="./gui"):
    pattern = re.compile(r".*?\.kv")
    kv_files = []
    for root, dirs, files in os.walk(start):
        kv_files += [root + "/" + kv_file for kv_file in files if pattern.match(kv_file)]

    for kv_file in kv_files:
        Builder.load_file(kv_file)
Ejemplo n.º 30
0
    def build(self):
        self.title = "Plateformer"
        Builder.load_file('ui.kv')

        self.platformergame = PlatformerGame()
        Clock.schedule_interval(self.platformergame.update_game, 1.0/60)

        return self.platformergame
Ejemplo n.º 31
0
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout
from plyer.utils import platform

Builder.load_string('''
#:import uniqueid plyer.uniqueid
<UniqueIDInterface>:
    uniqueid: uniqueid
    orientation: 'vertical'
    padding: '50dp'
    spacing: '20dp'
    BoxLayout:
        orientation: 'horizontal'
        size_hint_y: 0.3
        Button:
            text: 'Get Unique ID'
            on_release:
                root.get_uid()
    Label:
        text: str(root.text)
    Label:
        text: str(root.uid)
''')


class UniqueIDInterface(BoxLayout):
    '''Root Widget.'''

    uniqueid = ObjectProperty()
Ejemplo n.º 32
0
root = Builder.load_string('''
#:set tam_font dp('80')

<Botao@Button>:
	font_size: tam_font

Home:
	orientation: 'vertical'
	padding: dp('5')
	spacing: dp('5')
	BoxLayout:
		size_hint: 1, .2
		Label:
			id: info
			text: 'Jogador %d começa' % root.vez
			font_size: sp('20')
		Button:
			text: 'Novo'
			size_hint_x: .2
			on_release:
				root.novo(self)
	GridLayout:
		rows: 3
		cols: 3
		#spacing: dp('5')
		#padding: dp('5')
		Botao:
			id: bt1
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt2
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt3
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt4
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt5
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt6
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt7
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt8
			text: ''
			on_press:
				root.selecionado(self)
		Botao:
			id: bt9
			text: ''
			on_press:
				root.selecionado(self)
''')
Ejemplo n.º 33
0
 def build(self):
     return Builder.load_file("UI.kv")
Ejemplo n.º 34
0
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.lang import Builder

Builder.load_file('tables.kv')


class TablesPageScreen(BoxLayout, GridLayout, AnchorLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def ShiftToProvinceList(self):
        self.parent.parent.current = 'provinceListPageScreen'

    def ShiftToVehicleList(self):
        self.parent.parent.current = 'vehicleListPageScreen'

    def ShiftToCompanyList(self):
        self.parent.parent.current = 'companyListPageScreen'

    def ShiftToBuyList(self):
        self.parent.parent.current = 'buyListPageScreen'

    def ShiftToSaleList(self):
        self.parent.parent.current = 'saleListPageScreen'

    def ShiftToBranchList(self):
        self.parent.parent.current = 'branchListPageScreen'
Ejemplo n.º 35
0
Builder.load_string("""
<READ_AND_WRITE>:
    AnchorLayout:
        anchor_x : 'right'
        anchor_y : 'center'
        padding: 3
        Widget:
            size_hint: (.8,1)
            canvas:
                Color:
                    rgba: .22,.22,.26,1
                Rectangle:
                    size: self.size
                    pos: self.pos                
    BoxLayout:
        orientation : 'vertical'
        size_hint : (.2, 1)
        padding: 3
        Button:
            text: 'Чтение/Запись'
            bold : 'True'
            color: [0,0,0,1]
            background_color : [.62,.93,.25,1]
            background_normal : ''
        Button:
            text : 'Температура ПЛИС'
            bold: 'True'
            background_color : [.22,.22,.26,1]
            background_normal : ''
            on_press:root.manager.current = 'TEMPERATURE'
            on_press:root.cont_drawing()
        Button:
            text : 'Регистры ПЛИС'
            bold: 'True'
            background_color : [.22,.22,.26,1]
            background_normal : ''
            on_press: root.manager.current = 'CONTROL'
        Button:
            text : 'Настройки загрузчика'
            bold: 'True'
            background_color : [.22,.22,.26,1]
            background_normal : ''
            on_press: root.socket_close()
            on_press: root.manager.current = 'BOOTLOADER_SETTINGS'

        Button:
            text : 'Сетевые настройки'
            bold: 'True'
            background_color : [.22,.22,.26,1]
            background_normal : ''
            on_press: root.manager.current = 'SETTING'
        Button:
            size_hint: (1,6.5)
            background_color : [.22,.22,.26,1]
            background_normal : ''
    AnchorLayout:
        anchor_x : 'center'
        anchor_y : 'center'
        size_hint : [1.2, 1.3]
        GridLayout: 
            cols: 2
            size_hint: [.45, .3]
            spacing: 3
            Label:
                text: 'Адрес'
                text_size:self.size
                halign:'left'
                valign:'middle'
            TextInput:
                id: address
                text:
                multiline: False
            Label:
                text: 'Данные на запись'
                text_size:self.size
                halign:'left'
                valign:'middle'
            TextInput:
                id: data
                text:
                multiline: False
            Widget:
            Widget:
            Label:
                text: 'Прочитанные данные'
                text_size:self.size
                halign:'left'
                valign:'top'
            TextInput:
                id: income_data
                size_hint: (1,2)
                text:
            Widget:
            Widget:
            Button:
                text: 'ЗАПИСЬ'
                bold : 'True'
                color: [0,0,0,1]
                background_color : [.62,.93,.25,1]
                background_normal : ''
                on_press: root.write()
            Button:
                text: 'ЧТЕНИЕ'
                bold : 'True'
                color: [0,0,0,1]
                background_color : [.62,.93,.25,1]
                background_normal : ''
                on_press: root.read()
""")
Ejemplo n.º 36
0
Builder.load_string('''
<Clyrics_s1>:
	BoxLayout:
		BoxLayout:
			id: client_box
			size_hint: 1, 1
			spacing: 10
			orientation: 'vertical'
			Label:
				id: artist_lbl
				markup: True
				size_hint: 1, .5
				text: 'Artist name:'
			TextInput:
				id: artist_input
				size_hint: 1, .2
				text: ''
				multiline: False
			Label:
				id: song_lbl
				markup: True
				size_hint: 1, .5
				text: 'Song name:'
			TextInput:
				id: song_input
				size_hint: 1, .2
				text: ''
				multiline: False
			BoxLayout:
				id: action_box
				size_hint: 1, 1
				spacing: 10
				orientation: 'vertical'
				Button:
					size_hint: 1, .1
					text: 'Get lyrics'
					on_release: root.crawl_lyrics()
				Button: 
					size_hint: 1, .1
					text: 'Watch video'
				Button:
					size_hint: 1, .1
					text: 'Refresh'
					on_release: root.refresh()
		ScrollView:
			Label:
				id: lyrics_box
				text: ''
				markup: True
        		text_size: self.width, None
				size_hint_y: None
				height: self.texture_size[1]
	
	''')
Ejemplo n.º 37
0
import os
from kivy.lang import Builder
from kivy.uix.popup import Popup
from midistream.helpers import Note, midi_instruments, midi_notes, note_name
from kivy.uix.togglebutton import ToggleButton
from kivy.properties import NumericProperty, StringProperty, ObjectProperty
from kivy.uix.stacklayout import StackLayout

Builder.load_file(os.path.join(os.path.dirname(__file__), 'noteselect.kv'))


class SelectableButton(ToggleButton):
    value = NumericProperty(0)

    def select(self):
        if self.state != 'down':
            self._do_press()


class NoteButton(SelectableButton):
    def format_text(self):
        return note_name(self.value)


class InstrumentButton(SelectableButton):
    title = StringProperty('')

    def format_text(self):
        return "{}".format(self.title)

Ejemplo n.º 38
0
class Train(BoxLayout):
    """Train a deep learning model with own data

	Because this module rely on models from Model Zoo, so it is designed as
	opening in a passive manner. To be specific, at start the GUI will guide
	user to select a model in Model Zoo module, only after deep learning model
	is selected, this module will shift to work mode.

	Attributes:
		model_id: id of model, used to find and load configuration of the model
		train_notebooks: list of notebook pathes. Each model may have one or
		 	more notebooks for training different kind of data.
		bundle_dir: the dir of main.py

	"""
    model_id = StringProperty()
    train_notebooks = ListProperty()
    bundle_dir = rootpath.detect(
        pattern='main.py')  # Obtain the dir of main.py
    Builder.load_file(bundle_dir + os.sep + 'ui' + os.sep + 'train.kv')

    def __init__(self):
        super(Train, self).__init__()
        self.bind(model_id=self.switch_screens)
        self.bind(model_id=self.show_config)
        self.bind(model_id=self.collect_train_notebooks)

    def switch_screens(self, *args):
        self.ids.screens.current = 'work'

    def jump_to_model_zoo(self, *args):
        widget_handler = WidgetHandler()
        widget_handler.switch_screens('processing', 'model_zoo')

    def show_config(self, instance, text):
        self.ids.config_panel.clear_widgets()
        path = os.sep.join(
            [self.bundle_dir, 'model_zoo', text, 'config_form.json'])
        if not os.path.exists(path):
            self.ids.config_panel.add_widget(
                Label(text='This network do not need configuration'))
            return
        self.form_parser = FormParser()
        self.form_parser.load_json(path)
        self.ids.config_panel.add_widget(self.form_parser)

    def collect_train_notebooks(self, *args):
        self.train_notebooks = get_file_list(os.sep.join([
            self.bundle_dir, 'plugins', 'processing', 'model_zoo', 'models',
            self.model_id, 'training'
        ]),
                                             formats=['ipynb'])

    def open_via(self):
        webbrowser.open(
            'http://www.robots.ox.ac.uk/~vgg/software/via/via-2.0.4.html')

    def train(self):
        webbrowser.open(
            'https://colab.research.google.com/github/deepdiy/deepdiy/blob/master/deepdiy/model_zoo/'
            + self.model_id + '/training/' +
            self.ids.run_notebook_spinner.text)

    def select_annotation_path(self):
        self.annoation_path = select_file()

    def select_config_path(self):
        self.config_path = select_file()

    def select_img_dir(self):
        self.img_dir = select_folder()

    def save_zip(self):
        dataset = Dataset()
        dataset.destination_dir = select_folder()
        dataset.annotation_path = self.annoation_path
        dataset.img_dir = self.img_dir
        dataset.config_path = self.config_path
        dataset.run()
Ejemplo n.º 39
0
Builder.load_string('''
#:import md_icons kivymd.icon_definitions.md_icons
#:import colors kivymd.color_definitions.colors
#:import MDLabel kivymd.label.MDLabel
<BaseButton>:
    size_hint: (None, None)
    anchor_x: 'center'
    anchor_y: 'center'

<BaseFlatButton>:

<BaseRaisedButton>:

<BaseRoundButton>:
    canvas:
        Clear
        Color:
            rgba: self._current_button_color
        Ellipse:
            size: self.size
            pos: self.pos
    size: (dp(48), dp(48))
    content: content
    padding: dp(12)
    theme_text_color: 'Primary'
    MDLabel:
        id: content
        font_style: 'Icon'
        text: u"{}".format(md_icons[root.icon])
        theme_text_color: root.theme_text_color
        text_color: root.text_color
        disabled: root.disabled
        valign: 'middle'
        halign: 'center'
        opposite_colors: root.opposite_colors

<BaseRectangularButton>:
    canvas:
        Clear
        Color:
            rgba: self._current_button_color
        RoundedRectangle:
            size: self.size
            pos: self.pos
            radius: (dp(2),)
            
    content: content
    height: dp(36)
    width: content.texture_size[0] + dp(16)
    padding: (dp(8), 0)
    theme_text_color: 'Primary'
    MDLabel:
        id: content
        text: root._capitalized_text
        font_style: 'Button'
        size_hint_x: None
        text_size: (None, root.height)
        height: self.texture_size[1]
        theme_text_color: root.theme_text_color
        text_color: root.text_color
        disabled: root.disabled
        valign: 'middle'
        halign: 'center'
        opposite_colors: root.opposite_colors

<BaseScreenWidthRectangularButton>:
    canvas:
        Clear
        Color:
            rgba: self._current_button_color
        RoundedRectangle:
            size: self.size
            pos: self.pos
            radius: (dp(2),)
    canvas:
        Color:
            rgba: (0, 0, 0, 0.03) if self.theme_cls.theme_style == 'Light' else (1, 1, 1, 0.03)
        Line:
            points: (root.x ,root.y, root.x+self.width, root.y)
        Line:
            points: (root.x+self.width ,root.y, root.x+self.width, root.y+self.height)
            
    content: content
    size_hint: 1, None
    height: dp(36)
    padding: (dp(8), 0)
    theme_text_color: 'Primary'
    MDLabel:
        id: content
        text: root._capitalized_text
        font_style: 'Button'
        size_hint_x: None
        text_size: (None, root.height)
        height: self.texture_size[1]
        theme_text_color: root.theme_text_color
        text_color: root.text_color
        disabled: root.disabled
        valign: 'middle'
        halign: 'center'
        opposite_colors: root.opposite_colors

<MDRaisedButton>:
    md_bg_color: root.theme_cls.primary_color
    theme_text_color: 'Custom'
    text_color: root.specific_text_color

<MDFloatingActionButton>:
    # Defaults to 56-by-56 and a backround of the accent color according to
    # guidelines
    size: (dp(56), dp(56))
    md_bg_color: root.theme_cls.accent_color
    theme_text_color: 'Custom'
    text_color: root.specific_text_color
''')
Ejemplo n.º 40
0
 def build(self):
     self.title = "Convert miles to kilometres"
     self.root = Builder.load_file('convert_miles_km.kv')
     return self.root
Ejemplo n.º 41
0
Builder.load_string(
    """
<ItemPagination>
    size_hint: None, None
    size: dp(15), dp(15)
    pos_hint: {'center_y': .5}

    canvas:
        Color:
            rgba:
                self.theme_cls.primary_color\
                if root.current_index == 0 else root.color_round_not_active
        RoundedRectangle:
            pos: self.pos
            size: self.size


<MDSwiperPagination>
    padding: dp(5)
    size_hint: None, None
    width: self.minimum_width
    pos_hint: {'center_x': .5}
    height: dp(56)

    MDIconButton:
        icon: 'chevron-left'
        theme_text_color: 'Custom'
        text_color: app.theme_cls.primary_color
        on_release: root.manager.swith_screen('right')

    BoxLayout:
        id: box
        spacing: dp(5)
        size_hint_x: None
        width: self.minimum_width

    MDIconButton:
        theme_text_color: 'Custom'
        text_color: app.theme_cls.primary_color
        icon: 'chevron-right'
        on_release: root.manager.swith_screen('left')
"""
)
Ejemplo n.º 42
0
class GameScreen(Screen):
    current_time = StringProperty("")
    timer_clock = None

    Builder.load_file("kvs/game/enigmakeyboard.kv")

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        Window.bind(on_key_down=self._on_key_down)

    def load_output_text(self):
        """On load of game from selector screen, put text in board"""
        game_id = App.get_running_app().game_id
        store = JsonStore(DATA_DIR)
        keyboard_output = store.get(str(game_id))["current_output_text"]
        if keyboard_output:
            self.ids.enigma_keyboard.ids.lamp_board.ids.board_output.text = (
                keyboard_output)
        else:
            self.ids.enigma_keyboard.ids.lamp_board.ids.board_output.text = ""

    def play_effect_sound(self, sound):
        sound_names = {
            "pop",
            "plug_in",
            "keyboard_click",
            "paper",
            "button_1",
            "swoosh",
            "button_2",
            "rotor",
        }
        if sound not in sound_names:
            return

        settings = JsonStore(CONFIG_DIR)

        volume = 1.0

        if settings.exists("effects_volume"):
            if settings.get("effects_volume")["value"] == 0:
                return
            else:
                volume = settings.get("effects_volume")["value"]

        sound = SoundLoader.load("misc/" + sound +
                                 (".wav" if sound != "swoosh" else ".mp3"))
        sound.volume = volume
        sound.play()
        if platform.system() in {"Linux", "Darwin"}:
            Clock.schedule_once(lambda dt: sound.unload(), sound.length)

    if not os.path.exists(DATA_DIR):
        store = JsonStore(DATA_DIR)
        store.put("latest_game_id", id=None)

    def on_enter(self, *args):
        store = JsonStore(DATA_DIR)
        game_id = App.get_running_app().game_id
        if game_id is None or store.exists(str(
                App.get_running_app().game_id)) is False:
            setup_new_game_settings()
        else:
            on_config_change()

        if not self.timer_clock:
            self.timer_clock = Clock.schedule_interval(self.handle_timer, 1)
        else:
            self.timer_clock()

    def on_leave(self):
        if self.timer_clock and self.manager.current not in {
                "rotor_screen",
                "plugboard_screen",
        }:
            self.timer_clock.cancel()

    def _on_key_down(self, window, key, scancode, codepoint, modifiers):
        if (self.manager.current == "game_screen"
                and isinstance(codepoint, str)
                and codepoint.upper() in App.get_running_app().keys and
                self.ids.enigma_keyboard.ids.lamp_board.ids.board_output.focus
            ):
            self.ids.enigma_keyboard.ids.keyboard.ids[
                codepoint.upper()].trigger_action()

    def handle_key(self, key):
        """
        ... whenever a key/letter in the machine
        (keyboard or board_output) is pressed
        """
        # Handle visuals
        self.play_effect_sound("keyboard_click")

        anim = Animation(_color=[1, 212 / 255, 42 / 255],
                         duration=0.2) + Animation(_color=[1, 1, 1],
                                                   duration=0.2)
        anim.start(self.ids.enigma_keyboard.ids.lamp_board.ids.lamp)

        # Auto-input invading key
        letter = auto_input_processor(key.name)
        board_output = self.ids.enigma_keyboard.ids.lamp_board.ids.board_output
        if not board_output.focus:
            board_output.insert_text(letter)

        # Updating rotors
        new_rotors = App.get_running_app().machine.get_display()
        save_rotors(new_rotors[0], new_rotors[1], new_rotors[2])
        rotor_screen = self.manager.get_screen("rotor_screen")
        rotor_screen.rotor_section.ids.first_rotor.rotor_value.text = new_rotors[
            0]
        rotor_screen.rotor_section.ids.second_rotor.rotor_value.text = new_rotors[
            1]
        rotor_screen.rotor_section.ids.third_rotor.rotor_value.text = new_rotors[
            2]

    def load_old_game(self):
        """Loads old/saved (point) copy of game"""
        game_id = App.get_running_app().game_id
        store = JsonStore(DATA_DIR)
        game = store.get(str(game_id))
        store_put(
            last_saved_date=datetime.now().isoformat(),
            current_state=game["last_saved_state"],
            current_output_text=game["last_saved_output_text"],
        )
        on_config_change()
        self.manager.get_screen("game_selector_screen").load_game(game_id)

    def save_game(self):
        game_id = App.get_running_app().game_id
        store = JsonStore(DATA_DIR)
        game = store.get(str(game_id))
        store_put(
            last_saved_date=datetime.now().isoformat(),
            last_saved_state=game["current_state"],
            last_saved_output_text=self.ids.enigma_keyboard.ids.lamp_board.ids.
            board_output.text,
        )

    def change_game_title(self, btn, title):
        if title != "" or title is not None:
            store_put(game_title=title)

    def handle_timer(self, dt):
        """
        Handle timer during game
        Init timer handled in gameselector and setup_new_game_settings
        """
        game_id = App.get_running_app().game_id
        store = JsonStore(DATA_DIR)
        current_state = store.get(str(game_id))["current_state"]
        # Timer logic
        if int(self.current_time) == 0:
            self.timer_clock.cancel()
            Factory.TimesUp().open()
        else:
            self.current_time = str(int(self.current_time) - 1)
            # Save timer in data
            current_state["timer"] = self.current_time
            store_put(current_state=current_state)
Ejemplo n.º 43
0
 def build(self):
     return Builder.load_string(kv)
 def build(self):
     """build the Kivy app from the kv file"""
     Window.size = (600, 300)
     self.title = "Convert Miles to Kilometres"
     self.root = Builder.load_file('miles_to_km_customised.kv')
     return self.root
Ejemplo n.º 45
0
 def build(self):
     self.theme_cls.primary_palette = "Teal"
     self.theme_cls.accent_palette = 'Teal'
     self.theme_cls.theme_style = "Light"
     return Builder.load_string(kv_string)
from kivy.uix.screenmanager import ScreenManager
from kivy.uix.textinput import TextInput
from kivymd.uix.textfield import MDTextField
from kivymd.app import MDApp
from kivymd.theming import ThemableBehavior
from kivymd.uix.button import MDFlatButton
from kivymd.uix.dialog import MDDialog
from kivymd.uix.list import OneLineIconListItem, MDList
from kivymd.uix.screen import Screen
from kivymd.uix.snackbar import Snackbar

from wacryptolib.authentication_device import list_available_authentication_devices, _get_key_storage_folder_path
from wacryptolib.exceptions import KeyStorageAlreadyExists
from waguilib.widgets.popups import display_info_toast

Builder.load_file(str(
    Path(__file__).parent / 'authentication_device_store.kv'))


class AuthenticationDeviceStoreScreen(Screen):

    filesystem_key_storage_pool = ObjectProperty(None)

    def __init__(self, *args, **kwargs):
        self.selected_authentication_device_uids = []
        self.register_event_type('on_selected_authentication_devices_changed')
        super().__init__(*args, **kwargs)

    def on_selected_authentication_devices_changed(self, *args):
        pass
        print("I am dispatched on_selected_authentication_devices_changed",
              args)
 def build(self):
     self.title = "Box Layout Demo"
     self.root = Builder.load_file('box_layout.kv')
     return self.root
Ejemplo n.º 48
0
from jocular.component import Component
from jocular.widgets import Panel, LabelR

Builder.load_string('''

<FilterToggle>:
    canvas.before:
        Color:
            rgba: .15, .15, .15, 1
        Ellipse:
            pos: self.pos
            size: self.width, self.height
        Color:
            rgb: self.filter_color
            a: .7 if self.state == 'down' else .2
        Ellipse:
            pos: self.x + 2, self.y + 2
            size: self.width - 5, self.height - 5
    markup: True
    color: (.8, .8, .8, 1) if self.state == 'down' else (0, 0, 0, 1)
    disabled: self.text == '-'
    background_color: 0, 0, 0, 0
    size: dp(70), dp(70)
    font_size: '24sp' if self.state == 'down' else '18sp'
    size_hint: None, None
''')


class FilterToggle(ToggleButton):
    filter_color = ListProperty([1, 1, 1, 1])
Ejemplo n.º 49
0
Builder.load_string('''
#:import Window kivy.core.window.Window
#:import _ electrum_gui.kivy.i18n._


<WizardTextInput@TextInput>
    border: 4, 4, 4, 4
    font_size: '15sp'
    padding: '15dp', '15dp'
    background_color: (1, 1, 1, 1) if self.focus else (0.454, 0.698, 0.909, 1)
    foreground_color: (0.31, 0.31, 0.31, 1) if self.focus else (0.835, 0.909, 0.972, 1)
    hint_text_color: self.foreground_color
    background_active: 'atlas://gui/kivy/theming/light/create_act_text_active'
    background_normal: 'atlas://gui/kivy/theming/light/create_act_text_active'
    size_hint_y: None
    height: '48sp'

<WizardButton@Button>:
    root: None
    size_hint: 1, None
    height: '48sp'
    on_press: if self.root: self.root.dispatch('on_press', self)
    on_release: if self.root: self.root.dispatch('on_release', self)

<BigLabel@Label>
    color: .854, .925, .984, 1
    size_hint: 1, None
    text_size: self.width, None
    height: self.texture_size[1]
    bold: True

<-WizardDialog>
    text_color: .854, .925, .984, 1
    value: ''
    #auto_dismiss: False
    size_hint: None, None
    canvas.before:
        Color:
            rgba: 0, 0, 0, .9
        Rectangle:
            size: Window.size
        Color:
            rgba: .239, .588, .882, 1
        Rectangle:
            size: Window.size

    crcontent: crcontent
    # add electrumpq icon
    BoxLayout:
        orientation: 'vertical' if self.width < self.height else 'horizontal'
        padding:
            min(dp(27), self.width/32), min(dp(27), self.height/32),\
            min(dp(27), self.width/32), min(dp(27), self.height/32)
        spacing: '10dp'
        GridLayout:
            id: grid_logo
            cols: 1
            pos_hint: {'center_y': .5}
            size_hint: 1, None
            height: self.minimum_height
            Label:
                color: root.text_color
                text: 'ELECTRUMPQ'
                size_hint: 1, None
                height: self.texture_size[1] if self.opacity else 0
                font_size: '33sp'
                font_name: 'gui/kivy/data/fonts/tron/Tr2n.ttf'
        GridLayout:
            cols: 1
            id: crcontent
            spacing: '1dp'
        Widget:
            size_hint: 1, 0.3
        GridLayout:
            rows: 1
            spacing: '12dp'
            size_hint: 1, None
            height: self.minimum_height
            WizardButton:
                id: back
                text: _('Back')
                root: root
            WizardButton:
                id: next
                text: _('Next')
                root: root
                disabled: root.value == ''


<WizardMultisigDialog>
    value: 'next'
    Widget
        size_hint: 1, 1
    Label:
        color: root.text_color
        size_hint: 1, None
        text_size: self.width, None
        height: self.texture_size[1]
        text: _("Choose the number of signatures needed to unlock funds in your wallet")
    Widget
        size_hint: 1, 1
    GridLayout:
        orientation: 'vertical'
        cols: 2
        spacing: '14dp'
        size_hint: 1, 1
        height: self.minimum_height
        Label:
            color: root.text_color
            text: _('From {} cosigners').format(n.value)
        Slider:
            id: n
            range: 2, 5
            step: 1
            value: 2
        Label:
            color: root.text_color
            text: _('Require {} signatures').format(m.value)
        Slider:
            id: m
            range: 1, n.value
            step: 1
            value: 2


<WizardChoiceDialog>
    message : ''
    Widget:
        size_hint: 1, 1
    Label:
        color: root.text_color
        size_hint: 1, None
        text_size: self.width, None
        height: self.texture_size[1]
        text: root.message
    Widget
        size_hint: 1, 1
    GridLayout:
        row_default_height: '48dp'
        orientation: 'vertical'
        id: choices
        cols: 1
        spacing: '14dp'
        size_hint: 1, None

<MButton@Button>:
    size_hint: 1, None
    height: '33dp'
    on_release:
        self.parent.update_amount(self.text)

<WordButton@Button>:
    size_hint: None, None
    padding: '5dp', '5dp'
    text_size: None, self.height
    width: self.texture_size[0]
    height: '30dp'
    on_release:
        self.parent.new_word(self.text)


<SeedButton@Button>:
    height: dp(100)
    border: 4, 4, 4, 4
    halign: 'justify'
    valign: 'top'
    font_size: '18dp'
    text_size: self.width - dp(24), self.height - dp(12)
    color: .1, .1, .1, 1
    background_normal: 'atlas://gui/kivy/theming/light/white_bg_round_top'
    background_down: self.background_normal
    size_hint_y: None


<SeedLabel@Label>:
    font_size: '12sp'
    text_size: self.width, None
    size_hint: 1, None
    height: self.texture_size[1]
    halign: 'justify'
    valign: 'middle'
    border: 4, 4, 4, 4


<RestoreSeedDialog>
    message: ''
    word: ''
    BigLabel:
        text: "ENTER YOUR SEED PHRASE"
    GridLayout
        cols: 1
        padding: 0, '12dp'
        orientation: 'vertical'
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        SeedButton:
            id: text_input_seed
            text: ''
            on_text: Clock.schedule_once(root.on_text)
            on_release: root.options_dialog()
        SeedLabel:
            text: root.message
        BoxLayout:
            id: suggestions
            height: '35dp'
            size_hint: 1, None
            new_word: root.on_word
        BoxLayout:
            id: line1
            update_amount: root.update_text
            size_hint: 1, None
            height: '30dp'
            MButton:
                text: 'Q'
            MButton:
                text: 'W'
            MButton:
                text: 'E'
            MButton:
                text: 'R'
            MButton:
                text: 'T'
            MButton:
                text: 'Y'
            MButton:
                text: 'U'
            MButton:
                text: 'I'
            MButton:
                text: 'O'
            MButton:
                text: 'P'
        BoxLayout:
            id: line2
            update_amount: root.update_text
            size_hint: 1, None
            height: '30dp'
            Widget:
                size_hint: 0.5, None
                height: '33dp'
            MButton:
                text: 'A'
            MButton:
                text: 'S'
            MButton:
                text: 'D'
            MButton:
                text: 'F'
            MButton:
                text: 'G'
            MButton:
                text: 'H'
            MButton:
                text: 'J'
            MButton:
                text: 'K'
            MButton:
                text: 'L'
            Widget:
                size_hint: 0.5, None
                height: '33dp'
        BoxLayout:
            id: line3
            update_amount: root.update_text
            size_hint: 1, None
            height: '30dp'
            Widget:
                size_hint: 1, None
            MButton:
                text: 'Z'
            MButton:
                text: 'X'
            MButton:
                text: 'C'
            MButton:
                text: 'V'
            MButton:
                text: 'B'
            MButton:
                text: 'N'
            MButton:
                text: 'M'
            MButton:
                text: ' '
            MButton:
                text: '<'

<AddXpubDialog>
    title: ''
    message: ''
    BigLabel:
        text: root.title
    GridLayout
        cols: 1
        padding: 0, '12dp'
        orientation: 'vertical'
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        SeedButton:
            id: text_input
            text: ''
            on_text: Clock.schedule_once(root.check_text)
        SeedLabel:
            text: root.message
    GridLayout
        rows: 1
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        IconButton:
            id: scan
            height: '48sp'
            on_release: root.scan_xpub()
            icon: 'atlas://gui/kivy/theming/light/camera'
            size_hint: 1, None
        WizardButton:
            text: _('Paste')
            on_release: root.do_paste()
        WizardButton:
            text: _('Clear')
            on_release: root.do_clear()


<ShowXpubDialog>
    xpub: ''
    message: _('Here is your master public key. Share it with your cosigners.')
    BigLabel:
        text: "MASTER PUBLIC KEY"
    GridLayout
        cols: 1
        padding: 0, '12dp'
        orientation: 'vertical'
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        SeedButton:
            id: text_input
            text: root.xpub
        SeedLabel:
            text: root.message
    GridLayout
        rows: 1
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        WizardButton:
            text: _('QR code')
            on_release: root.do_qr()
        WizardButton:
            text: _('Copy')
            on_release: root.do_copy()
        WizardButton:
            text: _('Share')
            on_release: root.do_share()


<ShowSeedDialog>
    spacing: '12dp'
    value: 'next'
    BigLabel:
        text: "PLEASE WRITE DOWN YOUR SEED PHRASE"
    GridLayout:
        id: grid
        cols: 1
        pos_hint: {'center_y': .5}
        size_hint_y: None
        height: self.minimum_height
        orientation: 'vertical'
        spacing: '12dp'
        SeedButton:
            text: root.seed_text
            on_release: root.options_dialog()
        SeedLabel:
            text: root.message


<LineDialog>

    BigLabel:
        text: root.title
    SeedLabel:
        text: root.message
    TextInput:
        id: passphrase_input
        multiline: False
        size_hint: 1, None
        height: '27dp'
    SeedLabel:
        text: root.warning

''')
Ejemplo n.º 50
0
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.popup import Popup

Builder.load_file('screens.kv')
Builder.load_file('landing.kv')
Builder.load_file('home.kv')


class Screens(ScreenManager):
    def __init__(self, **kwargs):
        super(Screens, self).__init__(**kwargs)
        self.current = 'landing'

    def navigate(self):
        self.current = 'home'


class Landing(Screen):
    def __init__(self, **kwargs):
        super(Landing, self).__init__(**kwargs)
        self.name = 'landing'


class Home(Screen):
    def __init__(self, **kwargs):
        super(Home, self).__init__(**kwargs)
        self.name = 'home'

Ejemplo n.º 51
0
 def build(self):
     self.title = "Demoing the id attribute"
     self.root = Builder.load_file('self_root_ids.kv')
     return self.root
Ejemplo n.º 52
0
        article = self.article.text
        title = self.title.text
        if keyword != "" and category != "" and article != "" and title != "":
            db.insert(keyword, title, category, article)
            print("成功插入数据记录:%s %s %s \n%s" %
                  (title, category, keyword, article))
            val.clear()
            sm.current = "main"
        else:
            popupWindow(
                "No enough arguments!",
                "Please finish all the arguments to complish record this article!"
            )


kv = Builder.load_file("my.kv")
# 利用screenmanager实现界面切换
sm = WindowManager()
db = DataBase()
val = Val()
screens = [
    MainView(name="main"),
    ListView(name="list"),
    DetailView(name="detail")
]
for screen in screens:
    sm.add_widget(screen)
sm.current = "main"


class MyMainApp(App):
Ejemplo n.º 53
0

class smoothButton(Button):
    pass


class MyPopup(FloatLayout):
    pass


def show_popup():
    show = MyPopup()

    popupWindow = Popup(title="Dice rolled",
                        content=show,
                        size_hint=(None, None),
                        size=(400, 400))

    popupWindow.open()


kv = Builder.load_file("UI.kv")


class MyMainApp(App):
    def build(self):
        return Builder.load_file("UI.kv")


if __name__ == "__main__":
    MyMainApp().run()
Ejemplo n.º 54
0
from kivy.lang import Builder

import os

Builder.load_string('''
<LoadDialog>:
    BoxLayout:
        size: root.size
        pos: root.pos
        orientation: "vertical"
        FileChooserIconView:
            id: filechooser
            multiselect: False
            path: root.path
            title: 'File to print'
            filters: ['*.g', '*.gcode', '*.nc']

        BoxLayout:
            size_hint_y: None
            height: 30
            Button:
                text: "Cancel"
                on_release: root.cancel()

            Button:
                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)
''')


class LoadDialog(FloatLayout):
    load = ObjectProperty(None)
Ejemplo n.º 55
0
Builder.load_string('''


<Custom@Button>
    font_size:'20dp'


<CustomBox@BoxLayout>
    spacing:10


<CalcGridLayout>
    id: calc
    display: entry
    rows: 6
    padding:10
    spacing:10

    BoxLayout:
        TextInput:
            id: entry
            font_size: '30dp'
            multiline: False

    CustomBox:

        Custom:
            text: 'AC'
            on_press: calc.clear()
        Custom:
            text: 'M+'
            on_press: calc.add_mem(entry.text)
        Custom:
            text: 'M-'
            on_press: calc.sub_mem(entry.text)
        Custom:
            text: 'MRC'
            on_press: calc.mrc_mem()

    CustomBox:

        Custom:
            text: '7'
            on_press: entry.text += self.text
        Custom:
            text: '8'
            on_press: entry.text += self.text
        Custom:
            text: '9'
            on_press: entry.text += self.text
        Custom:
            text: '+'
            on_press: entry.text += self.text

    CustomBox:
        Custom:
            text: '4'
            on_press: entry.text += self.text
        Custom:
            text: '5'
            on_press: entry.text += self.text
        Custom:
            text: '6'
            on_press: entry.text += self.text
        Custom:
            text: '-'
            on_press: entry.text += self.text

    CustomBox:
        Custom:
            text: '1'
            on_press: entry.text += self.text
        Custom:
            text: '2'
            on_press: entry.text += self.text
        Custom:
            text: '3'
            on_press: entry.text += self.text
        Custom:
            text: '*'
            on_press: entry.text += self.text

    CustomBox:
        Custom:
            text: '.'
            on_press: entry.text += self.text
        Custom:
            text: '0'
            on_press: entry.text += self.text
        Custom:
            id: equal
            text: '='
            on_press: calc.calC(entry.text)
        Custom:
            text: '/'
            on_press: entry.text += self.text


''')
Ejemplo n.º 56
0
Builder.load_string('''
#:import os os
<WalletDialog@Popup>:
    title: _('Wallets')
    id: popup
    path: os.path.dirname(app.get_wallet_path())
    BoxLayout:
        orientation: 'vertical'
        padding: '10dp'
        FileChooserListView:
            id: wallet_selector
            dirselect: False
            filter_dirs: True
            filter: '*.*'
            path: root.path
            rootpath: root.path
            size_hint_y: 0.6
        Widget
            size_hint_y: 0.1
        GridLayout:
            cols: 3
            size_hint_y: 0.1
            Button:
                id: open_button
                size_hint: 0.1, None
                height: '48dp'
                text: _('New')
                on_release:
                    popup.dismiss()
                    root.new_wallet(app, wallet_selector.path)
            Button:
                id: open_button
                size_hint: 0.1, None
                height: '48dp'
                text: _('Open')
                disabled: not wallet_selector.selection
                on_release:
                    popup.dismiss()
                    root.open_wallet(app)
''')
Ejemplo n.º 57
0
	Params = autoclass('android.view.WindowManager$LayoutParams')
	PythonActivity.mActivity.getWindow().addFlags(Params.FLAG_KEEP_SCREEN_ON)
except:
	Logger.debug("jnius autoclass exception, app is not running on android")

# for PC only
#Window.size = (960, 540)


#--------------------------------------------------------------------
#                            ---GLOBALS---

			 
UPDATE_FG_RATE=20.0 #Hz

Builder.load_file('APMenu.kv')
Builder.load_file('ViewButtons.kv')
Builder.load_file('LightsButtons.kv')
Builder.load_file('Settings.kv')
Builder.load_file('Disclaimer.kv')


'''
	 class InfoPopup
'''
class InfoPopup(Popup):

	txt = ''
	bindroot = ObjectProperty(None)

#--------------------------------------------------------------------
Ejemplo n.º 58
0
Builder.load_string('''
<AddressLabel@Label>
    text_size: self.width, None
    halign: 'left'
    valign: 'top'

<AddressItem@CardItem>
    address: ''
    memo: ''
    amount: ''
    status: ''
    BoxLayout:
        spacing: '8dp'
        height: '32dp'
        orientation: 'vertical'
        Widget
        AddressLabel:
            text: root.address
            shorten: True
        Widget
        AddressLabel:
            text: (root.amount if root.status == 'Funded' else root.status) + '     ' + root.memo
            color: .699, .699, .699, 1
            font_size: '13sp'
            shorten: True
        Widget

<AddressButton@Button>:
    background_color: 1, .585, .878, 0
    halign: 'center'
    text_size: (self.width, None)
    shorten: True
    size_hint: 0.5, None
    default_text: ''
    text: self.default_text
    padding: '5dp', '5dp'
    height: '40dp'
    text_color: self.foreground_color
    disabled_color: 1, 1, 1, 1
    foreground_color: 1, 1, 1, 1
    canvas.before:
        Color:
            rgba: (0.9, .498, 0.745, 1) if self.state == 'down' else self.background_color
        Rectangle:
            size: self.size
            pos: self.pos

<AddressesDialog@Popup>
    id: popup
    title: _('Addresses')
    message: ''
    pr_status: 'Pending'
    show_change: 0
    show_used: 0
    on_message:
        self.update()
    BoxLayout:
        id:box
        padding: '12dp', '12dp', '12dp', '12dp'
        spacing: '12dp'
        orientation: 'vertical'
        BoxLayout:
            spacing: '6dp'
            height: self.minimum_height
            size_hint: 1, None
            orientation: 'horizontal'
            AddressFilter:
                opacity: 1
                size_hint: 1, None
                height: self.minimum_height
                spacing: '5dp'
                AddressButton:
                    id: search
                    text: {0:_('Receiving'), 1:_('Change'), 2:_('All')}[root.show_change]
                    on_release:
                        root.show_change = (root.show_change + 1) % 3
                        Clock.schedule_once(lambda dt: root.update())
            AddressFilter:
                opacity: 1
                size_hint: 1, None
                height: self.minimum_height
                spacing: '5dp'
                AddressButton:
                    id: search
                    text: {0:_('All'), 1:_('Unused'), 2:_('Funded'), 3:_('Used')}[root.show_used]
                    on_release:
                        root.show_used = (root.show_used + 1) % 4
                        Clock.schedule_once(lambda dt: root.update())
            AddressFilter:
                opacity: 1
                size_hint: 1, None
                height: self.minimum_height
                spacing: '5dp'
                canvas.before:
                    Color:
                        rgba: 0.9, 0.9, 0.9, 1
                AddressButton:
                    id: change
                    text: root.message if root.message else _('Search')
                    on_release: Clock.schedule_once(lambda dt: app.description_dialog(popup))
        RecycleView:
            scroll_type: ['bars', 'content']
            bar_width: '15dp'
            viewclass: 'AddressItem'
            id: search_container
            RecycleBoxLayout:
                orientation: 'vertical'
                default_size: None, dp(56)
                default_size_hint: 1, None
                size_hint_y: None
                height: self.minimum_height

<AddressPopup@Popup>:
    address: ''
    balance: ''
    status: ''
    script_type: ''
    pk: ''
    address_color: 1, 1, 1, 1
    address_background_color: 0.3, 0.3, 0.3, 1
    BoxLayout:
        orientation: 'vertical'
        ScrollView:
            GridLayout:
                cols: 1
                height: self.minimum_height
                size_hint_y: None
                padding: '10dp'
                spacing: '10dp'
                TopLabel:
                    text: _('Address')
                RefLabel:
                    color: root.address_color
                    background_color: root.address_background_color
                    data: root.address
                    name: _('Address')
                GridLayout:
                    cols: 1
                    size_hint_y: None
                    height: self.minimum_height
                    spacing: '10dp'
                    BoxLabel:
                        text: _('Balance')
                        value: root.balance
                    BoxLabel:
                        text: _('Script type')
                        value: root.script_type
                    BoxLabel:
                        text: _('Status')
                        value: root.status
                TopLabel:
                    text: _('Private Key')
                RefLabel:
                    data: root.pk
                    name: _('Private key')
                    on_touched: if not self.data: root.do_export(self)
        Widget:
            size_hint: 1, 0.1
        BoxLayout:
            size_hint: 1, None
            height: '48dp'
            Button:
                size_hint: 0.5, None
                height: '48dp'
                text: _('Receive')
                on_release: root.receive_at()
            Button:
                size_hint: 0.5, None
                height: '48dp'
                text: _('Close')
                on_release: root.dismiss()
''')
Ejemplo n.º 59
0
 def build(self):
     """ build the Kivy app from the kv file """
     Window.size = (400, 200)
     self.title = "Square Number"
     self.root = Builder.load_file('squaring.kv')
     return self.root
Ejemplo n.º 60
0
Builder.load_string('''
#:import Window kivy.core.window.Window
#:import _ electrum_gui.kivy.i18n._


<WizardTextInput@TextInput>
    border: 4, 4, 4, 4
    font_size: '15sp'
    padding: '15dp', '15dp'
    background_color: (1, 1, 1, 1) if self.focus else (0.454, 0.698, 0.909, 1)
    foreground_color: (0.31, 0.31, 0.31, 1) if self.focus else (0.835, 0.909, 0.972, 1)
    hint_text_color: self.foreground_color
    background_active: 'atlas://gui/kivy/theming/light/create_act_text_active'
    background_normal: 'atlas://gui/kivy/theming/light/create_act_text_active'
    size_hint_y: None
    height: '48sp'

<WizardButton@Button>:
    root: None
    size_hint: 1, None
    height: '48sp'
    on_press: if self.root: self.root.dispatch('on_press', self)
    on_release: if self.root: self.root.dispatch('on_release', self)


<-WizardDialog>
    text_color: .854, .925, .984, 1
    #auto_dismiss: False
    size_hint: None, None
    canvas.before:
        Color:
            rgba: 0, 0, 0, .9
        Rectangle:
            size: Window.size
        Color:
            rgba: .239, .588, .882, 1
        Rectangle:
            size: Window.size

    crcontent: crcontent
    # add electrum icon
    BoxLayout:
        orientation: 'vertical' if self.width < self.height else 'horizontal'
        padding:
            min(dp(42), self.width/16), min(dp(60), self.height/16),\
            min(dp(42), self.width/16), min(dp(72), self.height/16)
        spacing: '27dp'
        GridLayout:
            id: grid_logo
            cols: 1
            pos_hint: {'center_y': .5}
            size_hint: 1, None
            #height: self.minimum_height
            Label:
                color: root.text_color
                text: 'ELECTRUM'
                size_hint: 1, None
                height: self.texture_size[1] if self.opacity else 0
                font_size: '33sp'
                font_name: 'gui/kivy/data/fonts/tron/Tr2n.ttf'
        GridLayout:
            cols: 1
            id: crcontent
            spacing: '1dp'


<CreateRestoreDialog>
    Image:
        id: logo_img
        mipmap: True
        allow_stretch: True
        size_hint: 1, None
        height: '110dp'
        source: 'atlas://gui/kivy/theming/light/electrum_icon640'
    Widget:
        size_hint: 1, 1
    Label:
        color: root.text_color
        size_hint: 1, None
        text_size: self.width, None
        height: self.texture_size[1]
        text:
            _("Wallet file not found")+"\\n\\n" +\
            _("Do you want to create a new wallet ")+\
            _("or restore an existing one?")
    Widget
        size_hint: 1, 1
    GridLayout:
        id: grid
        orientation: 'vertical'
        cols: 1
        spacing: '14dp'
        size_hint: 1, None
        height: self.minimum_height
        WizardButton:
            id: create
            text: _('Create a new seed')
            root: root
        WizardButton:
            id: restore
            text: _('I already have a seed')
            root: root


<MButton@Button>:
    size_hint: 1, None
    height: '33dp'
    on_release:
        self.parent.update_amount(self.text)

<WordButton@Button>:
    size_hint: None, None
    padding: '5dp', '5dp'
    text_size: None, self.height
    width: self.texture_size[0]
    height: '30dp'
    on_release:
        self.parent.new_word(self.text)


<SeedButton@Button>:
    height: dp(100)
    border: 4, 4, 4, 4
    halign: 'justify'
    valign: 'top'
    font_size: '18dp'
    text_size: self.width - dp(24), self.height - dp(12)
    color: .1, .1, .1, 1
    background_normal: 'atlas://gui/kivy/theming/light/white_bg_round_top'
    background_down: self.background_normal
    size_hint_y: None


<SeedLabel@Label>:
    font_size: '12sp'
    text_size: self.width, None
    size_hint: 1, None
    height: self.texture_size[1]
    halign: 'justify'
    valign: 'middle'
    border: 4, 4, 4, 4


<RestoreSeedDialog>
    word: ''
    Label:
        color: root.text_color
        size_hint: 1, None
        text_size: self.width, None
        height: self.texture_size[1]
        text: "[b]ENTER YOUR SEED PHRASE[/b]"
    GridLayout
        cols: 1
        padding: 0, '12dp'
        orientation: 'vertical'
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        SeedButton:
            id: text_input_seed
            text: ''
            on_text: Clock.schedule_once(root.on_text)
        SeedLabel:
            text: root.message
        BoxLayout:
            id: suggestions
            height: '35dp'
            size_hint: 1, None
            new_word: root.on_word
        BoxLayout:
            id: line1
            update_amount: root.update_text
            size_hint: 1, None
            height: '30dp'
            MButton:
                text: 'Q'
            MButton:
                text: 'W'
            MButton:
                text: 'E'
            MButton:
                text: 'R'
            MButton:
                text: 'T'
            MButton:
                text: 'Y'
            MButton:
                text: 'U'
            MButton:
                text: 'I'
            MButton:
                text: 'O'
            MButton:
                text: 'P'
        BoxLayout:
            id: line2
            update_amount: root.update_text
            size_hint: 1, None
            height: '30dp'
            Widget:
                size_hint: 0.5, None
                height: '33dp'
            MButton:
                text: 'A'
            MButton:
                text: 'S'
            MButton:
                text: 'D'
            MButton:
                text: 'F'
            MButton:
                text: 'G'
            MButton:
                text: 'H'
            MButton:
                text: 'J'
            MButton:
                text: 'K'
            MButton:
                text: 'L'
            Widget:
                size_hint: 0.5, None
                height: '33dp'
        BoxLayout:
            id: line3
            update_amount: root.update_text
            size_hint: 1, None
            height: '30dp'
            Widget:
                size_hint: 1, None
            MButton:
                text: 'Z'
            MButton:
                text: 'X'
            MButton:
                text: 'C'
            MButton:
                text: 'V'
            MButton:
                text: 'B'
            MButton:
                text: 'N'
            MButton:
                text: 'M'
            MButton:
                text: ' '
            MButton:
                text: '<'
    Widget:
        size_hint: 1, 1

    GridLayout:
        rows: 1
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        WizardButton:
            id: back
            text: _('Back')
            root: root
        IconButton:
            id: scan
            on_release: root.scan_seed()
            icon: 'atlas://gui/kivy/theming/light/camera'
        WizardButton:
            id: next
            text: _('Next')
            root: root
            disabled: True


<ShowSeedDialog>
    spacing: '12dp'
    Label:
        color: root.text_color
        size_hint: 1, None
        text_size: self.width, None
        height: self.texture_size[1]
        text: "[b]PLEASE WRITE DOWN YOUR SEED PHRASE[/b]"
    GridLayout:
        id: grid
        cols: 1
        pos_hint: {'center_y': .5}
        size_hint_y: None
        height: self.minimum_height
        orientation: 'vertical'
        spacing: '12dp'
        SeedButton:
            text: root.seed_text
        SeedLabel:
            text: root.message
    Widget:
        size_hint: 1, 1
    GridLayout:
        rows: 1
        spacing: '12dp'
        size_hint: 1, None
        height: self.minimum_height
        WizardButton:
            id: back
            text: _('Back')
            root: root
        WizardButton:
            id: confirm
            text: _('Confirm')
            root: root
''')