#!/usr/bin/python3
import gi, logging
from gi.repository import Gtk, Gst

from lib.uibuilder import UiBuilder
from lib.videodisplay import VideoDisplay

class Ui(UiBuilder):
	def __init__(self, uifile):
		self.log = logging.getLogger('Ui')
		super().__init__(uifile)

	def setup(self):
		# Aquire the Main-Window from the UI-File
		self.win = self.get_check_widget('window')

		# Connect Close-Handler
		self.win.connect('delete-event', Gtk.main_quit)

		self.previews = {}
		self.preview_players = {}

		self.configure_video_main()
		self.configure_video_previews()
		self.configure_audio_selector()

	def configure_video_main(self):
		video = self.find_widget_recursive(self.win, 'video_main')
		self.video_main_player = VideoDisplay(11000, video)
		pass

	def configure_video_previews(self):
		sources = ['cam1', 'cam2', 'grabber']
		box = self.get_check_widget('box_left')

		for idx, source in enumerate(sources):
			preview = self.get_check_widget('widget_preview', clone=True)
			box.pack_start(preview, fill=False, expand=False, padding=0)

			# http://stackoverflow.com/questions/3489520/python-gtk-widget-name
			self.find_widget_recursive(preview, 'label').set_label(source)

			video = self.find_widget_recursive(preview, 'video')
			player = VideoDisplay(13000 + idx, video)

			self.preview_players[source] = player
			self.previews[source] = preview

	def configure_audio_selector(self):
		combo = self.get_check_widget('combo_audio')
		combo.set_sensitive(True)

		liststore = self.get_check_widget('liststore_audio')
		liststore.clear()

		row = liststore.append()
		liststore.set(row, [0], ['foobar'])

		row = liststore.append('')
		liststore.set(row, [0], ['moofar'])

		combo.set_active_id('moofar')

	def show(self):
		self.video_main_player.run()
		for name, player in self.preview_players.items():
			player.run()

		self.win.show_all()

#!/usr/bin/python3
import gi, logging
from gi.repository import Gtk, Gst

from lib.uibuilder import UiBuilder
from lib.videodisplay import VideoDisplay

class Ui(UiBuilder):
	def __init__(self, uifile):
		self.log = logging.getLogger('Ui')
		super().__init__(uifile)

	def setup(self):
		# Aquire the Main-Window from the UI-File
		self.win = self.get_check_widget('window')

		# Connect Close-Handler
		self.win.connect('delete-event', Gtk.main_quit)

		self.previews = {}
		self.preview_players = {}

		self.configure_video_main()
		self.configure_video_previews()
		self.configure_audio_selector()

	def configure_video_main(self):
		video = self.find_widget_recursive(self.win, 'video_main')
		self.video_main_player = VideoDisplay(11000, video)
		pass

	def configure_video_previews(self):
		sources = ['cam1', 'cam2', 'grabber']
		box = self.find_widget_recursive(self.win, 'box_left')

		for idx, source in enumerate(sources):
			preview = self.get_check_widget('widget_preview', clone=True)
			box.pack_start(preview, fill=False, expand=False, padding=0)

			# http://stackoverflow.com/questions/3489520/python-gtk-widget-name
			self.find_widget_recursive(preview, 'label').set_label(source)

			video = self.find_widget_recursive(preview, 'video')
			player = VideoDisplay(13000 + idx, video)

			self.preview_players[source] = player
			self.previews[source] = preview

	def configure_audio_selector(self):
		combo = self.find_widget_recursive(self.win, 'combo_audio')
		combo.set_sensitive(True)

		# FIXME access via combo_audio?
		liststore = self.get_check_widget('liststore_audio')
		liststore.clear()

		row = liststore.append()
		liststore.set(row, [0], ['foobar'])

		row = liststore.append('')
		liststore.set(row, [0], ['moofar'])

		combo.set_active_id('moofar')

	def show(self):
		self.video_main_player.run()
		for name, player in self.preview_players.items():
			player.run()

		self.win.show_all()

use find_widget_recursive where applicable