summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranziska Kunsmann <hi@kunsmann.eu>2023-01-11 15:22:28 +0100
committerFranziska Kunsmann <hi@kunsmann.eu>2023-01-11 15:22:28 +0100
commitf043247f4bc2f3c652e06c6a27386533b3b8bdbc (patch)
tree8a724b8030e1f2774e251b7ccc8675501e41fc90
parentda8f6e83627d8068d3f9a0e1bd68eb57e3571e2f (diff)
styling, improvements and stuff
-rw-r--r--gui.py53
-rw-r--r--style.css2
-rw-r--r--switcher.py10
3 files changed, 36 insertions, 29 deletions
diff --git a/gui.py b/gui.py
index eb73bc3..8aa5abe 100644
--- a/gui.py
+++ b/gui.py
@@ -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()
diff --git a/style.css b/style.css
index 45da0e7..18108c0 100644
--- a/style.css
+++ b/style.css
@@ -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)