Files
VA-Control-for-linux/reference/decompiled/user_config_model.py
T
maikandClaude Opus 4.8 a7c93fa266 Erster Commit: nativer Linux-Port aus macOS-Bytecode
Läuft die Voice Acoustic VA-Remotecontrol (AllDSP AllControl) nativ unter Linux
auf echtem wxGTK 3.0 — ohne Wine und ohne dekompilierten App-Code. Ausgeführt wird
das unveränderte Python-2.7-Bytecode aus dem macOS-.app; C-Extensions (wxGTK/numpy/
scipy/PortAudio) kommen nativ aus Debian stretch.

Enthält: va/ (Original-.pyc + pure-Python-Libs + Assets + launch.py mit den drei
Linux-Fixes), Dockerfile/run.sh/entrypoint.sh, reference/ (dekompilierter Quellcode
zum Debuggen) und README/STATUS. img.cache (378 MB, regenerierbar) ist per
.gitignore ausgeschlossen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-20 19:57:01 +02:00

267 lines
11 KiB
Python

# uncompyle6 version 3.9.3
# Python bytecode version base 2.6 (62161)
# Decompiled from: Python 3.9.25 (main, Oct 31 2025, 23:16:49)
# [GCC 14.2.0]
# Embedded file name: user_config_model.pyc
# Compiled at: 2024-11-13 12:19:50
import wx, os, data_model, traceback, one_unit, ConfigParser, protocol, sys, select_keys, select_units, d_protocol, mytime
from user_config_helpers import *
class modelConfiguration(wx.Panel):
def __init__(self, parent, frame, uiNumber, panelName):
self.frame = frame
self.name = panelName
self.uiNumber = uiNumber
self.parent = parent
wx.Panel.__init__(self, parent, size=(964, 600))
self.Show(True)
self.lines = {}
self.initFinished = False
return
def initMe(self, force=False):
if self.IsShown() == False and force == False:
return
if self.initFinished == True:
return 0
print mytime.displayTime(), 'ucm.initMe modelConfiguration', self.name
frame = self.frame
uiNumber = self.uiNumber
self.lines = {0: (self.createLine(0)), 1: (self.dummyLine(1)), 2: (self.dummyLine(2)), 3: (self.dummyLine(3)), 4: (self.dummyLine(4)), 5: (self.dummyLine(5))}
self.checkBoxes = {}
self.uiKeys = getKeys(frame, uiNumber)
print 'ucm.i.keys:', self.uiKeys
self.modelName = ''
self.serialNumber = ''
self.decodeLines = {}
try:
for uiIndex in self.uiKeys:
(key, val) = self.uiKeys[uiIndex]
lineNumber = val[1] & 7
self.decodeLines[lineNumber] = val
self.lines[lineNumber].key = key
for lineNumber in range(6):
val = self.decodeLines[lineNumber]
if lineNumber == 0:
if val[1] & 8 == 8:
self.lines[0].restrictModelOnOff.SetValue(True)
try:
restrictTo = int(val[2])
except:
retrictTo = 0
self.lines[0].restrictModelNumber.SetValue(str(restrictTo))
for i in range(4):
self.modelName += chr(val[i + 4])
elif lineNumber in (1, 2):
for i in range(6):
self.modelName += chr(val[i + 2])
elif lineNumber == 3:
for i in range(4):
self.serialNumber += chr(val[i + 4])
elif lineNumber in (4, 5):
for i in range(6):
self.serialNumber += chr(val[i + 2])
print mytime.displayTime(), 'ucm.i.Found model name:', self.modelName
print mytime.displayTime(), 'ucm.i.Found serial number:', self.serialNumber
self.lines[0].checkBox.SetValue(True)
self.enable(self.lines[0])
self.lines[0].nameValue.SetValue(self.modelName)
self.lines[0].serialValue.SetValue(self.serialNumber)
except:
self.modelName = ''
self.serialNumber = ''
self.settingsVerified = False
self.initFinished = True
self.Show(True)
return
def createLine(self, lineNumber):
p = wx.Panel(self, size=(800, 400))
p.checkBox = wx.CheckBox(p, 0, ' Setup Model Information', pos=(13, 10), size=(180,
20))
p.checkBox.SetValue(False)
p.nameLabel = wx.StaticText(p, -1, 'Model Name', pos=(40, 40))
p.nameValue = wx.TextCtrl(p, -1, '', pos=(230, 40), size=(200, 20))
p.nameValue.SetMaxLength(16)
p.serialLabel = wx.StaticText(p, -1, 'Version String', pos=(40, 68))
p.serialValue = wx.TextCtrl(p, -1, '', pos=(230, 68), size=(200, 20))
p.serialValue.SetMaxLength(16)
p.restrictModelOnOff = wx.CheckBox(p, 22, ' Restrict to Model Number', pos=(40,
98))
p.restrictModelOnOff.SetValue(False)
p.restrictModelNumber = wx.TextCtrl(p, 20, '', pos=(230, 95), size=(40, 20))
self.enable(p)
p.key = None
self.Bind(wx.EVT_CHECKBOX, self.OnEnabled, id=lineNumber)
self.Bind(wx.EVT_CHECKBOX, self.OnRestrict, id=22)
p.lineNumber = lineNumber
return p
def dummyLine(self, lineNumber):
p = wx.Panel(self)
p.checkBox = wx.CheckBox(p, 0, '')
p.checkBox.SetValue(False)
p.key = None
p.lineNumber = lineNumber
p.Show(False)
return p
def OnRestrict(self, e):
self.lines[0].restrictModelNumber.Enable(self.lines[0].restrictModelOnOff.GetValue())
return
def OnEnabled(self, e):
self.enable(self.lines[0])
return
def enable(self, line):
val = line.checkBox.GetValue()
line.nameLabel.Enable(val)
line.nameValue.Enable(val)
line.serialLabel.Enable(val)
line.serialValue.Enable(val)
line.restrictModelOnOff.Enable(val)
line.restrictModelNumber.Enable(line.restrictModelOnOff.GetValue())
return
def evaluateLine(self, line):
if self.lines[0].checkBox.GetValue() == False:
return
else:
flags = line.lineNumber
if line.lineNumber == 0:
self.modelName = ' NoNameNoName'
self.settingsVerified = False
if line.restrictModelOnOff.GetValue() == True:
flags += 8
modelNumber = line.restrictModelNumber.GetValue()
try:
modelNumber = int(modelNumber)
except:
return
else:
if modelNumber > 255:
modelNumber = 255
if modelNumber < 0:
modelNumber = 0
else:
modelNumber = 0
modelName = line.nameValue.GetValue()
try:
modelName = str(('').join(c for c in modelName if c in data_model.validFilenameChars))
except:
return
else:
modelName += ' '
modelName = modelName[:16]
self.modelName = modelName
print mytime.displayTime(), 'ucm.eL.Model Name:', modelName
self.serialNumber = ' '
serialNumber = line.serialValue.GetValue()
try:
serialNumber = str(('').join(c for c in serialNumber if c in data_model.validFilenameChars))
except:
return
else:
serialNumber += ' '
serialNumber = serialNumber[:16]
self.serialNumber = serialNumber
print mytime.displayTime(), 'ucm.eL.Serial Number:', serialNumber
try:
sendString = '' + chr(self.uiNumber)
sendString += chr(flags)
sendString += chr(modelNumber)
sendString += chr(0)
sendString += modelName[0]
sendString += modelName[1]
sendString += modelName[2]
sendString += modelName[3]
mys = 'ucm.eL.String: '
for c in sendString:
mys += hex(ord(c)) + ':'
print mys, line.lineNumber
self.settingsVerified = True
return sendString
except:
print mytime.displayTime(), 'ucm.ec.eL.failed to build string'
traceback.print_exc(file=sys.stdout)
return
elif line.lineNumber in (1, 2):
if self.settingsVerified == False:
return
try:
sendString = '' + chr(self.uiNumber)
sendString += chr(flags)
sendString += self.modelName[4 + (line.lineNumber - 1) * 6]
sendString += self.modelName[5 + (line.lineNumber - 1) * 6]
sendString += self.modelName[6 + (line.lineNumber - 1) * 6]
sendString += self.modelName[7 + (line.lineNumber - 1) * 6]
sendString += self.modelName[8 + (line.lineNumber - 1) * 6]
sendString += self.modelName[9 + (line.lineNumber - 1) * 6]
mys = 'ucm.eL.String: ' + hex(self.uiNumber) + ':' + hex(line.lineNumber) + ': ' + sendString[2:]
print mys, line.lineNumber
return sendString
except:
print mytime.displayTime(), 'ucm.ec.eL.failed to build string'
traceback.print_exc(file=sys.stdout)
return
elif line.lineNumber == 3:
if self.settingsVerified == False:
return
try:
sendString = '' + chr(self.uiNumber)
sendString += chr(flags)
sendString += chr(0)
sendString += chr(0)
sendString += self.serialNumber[0]
sendString += self.serialNumber[1]
sendString += self.serialNumber[2]
sendString += self.serialNumber[3]
mys = 'ucm.eL.String: '
for c in sendString:
mys += hex(ord(c)) + ':'
print mys, line.lineNumber
return sendString
except:
print mytime.displayTime(), 'ucm.ec.eL.failed to build string'
traceback.print_exc(file=sys.stdout)
return
elif line.lineNumber in (4, 5):
if self.settingsVerified == False:
return
try:
sendString = '' + chr(self.uiNumber)
sendString += chr(flags)
sendString += self.serialNumber[4 + (line.lineNumber - 4) * 6]
sendString += self.serialNumber[5 + (line.lineNumber - 4) * 6]
sendString += self.serialNumber[6 + (line.lineNumber - 4) * 6]
sendString += self.serialNumber[7 + (line.lineNumber - 4) * 6]
sendString += self.serialNumber[8 + (line.lineNumber - 4) * 6]
sendString += self.serialNumber[9 + (line.lineNumber - 4) * 6]
mys = 'ucm.eL.String: ' + hex(self.uiNumber) + ':' + hex(line.lineNumber) + ': ' + sendString[2:]
print mys, line.lineNumber
return sendString
except:
print mytime.displayTime(), 'ucm.ec.eL.failed to build string'
traceback.print_exc(file=sys.stdout)
return
return
# okay decompiling pycode/user_config_model.pyc