diff --git a/src/nvda_voicemeeter/builder.py b/src/nvda_voicemeeter/builder.py index 731556b..e2ca76b 100644 --- a/src/nvda_voicemeeter/builder.py +++ b/src/nvda_voicemeeter/builder.py @@ -12,7 +12,8 @@ class Builder: def run(self) -> list: row0 = self.make_row0() row1 = self.make_row1() - return [[row0], [row1]] + row2 = self.make_row2() + return [[row0], [row1], [row2]] def make_row0(self): def add_physical_device_opts(layout): @@ -47,20 +48,47 @@ class Builder: ) inner = list() - asio_checkboxes_in1, asio_checkboxes_in2, asio_checkboxes_in3, asio_checkboxes_in4, asio_checkboxes_in5 = ( - [] for _ in range(5) - ) - for i, checkbox_list in enumerate( - ( - asio_checkboxes_in1, - asio_checkboxes_in2, - asio_checkboxes_in3, - asio_checkboxes_in4, - asio_checkboxes_in5, - ) - ): + asio_checkboxlists = ([] for _ in range(self.kind.phys_out)) + for i, checkbox_list in enumerate(asio_checkboxlists): [step(checkbox_list, i + 1) for step in (add_asio_checkboxes,)] inner.append(psg.Frame(f"In#{i + 1}", checkbox_list)) asio_checkboxes = [inner] return psg.Frame("PATCH ASIO Inputs to Strips", asio_checkboxes) + + def make_row2(self): + def add_insert_checkboxes(layout, i): + if i <= self.kind.phys_in: + layout.append( + [psg.Checkbox(text="LEFT", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 0")], + ) + layout.append( + [psg.Checkbox(text="RIGHT", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 1")], + ) + else: + layout.append( + [ + psg.Checkbox(text="LEFT", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 0"), + psg.Checkbox(text="RIGHT", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 1"), + psg.Checkbox(text="C", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 2"), + psg.Checkbox(text="LFE", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 3"), + psg.Checkbox(text="SL", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 4"), + psg.Checkbox(text="SR", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 5"), + psg.Checkbox(text="BL", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 6"), + psg.Checkbox(text="BR", enable_events=True, key=f"INSERT CHECKBOX||IN{i} 7"), + ], + ) + + asio_checkboxes = list() + inner = list() + checkbox_lists = ([] for _ in range(self.kind.num_strip)) + for i, checkbox_list in enumerate(checkbox_lists): + if i < self.kind.phys_in: + [step(checkbox_list, i + 1) for step in (add_insert_checkboxes,)] + inner.append(psg.Frame(f"In#{i + 1}", checkbox_list)) + else: + [step(checkbox_list, i + 1) for step in (add_insert_checkboxes,)] + asio_checkboxes.append([psg.Frame(f"In#{i + 1}", checkbox_list)]) + asio_checkboxes.insert(0, inner) + + return psg.Frame("PATCH INSERT", asio_checkboxes)