aboutsummaryrefslogtreecommitdiff
path: root/voctogui/lib/ui.py
blob: 63f6c336a73cd8d7703ba56f6b290376cfdf842f (plain)
  1. import gi
  2. import logging
  3. from gi.repository import Gtk, Gst, Gdk, GLib
  4. from lib.config import Config
  5. from lib.uibuilder import UiBuilder
  6. from lib.videodisplay import VideoDisplay
  7. from lib.audioleveldisplay import AudioLevelDisplay
  8. from lib.warningoverlay import VideoWarningOverlay
  9. from lib.videopreviews import VideoPreviewsController
  10. from lib.audioselector import AudioSelectorController
  11. from lib.toolbar.composition import CompositionToolbarController
  12. from lib.toolbar.streamblank import StreamblankToolbarController
  13. from lib.toolbar.misc import MiscToolbarController
  14. class Ui(UiBuilder):
  15. def __init__(self, uifile):
  16. self.log = logging.getLogger('Ui')
  17. super().__init__(uifile)
  18. def setup(self):
  19. self.log.info('Initializing Ui')
  20. # Aquire the Main-Window from the UI-File
  21. self.win = self.get_check_widget('window')
  22. # Connect Close-Handler
  23. self.win.connect('delete-event', Gtk.main_quit)
  24. # Create Audio-Level Display
  25. drawing_area = self.find_widget_recursive(self.win, 'audiolevel_main')
  26. self.audio_level_display = AudioLevelDisplay(drawing_area)
  27. # Create Main-Video Overlay Controller
  28. drawing_area = self.find_widget_recursive(self.win,
  29. 'video_overlay_drawingarea')
  30. self.video_warning_overlay = VideoWarningOverlay(drawing_area)
  31. # Create Main-Video Display
  32. drawing_area = self.find_widget_recursive(self.win, 'video_main')
  33. self.main_video_display = VideoDisplay(
  34. drawing_area,
  35. port=11000,
  36. play_audio=Config.getboolean('mainvideo', 'playaudio'),
  37. level_callback=self.audio_level_display.level_callback
  38. )
  39. # Setup Preview Controller
  40. drawing_area = self.find_widget_recursive(self.win, 'box_left')
  41. self.video_previews_controller = VideoPreviewsController(
  42. drawing_area,
  43. win=self.win,
  44. uibuilder=self
  45. )
  46. # check if there is a fixed audio source configured.
  47. # if so, remove the combo-box entirely instead of setting it up.
  48. if Config.has_option('mix', 'audiosource'):
  49. box_audio = self.find_widget_recursive(self.win, 'box_audio')
  50. drawing_area.remove(box_audio)
  51. else:
  52. combo_audio = self.find_widget_recursive(self.win, 'combo_audio')
  53. self.audio_selector_controller = AudioSelectorController(
  54. drawing_area=combo_audio,
  55. win=self.win,
  56. uibuilder=self
  57. )
  58. # Setup Toolbar Controllers
  59. toolbar = self.find_widget_recursive(self.win, 'toolbar')
  60. self.composition_toolbar_controller = CompositionToolbarController(
  61. toolbar,
  62. win=self.win,
  63. uibuilder=self
  64. )
  65. self.streamblank_toolbar_controller = StreamblankToolbarController(
  66. toolbar,
  67. win=self.win,
  68. uibuilder=self,
  69. warning_overlay=self.video_warning_overlay
  70. )
  71. self.misc_controller = MiscToolbarController(
  72. toolbar,
  73. win=self.win,
  74. uibuilder=self
  75. )
  76. def show(self):
  77. self.log.info('Showing Main-Window')
  78. self.win.show_all()