diff --git a/python/midi/midibuttonlistener.py b/python/midi/midibuttonlistener.py deleted file mode 100644 index 7404a14..0000000 --- a/python/midi/midibuttonlistener.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/env python2 - -import rtmidi - - -class MidiButtonListener(object): - - def __init__(self): - self.midi_in = rtmidi.MidiIn() - self.listeners = {} - - - def _hex_message(self, message): - return map(lambda x: hex(x), message) - - - def _get_listeners(self, type, data1, data2): - if not type in self.listeners.keys(): - return [] - - if not data1 in self.listeners[type].keys(): - return [] - - if not data2 in self.listeners[type][data1].keys(): - return [] - - return self.listeners[type][data1][data2] - - def _enumarate_listeners(self, message_type, message_data1, message_data2): - result = [] - for type in [None, message_type]: - for data1 in [None, message_data1]: - for data2 in [None, message_data2]: - result += self._get_listeners(type,data1,data2) - - return result - - - def add_listener(self, listener, type = None, data1 = None, data2 = None): - - if not type in self.listeners.keys(): - self.listeners[type] = {} - - if not data1 in self.listeners[type].keys(): - self.listeners[type][data1] = {} - - if not data2 in self.listeners[type][data1].keys(): - self.listeners[type][data1][data2] = [] - - self.listeners[type][data1][data2].append(listener) - - - def remove_listener(self, listener, type = None, data1 = None, data2 = None): - if not type in self.listeners.keys(): - raise ValueError("No listener registered for %s" % hex(type)) - - if not data1 in self.listeners[type].keys(): - raise ValueError("No listener registered for %s %s" % (hex(type), hex(data1))) - - if not data2 in self.listeners[type][data1].keys(): - raise ValueError("No listener registered for %s %s" % (hex(type), hex(data1), hex(data2))) - - self.listeners[type][data1][data2].remove(listener) - - - def open(self, name): - input_port = None - for port_number in range(self.midi_in.get_port_count()): - port_name = self.midi_in.get_port_name(port_number) - print "Found port %d: %s" % (port_number, port_name) - if port_name.startswith(name): - input_port = port_number - - if not input_port: - print "No matching midi device found" - raise ValueError("No matching midi device found") - - self.midi_in.open_port(input_port) - - - def process_messages(self): - while(True): - message = self.midi_in.get_message() - if message: - print "Print new message: %s " % self._hex_message(message[0]) - type, data1, data2 = message[0] - for listener in self._enumarate_listeners(type, data1, data2): - listener(type,data1,data2) - - - def close(self): - self.midi_in.close_port() - - - \ No newline at end of file diff --git a/python/midi/midicontrol.py b/python/midi/midicontrol.py deleted file mode 100644 index 9daeafc..0000000 --- a/python/midi/midicontrol.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/env python2 - -import sys - -from midibuttonlistener import MidiButtonListener - -from scenechange import SceneChange - - -INPUT_NAME = "USB Midi" - -buttonlistener = MidiButtonListener() - -buttonlistener.open(INPUT_NAME) - -sc = SceneChange() - -buttonlistener.add_listener(sc.bind_switch(1),0xb9,0x08) -buttonlistener.add_listener(sc.bind_switch(2),0xb9,0x0a) -buttonlistener.add_listener(sc.bind_switch(3),0xb9,0x0b) - -buttonlistener.process_messages() \ No newline at end of file diff --git a/python/midi/scenechange.py b/python/scenechange.py similarity index 78% rename from python/midi/scenechange.py rename to python/scenechange.py index 0580ba8..fae2d84 100644 --- a/python/midi/scenechange.py +++ b/python/scenechange.py @@ -12,9 +12,5 @@ class SceneChange(object): def switch_to(self, next_scene): if self.cur_scene != next_scene: cmd = "Swap%d%d\n" % (self.cur_scene, next_scene) - print cmd self.snowmix_socket.send(cmd) self.cur_scene = next_scene - - def bind_switch(self, next_scene): - return lambda type, data1, data2: self.switch_to(next_scene) \ No newline at end of file diff --git a/python/videocontroller.py b/python/videocontroller.py new file mode 100644 index 0000000..7059b33 --- /dev/null +++ b/python/videocontroller.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +import sys +from gi.repository import Gtk + +from scenechange import SceneChange + +class VideoController: + def __init__(self): + + self.scenechange = SceneChange() + + self.gladefile = "videocontroler.ui" + self.builder = Gtk.Builder() + self.builder.add_from_file(self.gladefile) + + self.main_window = self.builder.get_object("MainWindow") + self.max_cam1_button = self.builder.get_object("MaxCam1Button") + self.max_cam2_button = self.builder.get_object("MaxCam2Button") + self.max_cam3_button = self.builder.get_object("MaxCam3Button") + + self.messagebox = Gtk.MessageDialog(self.main_window, 0, Gtk.MessageType.WARNING, Gtk.ButtonsType.OK_CANCEL, "I'm afaraid I can't let you do that dave.") + + self.builder.connect_signals(self) + self.main_window.show_all() + + + + def MaxCam1ButtonToggled(self, widget): + if self.max_cam1_button.get_active(): + self.max_cam2_button.set_active(False) + self.max_cam3_button.set_active(False) + self.scenechange.switch_to(1) + else: + if not self.max_cam2_button.get_active() and not self.max_cam3_button.get_active(): + self.max_cam1_button.set_active(True) + + + def MaxCam2ButtonToggled(self, widget): + if self.max_cam2_button.get_active(): + self.max_cam1_button.set_active(False) + self.max_cam3_button.set_active(False) + self.scenechange.switch_to(2) + else: + if not self.max_cam1_button.get_active() and not self.max_cam3_button.get_active(): + self.max_cam2_button.set_active(True) + + + def MaxCam3ButtonToggled(self, widget): + if self.max_cam3_button.get_active(): + self.max_cam1_button.set_active(False) + self.max_cam2_button.set_active(False) + self.scenechange.switch_to(3) + else: + if not self.max_cam1_button.get_active() and not self.max_cam2_button.get_active(): + self.max_cam3_button.set_active(True) + + + + + def MainWindowDelete(self, widget, event): + if self.messagebox.run() == Gtk.ResponseType.OK: + Gtk.main_quit() + + self.messagebox.hide() + return True + +videocontroller = VideoController() +Gtk.main() diff --git a/python/videocontroller.ui b/python/videocontroller.ui new file mode 100644 index 0000000..75e31fd --- /dev/null +++ b/python/videocontroller.ui @@ -0,0 +1,208 @@ + + + + + + False + 0.92000000000000004 + Video Controller + 443 + 250 + + + + 490 + 370 + True + False + center + center + 0 + 0 + + + Maximize +Cam 3 + 150 + 150 + True + True + True + + + + 330 + 10 + + + + + Maximize +Cam1 + 150 + 150 + True + True + True + + + + 10 + 10 + + + + + Maximize +Cam 2 + 150 + 150 + True + True + True + + + + 170 + 10 + + + + + 130 + 30 + True + False + 3 + Set text + + + 10 + 170 + + + + + Set Text + 120 + 30 + True + True + True + + + + 340 + 174 + + + + + 130 + 30 + True + False + Start a new timer + + + 10 + 220 + + + + + 180 + 30 + True + True + + + 150 + 220 + + + + + 180 + 30 + True + True + + + 150 + 174 + + + + + Start Timer + 120 + 30 + True + True + True + + + + 340 + 220 + + + + + 150 + 30 + True + False + Change timer dispaly + + + 10 + 270 + + + + + 290 + 30 + True + False + + + + 170 + 270 + + + + + Hide text + 200 + 30 + True + True + True + + + 10 + 320 + + + + + Hide Timer + 200 + 30 + True + True + True + + + 230 + 320 + + + + + +