diff options
Diffstat (limited to 'voctogui/lib/videopreviews.py')
-rw-r--r-- | voctogui/lib/videopreviews.py | 195 |
1 files changed, 101 insertions, 94 deletions
diff --git a/voctogui/lib/videopreviews.py b/voctogui/lib/videopreviews.py index 3490a4d..9adb76f 100644 --- a/voctogui/lib/videopreviews.py +++ b/voctogui/lib/videopreviews.py @@ -5,133 +5,140 @@ from lib.config import Config from lib.videodisplay import VideoDisplay import lib.connection as Connection -class VideoPreviewsController(object): - """ Displays Video-Previews and selection Buttons for them """ - - def __init__(self, drawing_area, win, uibuilder): - self.log = logging.getLogger('VideoPreviewsController') - self.drawing_area = drawing_area - self.win = win - - self.sources = Config.getlist('mix', 'sources') - self.preview_players = {} - self.previews = {} - self.a_btns = {} - self.b_btns = {} +class VideoPreviewsController(object): + """Displays Video-Previews and selection Buttons for them""" - self.current_source = {'a': None, 'b': None} + def __init__(self, drawing_area, win, uibuilder): + self.log = logging.getLogger('VideoPreviewsController') - try: - width = Config.getint('previews', 'width') - self.log.debug('Preview-Width configured to %u', width) - except: - width = 320 - self.log.debug('Preview-Width selected as %u', width) + self.drawing_area = drawing_area + self.win = win - try: - height = Config.getint('previews', 'height') - self.log.debug('Preview-Height configured to %u', height) - except: - height = width*9/16 - self.log.debug('Preview-Height calculated to %u', height) + self.sources = Config.getlist('mix', 'sources') + self.preview_players = {} + self.previews = {} + self.a_btns = {} + self.b_btns = {} - # Accelerators - accelerators = Gtk.AccelGroup() - win.add_accel_group(accelerators) + self.current_source = {'a': None, 'b': None} - group_a = None - group_b = None + try: + width = Config.getint('previews', 'width') + self.log.debug('Preview-Width configured to %u', width) + except: + width = 320 + self.log.debug('Preview-Width selected as %u', width) - for idx, source in enumerate(self.sources): - self.log.info('Initializing Video Preview %s', source) + try: + height = Config.getint('previews', 'height') + self.log.debug('Preview-Height configured to %u', height) + except: + height = width * 9 / 16 + self.log.debug('Preview-Height calculated to %u', height) - preview = uibuilder.get_check_widget('widget_preview', clone=True) - video = uibuilder.find_widget_recursive(preview, 'video') + # Accelerators + accelerators = Gtk.AccelGroup() + win.add_accel_group(accelerators) - video.set_size_request(width, height) - drawing_area.pack_start(preview, fill=False, expand=False, padding=0) + group_a = None + group_b = None - player = VideoDisplay(video, port=13000 + idx, width=width, height=height) + for idx, source in enumerate(self.sources): + self.log.info('Initializing Video Preview %s', source) - uibuilder.find_widget_recursive(preview, 'label').set_label(source) - btn_a = uibuilder.find_widget_recursive(preview, 'btn_a') - btn_b = uibuilder.find_widget_recursive(preview, 'btn_b') + preview = uibuilder.get_check_widget('widget_preview', clone=True) + video = uibuilder.find_widget_recursive(preview, 'video') - btn_a.set_name("%c %u" % ('a', idx)) - btn_b.set_name("%c %u" % ('b', idx)) + video.set_size_request(width, height) + drawing_area.pack_start(preview, fill=False, + expand=False, padding=0) - if not group_a: - group_a = btn_a - else: - btn_a.join_group(group_a) + player = VideoDisplay(video, port=13000 + idx, + width=width, height=height) + uibuilder.find_widget_recursive(preview, 'label').set_label(source) + btn_a = uibuilder.find_widget_recursive(preview, 'btn_a') + btn_b = uibuilder.find_widget_recursive(preview, 'btn_b') - if not group_b: - group_b = btn_b - else: - btn_b.join_group(group_b) + btn_a.set_name("%c %u" % ('a', idx)) + btn_b.set_name("%c %u" % ('b', idx)) + if not group_a: + group_a = btn_a + else: + btn_a.join_group(group_a) - btn_a.connect('toggled', self.btn_toggled) - btn_b.connect('toggled', self.btn_toggled) + if not group_b: + group_b = btn_b + else: + btn_b.join_group(group_b) - key, mod = Gtk.accelerator_parse('%u' % (idx+1)) - btn_a.add_accelerator('activate', accelerators, key, mod, Gtk.AccelFlags.VISIBLE) + btn_a.connect('toggled', self.btn_toggled) + btn_b.connect('toggled', self.btn_toggled) - key, mod = Gtk.accelerator_parse('<Ctrl>%u' % (idx+1)) - btn_b.add_accelerator('activate', accelerators, key, mod, Gtk.AccelFlags.VISIBLE) + key, mod = Gtk.accelerator_parse('%u' % (idx + 1)) + btn_a.add_accelerator('activate', accelerators, + key, mod, Gtk.AccelFlags.VISIBLE) - btn_fullscreen = uibuilder.find_widget_recursive(preview, 'btn_fullscreen') - btn_fullscreen.set_name("%c %u" % ('f', idx)) + key, mod = Gtk.accelerator_parse('<Ctrl>%u' % (idx + 1)) + btn_b.add_accelerator('activate', accelerators, + key, mod, Gtk.AccelFlags.VISIBLE) - btn_fullscreen.connect('clicked', self.btn_fullscreen_clicked) + btn_fullscreen = uibuilder.find_widget_recursive(preview, + 'btn_fullscreen') + btn_fullscreen.set_name("%c %u" % ('f', idx)) - key, mod = Gtk.accelerator_parse('<Alt>%u' % (idx+1)) - btn_fullscreen.add_accelerator('activate', accelerators, key, mod, Gtk.AccelFlags.VISIBLE) + btn_fullscreen.connect('clicked', self.btn_fullscreen_clicked) - self.preview_players[source] = player - self.previews[source] = preview - self.a_btns[source] = btn_a - self.b_btns[source] = btn_b + key, mod = Gtk.accelerator_parse('<Alt>%u' % (idx + 1)) + btn_fullscreen.add_accelerator('activate', accelerators, + key, mod, Gtk.AccelFlags.VISIBLE) + self.preview_players[source] = player + self.previews[source] = preview + self.a_btns[source] = btn_a + self.b_btns[source] = btn_b - # connect event-handler and request initial state - Connection.on('video_status', self.on_video_status) - Connection.send('get_video') + # connect event-handler and request initial state + Connection.on('video_status', self.on_video_status) + Connection.send('get_video') - def btn_toggled(self, btn): - if not btn.get_active(): - return + def btn_toggled(self, btn): + if not btn.get_active(): + return - btn_name = btn.get_name() - self.log.debug('btn_toggled: %s', btn_name) + btn_name = btn.get_name() + self.log.debug('btn_toggled: %s', btn_name) - channel, idx = btn_name.split(' ')[:2] - source_name = self.sources[int(idx)] + channel, idx = btn_name.split(' ')[:2] + source_name = self.sources[int(idx)] - if self.current_source[channel] == source_name: - self.log.info('video-channel %s already on %s', channel, source_name) - return + if self.current_source[channel] == source_name: + self.log.info('video-channel %s already on %s', + channel, source_name) + return - self.log.info('video-channel %s changed to %s', channel, source_name) - Connection.send('set_video_'+channel, source_name) + self.log.info('video-channel %s changed to %s', channel, source_name) + Connection.send('set_video_' + channel, source_name) - def btn_fullscreen_clicked(self, btn): - btn_name = btn.get_name() - self.log.debug('btn_fullscreen_clicked: %s', btn_name) + def btn_fullscreen_clicked(self, btn): + btn_name = btn.get_name() + self.log.debug('btn_fullscreen_clicked: %s', btn_name) - channel, idx = btn_name.split(' ')[:2] - source_name = self.sources[int(idx)] + channel, idx = btn_name.split(' ')[:2] + source_name = self.sources[int(idx)] - self.log.info('selcting video %s for fullscreen', source_name) - Connection.send('set_videos_and_composite', source_name, '*', 'fullscreen') + self.log.info('selcting video %s for fullscreen', source_name) + Connection.send('set_videos_and_composite', + source_name, '*', 'fullscreen') - def on_video_status(self, source_a, source_b): - self.log.info('on_video_status callback w/ sources: %s and %s', source_a, source_b) + def on_video_status(self, source_a, source_b): + self.log.info('on_video_status callback w/ sources: %s and %s', + source_a, source_b) - self.current_source['a'] = source_a - self.current_source['b'] = source_b + self.current_source['a'] = source_a + self.current_source['b'] = source_b - self.a_btns[source_a].set_active(True) - self.b_btns[source_b].set_active(True) + self.a_btns[source_a].set_active(True) + self.b_btns[source_b].set_active(True) |