Esempio n. 1
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)
Esempio n. 2
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)
Esempio n. 3
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
Esempio n. 4
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
Esempio n. 5
0
    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()
Esempio n. 6
0
File: main.py Progetto: 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()
Esempio n. 7
0
    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.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.show_error(e)
        except Exception, e:
            self.show_error(e)
Esempio n. 8
0
    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.'''

        txt = self.language_box.text
        kv_container = self.screen_manager.current_screen.children[0]
        try:
            parser = Parser(content=txt)
            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.show_error(e)
        except Exception as e:
            self.show_error(e)
Esempio n. 9
0
 def BuildCameraInformation(self, *largs):
   txt = self.GetCameraInformation()
   if txt == self.textcaminfo:
     return
   kv_container = self.current_screen.children[0]
   for child in kv_container.children[:]:
     if isinstance(child, GridLayout):
       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)
     kv_container.add_widget(widget)
     self.textcaminfo = txt
   except (SyntaxError, ParserException) as e:
     print "SyntaxError, ParserException", e
   except Exception as e:
     print "Exception", e
Esempio n. 10
0
 def change_kv(self, *largs):
     kv_container = self.screen_manager.current_screen.content.children[0]
     try:
         parser = Parser(content=self._kv_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()
Esempio n. 11
0
    def change_kv_open_file(self, *largs):
        txt = self.language_box.text
        kv_container = self.screen_manager.current_screen.children[0]
        try:
            parser = Parser(content=txt)
            kv_container.clear_widgets()
            widget = Factory.get(parser.root.name)()
            Builder._apply_rule(widget, parser.root, parser.root)
            kv_container.add_widget(widget)

            name = self.ids.ui_name.text
            save_path = name
            dump = pickle.dumps(save_path)
            all = self.db.get_kvs()
            kvs = [x[0] for x in all]

            if dump not in kvs:
                self.db.add_kv(dump)

            with open(save_path, 'w') as f:
                f.write(txt)
        except:
            pass
Esempio n. 12
0
    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.'''

        txt = self.language_box.text
        kv_container = self.screen_manager.current_screen.children[0]
        try:
            parser = Parser(content=txt)
            kv_container.clear_widgets()
            widget = Factory.get(parser.root.name)()
            Builder._apply_rule(widget, parser.root, parser.root)
            kv_container.add_widget(widget)

            name = self.ids.ui_name.text
            print(f'The whatever name is {name}')
            if name == 'Untitled*':
                m = ModalView(size_hint=[.6, .7])
                box = BoxLayout(orientation='vertical')
                m.add_widget(box)

                # Function to get user's current home directory
                from os.path import expanduser
                users_home = expanduser('~')
                user_home_dir = os.path.join(users_home, 'Desktop')
                try:
                    os.mkdir(os.path.join(user_home_dir, 'KivyEditor'))
                    user_home_dir = os.path.join(user_home_dir, 'KivyEditor')
                except FileExistsError:
                    # user_home_dir = os.path.join(user_home_dir, 'KivyEditor')
                    pass

                name_box = BoxLayout(size_hint_y=.1)
                fc = FileChooserListView(size_hint_y=.9,
                                         filters=['*kv'],
                                         rootpath=user_home_dir)

                box.add_widget(name_box)
                box.add_widget(fc)

                tinput = TextInput(multiline=False, size_hint_x=.8)
                submit = Button(text='Save',
                                background_color=[1, 1, 1, 1],
                                background_normal='',
                                color=[0, 0, 0, 1],
                                size_hint_x=.2)

                tinput.bind(on_text_validate=lambda x: self.update_name(
                    os.path.join(fc.path, tinput.text), m))
                submit.bind(on_release=lambda x: self.update_name(
                    os.path.join(fc.path, tinput.text), m))

                name_box.add_widget(tinput)
                name_box.add_widget(submit)
                m.open()

            else:
                save_path = name
                dump = pickle.dumps(save_path)
                all = self.db.get_kvs()
                kvs = [x[0] for x in all]

                if dump not in kvs:
                    self.db.add_kv(dump)

                with open(save_path, 'w') as f:
                    f.write(txt)

        except (SyntaxError, ParserException) as e:
            self.show_error(e)
        except Exception as e:
            self.show_error(e)
Esempio n. 13
0
 def __init__(self, **kwargs):
     super(Menu, self).__init__(**kwargs)
     parser = Parser(content=open(self.kv_file).read())
     widget = Factory.get(parser.root.name)()
     Builder._apply_rule(widget, parser.root, parser.root)
     self.add_widget(widget)
Esempio n. 14
0
File: main.py Progetto: dpkm95/DSApp
DS_KVS = os.path.join(DS_ROOT,'ds_kvs')
DS_CLASSES = [c[:-3] for c in os.listdir(DS_KVS)

class Root(FloatLayout):
	screen_manager = ObjectProperty(None)	
	child = ObjectProperty(None) 

	def change_kv(self,*largs):
		child = self.screen_manager.current_screen.children[0]
		with open(child.kv_file, 'rb') as file:
			text = file.read().decode('utf8')
		kv_container = self.screen_manager.current_screen
		try:
			parser = Parser(content = txt)
			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.show_error(e)
		except Exception as e:
			self.show_error(e)	 

class DS(App):
	pass

Factory.register('Root', cls=Root)
	
if __name__=='__main__':
    DS().run()