aboutsummaryrefslogtreecommitdiff
path: root/voctogui/lib/ui.py
blob: 54a56a1abb9d019c03c3164bdd0d5fda2bc4e9f2 (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. self.video_main_player = VideoDisplay(11000, video)
  23. pass
  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. box.pack_start(preview, fill=False, expand=False, padding=0)
  30. # http://stackoverflow.com/questions/3489520/python-gtk-widget-name
  31. self.find_widget_recursive(preview, 'label').set_label(source)
  32. video = self.find_widget_recursive(preview, 'video')
  33. player = VideoDisplay(13000 + idx, video)
  34. self.preview_players[source] = player
  35. self.previews[source] = preview
  36. def configure_audio_selector(self):
  37. combo = self.find_widget_recursive(self.win, 'combo_audio')
  38. combo.set_sensitive(True)
  39. # FIXME access via combo_audio?
  40. liststore = self.get_check_widget('liststore_audio')
  41. liststore.clear()
  42. row = liststore.append()
  43. liststore.set(row, [0], ['foobar'])
  44. row = liststore.append('')
  45. liststore.set(row, [0], ['moofar'])
  46. combo.set_active_id('moofar')
  47. def show(self):
  48. self.video_main_player.run()
  49. for name, player in self.preview_players.items():
  50. player.run()
  51. self.win.show_all()