# 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