fix kivycatalog reload issue

This commit is contained in:
Ryan Pessa 2015-01-01 14:58:47 -06:00
parent bb79e585ef
commit b5a67b02aa
1 changed files with 7 additions and 3 deletions

View File

@ -39,7 +39,8 @@ class Container(BoxLayout):
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(Container, self).__init__(**kwargs) super(Container, self).__init__(**kwargs)
parser = Parser(content=open(self.kv_file).read()) self.previous_text = open(self.kv_file).read()
parser = Parser(content=self.previous_text)
widget = Factory.get(parser.root.name)() widget = Factory.get(parser.root.name)()
Builder._apply_rule(widget, parser.root, parser.root) Builder._apply_rule(widget, parser.root, parser.root)
self.add_widget(widget) self.add_widget(widget)
@ -112,15 +113,18 @@ class Catalog(BoxLayout):
child = self.screen_manager.current_screen.children[0] child = self.screen_manager.current_screen.children[0]
with open(child.kv_file, 'rb') as file: with open(child.kv_file, 'rb') as file:
self.language_box.text = file.read().decode('utf8') self.language_box.text = file.read().decode('utf8')
Clock.unschedule(self.change_kv)
self.change_kv()
# reset undo/redo history # reset undo/redo history
self.language_box.reset_undo() self.language_box.reset_undo()
def schedule_reload(self): def schedule_reload(self):
if self.auto_reload: if self.auto_reload:
txt = self.language_box.text txt = self.language_box.text
if txt == self._previously_parsed_text: child = self.screen_manager.current_screen.children[0]
if txt == child.previous_text:
return return
self._previously_parsed_text = txt child.previous_text = txt
Clock.unschedule(self.change_kv) Clock.unschedule(self.change_kv)
Clock.schedule_once(self.change_kv, 2) Clock.schedule_once(self.change_kv, 2)