diff --git a/vmcompact/app.py b/vmcompact/app.py index c1c2af5..7897d44 100644 --- a/vmcompact/app.py +++ b/vmcompact/app.py @@ -6,10 +6,11 @@ from tkinter import messagebox, ttk from typing import NamedTuple import voicemeeterlib +from voicemeeterlib import kinds from .builders import MainFrameBuilder from .configurations import loader -from .data import _base_values, _configuration, _kinds_all, get_configuration +from .data import _base_values, _configuration, get_configuration from .errors import VMCompactError from .menu import Menus from .subject import Subject @@ -198,7 +199,7 @@ class App(tk.Tk): self.destroy() -_apps = {kind.name: App.make(kind) for kind in _kinds_all} +_apps = {kind.name: App.make(kind) for kind in kinds.all} def connect(kind_id: str, vmr, theme=None) -> App: diff --git a/vmcompact/builders.py b/vmcompact/builders.py index fb1b9ae..1943289 100644 --- a/vmcompact/builders.py +++ b/vmcompact/builders.py @@ -6,6 +6,7 @@ from tkinter import ttk import sv_ttk +from . import util from .banner import Banner from .channels import _make_channelframe from .config import BusConfig, StripConfig @@ -561,31 +562,22 @@ class StripConfigFrameBuilder(ChannelConfigFrameBuilder): class BusConfigFrameBuilder(ChannelConfigFrameBuilder): """Responsible for building channel configframe widgets""" + def __init__(self, configframe, app): + super().__init__(configframe) + self.app = app + def setup(self): - # fmt: off - self.configframe.bus_mode_map = { - "normal": "Normal", - "amix": "Mix Down A", - "bmix": "Mix Down B", - "repeat": "Stereo Repeat", - "composite": "Composite", - "tvmix": "Up Mix TV", - "upmix21": "Up Mix 2.1", - "upmix41": "Up Mix 4.1", - "upmix61": "Up Mix 6.1", - "centeronly": "Center Only", - "lfeonly": "LFE Only", - "rearonly": "Rear Only", - } - self.configframe.bus_mode_map_reverse = {v: k for k, v in self.configframe.bus_mode_map.items()} - self.configframe.bus_modes = list(self.configframe.bus_mode_map.keys()) - # fmt: on + self.configframe.bus_mode_map = util.get_busmode_fullnames(self.app.kind) + self.configframe.bus_mode_map_reverse = util.get_busmode_fullnames_reversed( + self.app.kind + ) + self.configframe.bus_modes = util.get_busmode_shortnames(self.app.kind) self.configframe.int_params = ('mono',) self.configframe.int_param_vars = [ tk.IntVar(value=getattr(self.configframe.target, param)) for param in self.configframe.int_params ] - self.configframe.mono_modes = ['mono: off', 'mono: on', 'stereo reverse'] + self.configframe.mono_modes = util.get_busmono_modes() self.configframe.bus_mono_label_text = tk.StringVar( value=self.configframe.mono_modes[self.configframe.target.mono] ) diff --git a/vmcompact/config.py b/vmcompact/config.py index 2f9839b..5a54cc6 100644 --- a/vmcompact/config.py +++ b/vmcompact/config.py @@ -217,7 +217,7 @@ class BusConfig(Config): self.grid(column=0, row=1, columnspan=4, padx=(2,)) else: self.grid(column=0, row=3, columnspan=4, padx=(2,)) - self.builder = builders.BusConfigFrameBuilder(self) + self.builder = builders.BusConfigFrameBuilder(self, parent) self.builder.setup() self.make_row_0() self.make_row_1() diff --git a/vmcompact/data.py b/vmcompact/data.py index 5bc4936..d6f40a0 100644 --- a/vmcompact/data.py +++ b/vmcompact/data.py @@ -61,10 +61,6 @@ class BaseValues(metaclass=SingletonMeta): _base_values = BaseValues() _configuration = Configurations() -_kinds = {kind.name: kind for kind in kinds.kinds_all} - -_kinds_all = _kinds.values() - def kind_get(kind_id): - return _kinds[kind_id] + return kinds.request_kind_map(kind_id) diff --git a/vmcompact/util.py b/vmcompact/util.py new file mode 100644 index 0000000..6e4a6f2 --- /dev/null +++ b/vmcompact/util.py @@ -0,0 +1,34 @@ +def get_busmode_fullnames(kind) -> dict: + if kind.name == 'basic': + return { + 'normal': 'Normal', + 'amix': 'Mix Down A', + 'repeat': 'Stereo Repeat', + 'composite': 'Composite', + } + return { + 'normal': 'Normal', + 'amix': 'Mix Down A', + 'bmix': 'Mix Down B', + 'repeat': 'Stereo Repeat', + 'composite': 'Composite', + 'tvmix': 'Up Mix TV', + 'upmix21': 'Up Mix 2.1', + 'upmix41': 'Up Mix 4.1', + 'upmix61': 'Up Mix 6.1', + 'centeronly': 'Center Only', + 'lfeonly': 'LFE Only', + 'rearonly': 'Rear Only', + } + + +def get_busmode_fullnames_reversed(kind) -> dict: + return {v: k for k, v in get_busmode_fullnames(kind).items()} + + +def get_busmode_shortnames(kind) -> list: + return list(get_busmode_fullnames(kind).keys()) + + +def get_busmono_modes() -> list: + return ['mono: off', 'mono: on', 'stereo repeat']