From 9eda09a1b66ceb3874c471910fc8c26874d2981e Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Fri, 7 Aug 2015 08:38:58 +0200 Subject: implement audioselector, videopreviews and composition-toolbar --- voctogui/lib/toolbar/composition.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 voctogui/lib/toolbar/composition.py (limited to 'voctogui/lib/toolbar') diff --git a/voctogui/lib/toolbar/composition.py b/voctogui/lib/toolbar/composition.py new file mode 100644 index 0000000..0185b7d --- /dev/null +++ b/voctogui/lib/toolbar/composition.py @@ -0,0 +1,33 @@ +import logging +from gi.repository import Gtk + +class CompositionToolbarController(object): + """ Manages Accelerators and Clicks on the Composition Toolbar-Buttons """ + + def __init__(self, drawing_area, win, uibuilder): + self.log = logging.getLogger('CompositionToolbarController') + + accelerators = Gtk.AccelGroup() + win.add_accel_group(accelerators) + + composites = [ + 'composite-fullscreen', + 'composite-picture-in-picture', + 'composite-side-by-side-equal', + 'composite-side-by-side-preview' + ] + + for idx, name in enumerate(composites): + key, mod = Gtk.accelerator_parse('F%u' % (idx+1)) + btn = uibuilder.find_widget_recursive(drawing_area, name) + btn.set_name(name) + + # Thanks to http://stackoverflow.com/a/19739855/1659732 + btn.get_child().add_accelerator('clicked', accelerators, key, mod, Gtk.AccelFlags.VISIBLE) + btn.connect('toggled', self.on_btn_toggled) + + def on_btn_toggled(self, btn): + if not btn.get_active(): + return + + self.log.info("on_btn_toggled: %s", btn.get_name()) -- cgit v1.2.3 From d200e609432591c1f1b2422c96616b3bfd1ea0f4 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Fri, 7 Aug 2015 11:19:30 +0200 Subject: implement streamblank --- voctogui/lib/toolbar/streamblank.py | 45 +++++++++++++++++++++++++++++++++++++ voctogui/lib/ui.py | 8 ++++--- 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 voctogui/lib/toolbar/streamblank.py (limited to 'voctogui/lib/toolbar') diff --git a/voctogui/lib/toolbar/streamblank.py b/voctogui/lib/toolbar/streamblank.py new file mode 100644 index 0000000..074fb80 --- /dev/null +++ b/voctogui/lib/toolbar/streamblank.py @@ -0,0 +1,45 @@ +import logging +from gi.repository import Gtk + +class StreamblankToolbarController(object): + """ Manages Accelerators and Clicks on the Composition Toolbar-Buttons """ + + def __init__(self, drawing_area, win, uibuilder, warning_overlay): + self.log = logging.getLogger('StreamblankToolbarController') + + self.warning_overlay = warning_overlay + + blank_sources = ['pause', 'nostream'] + + + livebtn = uibuilder.find_widget_recursive(drawing_area, 'stream_live') + blankbtn = uibuilder.find_widget_recursive(drawing_area, 'stream_blank') + + blankbtn_pos = drawing_area.get_item_index(blankbtn) + + livebtn.connect('toggled', self.on_btn_toggled) + livebtn.set_name('live') + + for idx, name in enumerate(blank_sources): + if idx == 0: + new_btn = blankbtn + else: + new_icon = Gtk.Image.new_from_pixbuf(blankbtn.get_icon_widget().get_pixbuf()) + new_btn = Gtk.RadioToolButton(group=livebtn) + new_btn.set_icon_widget(new_icon) + drawing_area.insert(new_btn, blankbtn_pos+1) + + new_btn.set_label("Stream %s" % name) + new_btn.connect('toggled', self.on_btn_toggled) + new_btn.set_name(name) + + def on_btn_toggled(self, btn): + if not btn.get_active(): + return + + self.log.info("on_btn_toggled: %s", btn.get_name()) + if btn.get_name() == 'live': + self.warning_overlay.disable() + + else: + self.warning_overlay.enable(btn.get_name()) diff --git a/voctogui/lib/ui.py b/voctogui/lib/ui.py index 9143e12..f264284 100644 --- a/voctogui/lib/ui.py +++ b/voctogui/lib/ui.py @@ -13,7 +13,7 @@ from lib.videopreviews import VideoPreviewsController from lib.audioselector import AudioSelectorController from lib.toolbar.composition import CompositionToolbarController -# from lib.toolbar.streamblank import StreamblankToolbarController +from lib.toolbar.streamblank import StreamblankToolbarController # from lib.toolbar.specialfunctions import SpecialFunctionsToolbarController class Ui(UiBuilder): @@ -67,8 +67,10 @@ class Ui(UiBuilder): win=self.win, uibuilder=self) - # self.streamblank_toolbar_controller = StreamblankToolbarController(toolbar, - # warning_overlay=self.video_warning_overlay) + self.streamblank_toolbar_controller = StreamblankToolbarController(toolbar, + win=self.win, + uibuilder=self, + warning_overlay=self.video_warning_overlay) # self.special_functions_toolbar_controller = SpecialFunctionsToolbarController(toolbar, # video_display=self.main_video_display) -- cgit v1.2.3 From 4ba884d3a81d215b341b44626483f1df6f471762 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Fri, 7 Aug 2015 11:31:36 +0200 Subject: mockup specialfunctions controller --- voctogui/lib/toolbar/specialfunctions.py | 33 ++++++++++++++++++++++++++++++++ voctogui/lib/ui.py | 8 +++++--- voctogui/ui/voctogui.ui | 1 + 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 voctogui/lib/toolbar/specialfunctions.py (limited to 'voctogui/lib/toolbar') diff --git a/voctogui/lib/toolbar/specialfunctions.py b/voctogui/lib/toolbar/specialfunctions.py new file mode 100644 index 0000000..61fb6bf --- /dev/null +++ b/voctogui/lib/toolbar/specialfunctions.py @@ -0,0 +1,33 @@ +import logging +from gi.repository import Gtk + +class SpecialFunctionsToolbarController(object): + """ Manages Accelerators and Clicks on the Composition Toolbar-Buttons """ + + def __init__(self, drawing_area, win, uibuilder, video_display): + self.log = logging.getLogger('SpecialFunctionsToolbarController') + + self.video_display = video_display + + accelerators = Gtk.AccelGroup() + win.add_accel_group(accelerators) + + composites = [ + 'preview_fullscreen', + 'preview_freeze', + ] + + for idx, name in enumerate(composites): + key, mod = Gtk.accelerator_parse('F%u' % (idx+10)) + btn = uibuilder.find_widget_recursive(drawing_area, name) + btn.set_name(name) + + # Thanks to http://stackoverflow.com/a/19739855/1659732 + childbtn = btn.get_child() + childbtn.add_accelerator('clicked', accelerators, key, mod, Gtk.AccelFlags.VISIBLE) + childbtn.connect('button-press-event', self.on_btn_event) + childbtn.connect('button-release-event', self.on_btn_event) + + def on_btn_event(self, btn, event): + self.log.info("on_btn_event: %s @ %s", event.type, btn.get_name()) + # do sth. to self.video_display here diff --git a/voctogui/lib/ui.py b/voctogui/lib/ui.py index f264284..0343c86 100644 --- a/voctogui/lib/ui.py +++ b/voctogui/lib/ui.py @@ -14,7 +14,7 @@ from lib.audioselector import AudioSelectorController from lib.toolbar.composition import CompositionToolbarController from lib.toolbar.streamblank import StreamblankToolbarController -# from lib.toolbar.specialfunctions import SpecialFunctionsToolbarController +from lib.toolbar.specialfunctions import SpecialFunctionsToolbarController class Ui(UiBuilder): def __init__(self, uifile): @@ -72,8 +72,10 @@ class Ui(UiBuilder): uibuilder=self, warning_overlay=self.video_warning_overlay) - # self.special_functions_toolbar_controller = SpecialFunctionsToolbarController(toolbar, - # video_display=self.main_video_display) + self.special_functions_toolbar_controller = SpecialFunctionsToolbarController(toolbar, + win=self.win, + uibuilder=self, + video_display=self.main_video_display) def show(self): diff --git a/voctogui/ui/voctogui.ui b/voctogui/ui/voctogui.ui index eac6794..1eb64cc 100644 --- a/voctogui/ui/voctogui.ui +++ b/voctogui/ui/voctogui.ui @@ -167,6 +167,7 @@ True False + GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK Freeze Preview True -- cgit v1.2.3