Exemple #1
0
class Interface(object):

    def init(self):
        info("Initializing interface")
        Globals().load(self)

        self.renderer = Renderer()
        return True


    def __del__(self):
        info("Deleting Interface")

        self.renderer.__del__()

        if(self.server):
           self.server.__del___()


    def start(self):
        info("Starting interface")

        # create input handlers
        self.mouse_handler = eval(self.app.mouse_handler + "()")
        self.keyboard_handler = eval(self.app.keyboard_handler + "()")

        # create_console
        if config.PIL_available:
            console = Console()
            self.renderer.register_console_callbacks(console.render_console, console.console_keyboard)

        # register callbacks & console with Renderer
        self.renderer.register_callbacks(self.keyboard_handler.do_key, self.mouse_handler.do_button, self.mouse_handler.do_motion)

        # register cmdcenter with renderer
        self.renderer.cmdcenter = self.cmdcenter

        # start server
        if(self.app.server):
            self.server = Server()
            self.server.start()
        else:
            self.server = None

        # start midi
        if(self.app.midi_enabled):
            self.app.last_midi_event = self.cmdcenter.time()
            self.midi = MidiHandler()

            # sync par & zn lists to controller
            if(self.app.midi_echo):
                self.cmdcenter.state.par.add_observer(midi.mirror)
                self.cmdcenter.state.zn.add_observer(midi.mirror)

            # start midi
            self.midi.start()
        else:
            self.midi = None

        # start osc
        if(self.app.OSC_enabled):
            self.osc = eval(self.app.OSC_handler + "()")
            self.osc.start()
            
            # sync par & zn lists to controller
            
            if(self.app.OSC_echo):
                self.cmdcenter.state.par.add_observer(self.osc.mirror)
                self.cmdcenter.state.zn.add_observer(self.osc.mirror)            
                self.cmdcenter.state.components.add_observer(self.osc.mirror)            
                self.cmdcenter.state.add_observer(self.osc.mirror)            

        self.renderer.start()


    def do(self):
        # execute renderer
        self.renderer.do()