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 ##