Skip to content
Snippets Groups Projects
actions.py 1.08 KiB
Newer Older
import osc, log

class Action:
    def __init__(self, text, **kwargs):
        self.text = text
        for key, value in kwargs:
            setattr(self, key, value)

class ActionManager:
    def __init__(self, host, port, confirmer, highlighter, logger=log.ConsoleLogger()):
        #self.client = osc.Client(host, port)
        self.confirmer = confirmer
        self.highlighter = highlighter
        self.logger = logger

    def confirmed_perform(self, action):
        osc.client.send_action(action)
        self.highlighter.highlight(action)
        self.logger.log(action)

    def perform(self, action, confirm=True, timeout=3):
        if confirm:
            self.confirmer.confirm('Perform action "%s"?' % action.text, time, lambda: self.confirmed_perform(action))
        else:
            self.confirmed_perform(action)

manager = None

def setup(confirmer, highlighter, logger):
    global manager
    manager = ActionManager(confirmer, highlighter, logger)

def perform_action(action, confirm=True, timeout=3):
    global manager
    manager.perform(action, confirm, timeout)