diff options
| author | Franziska Kunsmann <hi@kunsmann.eu> | 2023-01-11 15:22:28 +0100 |
|---|---|---|
| committer | Franziska Kunsmann <hi@kunsmann.eu> | 2023-01-11 15:22:28 +0100 |
| commit | f043247f4bc2f3c652e06c6a27386533b3b8bdbc (patch) | |
| tree | 8a724b8030e1f2774e251b7ccc8675501e41fc90 | |
| parent | da8f6e83627d8068d3f9a0e1bd68eb57e3571e2f (diff) | |
styling, improvements and stuff
| -rw-r--r-- | gui.py | 53 | ||||
| -rw-r--r-- | style.css | 2 | ||||
| -rw-r--r-- | switcher.py | 10 |
3 files changed, 36 insertions, 29 deletions
@@ -30,6 +30,8 @@ class PyATEMSwitcherGui(): self.switcher.on_connect(self._switcher_connected) self.switcher.on_connect_attempt(self._switcher_connect_attempt) self.switcher.on_disconnect(self._switcher_disconnected) + + self.switcher.on_connect(self._switcher_state_changed) self.switcher.on_receive(self._switcher_state_changed) self.window.set_border_width(BUTTON_SPACING) @@ -58,14 +60,15 @@ class PyATEMSwitcherGui(): ctx.remove_class('selected') def _switcher_connected(self, params): + switcher = params['switcher'] log = logging.getLogger('GUI connected') log.debug(f'_switcher_connected({params})') - log.info(f'Connected to "{params.atemModel}" @ {params.ip}') - self.header.props.title = f'{params.atemModel} @ {params.ip}' + log.info(f'Connected to "{switcher.atemModel}" @ {switcher.ip}') + self.header.props.title = f'{switcher.atemModel} @ {switcher.ip}' inputs = {} - for idx,i in enumerate(params.inputProperties): + for idx,i in enumerate(switcher.inputProperties): if not i.shortName: break log.debug(f'Creating Button for {i.shortName} of type {i.externalPortType}: {i.longName}') @@ -81,8 +84,6 @@ class PyATEMSwitcherGui(): self.buttons[f'in_{i.shortName}'] = (btn, idx) inputs.setdefault(str(i.externalPortType), []).append(btn) - log.debug(repr(inputs)) - log.debug('Creating vertically stacked box as container') self.box = Gtk.VBox(spacing=BUTTON_SPACING) @@ -90,19 +91,10 @@ class PyATEMSwitcherGui(): if input_type not in inputs: continue -# log.debug(f'Creating FlowBox for {input_type} buttons') -# flowbox = Gtk.VBox() -# flowbox.set_column_spacing(BUTTON_SPACING) -# flowbox.set_max_children_per_line(2) -# flowbox.set_row_spacing(BUTTON_SPACING) -# flowbox.set_selection_mode(Gtk.SelectionMode.NONE) -# flowbox.set_valign(Gtk.Align.START) - for btn in inputs[input_type]: self.box.pack_start(btn, True, True, 0) - #self.box.pack_start(flowbox, True, True, 0) - log.debug('All FlowBoxes added, adding box to window') + log.debug('All buttons added, adding box to window') self.window.add(self.box) self.window.show_all() self.log.debug('done') @@ -118,15 +110,28 @@ class PyATEMSwitcherGui(): self.header.props.title = 'PyATEMSwitcherGui: Not connected' def _switcher_state_changed(self, params): - source = params['switcher'].programInput[0].videoSource - sn = params['switcher'].inputProperties[source].shortName - for btn in self.buttons: - ctx = self.buttons[btn][0].get_style_context() - if btn == f'in_{sn}': - ctx.add_class('program') - else: - ctx.remove_class('program') - ctx.remove_class('selected') + cmd = params.get('cmd', 'PrgI') + + if cmd in ('PrgI', 'PrvI'): + pgm = params['switcher'].programInput[0].videoSource + prv = params['switcher'].previewInput[0].videoSource + pgm_n = params['switcher'].inputProperties[pgm].shortName + prv_n = params['switcher'].inputProperties[prv].shortName + for btn in self.buttons: + ctx = self.buttons[btn][0].get_style_context() + if btn == f'in_{pgm_n}': + ctx.add_class('program') + else: + ctx.remove_class('program') + if btn == f'in_{prv_n}' and pgm != prv: + ctx.add_class('preview') + else: + ctx.remove_class('preview') + ctx.remove_class('selected') + elif cmd == 'TrPs' and params['switcher'].transition[0].position == 0: + for btn in self.buttons: + ctx = self.buttons[btn][0].get_style_context() + ctx.remove_class('preview') def main_loop(self): self.switcher.connect() @@ -4,7 +4,7 @@ button { } button.program { - background: #800000; + background: #A00000; color: #FFFFFF; } diff --git a/switcher.py b/switcher.py index e14dbad..c025ce7 100644 --- a/switcher.py +++ b/switcher.py @@ -44,17 +44,17 @@ class PyATEMSwitcher: self.log.debug(f'_on_connect({repr(params)})') self._push_config() for callback in self._connect_subscribers: - callback(params['switcher']) + callback(params) def _on_connect_attempt(self, params): self.log.debug(f'_on_connect_attempt({repr(params)})') for callback in self._connect_attempt_subscribers: - callback(params['switcher']) + callback(params) def _on_disconnect(self, params): self.log.debug(f'_on_disconnect({repr(params)})') for callback in self._disconnect_subscribers: - callback(params['switcher']) + callback(params) def _on_receive(self, params): self.log.debug(f'_on_receive({repr(params)})') @@ -110,7 +110,9 @@ class PyATEMSwitcher: def trans(self, input): self.log.debug(f'hehehehe trans({repr(input)})') - self.atem.setProgramInputVideoSource( + self.atem.setPreviewInputVideoSource( ATEMTransitionStyles.mix, input, ) + self.atem.setTransitionMixRate(0, 10) + self.atem.execAutoME(0) |
