Source code for tagit.view.sidebox.pgm
"""
Part of the tagit module.
A copy of the license is provided with the project.
Author: Matthias Baumgartner, 2016
"""
# IMPORTS
from os.path import join, dirname
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
from kivy.logger import Logger
from kivy.resources import resource_find
# INNER-MODULE IMPORTS
from sidebox import VSidebox
from ...controller.sidebox import CSidebox_Program_Control
from ..dialogues import FilePickerDialogue, FileCreatorDialogue
# EXPORTS
__all__ = ('VSidebox_Program_Control', )
# LOAD KV
Builder.load_file(join(dirname(__file__), 'pgm.kv'))
# CLASSES
[docs]class VSidebox_Program_Control(GridLayout, VSidebox):
"""A bunch of buttons to control the database."""
TEXT_PAUSE = '"'
IMG_PAUSE = resource_find('30/pause.png')
TEXT_START = '>'
IMG_START = resource_find('30/start.png')
TEXT_LOAD = 'O'
IMG_LOAD = resource_find('30/db_load.png')
TEXT_SAVE = 'S'
IMG_SAVE = resource_find('30/db_save.png')
def on_widget_change(self, instance, widget):
self.controller = widget.get_controller(CSidebox_Program_Control, wx=self, main_widget=widget)
self._run_clbk = self.start
self._load_clbk = self.load
def load(self):
Logger.debug("Loading the BFS programme")
def callback(path=None):
self.controller.load('BFS', path)
self.has_loaded = True
self.show_save()
dlg = FilePickerDialogue(text='Select a program state to load. Abort for a new instance')
dlg.bind(on_ok=lambda obj: callback(obj.path))
dlg.bind(on_cancel=lambda obj: callback())
dlg.open()
def save(self):
Logger.debug("Saving the program")
dlg = FileCreatorDialogue(text='Select a file to save the program to.')
dlg.bind(on_ok=lambda obj: self.controller.save(obj.path))
dlg.open()
def on_load_btn(self, *args):
self._load_clbk()
def on_run_btn(self, *args):
self._run_clbk()
def show_play(self, next_press):
self.run_btn.source = self.IMG_START
self.run_btn.text = self.TEXT_START
self._run_clbk = next_press
def show_pause(self, next_press):
self.run_btn.source = self.IMG_PAUSE
self.run_btn.text = self.TEXT_PAUSE
self._run_clbk = next_press
def show_load(self):
self.load_btn.text = self.TEXT_LOAD
self.load_btn.source = self.IMG_LOAD
self._load_clbk = self.load
def show_save(self):
self.load_btn.text = self.TEXT_SAVE
self.load_btn.source = self.IMG_SAVE
self._load_clbk = self.save
def start(self):
Logger.debug("Starting the program")
self.controller.start()
return True
def stop(self):
Logger.debug("Stopping the program")
self.controller.stop()
return True
def pause(self):
Logger.debug("Pausing the program")
self.controller.pause()
return True
def resume(self):
Logger.debug("Resuming the program")
self.controller.resume()
return True
## EOF ##