summaryrefslogtreecommitdiff
path: root/voctogui/lib/ui.py
blob: e3e2db000e4c83f97fc0589947c6fd4695394b95 (plain)
  1. #!/usr/bin/python3
  2. import gi, logging
  3. from gi.repository import Gtk, Gst
  4. from lib.uibuilder import UiBuilder
  5. from lib.videodisplay import VideoDisplay
  6. class Ui(UiBuilder):
  7. def __init__(self, uifile):
  8. self.log = logging.getLogger('Ui')
  9. super().__init__(uifile)
  10. def setup(self):
  11. # Aquire the Main-Window from the UI-File
  12. self.win = self.get_check_widget('window')
  13. # Connect Close-Handler
  14. self.win.connect('delete-event', Gtk.main_quit)
  15. self.previews = {}
  16. self.preview_players = {}
  17. self.configure_video_main()
  18. self.configure_video_previews()
  19. self.configure_audio_selector()
  20. def configure_video_main(self):
  21. video = self.find_widget_recursive(self.win, 'video_main')
  22. audiolevel = self.find_widget_recursive(self.win, 'audiolevel_main')
  23. self.video_main_player = VideoDisplay(11000, video, audiolevel, playaudio=True)
  24. def configure_video_previews(self):
  25. sources = ['cam1', 'cam2', 'grabber']
  26. box = self.find_widget_recursive(self.win, 'box_left')
  27. for idx, source in enumerate(sources):
  28. preview = self.get_check_widget('widget_preview', clone=True)
  29. video = self.find_widget_recursive(preview, 'video')
  30. # video.set_size_request(160, 90)
  31. box.pack_start(preview, fill=False, expand=False, padding=0)
  32. # http://stackoverflow.com/questions/3489520/python-gtk-widget-name
  33. self.find_widget_recursive(preview, 'label').set_label(source)
  34. player = VideoDisplay(13000 + idx, video)
  35. self.preview_players[source] = player
  36. self.previews[source] = preview
  37. def configure_audio_selector(self):
  38. combo = self.find_widget_recursive(self.win, 'combo_audio')
  39. combo.set_sensitive(True)
  40. # FIXME access via combo_audio?
  41. liststore = self.get_check_widget('liststore_audio')
  42. liststore.clear()
  43. row = liststore.append()
  44. liststore.set(row, [0], ['foobar'])
  45. row = liststore.append('')
  46. liststore.set(row, [0], ['moofar'])
  47. combo.set_active_id('moofar')
  48. def show(self):
  49. self.video_main_player.run()
  50. for name, player in self.preview_players.items():
  51. player.run()
  52. self.win.show_all()