mirror of
https://github.com/onyx-and-iris/nvda-voicemeeter.git
synced 2024-11-25 03:10:50 +00:00
adjust cache to match strip layout
event keys updated _get_bus_assignments added to util.py patch bump
This commit is contained in:
parent
1c09556c61
commit
c385476cc4
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "nvda_voicemeeter"
|
name = "nvda_voicemeeter"
|
||||||
version = "0.5.4"
|
version = "0.5.5"
|
||||||
description = "A Voicemeeter app compatible with NVDA"
|
description = "A Voicemeeter app compatible with NVDA"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "onyx-and-iris", email = "code@onyxandiris.online" },
|
{ name = "onyx-and-iris", email = "code@onyxandiris.online" },
|
||||||
|
@ -381,7 +381,7 @@ class Builder:
|
|||||||
if i == self.kind.phys_in + 1:
|
if i == self.kind.phys_in + 1:
|
||||||
layout.append(
|
layout.append(
|
||||||
[
|
[
|
||||||
psg.Button("K", size=(6, 2), key=f"STRIP {i}||MONO"),
|
psg.Button("K", size=(6, 2), key=f"STRIP {i}||KARAOKE"),
|
||||||
psg.Button("Solo", size=(6, 2), key=f"STRIP {i}||SOLO"),
|
psg.Button("Solo", size=(6, 2), key=f"STRIP {i}||SOLO"),
|
||||||
psg.Button("Mute", size=(6, 2), key=f"STRIP {i}||MUTE"),
|
psg.Button("Mute", size=(6, 2), key=f"STRIP {i}||MUTE"),
|
||||||
],
|
],
|
||||||
@ -389,7 +389,7 @@ class Builder:
|
|||||||
else:
|
else:
|
||||||
layout.append(
|
layout.append(
|
||||||
[
|
[
|
||||||
psg.Button("MC", size=(6, 2), key=f"STRIP {i}||MONO"),
|
psg.Button("MC", size=(6, 2), key=f"STRIP {i}||MC"),
|
||||||
psg.Button("Solo", size=(6, 2), key=f"STRIP {i}||SOLO"),
|
psg.Button("Solo", size=(6, 2), key=f"STRIP {i}||SOLO"),
|
||||||
psg.Button("Mute", size=(6, 2), key=f"STRIP {i}||MUTE"),
|
psg.Button("Mute", size=(6, 2), key=f"STRIP {i}||MUTE"),
|
||||||
],
|
],
|
||||||
|
@ -38,10 +38,15 @@ def _make_param_cache(vm, channel_type) -> dict:
|
|||||||
**{f"STRIP {i}||B3": vm.strip[i].B3 for i in range(vm.kind.num_strip)},
|
**{f"STRIP {i}||B3": vm.strip[i].B3 for i in range(vm.kind.num_strip)},
|
||||||
}
|
}
|
||||||
params |= {
|
params |= {
|
||||||
**{f"STRIP {i}||MONO": vm.strip[i].mono for i in range(vm.kind.num_strip)},
|
**{f"STRIP {i}||MONO": vm.strip[i].mono for i in range(vm.kind.phys_in)},
|
||||||
**{f"STRIP {i}||SOLO": vm.strip[i].solo for i in range(vm.kind.num_strip)},
|
**{f"STRIP {i}||SOLO": vm.strip[i].solo for i in range(vm.kind.num_strip)},
|
||||||
**{f"STRIP {i}||MUTE": vm.strip[i].mute for i in range(vm.kind.num_strip)},
|
**{f"STRIP {i}||MUTE": vm.strip[i].mute for i in range(vm.kind.num_strip)},
|
||||||
}
|
}
|
||||||
|
for i in range(vm.kind.phys_in, vm.kind.phys_in + vm.kind.virt_in):
|
||||||
|
if i == vm.kind.phys_in + 1:
|
||||||
|
params[f"STRIP {i}||KARAOKE"] = vm.strip[i].k
|
||||||
|
else:
|
||||||
|
params[f"STRIP {i}||MC"] = vm.strip[i].mc
|
||||||
else:
|
else:
|
||||||
params |= {
|
params |= {
|
||||||
**{f"BUS {i}||MONO": vm.bus[i].mono for i in range(vm.kind.num_bus)},
|
**{f"BUS {i}||MONO": vm.bus[i].mono for i in range(vm.kind.num_bus)},
|
||||||
|
@ -192,3 +192,7 @@ def get_slider_modes() -> Iterable:
|
|||||||
"DENOISER MODE",
|
"DENOISER MODE",
|
||||||
"LIMIT MODE",
|
"LIMIT MODE",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_bus_assignments(kind) -> list:
|
||||||
|
return [f"A{i}" for i in range(1, kind.phys_out + 1)] + [f"B{i}" for i in range(1, kind.virt_out + 1)]
|
||||||
|
@ -237,7 +237,12 @@ class NVDAVMWindow(psg.Window):
|
|||||||
self[f"STRIP {i}||{param}"].bind("<FocusIn>", "||FOCUS IN")
|
self[f"STRIP {i}||{param}"].bind("<FocusIn>", "||FOCUS IN")
|
||||||
self[f"STRIP {i}||{param}"].bind("<Return>", "||KEY ENTER")
|
self[f"STRIP {i}||{param}"].bind("<Return>", "||KEY ENTER")
|
||||||
else:
|
else:
|
||||||
for param in ("MONO", "SOLO", "MUTE"):
|
if i == self.kind.phys_in + 1:
|
||||||
|
for param in ("KARAOKE", "SOLO", "MUTE"):
|
||||||
|
self[f"STRIP {i}||{param}"].bind("<FocusIn>", "||FOCUS IN")
|
||||||
|
self[f"STRIP {i}||{param}"].bind("<Return>", "||KEY ENTER")
|
||||||
|
else:
|
||||||
|
for param in ("MC", "SOLO", "MUTE"):
|
||||||
self[f"STRIP {i}||{param}"].bind("<FocusIn>", "||FOCUS IN")
|
self[f"STRIP {i}||{param}"].bind("<FocusIn>", "||FOCUS IN")
|
||||||
self[f"STRIP {i}||{param}"].bind("<Return>", "||KEY ENTER")
|
self[f"STRIP {i}||{param}"].bind("<Return>", "||KEY ENTER")
|
||||||
|
|
||||||
@ -659,54 +664,36 @@ class NVDAVMWindow(psg.Window):
|
|||||||
|
|
||||||
# Strip Params
|
# Strip Params
|
||||||
case [["STRIP", index], [param]]:
|
case [["STRIP", index], [param]]:
|
||||||
label = self.cache["labels"][f"STRIP {index}||LABEL"]
|
|
||||||
match param:
|
match param:
|
||||||
case "MONO":
|
case "KARAOKE":
|
||||||
if int(index) < self.kind.phys_in:
|
|
||||||
actual = param.lower()
|
|
||||||
elif int(index) == self.kind.phys_in + 1:
|
|
||||||
actual = "k"
|
|
||||||
else:
|
|
||||||
actual = "mc"
|
|
||||||
if actual == "k":
|
|
||||||
opts = ["off", "k m", "k 1", "k 2", "k v"]
|
opts = ["off", "k m", "k 1", "k 2", "k v"]
|
||||||
next_val = self.vm.strip[int(index)].k + 1
|
next_val = self.vm.strip[int(index)].k + 1
|
||||||
if next_val == len(opts):
|
if next_val == len(opts):
|
||||||
next_val = 0
|
next_val = 0
|
||||||
setattr(self.vm.strip[int(index)], actual, next_val)
|
self.vm.strip[int(index)].k = next_val
|
||||||
self.cache["strip"][f"STRIP {index}||{param}"] = next_val
|
self.cache["strip"][f"STRIP {index}||{param}"] = next_val
|
||||||
self.nvda.speak(opts[next_val])
|
self.nvda.speak(opts[next_val])
|
||||||
else:
|
case output if param in util._get_bus_assignments(self.kind):
|
||||||
val = not self.cache["strip"][f"STRIP {index}||{param}"]
|
val = not self.cache["strip"][f"STRIP {index}||{output}"]
|
||||||
setattr(self.vm.strip[int(index)], actual, val)
|
setattr(self.vm.strip[int(index)], output, val)
|
||||||
self.cache["strip"][f"STRIP {index}||{param}"] = val
|
self.cache["strip"][f"STRIP {index}||{output}"] = val
|
||||||
self.nvda.speak("on" if val else "off")
|
self.nvda.speak("on" if val else "off")
|
||||||
case _:
|
case _:
|
||||||
val = not self.cache["strip"][f"STRIP {index}||{param}"]
|
val = not self.cache["strip"][f"STRIP {index}||{param}"]
|
||||||
setattr(self.vm.strip[int(index)], param if param[0] in ("A", "B") else param.lower(), val)
|
setattr(self.vm.strip[int(index)], param.lower(), val)
|
||||||
self.cache["strip"][f"STRIP {index}||{param}"] = val
|
self.cache["strip"][f"STRIP {index}||{param}"] = val
|
||||||
self.nvda.speak("on" if val else "off")
|
self.nvda.speak("on" if val else "off")
|
||||||
case [["STRIP", index], [param], ["FOCUS", "IN"]]:
|
case [["STRIP", index], [param], ["FOCUS", "IN"]]:
|
||||||
if self.find_element_with_focus() is not None:
|
if self.find_element_with_focus() is not None:
|
||||||
val = self.cache["strip"][f"STRIP {index}||{param}"]
|
val = self.cache["strip"][f"STRIP {index}||{param}"]
|
||||||
match param:
|
phonetic = {"KARAOKE": "karaoke"}
|
||||||
case "MONO":
|
|
||||||
if int(index) < self.kind.phys_in:
|
|
||||||
actual = param.lower()
|
|
||||||
elif int(index) == self.kind.phys_in + 1:
|
|
||||||
actual = "k"
|
|
||||||
else:
|
|
||||||
actual = "mc"
|
|
||||||
case _:
|
|
||||||
actual = param
|
|
||||||
phonetic = {"k": "karaoke"}
|
|
||||||
label = self.cache["labels"][f"STRIP {index}||LABEL"]
|
label = self.cache["labels"][f"STRIP {index}||LABEL"]
|
||||||
if actual == "k":
|
if param == "KARAOKE":
|
||||||
self.nvda.speak(
|
self.nvda.speak(
|
||||||
f"{label} {phonetic.get(actual, actual)} {['off', 'k m', 'k 1', 'k 2'][self.cache['strip'][f'STRIP {int(index)}||{param}']]}"
|
f"{label} {phonetic.get(param, param)} {['off', 'k m', 'k 1', 'k 2', 'k v'][self.cache['strip'][f'STRIP {int(index)}||{param}']]}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.nvda.speak(f"{label} {phonetic.get(actual, actual)} {'on' if val else 'off'}")
|
self.nvda.speak(f"{label} {phonetic.get(param, param)} {'on' if val else 'off'}")
|
||||||
case [["STRIP", index], [param], ["KEY", "ENTER"]]:
|
case [["STRIP", index], [param], ["KEY", "ENTER"]]:
|
||||||
self.find_element_with_focus().click()
|
self.find_element_with_focus().click()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user