def initRc(self): if self.isDefaultRc or getBoxType() in ( "ventonhdx", "sezam5000hd", "mbtwin", "beyonwizt3") or getBoxProc() in ("ini-3000", "ini-5000", "ini-7000", "ini-7012"): self["rc"].setPixmapNum(config.misc.rcused.value) else: self["rc"].setPixmapNum(0)
def showRadioButton(self): if getBoxBrand() in ("gigablue", "azbox") or getBoxType() in ( "classm", "genius", "evo", "galaxym6", "sezam5000hd", "mbtwin", "beyonwizt3") or getBoxProc() in ("ini-3000", "ini-5000", "ini-7000", "ini-7012"): self.toggleTvRadio() else: self.showRadio()
def showTvButton(self): if getBoxBrand() == "gigablue" or getBoxType() in ("classm", "genius", "evo", "galaxym6"): self.toggleTvRadio() elif getBoxType() in ("sezam5000hd", "mbtwin") or getBoxProc() in ( "ini-3000", "ini-5000", "ini-7000", "ini-7012"): self.showMovies() else: self.showTv()
def remoteControl(key, type="", rcu=""): # TODO: do something better here if rcu == "standard": remotetype = "dreambox remote control (native)" elif rcu == "advanced": remotetype = "dreambox advanced remote control (native)" elif rcu == "keyboard": remotetype = "dreambox ir keyboard" else: if config.misc.rcused.value == 0: remotetype = "dreambox advanced remote control (native)" else: remotetype = "dreambox remote control (native)" try: from enigma import getBoxType from Tools.StbHardware import getBoxProc if getBoxType() in ("xp1000", "formuler1", "formuler3", "hd1100", "hd1200") or getBoxProc() in ("et9000", "et9200"): remotetype = "dreambox advanced remote control (native)" except: # noqa: E722 print("[OpenWebIf] wrong hw detection") amap = eActionMap.getInstance() if type == "long": amap.keyPressed(remotetype, key, 0) amap.keyPressed(remotetype, key, 3) elif type == "ascii": amap.keyPressed(remotetype, key, 4) else: amap.keyPressed(remotetype, key, 0) amap.keyPressed(remotetype, key, 1) return { "result": True, "message": "RC command '%s' has been issued" % str(key) }
InfoBarSummarySupport, InfoBarMoviePlayerSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, \ InfoBarSubtitleSupport, InfoBarPiP, InfoBarPlugins, InfoBarServiceErrorPopupSupport, InfoBarJobman, InfoBarZoom, InfoBarPowersaver, \ InfoBarHDMI, InfoBarHdmi2, setResumePoint, delResumePoint from Screens.Hotkey import InfoBarHotkey profile("LOAD:InitBar_Components") from Components.ActionMap import HelpableActionMap from Components.config import config from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase profile("LOAD:HelpableScreen") from Screens.HelpMenu import HelpableScreen brand = getBoxBrand() model = getBoxType() procmodel = getBoxProc() class InfoBar( InfoBarBase, InfoBarShowHide, InfoBarNumberZap, InfoBarChannelSelection, InfoBarMenu, InfoBarEPG, InfoBarRdsDecoder, InfoBarResolutionSelection, InfoBarAspectSelection, InfoBarInstantRecord, InfoBarAudioSelection, InfoBarRedButton, InfoBarTimerButton, InfoBarVmodeButton, HelpableScreen, InfoBarAdditionalInfo, InfoBarNotifications, InfoBarDish, InfoBarUnhandledKey, InfoBarSubserviceSelection, InfoBarTimeshift, InfoBarSeek, InfoBarCueSheetSupport, InfoBarBuffer, InfoBarSummarySupport, InfoBarTimeshiftState, InfoBarTeletextPlugin, InfoBarExtensions, InfoBarPiP, InfoBarPlugins, InfoBarSubtitleSupport, InfoBarServiceErrorPopupSupport, InfoBarJobman, InfoBarZoom, InfoBarPowersaver, InfoBarHDMI, InfoBarHdmi2, InfoBarHotkey, Screen):
class RemoteControlType(Screen, ConfigListScreen): if getBoxBrand() in ("broadmedia","octagon","odin","protek","ultramini") or getBoxType() in ("et7x00","et8500","et1x000","et13000") or getBoxProc() in ("et7000","et7100","et7200","et7500"): rcList = [ ("0", _("Default")), ("3", _("MaraM9")), ("4", _("DMM normal")), ("5", _("et9000/et9100")), ("6", _("DMM advanced")), ("7", _("et5000/6000")), ("8", _("VU+")), ("9", _("et8000/et10000/et13000/SF5008")), ("11", _("et9200/9500/6500")), ("13", _("et4000")), ("14", _("XP1000")), ("16", _("HD11/HD51/HD1100/HD1200/HD1265/HD1500/HD500C/HD530C/et7x00/et8500/VS1000/VS1500")), ("17", _("XP3000")), ("18", _("F1/F3/F4/F4-TURBO/TRIPLEX")), ("19", _("HD2400")), ("20", _("Zgemma Star S/2S/H1/H2")), ("21", _("Zgemma H.S/H.2S/H.2H/H5/H7")), ("500", _("WWIO_BRE2ZE_TC")), ("501", _("OCTAGON_SF4008")), ("502", _("GIGABLUE Black")), ("503", _("MIRACLEBOX_TWINPLUS")), ("504", _("E3HD/XPEEDLX/GI")), ("505", _("ODIN_M7")), ("507", _("Beyonwiz U4")), ("511", _("OCTAGON SF5008")) ] defaultRcList = [ ("default", 0), ("et4000", 13), ("et5000", 7), ("et6000", 7), ("et6500", 11), ("et7x00",16), ("et7100",16), ("et7000",16), ("et7500",16), ("et7000mini",16), ("et8000", 9), ("et13000", 9), ("et8500",16), ("et9000", 5), ("et9100", 5), ("et9200", 11), ("et9500", 11), ("et10000", 9), ("formuler1",18), ("formuler3",18), ("formuler4",18), ("formuler4turbo",18), ("hd11",16), ("hd51",16), ("hd1100",16), ("hd1200",16), ("hd1265",16), ("hd500c",16), ("hd530c",16), ("vs1000",16), ("vs1500",16), ("hd2400",19), ("triplex",18), ("xp1000", 14), ("xp3000", 17), ("sh1", 20), ("h3", 21), ("h5", 21), ("h7", 21), ("bre2ze_tc", 500), ("sf4008", 501), ("g100", 501), ("sf4018", 501), ("gbquadplus", 502), ("g300", 503), ("e3hd", 504), ("et7000mini", 504), ("et1x000", 504), ("xpeedc.", 504), ("odinm7", 505), ("beyonwizu4", 507), ("sf5008", 511) ] else: rcList = [ ("0", _("Default")), ("3", _("MaraM9")), ("4", _("DMM normal")), ("5", _("et9000/et9100")), ("6", _("DMM advanced")), ("7", _("et5000/6000")), ("8", _("VU+")), ("9", _("et8000/et10000/et13000")), ("11", _("et9200/9500/6500")), ("13", _("et4000")), ("14", _("XP1000")), ("16", _("HD11/HD51/HD1100/HD1200/HD1265/HD1500/HD500C/HD530C/VS1000/VS1500")), ("17", _("XP3000")), ("18", _("F1/F3/F4/F4-TURBO/TRIPLEX")), ("19", _("HD2400")), ("20", _("Zgemma Star S/2S/H1/H2")), ("21", _("Zgemma H.S/H.2S/H.2H/H5/H7")), ("22", _("Zgemma i55")), ("23", _("WWIO 4K")), ("24", _("Axas E4HD Ultra")), ("25", _("Zgemma H9/I55Plus")), ("26", _("Protek 4K UHD")), ("27", _("HD60/HD61")) ] defaultRcList = [ ("default", 0), ("et4000", 13), ("et5000", 7), ("et6000", 7), ("et6500", 11), ("et8000", 9), ("et13000", 9), ("et9000", 5), ("et9100", 5), ("et9200", 11), ("et9500", 11), ("et10000", 9), ("formuler1",18), ("formuler3",18), ("formuler4",18), ("formuler4turbo",18), ("hd11",16), ("hd51",16), ("hd1100",16), ("hd1200",16), ("hd1265",16), ("hd500c",16), ("hd530c",16), ("vs1000",16), ("vs1500",16), ("hd2400",19), ("triplex",18), ("xp1000", 14), ("xp3000", 17), ("sh1", 20), ("h3", 21), ("h5", 21), ("h7", 21), ("i55", 22), ("bre2ze4k", 23), ("e4hd", 24), ("h9", 25), ("i55plus", 25), ("protek4k", 26), ("hd60", 27), ("hd61", 27) ] def __init__(self, session): Screen.__init__(self, session) self.skinName = ["RemoteControlType", "Setup" ] self.setTitle(_("Remote control type setup")) self["actions"] = ActionMap(["SetupActions"], { "cancel": self.keyCancel, "save": self.keySave, }, -1) self["key_green"] = StaticText(_("Save")) self["key_red"] = StaticText(_("Cancel")) self.list = [] ConfigListScreen.__init__(self, self.list, session = self.session) rctype = config.plugins.remotecontroltype.rctype.value self.rctype = ConfigSelection(choices = self.rcList, default = str(rctype)) self.list.append(getConfigListEntry(_("Remote control type"), self.rctype)) self["config"].list = self.list self.defaultRcType = 0 self.getDefaultRcType() def getDefaultRcType(self): data = iRcTypeControl.getBoxType() for x in self.defaultRcList: if x[0] in data: self.defaultRcType = x[1] break if self.defaultRcType == 0: self.defaultRcType = iRcTypeControl.readRcType() def setDefaultRcType(self): iRcTypeControl.writeRcType(self.defaultRcType) def keySave(self): if config.plugins.remotecontroltype.rctype.value == int(self.rctype.value): self.close() else: self.setNewSetting() self.session.openWithCallback(self.keySaveCallback, MessageBox, _("Is this setting ok?"), MessageBox.TYPE_YESNO, timeout=20, default=True, timeout_default=False) def keySaveCallback(self, answer): if answer is False: self.restoreOldSetting() else: config.plugins.remotecontroltype.rctype.value = int(self.rctype.value) config.plugins.remotecontroltype.save() self.close() def restoreOldSetting(self): if config.plugins.remotecontroltype.rctype.value == 0: self.setDefaultRcType() else: iRcTypeControl.writeRcType(config.plugins.remotecontroltype.rctype.value) def setNewSetting(self): if int(self.rctype.value) == 0: self.setDefaultRcType() else: iRcTypeControl.writeRcType(int(self.rctype.value)) def keyCancel(self): self.restoreOldSetting() self.close()
def getInfo(session=None, need_fullinfo=False): # TODO: get webif versione somewhere! info = {} global STATICBOXINFO if not (STATICBOXINFO is None or need_fullinfo): return STATICBOXINFO info['brand'] = getBoxBrand() info['model'] = getBoxType() info['platform'] = boxbranding.getMachineBuild() try: info['procmodel'] = getBoxProc() except: # noqa: E722 info['procmodel'] = boxbranding.getMachineProcModel() try: info['procmodeltype'] = getBoxProcType() except: # noqa: E722 info['procmodeltype'] = None try: info['lcd'] = getLcd() except: # noqa: E722 info['lcd'] = 0 try: info['grabpip'] = getGrabPip() except: # noqa: E722 info['grabpip'] = 0 cpu = about.getCPUInfoString() info['chipset'] = cpu info['cpubrand'] = about.getCPUBrand() info['socfamily'] = boxbranding.getSoCFamily() info['cpuarch'] = about.getCPUArch() if config.OpenWebif.about_benchmark.value is True: info['cpubenchmark'] = about.getCPUBenchmark() else: info['cpubenchmark'] = _("Disabled in configuration") info['flashtype'] = about.getFlashType() memFree = 0 for line in open("/proc/meminfo", 'r'): parts = line.split(':') key = parts[0].strip() if key == "MemTotal": info['mem1'] = parts[1].strip().replace("kB", _("kB")) elif key in ("MemFree", "Buffers", "Cached"): memFree += int(parts[1].strip().split(' ', 1)[0]) info['mem2'] = "%s %s" % (memFree, _("kB")) info['mem3'] = _("%s free / %s total") % (info['mem2'], info['mem1']) info['uptime'] = about.getBoxUptime() info["webifver"] = OPENWEBIFVER info['imagedistro'] = boxbranding.getImageDistro() info['oever'] = boxbranding.getImageBuild() info['visionversion'] = boxbranding.getVisionVersion() info['visionrevision'] = boxbranding.getVisionRevision() info['visionmodule'] = about.getVisionModule() if fileExists("/etc/openvision/multiboot"): multibootflag = open("/etc/openvision/multiboot", "r").read().strip() if multibootflag == "1": info['multiboot'] = _("Yes") else: info['multiboot'] = _("No") else: info['multiboot'] = _("Yes") info['enigmaver'] = getEnigmaVersionString() info['driverdate'] = about.getDriverInstalledDate() info['kernelver'] = boxbranding.getKernelVersion() info['dvbapitype'] = about.getDVBAPI() info['gstreamerversion'] = about.getGStreamerVersionString(cpu) info['ffmpegversion'] = about.getFFmpegVersionString() info['pythonversion'] = about.getPythonVersionString() try: info['hwserial'] = getHWSerial() except: # noqa: E722 info['hwserial'] = None if (info['hwserial'] is None or info['hwserial'] == "unknown"): info['hwserial'] = about.getCPUSerial() try: info['boxrctype'] = getBoxRCType() except: # noqa: E722 info['boxrctype'] = None if (info['boxrctype'] is None or info['boxrctype'] == "unknown"): if fileExists("/usr/bin/remotecfg"): info['boxrctype'] = _("Amlogic remote") elif fileExists("/usr/sbin/lircd"): info['boxrctype'] = _("LIRC remote") info['ovrctype'] = boxbranding.getRCType() info['ovrcname'] = boxbranding.getRCName() info['ovrcidnum'] = boxbranding.getRCIDNum() info['transcoding'] = boxbranding.getHaveTranscoding() info['multitranscoding'] = boxbranding.getHaveMultiTranscoding() info['displaytype'] = boxbranding.getDisplayType() info['updatedatestring'] = about.getUpdateDateString() info['enigmadebuglvl'] = eGetEnigmaDebugLvl() info['imagearch'] = boxbranding.getImageArch() info['imagefolder'] = boxbranding.getImageFolder() info['imagefilesystem'] = boxbranding.getImageFileSystem() info['feedsurl'] = boxbranding.getFeedsUrl() info['developername'] = boxbranding.getDeveloperName() info['builddatestring'] = about.getBuildDateString() info['imagefpu'] = boxbranding.getImageFPU() info['havemultilib'] = boxbranding.getHaveMultiLib() try: info['fp_version'] = getFPVersion() except: # noqa: E722 info['fp_version'] = None info['tuners'] = [] for i in list(range(0, nimmanager.getSlotCount())): print( "[OpenWebif] -D- tuner '%d' '%s' '%s'" % (i, nimmanager.getNimName(i), nimmanager.getNim(i).getSlotName())) info['tuners'].append({ "name": nimmanager.getNim(i).getSlotName(), "type": nimmanager.getNimName(i) + " (" + nimmanager.getNim(i).getFriendlyType() + ")", "rec": "", "live": "" }) info['ifaces'] = [] ifaces = iNetwork.getConfiguredAdapters() for iface in ifaces: info['ifaces'].append({ "name": iNetwork.getAdapterName(iface), "friendlynic": getFriendlyNICChipSet(iface), "linkspeed": getLinkSpeed(iface), "mac": iNetwork.getAdapterAttribute(iface, "mac"), "dhcp": iNetwork.getAdapterAttribute(iface, "dhcp"), "ipv4method": getIPv4Method(iface), "ip": formatIp(iNetwork.getAdapterAttribute(iface, "ip")), "mask": formatIp(iNetwork.getAdapterAttribute(iface, "netmask")), "v4prefix": sum([ bin(int(x)).count('1') for x in formatIp( iNetwork.getAdapterAttribute(iface, "netmask")).split('.') ]), "gw": formatIp(iNetwork.getAdapterAttribute(iface, "gateway")), "ipv6": getAdapterIPv6(iface)['addr'], "ipmethod": getIPMethod(iface), "firstpublic": getAdapterIPv6(iface)['firstpublic'] }) info['hdd'] = [] for hdd in harddiskmanager.hdd: dev = hdd.findMount() if dev: stat = os.statvfs(dev) free = stat.f_bavail * stat.f_frsize / 1048576. else: free = -1 if free <= 1024: free = "%i %s" % (free, _("MB")) else: free = free / 1024. free = "%.1f %s" % (free, _("GB")) size = hdd.diskSize() * 1000000 / 1048576. if size > 1048576: size = "%.1f %s" % ((size / 1048576.), _("TB")) elif size > 1024: size = "%.1f %s" % ((size / 1024.), _("GB")) else: size = "%d %s" % (size, _("MB")) iecsize = hdd.diskSize() # Harddisks > 1000 decimal Gigabytes are labelled in TB if iecsize > 1000000: iecsize = (iecsize + 50000) // float(100000) / 10 # Omit decimal fraction if it is 0 if (iecsize % 1 > 0): iecsize = "%.1f %s" % (iecsize, _("TB")) else: iecsize = "%d %s" % (iecsize, _("TB")) # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB elif iecsize > 300000: iecsize = "%d %s" % (((iecsize + 5000) // 10000 * 10), _("GB")) # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB elif iecsize > 1000: iecsize = "%d %s" % (((iecsize + 500) // 1000), _("GB")) else: iecsize = "%d %s" % (iecsize, _("MB")) info['hdd'].append({ "model": hdd.model(), "capacity": size, "labelled_capacity": iecsize, "free": free, "mount": dev, "friendlycapacity": _("%s free / %s total") % (free, size + ' ("' + iecsize + '")') }) info['shares'] = [] autofiles = ('/etc/auto.network', '/etc/auto.network_vti') for autofs in autofiles: if fileExists(autofs): method = "autofs" for line in open(autofs).readlines(): if not line.startswith('#'): # Replace escaped spaces that can appear inside credentials with underscores # Not elegant but we wouldn't want to expose credentials on the OWIF anyways tmpline = line.replace("\ ", "_") tmp = tmpline.split() if not len(tmp) == 3: continue name = tmp[0].strip() type = "unknown" if "cifs" in tmp[1]: # Linux still defaults to SMBv1 type = "SMBv1.0" settings = tmp[1].split(",") for setting in settings: if setting.startswith("vers="): type = setting.replace("vers=", "SMBv") elif "nfs" in tmp[1]: type = "NFS" # Default is r/w mode = _("r/w") settings = tmp[1].split(",") for setting in settings: if setting == "ro": mode = _("r/o") uri = tmp[2] parts = [] parts = tmp[2].split(':') if parts[0] == "": server = uri.split('/')[2] uri = uri.strip()[1:] else: server = parts[0] ipaddress = None if server: # Will fail on literal IPs try: # Try IPv6 first, as will Linux if has_ipv6: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET6) if tmpaddress: ipaddress = "[" + list( tmpaddress)[0][4][0] + "]" # Use IPv4 if IPv6 fails or is not present if ipaddress is None: tmpaddress = None tmpaddress = getaddrinfo(server, 0, AF_INET) if tmpaddress: ipaddress = list(tmpaddress)[0][4][0] except: # noqa: E722 pass friendlyaddress = server if ipaddress is not None and not ipaddress == server: friendlyaddress = server + " (" + ipaddress + ")" info['shares'].append({ "name": name, "method": method, "type": type, "mode": mode, "path": uri, "host": server, "ipaddress": ipaddress, "friendlyaddress": friendlyaddress }) # TODO: fstab info['EX'] = '' if session: try: # gets all current stream clients for images using eStreamServer # TODO: merge eStreamServer and streamList # TODO: get tuner info for streams # TODO: get recoding/timer info if more than one info['streams'] = [] try: from enigma import eStreamServer streamServer = eStreamServer.getInstance() if streamServer is not None: for x in streamServer.getConnectedClients(): servicename = ServiceReference( x[1]).getServiceName() or "(unknown service)" if int(x[2]) == 0: strtype = "S" else: strtype = "T" info['streams'].append({ "ref": x[1], "name": servicename, "ip": x[0], "type": strtype }) except Exception as error: print("[OpenWebif] -D- no eStreamServer %s" % error) recs = NavigationInstance.instance.getRecordings() if recs: # only one stream and only TV from Plugins.Extensions.OpenWebif.controllers.stream import streamList s_name = '' # s_cip = '' print("[OpenWebif] -D- streamList count '%d'" % len(streamList)) if len(streamList) == 1: from Screens.ChannelSelection import service_types_tv # from enigma import eEPGCache # epgcache = eEPGCache.getInstance() serviceHandler = eServiceCenter.getInstance() services = serviceHandler.list( eServiceReference('%s ORDER BY name' % (service_types_tv))) channels = services and services.getContent("SN", True) s = streamList[0] srefs = s.ref.toString() for channel in channels: if srefs == channel[0]: s_name = channel[1] + ' (' + s.clientIP + ')' break print("[OpenWebif] -D- s_name '%s'" % s_name) # only for debug for stream in streamList: srefs = stream.ref.toString() print("[OpenWebif] -D- srefs '%s'" % srefs) sname = '' timers = [] for timer in NavigationInstance.instance.RecordTimer.timer_list: if timer.isRunning() and not timer.justplay: timers.append( removeBad(timer.service_ref.getServiceName())) print("[OpenWebif] -D- timer '%s'" % timer.service_ref.getServiceName()) # TODO: more than one recording if len(timers) == 1: sname = timers[0] if sname == '' and s_name != '': sname = s_name print("[OpenWebif] -D- recs count '%d'" % len(recs)) for rec in recs: feinfo = rec.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['rec'] = getOrbitalText( cur_info) + ' / ' + sname service = session.nav.getCurrentService() if service is not None: sname = service.info().getName() feinfo = service.frontendInfo() frontendData = feinfo and feinfo.getAll(True) if frontendData is not None: cur_info = feinfo.getTransponderData(True) if cur_info: nr = frontendData['tuner_number'] info['tuners'][nr]['live'] = getOrbitalText( cur_info) + ' / ' + sname except Exception as error: info['EX'] = error info['timerpipzap'] = False info['timerautoadjust'] = False try: timer = RecordTimerEntry('', 0, 0, '', '', 0) if hasattr(timer, "pipzap"): info['timerpipzap'] = True if hasattr(timer, "autoadjust"): info['timerautoadjust'] = True except Exception as error: print("[OpenWebif] -D- RecordTimerEntry check %s" % error) STATICBOXINFO = info return info
import os import time from Tools.CList import CList from Components.SystemInfo import SystemInfo from Components.Console import Console from Components import Task from Tools.StbHardware import getBoxProc from boxbranding import getMachineMtdRoot import re hw_type = getBoxProc() def readFile(filename): file = open(filename) data = file.read().strip() file.close() return data def getProcMounts(): try: mounts = open("/proc/mounts", 'r') except IOError as ex: print("[Harddisk] Failed to open /proc/mounts", ex) return [] result = [line.strip().split(' ') for line in mounts] for item in result: # Spaces are encoded as \040 in mounts item[1] = item[1].replace('\\040', ' ') return result
def __init__(self, session): Screen.__init__(self, session) self.setTitle(_("About")) hddsplit = skin.parameters.get("AboutHddSplit", 0) model = getBoxType() procmodel = getBoxProc() stbplatform = boxbranding.getMachineBuild() AboutText = _("Hardware: ") + model + "\n" if stbplatform != model: AboutText += _("Platform: ") + stbplatform + "\n" if procmodel != model: AboutText += _("Proc model: ") + procmodel + "\n" procmodeltype = getBoxProcType() if procmodeltype is not None and procmodeltype != "unknown": AboutText += _("Hardware type: ") + procmodeltype + "\n" hwserial = getHWSerial() if hwserial is not None and hwserial != "unknown": AboutText += _("Hardware serial: ") + hwserial + "\n" if hwserial is not None and hwserial == "unknown": AboutText += _("Hardware serial: ") + about.getCPUSerial() + "\n" AboutText += _("Brand/Meta: ") + getBoxBrand() + "\n" AboutText += "\n" cpu = about.getCPUInfoString() AboutText += _("CPU: ") + cpu + "\n" AboutText += _("CPU brand: ") + about.getCPUBrand() + "\n" socfamily = boxbranding.getSoCFamily() if socfamily is not None: AboutText += _("SoC family: ") + socfamily + "\n" AboutText += _("CPU architecture: ") + about.getCPUArch() + "\n" if not boxbranding.getDisplayType().startswith(' '): AboutText += "\n" AboutText += _("Display type: ") + boxbranding.getDisplayType() + "\n" # [WanWizard] Removed until we find a reliable way to determine the installation date # AboutText += _("Installed: ") + about.getFlashDateString() + "\n" EnigmaVersion = about.getEnigmaVersionString() EnigmaVersion = EnigmaVersion.rsplit("-", EnigmaVersion.count("-") - 2) if len(EnigmaVersion) == 3: EnigmaVersion = EnigmaVersion[0] + " (" + EnigmaVersion[2] + "-" + EnigmaVersion[1] + ")" else: EnigmaVersion = EnigmaVersion[0] + " (" + EnigmaVersion[1] + ")" EnigmaVersion = _("Enigma2 version: ") + EnigmaVersion self["EnigmaVersion"] = StaticText(EnigmaVersion) AboutText += "\n" + EnigmaVersion + "\n" AboutText += _("Last update: ") + about.getUpdateDateString() + "\n" AboutText += _("Enigma2 (re)starts: %d\n") % config.misc.startCounter.value AboutText += _("Enigma2 debug level: %d\n") % eGetEnigmaDebugLvl() if fileExists("/etc/openvision/mediaservice"): mediaservice = open("/etc/openvision/mediaservice", "r").read().strip() AboutText += _("Media service: ") + mediaservice.replace("enigma2-plugin-systemplugins-","") + "\n" AboutText += "\n" AboutText += _("Drivers version: ") + about.getDriverInstalledDate() + "\n" AboutText += _("Kernel version: ") + boxbranding.getKernelVersion() + "\n" GStreamerVersion = _("GStreamer version: ") + about.getGStreamerVersionString(cpu).replace("GStreamer","") self["GStreamerVersion"] = StaticText(GStreamerVersion) AboutText += "\n" + GStreamerVersion + "\n" FFmpegVersion = _("FFmpeg version: ") + about.getFFmpegVersionString() self["FFmpegVersion"] = StaticText(FFmpegVersion) AboutText += FFmpegVersion + "\n" AboutText += "\n" AboutText += _("Python version: ") + about.getPythonVersionString() + "\n" AboutText += "\n" fp_version = getFPVersion() if fp_version is None: fp_version = "" else: fp_version = _("Frontprocessor version: %s") % fp_version AboutText += fp_version + "\n" self["FPVersion"] = StaticText(fp_version) AboutText += _('Skin & Resolution: %s (%sx%s)\n') % (config.skin.primary_skin.value.split('/')[0], getDesktop(0).size().width(), getDesktop(0).size().height()) self["TunerHeader"] = StaticText(_("Detected NIMs:")) AboutText += "\n" AboutText += _("Detected NIMs:") + "\n" nims = nimmanager.nimListCompressed() for count in range(len(nims)): if count < 4: self["Tuner" + str(count)] = StaticText(nims[count]) else: self["Tuner" + str(count)] = StaticText("") AboutText += nims[count] + "\n" self["HDDHeader"] = StaticText(_("Detected HDD:")) AboutText += "\n" AboutText += _("Detected HDD:") + "\n" hddlist = harddiskmanager.HDDList() hddinfo = "" if hddlist: formatstring = hddsplit and "%s:%s, %.1f %sB %s" or "%s\n(%s, %.1f %sB %s)" for count in range(len(hddlist)): if hddinfo: hddinfo += "\n" hdd = hddlist[count][1] if int(hdd.free()) > 1024: hddinfo += formatstring % (hdd.model(), hdd.capacity(), hdd.Totalfree()/1024.0, "G", _("free")) else: hddinfo += formatstring % (hdd.model(), hdd.capacity(), hdd.Totalfree(), "M", _("free")) else: hddinfo = _("none") self["hddA"] = StaticText(hddinfo) AboutText += hddinfo + "\n\n" + _("Network Info:") for x in about.GetIPsFromNetworkInterfaces(): AboutText += "\n" + x[0] + ": " + x[1] AboutText += '\n\n' + _("Uptime") + ": " + about.getBoxUptime() self["AboutScrollLabel"] = ScrollLabel(AboutText) self["key_green"] = Button(_("Translations")) self["key_red"] = Button(_("Latest Commits")) self["key_yellow"] = Button(_("Troubleshoot")) self["key_blue"] = Button(_("Memory Info")) self["actions"] = ActionMap(["ColorActions", "SetupActions", "DirectionActions"], { "cancel": self.close, "ok": self.close, "red": self.showCommits, "green": self.showTranslationInfo, "blue": self.showMemoryInfo, "yellow": self.showTroubleshoot, "up": self["AboutScrollLabel"].pageUp, "down": self["AboutScrollLabel"].pageDown })
def __init__(self, session): Screen.__init__(self, session) self.setTitle(_("About")) hddsplit = skin.parameters.get("AboutHddSplit", 0) procmodel = getBoxProc() AboutText = _("Hardware: ") + about.getHardwareTypeString() + "\n" if procmodel != about.getHardwareTypeString(): AboutText += _("Proc model: ") + procmodel + "\n" if fileExists("/proc/stb/info/sn"): hwserial = open("/proc/stb/info/sn", "r").read().strip() AboutText += _("Hardware serial: ") + hwserial + "\n" AboutText += _("Brand: ") + about.getHardwareBrand() + "\n" cpu = about.getCPUInfoString() AboutText += _("CPU: ") + cpu + "\n" AboutText += _("CPU brand: ") + about.getCPUBrand() + "\n" AboutText += _("CPU architecture: ") + about.getCPUArch() + "\n" if boxbranding.getImageFPU() != "": AboutText += _("FPU: ") + boxbranding.getImageFPU() + "\n" AboutText += _( "Image architecture: ") + boxbranding.getImageArch() + "\n" if boxbranding.getImageArch() == "aarch64": if boxbranding.getHaveMultiLib() == "True": AboutText += _("MultiLib: ") + _("Yes") + "\n" else: AboutText += _("MultiLib: ") + _("No") + "\n" AboutText += _("Flash type: ") + about.getFlashType() + "\n" AboutText += "\n" + _("Image: ") + about.getImageTypeString() + "\n" AboutText += _("Feed URL: ") + boxbranding.getFeedsUrl() + "\n" AboutText += _( "Open Vision version: ") + about.getVisionVersion() + "\n" AboutText += _( "Open Vision revision: ") + about.getVisionRevision() + "\n" AboutText += _("Open Vision module: ") + about.getVisionModule() + "\n" AboutText += _("Build date: ") + about.getBuildDateString() + "\n" AboutText += _("Last update: ") + about.getUpdateDateString() + "\n" # [WanWizard] Removed until we find a reliable way to determine the installation date # AboutText += _("Installed: ") + about.getFlashDateString() + "\n" EnigmaVersion = about.getEnigmaVersionString() EnigmaVersion = EnigmaVersion.rsplit("-", EnigmaVersion.count("-") - 2) if len(EnigmaVersion) == 3: EnigmaVersion = EnigmaVersion[0] + " (" + EnigmaVersion[ 2] + "-" + EnigmaVersion[1] + ")" else: EnigmaVersion = EnigmaVersion[0] + " (" + EnigmaVersion[1] + ")" EnigmaVersion = _("Enigma version: ") + EnigmaVersion self["EnigmaVersion"] = StaticText(EnigmaVersion) AboutText += "\n" + EnigmaVersion + "\n" AboutText += _( "Enigma (re)starts: %d\n") % config.misc.startCounter.value AboutText += _("Enigma debug level: %d\n") % eGetEnigmaDebugLvl() AboutText += "\n" + _( "Kernel version: ") + about.getKernelVersionString() + "\n" AboutText += _( "DVB driver version: ") + about.getDriverInstalledDate() + "\n" AboutText += _("DVB API: ") + about.getDVBAPI() + "\n" if fileExists("/usr/bin/dvb-fe-tool"): import time try: cmd = 'dvb-fe-tool > /tmp/dvbfetool.txt' res = Console().ePopen(cmd) time.sleep(0.1) except: pass if fileExists("/tmp/dvbfetool.txt"): if fileHas("/tmp/dvbfetool.txt", "DVBC") or fileHas( "/tmp/dvbfetool.txt", "DVB-C"): AboutText += _("DVB-C: ") + _("Yes") + "\n" else: AboutText += _("DVB-C: ") + _("No") + "\n" if fileHas("/tmp/dvbfetool.txt", "DVBS") or fileHas( "/tmp/dvbfetool.txt", "DVB-S"): AboutText += _("DVB-S: ") + _("Yes") + "\n" else: AboutText += _("DVB-S: ") + _("No") + "\n" if fileHas("/tmp/dvbfetool.txt", "DVBT") or fileHas( "/tmp/dvbfetool.txt", "DVB-T"): AboutText += _("DVB-T: ") + _("Yes") + "\n" else: AboutText += _("DVB-T: ") + _("No") + "\n" if fileHas("/tmp/dvbfetool.txt", "MULTISTREAM"): AboutText += _("Multistream: ") + _("Yes") + "\n" else: AboutText += _("Multistream: ") + _("No") + "\n" if fileHas("/tmp/dvbfetool.txt", "ANNEX_A") or fileHas( "/tmp/dvbfetool.txt", "ANNEX-A"): AboutText += _("ANNEX-A: ") + _("Yes") + "\n" else: AboutText += _("ANNEX-A: ") + _("No") + "\n" if fileHas("/tmp/dvbfetool.txt", "ANNEX_B") or fileHas( "/tmp/dvbfetool.txt", "ANNEX-B"): AboutText += _("ANNEX-B: ") + _("Yes") + "\n" else: AboutText += _("ANNEX-B: ") + _("No") + "\n" if fileHas("/tmp/dvbfetool.txt", "ANNEX_C") or fileHas( "/tmp/dvbfetool.txt", "ANNEX-C"): AboutText += _("ANNEX-C: ") + _("Yes") + "\n" else: AboutText += _("ANNEX-C: ") + _("No") + "\n" GStreamerVersion = _("GStreamer version: " ) + about.getGStreamerVersionString(cpu).replace( "GStreamer", "") self["GStreamerVersion"] = StaticText(GStreamerVersion) AboutText += "\n" + GStreamerVersion + "\n" FFmpegVersion = _("FFmpeg version: ") + about.getFFmpegVersionString() self["FFmpegVersion"] = StaticText(FFmpegVersion) AboutText += FFmpegVersion + "\n" AboutText += _( "Python version: ") + about.getPythonVersionString() + "\n" fp_version = getFPVersion() if fp_version is None: fp_version = "" else: fp_version = _("Frontprocessor version: %s") % fp_version AboutText += fp_version + "\n" self["FPVersion"] = StaticText(fp_version) if boxbranding.getHaveTranscoding() != "": AboutText += _("Transcoding: ") + _("Yes") + "\n" else: AboutText += _("Transcoding: ") + _("No") + "\n" if boxbranding.getHaveMultiTranscoding() != "": AboutText += _("MultiTranscoding: ") + _("Yes") + "\n" else: AboutText += _("MultiTranscoding: ") + _("No") + "\n" AboutText += _('Skin & Resolution: %s (%sx%s)\n') % ( config.skin.primary_skin.value.split('/')[0], getDesktop(0).size().width(), getDesktop(0).size().height()) self["TunerHeader"] = StaticText(_("Detected NIMs:")) AboutText += "\n" + _("Detected NIMs:") + "\n" nims = nimmanager.nimListCompressed() for count in range(len(nims)): if count < 4: self["Tuner" + str(count)] = StaticText(nims[count]) else: self["Tuner" + str(count)] = StaticText("") AboutText += nims[count] + "\n" self["HDDHeader"] = StaticText(_("Detected HDD:")) AboutText += "\n" + _("Detected HDD:") + "\n" hddlist = harddiskmanager.HDDList() hddinfo = "" if hddlist: formatstring = hddsplit and "%s:%s, %.1f %sB %s" or "%s\n(%s, %.1f %sB %s)" for count in range(len(hddlist)): if hddinfo: hddinfo += "\n" hdd = hddlist[count][1] if int(hdd.free()) > 1024: hddinfo += formatstring % (hdd.model(), hdd.capacity(), hdd.free() / 1024.0, "G", _("free")) else: hddinfo += formatstring % (hdd.model(), hdd.capacity(), hdd.free(), "M", _("free")) else: hddinfo = _("none") self["hddA"] = StaticText(hddinfo) AboutText += hddinfo + "\n\n" + _("Network Info:") for x in about.GetIPsFromNetworkInterfaces(): AboutText += "\n" + x[0] + ": " + x[1] self["AboutScrollLabel"] = ScrollLabel(AboutText) self["key_green"] = Button(_("Translations")) self["key_red"] = Button(_("Latest Commits")) self["key_yellow"] = Button(_("Troubleshoot")) self["key_blue"] = Button(_("Memory Info")) self["actions"] = ActionMap( ["ColorActions", "SetupActions", "DirectionActions"], { "cancel": self.close, "ok": self.close, "red": self.showCommits, "green": self.showTranslationInfo, "blue": self.showMemoryInfo, "yellow": self.showTroubleshoot, "up": self["AboutScrollLabel"].pageUp, "down": self["AboutScrollLabel"].pageDown })
from Components.Sources.StaticText import StaticText from Components.Pixmap import Pixmap from Components.Label import Label from Components.FileList import FileList from Screens.Screen import Screen from Screens.MessageBox import MessageBox from enigma import eTimer from shutil import copyfile from Tools.StbHardware import getBoxProc from Components.Console import Console from Tools.Directories import resolveFilename, SCOPE_PLUGINS fwlist = None fwdata = None info = getBoxProc() if info == "ini-1000": fwlist = [("fp", _("Front Panel"))] fwdata = { "micom": [ "http://micom.mynonpublic.com/software/micom/", "RHS100_Micom.bin", "/dev/dbox/oled0;/dev/mcu;" ] } elif info == "ini-1000ru": fwlist = [("fp", _("Front Panel"))] fwdata = { "micom": [ "http://micom.mynonpublic.com/software/micom/", "RHS100RU_Micom.bin", "/dev/dbox/oled0;/dev/mcu;"
class RcModel: RcModels = {} fp_version = str(getFPVersion()) procmodel = getBoxProc() remote = "dmm1" # default. Assume files for dmm1 exists def __init__(self): self.model = getBoxType() # cfg files has modelname rcname entries. # modelname is boxname optionally followed by .rctype for line in open( (resolveFilename(SCOPE_SKIN, 'rc_models/rc_models.cfg')), 'r'): if line.startswith(self.model): m, r = line.strip().split() self.RcModels[m] = r def rcIsDefault(self): # Default RC can only happen with DMM type remote controls... return self.model.startswith('dm') def getRcFile(self, ext): # check for rc/type every time so rctype changes will be noticed if os.path.exists('/proc/stb/ir/rc/type'): rc = open('/proc/stb/ir/rc/type').read().strip() modeltype = '%s.%s' % (self.model, rc) else: modeltype = None if modeltype is not None and modeltype in self.RcModels.keys(): remote = self.RcModels[modeltype] elif self.model in self.RcModels.keys(): remote = self.RcModels[self.model] elif self.model == "azboxhd" and not procmodel in ("elite", "ultra"): remote = "azboxhd" elif procmodel in ("elite", "ultra"): remote = "azboxelite" elif self.model == "et9x00" and not procmodel == "et9500": remote = "et9x00" elif procmodel == "et9500": remote = "et9500" elif self.model in ("et5x00", "et6x00") and not procmodel == "et6500": remote = "et6x00" elif procmodel == "et6500": remote = "et6500" elif self.model == "ventonhdx" or procmodel == "ini-3000" and fp_version.startswith( '1'): remote = "ini0" elif procmodel in ("ini-5000", "ini-7000", "ini-7012"): remote = "ini1" elif self.model == "ventonhdx" or procmodel == "ini-3000" and not fp_version.startswith( '1'): remote = "ini2" f = resolveFilename(SCOPE_SKIN, 'rc_models/' + remote + '.' + ext) if not os.path.exists(f): f = resolveFilename(SCOPE_SKIN, 'rc_models/dmm1.' + ext) return f def getRcImg(self): return self.getRcFile('png') def getRcPositions(self): return self.getRcFile('xml')