Converter API — arguments, properties and methods
A converter transforms data or affects downstream behaviour. It has no native widget and therefore no position, size, font or backgroundColor XML attributes. Its argument string is the text inside <convert>:
<widget source="global.CurrentTime" render="Label" position="24,24" size="250,40" font="Regular;28"> <convert type="ClockToText">WithSeconds</convert></widget>ClockToText receives WithSeconds in its constructor and reads upstream time; Label receives the converter’s text. font belongs to the Label widget. The contract recipes cover formatting, visibility, progress and list content.
What this API records
Abschnitt betitelt „What this API records“The catalogue covers 63 matching module classes in Components/Converter, including the base Converter and helper Poll. It records the constructor’s actual parsing code, class option maps, declared methods, inherited methods and effective properties. No converter code is executed to build the handbook.
The source-access list is a static reading aid. It includes methods as well as properties, and optional probes are identified separately. It is not a promise that all those inputs or outputs apply in every mode. For example, FrontendInfo has text, boolean and value, but a lock-status mode is intended for a boolean consumer, while SNR can feed a progress renderer.
Arguments are class-specific: one converter accepts a single exact token, another comma-separated flags, another a format string, and a template converter may parse a whole expression. There is no universal converter-argument schema. The embedded constructor is the exact syntax reference; the recipes explain the common patterns in prose.
Converter catalogue
Abschnitt betitelt „Converter catalogue“63 entries
Source snapshot f4135659cb. Current attribute counts exclude legacy names and structural XML names. Deprecated attributes and compatibility migrations have their own reference.
AnalogClock
lib/python/Components/Converter/AnalogClock.py, line 9 ↗
Class: Components.Converter.AnalogClock.AnalogClock. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: time. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.AnalogClock.AnalogClock
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
DEFAULT = 0
OMA_SEC = 1
OMA_MIN = 2
OMA_HOUR = 3AnalogClock.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"Hours": self.OMA_HOUR,
"Minutes": self.OMA_MIN,
"Seconds": self.OMA_SEC
}.get(tokens, self.DEFAULT)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ChannelNumbers
lib/python/Components/Converter/ChannelNumbers.py, line 5 ↗
Class: Components.Converter.ChannelNumbers.ChannelNumbers. Bases: none.
Helper: does not inherit Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Effective Python properties (0) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Declared methods (6) and inherited methods (0)
__init__(self)channel2frequency(self, channel, nim)getChannelNumber(self, frequency, nim)getMHz(self, frequency)getTunerDescription(self, nim)supportedChannels(self, nim)
Inherited methods
ClientsStreaming
lib/python/Components/Converter/ClientsStreaming.py, line 11 ↗
Class: Components.Converter.ClientsStreaming.ClientsStreaming. Bases: Converter, Poll.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (5) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
poll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollsuspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.ClientsStreaming.ClientsStreamingtext=property(getText)— Components.Converter.ClientsStreaming.ClientsStreaming
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
UNKNOWN = -1
REF = 0
IP = 1
NAME = 2
ENCODER = 3
NUMBER = 4
SHORT_ALL = 5
ALL = 6
INFO = 7
INFO_RESOLVE = 8
INFO_RESOLVE_SHORT = 9
EXTRA_INFO = 10
DATA = 11ClientsStreaming.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.poll_interval = 30000
self.poll_enabled = True
self.type = {
"ALL": self.ALL,
"DATA": self.DATA,
"ENCODER": self.ENCODER,
"EXTRA_INFO": self.EXTRA_INFO,
"INFO": self.INFO,
"INFO_RESOLVE": self.INFO_RESOLVE,
"INFO_RESOLVE_SHORT": self.INFO_RESOLVE_SHORT,
"IP": self.IP,
"NAME": self.NAME,
"NUMBER": self.NUMBER,
"REF": self.REF,
"SHORT_ALL": self.SHORT_ALL
}.get(tokens, self.UNKNOWN)
self.streamServer = eStreamServer.getInstance()
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Declared methods (5) and inherited methods (10)
Inherited methods
destroy(self)—Components.Element.Elementpoll(self)—Components.Converter.Poll.PollconnectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ClockToText
Formats upstream time (seconds or a tuple) as text. Built-in formats are in TIME_OPTIONS; Format:, Separator: and Parse: modify formatting and tokenisation.
lib/python/Components/Converter/ClockToText.py, line 7 ↗
Class: Components.Converter.ClockToText.ClockToText. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: time. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.ClockToText.ClockToText
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
TIME_OPTIONS = {'': lambda t: strftime(config.usage.time.short.value, localtime(t)), 'AsLength': lambda t: '' if t < 0 else f'{int(t // 60)}:{int(t % 60):02d}', 'AsLengthHours': lambda t: '' if t < 0 else f'{int(t // 3600)}:{int(t // 60 % 60):02d}', 'AsLengthSeconds': lambda t: '' if t < 0 else f'{int(t // 3600)}:{int(t // 60 % 60):02d}:{int(t % 60):02d}', 'Date': lambda t: strftime(config.usage.date.dayfull.value, localtime(t)), 'Default': lambda t: strftime(config.usage.time.short.value, localtime(t)), 'Display': lambda t: strftime(config.usage.time.display.value, localtime(t)), 'DisplayDate': lambda t: strftime(config.usage.date.display.value, localtime(t)), 'DisplayDayDate': lambda t: strftime(config.usage.date.displayday.value, localtime(t)), 'DisplayTime': lambda t: strftime(config.usage.time.display.value, localtime(t)), 'Full': lambda t: strftime(f'{config.usage.date.dayshort.value} {config.usage.time.short.value}', localtime(t)), 'FullDate': lambda t: strftime(config.usage.date.shortdayfull.value, localtime(t)), 'InMinutes': lambda t: ngettext('%d Min', '%d Mins', t // 60) % (t // 60), 'LongDate': lambda t: strftime(config.usage.date.dayshortfull.value, localtime(t)), 'LongFullDate': lambda t: strftime(f'{config.usage.date.daylong.value} {config.usage.time.short.value}', localtime(t)), 'Mixed': lambda t: strftime(config.usage.time.mixed.value, localtime(t)), 'ShortDate': lambda t: strftime(config.usage.date.dayshort.value, localtime(t)), 'ShortFullDate': lambda t: strftime(config.usage.date.daylong.value, localtime(t)), 'Timestamp': lambda t: str(t), 'VFD': lambda t: strftime(f'{config.usage.date.compact.value}{config.usage.time.display.value}', localtime(t)), 'VFD08': lambda t: strftime(config.usage.time.display.value, localtime(t)), 'VFD11': lambda t: strftime(f'{config.usage.date.compressed.value}{config.usage.time.display.value}', localtime(t)), 'VFD12': lambda t: strftime(f'{config.usage.date.compact.value}{config.usage.time.display.value}', localtime(t)), 'VFD14': lambda t: strftime(f'{config.usage.date.short.value} {config.usage.time.display.value}', localtime(t)), 'VFD18': lambda t: strftime(f'{config.usage.date.dayshort.value} {config.usage.time.display.value}', localtime(t)), 'WithSeconds': lambda t: strftime(config.usage.time.long.value, localtime(t))}ClockToText.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.separator = " - "
self.formats = []
tokens = tokens.lstrip()
if tokens.startswith("Parse"):
parse = tokens[5:6]
else:
# OpenViX used ";" as the only ClockToText token separator. For legacy support skip the
# multiple parse character processing if the first token is "Format". Otherwise, some
# builds use ";" as a separator, most use ",". If "Parse" is NOT used change "," to ";".
parse = ";"
if not tokens.startswith("Format"):
tokens = tokens.replace(",", ";")
for arg in [x.lstrip() for x in tokens.split(parse)]:
if arg.startswith("Format"):
self.formats.append(eval(f"lambda t: strftime(\"{arg[7:]}\", localtime(t))"))
elif arg.startswith("Separator"):
self.separator = arg[10:]
elif not arg.startswith(("NoSpace", "Parse", "Proportional")): # Ignore old OpenViX options and the already processed "Parse".
self.formats.append(self.TIME_OPTIONS.get(arg, lambda t: "???"))
if not self.formats:
self.formats.append(self.TIME_OPTIONS.get("Default", lambda t: "???"))
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
Combine
lib/python/Components/Converter/Combine.py, line 5 ↗
Class: Components.Converter.Combine.Combine. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementvalue=property(getValue)— Components.Converter.Combine.Combine
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
SINGLE_SOURCE = FalseCombine.__init__(self, tokens=None, func=None)
def __init__(self, tokens=None, func=None):
Converter.__init__(self, tokens)
assert func is not None
self.func = func
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ConditionalShowHide
Controls downstream visibility from source.boolean, optionally inverted or blinking. It forwards other attribute requests upstream and is not simply a boolean-to-text conversion.
lib/python/Components/Converter/ConditionalShowHide.py, line 6 ↗
Class: Components.Converter.ConditionalShowHide.ConditionalShowHide. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: boolean. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (1) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Element
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
ConditionalShowHide.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
tokenDictionary = {
"Blink": ("blink", True),
"Invert": ("invert", True)
}
self.blink = False
self.invert = False
self.blinkTime = 500
parse = ","
tokens = tokens.replace(";", parse) # Some builds use ";" as a separator, most use ",".
tokens = [x.strip() for x in tokens.split(parse)]
for token in tokens:
if token.isdigit():
self.blinkTime = int(token)
continue
variable, value = tokenDictionary.get(token, (None, None))
if variable:
setattr(self, variable, value)
elif token:
print(f"[ConditionalShowHide] Error: Converter argument '{token}' is invalid!")
if self.blink:
self.timer = eTimer()
self.timer.callback.append(self.blinker)
else:
self.timer = None
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (9) and inherited methods (8)
__init__(self, tokens)blinker(self)calcVisibility(self)changed(self, what)connectDownstream(self, downstream)destroy(self)__getattr__(self, name)startBlinking(self)stopBlinking(self)
Inherited methods
connectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ConfigEntryTest
lib/python/Components/Converter/ConfigEntryTest.py, line 6 ↗
Class: Components.Converter.ConfigEntryTest.ConfigEntryTest. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: boolean. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.ConfigEntryTest.ConfigEntryTest
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
ConfigEntryTest.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
args = [x.strip() for x in tokens.split(",")]
self.argError = False
self.checkSourceBoolean = False
self.checkInvertSourceBoolean = False
self.invert = False
self.ignore = False
self.configKey = None
self.configValue = None
if len(args) > 1 and "config." in args[0]:
self.configKey = args[0]
self.configValue = args[1]
argMap = {
"CheckInvertSourceBoolean": "checkInvertSourceBoolean",
"CheckSourceBoolean": "checkSourceBoolean",
"Ignore": "ignore",
"Invert": "invert"
}
for arg in args[2:5]: # Check args[2], args[3] and args[4].
if arg in argMap:
setattr(self, argMap[arg], True)
else:
self.argError = True
else:
self.argError = True
if self.argError:
print(f"[ConfigEntryTest] Converter got incorrect arguments '{str(args)}'! The arg[0] must start with 'config.', arg[1] is the compare string, arg[2] - arg[4] are optional arguments and must be 'Invert', 'Ignore', 'CheckSourceBoolean' or 'CheckInvertSourceBoolean'.")
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ConfigEntryTestVisible
lib/python/Components/Converter/ConfigEntryTestVisible.py, line 5 ↗
Class: Components.Converter.ConfigEntryTestVisible.ConfigEntryTestVisible. Bases: ConfigEntryTest.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.ConfigEntryTest.ConfigEntryTest: accessesboolean; probesnone.Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.ConfigEntryTest.ConfigEntryTest
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
ConfigEntryTestVisible.__init__(self, tokens)
def __init__(self, tokens):
ConfigEntryTest.__init__(self, tokens)
ConfigEntryTest.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
args = [x.strip() for x in tokens.split(",")]
self.argError = False
self.checkSourceBoolean = False
self.checkInvertSourceBoolean = False
self.invert = False
self.ignore = False
self.configKey = None
self.configValue = None
if len(args) > 1 and "config." in args[0]:
self.configKey = args[0]
self.configValue = args[1]
argMap = {
"CheckInvertSourceBoolean": "checkInvertSourceBoolean",
"CheckSourceBoolean": "checkSourceBoolean",
"Ignore": "ignore",
"Invert": "invert"
}
for arg in args[2:5]: # Check args[2], args[3] and args[4].
if arg in argMap:
setattr(self, argMap[arg], True)
else:
self.argError = True
else:
self.argError = True
if self.argError:
print(f"[ConfigEntryTest] Converter got incorrect arguments '{str(args)}'! The arg[0] must start with 'config.', arg[1] is the compare string, arg[2] - arg[4] are optional arguments and must be 'Invert', 'Ignore', 'CheckSourceBoolean' or 'CheckInvertSourceBoolean'.")
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (4) and inherited methods (10)
Inherited methods
connectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.ConvertergetBoolean(self)—Components.Converter.ConfigEntryTest.ConfigEntryTest
Converter
Base Element subclass storing the argument string. Concrete converters expose properties or affect downstream elements.
lib/python/Components/Converter/Converter.py, line 4 ↗
Class: Components.Converter.Converter.Converter. Bases: Element.
Inherits Converter. Use a concrete implementation for a skin chain.
Direct upstream accesses declared here: handleCommand. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Effective Python properties (1) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Element
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.Element
ConverterRotator
Static Text Converter Rotator
lib/python/Components/Converter/ConverterRotator.py, line 13 ↗
Class: Components.Converter.ConverterRotator.ConverterRotator. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.ConverterRotator.ConverterRotator
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
ConverterRotator.__init__(self, tokens)
def __init__(self, tokens):
Poll.__init__(self)
Converter.__init__(self, tokens)
self.mainstream = None
self.sourceList = []
self.sourceIndex = -1
if tokens and tokens.isdigit():
self.poll_interval = int(tokens) * 1000
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (5) and inherited methods (9)
__init__(self, tokens)changed(self, what, parent=None)doSuspend(self, suspended)getText(self)poll(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.Elementdestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converter
CryptoInfo
lib/python/Components/Converter/CryptoInfo.py, line 8 ↗
Class: Components.Converter.CryptoInfo.CryptoInfo. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.CryptoInfo.CryptoInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
CryptoInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.type = tokens
self.active = False # TODO what's this
self.visible = config.usage.show_cryptoinfo.value > 0
self.textvalue = "" # TODO what's this
self.ecmdata = GetEcmInfo()
def ShowCryptoInfo(configElement):
if configElement.value > 0:
self.poll_interval = 1000
self.poll_enabled = True
else:
self.poll_enabled = False
config.usage.show_cryptoinfo.addNotifier(ShowCryptoInfo)
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (12)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
EGAnalogic
lib/python/Components/Converter/EGAnalogic.py, line 8 ↗
Class: Components.Converter.EGAnalogic.EGAnalogic. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: time. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementvalue=property(getValue)— Components.Converter.EGAnalogic.EGAnalogic
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
EGAnalogic.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"Hours": 3,
"Minutes": 2,
"Seconds": 1
}.get(tokens, -1)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
EtAnalogClock
lib/python/Components/Converter/EtAnalogClock.py, line 4 ↗
Class: Components.Converter.EtAnalogClock.EtAnalogClock. Bases: AnalogClock.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.AnalogClock.AnalogClock: accessestime; probesnone.Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.AnalogClock.AnalogClock
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
AnalogClock.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"Hours": self.OMA_HOUR,
"Minutes": self.OMA_MIN,
"Seconds": self.OMA_SEC
}.get(tokens, self.DEFAULT)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (0) and inherited methods (12)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.ConvertergetText(self)—Components.Converter.AnalogClock.AnalogClock
EventInfo
Extracts event text, timing, progress and metadata. The selected constructor mode determines which output properties are meaningful.
lib/python/Components/Converter/EventInfo.py, line 157 ↗
Class: Components.Converter.EventInfo.EventInfo. Bases: Converter, Poll.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: event, info, service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (7) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
poll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollsuspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.EventInfo.EventInfotext=property(getText)— Components.Converter.EventInfo.EventInfotime=property(getTime)— Components.Converter.EventInfo.EventInfovalue=property(getValue)— Components.Converter.EventInfo.EventInfo
range = 1000 — Components.Converter.EventInfo.EventInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
CRID_EPISODE = 0
CRID_RECOMMENDATION = 1
CRID_SERIES = 2
DURATION = 3
ELAPSED = 4
ELAPSED_VFD = 5
END_TIME = 6
EPG_SOURCE = 7
EXTENDED_DESCRIPTION = 8
EXTRA_DATA = 9
FILE_SIZE = 10
FULL_DESCRIPTION = 11
GENRE = 12
GENRE_LIST = 13
ID = 14
MEDIA_PATH = 15
NAME = 16
NAME_NEXT = 17
NAME_NEXT2 = 18
NAME_NOW = 19
NEXT_DESCRIPTION = 20
NEXT_DURATION = 21
NEXT_END_TIME = 22
NEXT_START_TIME = 23
NEXT_TIMES = 24
PDC = 25
PDC_TIME = 26
PDC_TIME_SHORT = 27
PROGRESS = 28
RATING = 29
RATING_CODE = 30
RATING_COUNTRY = 31
RATING_ICON = 32
RATING_RAW = 33
RATING_TEXT_AND_COLOR = 34
REMAINING = 35
REMAINING_VFD = 36
RUNNING_STATUS = 37
SERVICE_NAME = 38
SERVICE_REFERENCE = 39
SHORT_DESCRIPTION = 40
START_TIME = 41
THIRD_DESCRIPTION = 42
THIRD_DURATION = 43
THIRD_END_TIME = 44
THIRD_NAME = 45
THIRD_NAME2 = 46
THIRD_START_TIME = 47
THIRD_TIMES = 48
TIMES = 49
RATING_SHORT = 0
RATING_LONG = 1
RATING_IMAGE = 2
RATING_COLOR = 3
RATING_NORMAL = 0
RATING_DEFAULT = 1
range = 1000EventInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
tokenDictionary = {
# Arguments...
"CRIDEpisode": ("token", self.CRID_EPISODE, 0),
"CRIDRecommendation": ("token", self.CRID_RECOMMENDATION, 0),
"CRIDSeries": ("token", self.CRID_SERIES, 0),
"Description": ("token", self.SHORT_DESCRIPTION, 0),
"Duration": ("token", self.DURATION, 0),
"EPGSource": ("token", self.EPG_SOURCE, 0),
"Elapsed": ("token", self.ELAPSED, 60000),
"ElapsedVFD": ("token", self.ELAPSED_VFD, 60000),
"EndTime": ("token", self.END_TIME, 0),
"ExtendedDescription": ("token", self.EXTENDED_DESCRIPTION, 0),
"ExtraData": ("token", self.EXTRA_DATA, 0),
"FileSize": ("token", self.FILE_SIZE, 0),
"FullDescription": ("token", self.FULL_DESCRIPTION, 0),
"Genre": ("token", self.GENRE, 0),
"GenreList": ("token", self.GENRE_LIST, 0),
"ID": ("token", self.ID, 0),
"IsRunningStatus": ("token", self.RUNNING_STATUS, 0), # Deprecated.
"MediaPath": ("token", self.MEDIA_PATH, 0),
"Name": ("token", self.NAME, 0),
"NameNext": ("token", self.NAME_NEXT, 0),
"NameNextOnly": ("token", self.NAME_NEXT2, 0),
"NameNow": ("token", self.NAME_NOW, 0),
"NextDescription": ("token", self.NEXT_DESCRIPTION, 0),
"NextDuration": ("token", self.NEXT_DURATION, 0),
"NextEndTime": ("token", self.NEXT_END_TIME, 0),
"NextName": ("token", self.NAME_NEXT, 0),
"NextNameOnly": ("token", self.NAME_NEXT2, 0),
"NextStartTime": ("token", self.NEXT_START_TIME, 0),
"NextTimes": ("token", self.NEXT_TIMES, 0),
"NowName": ("token", self.NAME_NOW, 0),
"Pdc": ("token", self.PDC, 0),
"PdcTime": ("token", self.PDC_TIME, 0),
"PdcTimeShort": ("token", self.PDC_TIME_SHORT, 0),
"Progress": ("token", self.PROGRESS, 30000),
"Rating": ("token", self.RATING, 0),
"RatingCode": ("token", self.RATING_CODE, 0),
"RatingCountry": ("token", self.RATING_COUNTRY, 0),
"RatingIcon": ("token", self.RATING_ICON, 0),
"RatingRaw": ("token", self.RATING_RAW, 0),
"RatingTextAndColor": ("token", self.RATING_TEXT_AND_COLOR, 0),
"RawRating": ("token", self.RATING_RAW, 0),
"Remaining": ("token", self.REMAINING, 60000),
"RemainingVFD": ("token", self.REMAINING_VFD, 60000),
"RunningStatus": ("token", self.RUNNING_STATUS, 0),
"ServiceName": ("token", self.SERVICE_NAME, 0),
"ServiceReference": ("token", self.SERVICE_REFERENCE, 0),
"ShortDescription": ("token", self.SHORT_DESCRIPTION, 0),
"SmallRating": ("token", self.RATING_CODE, 0), # Deprecated?
"StartTime": ("token", self.START_TIME, 0),
"ThirdDescription": ("token", self.THIRD_DESCRIPTION, 0),
"ThirdDuration": ("token", self.THIRD_DURATION, 0),
"ThirdEndTime": ("token", self.THIRD_END_TIME, 0),
"ThirdName": ("token", self.THIRD_NAME, 0),
"ThirdNameOnly": ("token", self.THIRD_NAME2, 0),
"ThirdStartTime": ("token", self.THIRD_START_TIME, 0),
"ThirdTimes": ("token", self.THIRD_TIMES, 0),
"Times": ("token", self.TIMES, 0),
"VFDElapsed": ("token", self.ELAPSED_VFD, 60000),
"VFDRemaining": ("token", self.REMAINING_VFD, 60000),
# Options...
"NotSeparated": ("separator", "\n", 0),
"NotTrimmed": ("trim", False, 0),
"Separated": ("separator", "\n\n", 0),
"SeparatorComma": ("separator", ", ", 0),
"SeparatorSlash": ("separator", "/", 0),
"Trimmed": ("trim", True, 0)
}
self.token = self.NAME
self.separator = None
self.trim = False
parse = ","
tokens = tokens.replace(";", parse) # Some builds use ";" as a separator, most use ",".
tokens = [x.strip() for x in tokens.split(parse)]
for token in tokens:
variable, value, poll = tokenDictionary.get(token, (None, None, 0))
if variable:
setattr(self, variable, value)
if variable == "token" and poll:
self.poll_interval = poll
self.poll_enabled = True
elif token:
print(f"[EventInfo] Error: Converter argument '{token}' is invalid!")
if self.separator is None:
self.separator = tokenDictionary["SeparatorComma" if self.token == self.GENRE_LIST else "NotSeparated"][1]
self.epgCache = eEPGCache.getInstance()
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Declared methods (6) and inherited methods (11)
Inherited methods
destroy(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementpoll(self)—Components.Converter.Poll.PollconnectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
EventName
lib/python/Components/Converter/EventName.py, line 4 ↗
Class: Components.Converter.EventName.EventName. Bases: EventInfo.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.EventInfo.EventInfo: accessesevent, info, service; probesnone.Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (7) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
poll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollsuspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.EventInfo.EventInfotext=property(getText)— Components.Converter.EventInfo.EventInfotime=property(getTime)— Components.Converter.EventInfo.EventInfovalue=property(getValue)— Components.Converter.EventInfo.EventInfo
range = 1000 — Components.Converter.EventInfo.EventInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
EventName.__init__(self, tokens)
def __init__(self, tokens):
EventInfo.__init__(self, tokens)
EventInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
tokenDictionary = {
# Arguments...
"CRIDEpisode": ("token", self.CRID_EPISODE, 0),
"CRIDRecommendation": ("token", self.CRID_RECOMMENDATION, 0),
"CRIDSeries": ("token", self.CRID_SERIES, 0),
"Description": ("token", self.SHORT_DESCRIPTION, 0),
"Duration": ("token", self.DURATION, 0),
"EPGSource": ("token", self.EPG_SOURCE, 0),
"Elapsed": ("token", self.ELAPSED, 60000),
"ElapsedVFD": ("token", self.ELAPSED_VFD, 60000),
"EndTime": ("token", self.END_TIME, 0),
"ExtendedDescription": ("token", self.EXTENDED_DESCRIPTION, 0),
"ExtraData": ("token", self.EXTRA_DATA, 0),
"FileSize": ("token", self.FILE_SIZE, 0),
"FullDescription": ("token", self.FULL_DESCRIPTION, 0),
"Genre": ("token", self.GENRE, 0),
"GenreList": ("token", self.GENRE_LIST, 0),
"ID": ("token", self.ID, 0),
"IsRunningStatus": ("token", self.RUNNING_STATUS, 0), # Deprecated.
"MediaPath": ("token", self.MEDIA_PATH, 0),
"Name": ("token", self.NAME, 0),
"NameNext": ("token", self.NAME_NEXT, 0),
"NameNextOnly": ("token", self.NAME_NEXT2, 0),
"NameNow": ("token", self.NAME_NOW, 0),
"NextDescription": ("token", self.NEXT_DESCRIPTION, 0),
"NextDuration": ("token", self.NEXT_DURATION, 0),
"NextEndTime": ("token", self.NEXT_END_TIME, 0),
"NextName": ("token", self.NAME_NEXT, 0),
"NextNameOnly": ("token", self.NAME_NEXT2, 0),
"NextStartTime": ("token", self.NEXT_START_TIME, 0),
"NextTimes": ("token", self.NEXT_TIMES, 0),
"NowName": ("token", self.NAME_NOW, 0),
"Pdc": ("token", self.PDC, 0),
"PdcTime": ("token", self.PDC_TIME, 0),
"PdcTimeShort": ("token", self.PDC_TIME_SHORT, 0),
"Progress": ("token", self.PROGRESS, 30000),
"Rating": ("token", self.RATING, 0),
"RatingCode": ("token", self.RATING_CODE, 0),
"RatingCountry": ("token", self.RATING_COUNTRY, 0),
"RatingIcon": ("token", self.RATING_ICON, 0),
"RatingRaw": ("token", self.RATING_RAW, 0),
"RatingTextAndColor": ("token", self.RATING_TEXT_AND_COLOR, 0),
"RawRating": ("token", self.RATING_RAW, 0),
"Remaining": ("token", self.REMAINING, 60000),
"RemainingVFD": ("token", self.REMAINING_VFD, 60000),
"RunningStatus": ("token", self.RUNNING_STATUS, 0),
"ServiceName": ("token", self.SERVICE_NAME, 0),
"ServiceReference": ("token", self.SERVICE_REFERENCE, 0),
"ShortDescription": ("token", self.SHORT_DESCRIPTION, 0),
"SmallRating": ("token", self.RATING_CODE, 0), # Deprecated?
"StartTime": ("token", self.START_TIME, 0),
"ThirdDescription": ("token", self.THIRD_DESCRIPTION, 0),
"ThirdDuration": ("token", self.THIRD_DURATION, 0),
"ThirdEndTime": ("token", self.THIRD_END_TIME, 0),
"ThirdName": ("token", self.THIRD_NAME, 0),
"ThirdNameOnly": ("token", self.THIRD_NAME2, 0),
"ThirdStartTime": ("token", self.THIRD_START_TIME, 0),
"ThirdTimes": ("token", self.THIRD_TIMES, 0),
"Times": ("token", self.TIMES, 0),
"VFDElapsed": ("token", self.ELAPSED_VFD, 60000),
"VFDRemaining": ("token", self.REMAINING_VFD, 60000),
# Options...
"NotSeparated": ("separator", "\n", 0),
"NotTrimmed": ("trim", False, 0),
"Separated": ("separator", "\n\n", 0),
"SeparatorComma": ("separator", ", ", 0),
"SeparatorSlash": ("separator", "/", 0),
"Trimmed": ("trim", True, 0)
}
self.token = self.NAME
self.separator = None
self.trim = False
parse = ","
tokens = tokens.replace(";", parse) # Some builds use ";" as a separator, most use ",".
tokens = [x.strip() for x in tokens.split(parse)]
for token in tokens:
variable, value, poll = tokenDictionary.get(token, (None, None, 0))
if variable:
setattr(self, variable, value)
if variable == "token" and poll:
self.poll_interval = poll
self.poll_enabled = True
elif token:
print(f"[EventInfo] Error: Converter argument '{token}' is invalid!")
if self.separator is None:
self.separator = tokenDictionary["SeparatorComma" if self.token == self.GENRE_LIST else "NotSeparated"][1]
self.epgCache = eEPGCache.getInstance()
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Declared methods (1) and inherited methods (16)
Inherited methods
destroy(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementpoll(self)—Components.Converter.Poll.PollconnectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, what)—Components.Converter.EventInfo.EventInfosetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.ConvertergetBoolean(self)—Components.Converter.EventInfo.EventInfogetText(self)—Components.Converter.EventInfo.EventInfogetTime(self)—Components.Converter.EventInfo.EventInfogetValue(self)—Components.Converter.EventInfo.EventInfo
EventTime
Compatibility subclass of EventInfo. Its constructor and properties are inherited from EventInfo; inspect that base contract for available modes.
lib/python/Components/Converter/EventTime.py, line 4 ↗
Class: Components.Converter.EventTime.EventTime. Bases: EventInfo.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.EventInfo.EventInfo: accessesevent, info, service; probesnone.Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (7) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
poll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollsuspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.EventInfo.EventInfotext=property(getText)— Components.Converter.EventInfo.EventInfotime=property(getTime)— Components.Converter.EventInfo.EventInfovalue=property(getValue)— Components.Converter.EventInfo.EventInfo
range = 1000 — Components.Converter.EventInfo.EventInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
EventTime.__init__(self, tokens)
def __init__(self, tokens):
EventInfo.__init__(self, tokens)
EventInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
tokenDictionary = {
# Arguments...
"CRIDEpisode": ("token", self.CRID_EPISODE, 0),
"CRIDRecommendation": ("token", self.CRID_RECOMMENDATION, 0),
"CRIDSeries": ("token", self.CRID_SERIES, 0),
"Description": ("token", self.SHORT_DESCRIPTION, 0),
"Duration": ("token", self.DURATION, 0),
"EPGSource": ("token", self.EPG_SOURCE, 0),
"Elapsed": ("token", self.ELAPSED, 60000),
"ElapsedVFD": ("token", self.ELAPSED_VFD, 60000),
"EndTime": ("token", self.END_TIME, 0),
"ExtendedDescription": ("token", self.EXTENDED_DESCRIPTION, 0),
"ExtraData": ("token", self.EXTRA_DATA, 0),
"FileSize": ("token", self.FILE_SIZE, 0),
"FullDescription": ("token", self.FULL_DESCRIPTION, 0),
"Genre": ("token", self.GENRE, 0),
"GenreList": ("token", self.GENRE_LIST, 0),
"ID": ("token", self.ID, 0),
"IsRunningStatus": ("token", self.RUNNING_STATUS, 0), # Deprecated.
"MediaPath": ("token", self.MEDIA_PATH, 0),
"Name": ("token", self.NAME, 0),
"NameNext": ("token", self.NAME_NEXT, 0),
"NameNextOnly": ("token", self.NAME_NEXT2, 0),
"NameNow": ("token", self.NAME_NOW, 0),
"NextDescription": ("token", self.NEXT_DESCRIPTION, 0),
"NextDuration": ("token", self.NEXT_DURATION, 0),
"NextEndTime": ("token", self.NEXT_END_TIME, 0),
"NextName": ("token", self.NAME_NEXT, 0),
"NextNameOnly": ("token", self.NAME_NEXT2, 0),
"NextStartTime": ("token", self.NEXT_START_TIME, 0),
"NextTimes": ("token", self.NEXT_TIMES, 0),
"NowName": ("token", self.NAME_NOW, 0),
"Pdc": ("token", self.PDC, 0),
"PdcTime": ("token", self.PDC_TIME, 0),
"PdcTimeShort": ("token", self.PDC_TIME_SHORT, 0),
"Progress": ("token", self.PROGRESS, 30000),
"Rating": ("token", self.RATING, 0),
"RatingCode": ("token", self.RATING_CODE, 0),
"RatingCountry": ("token", self.RATING_COUNTRY, 0),
"RatingIcon": ("token", self.RATING_ICON, 0),
"RatingRaw": ("token", self.RATING_RAW, 0),
"RatingTextAndColor": ("token", self.RATING_TEXT_AND_COLOR, 0),
"RawRating": ("token", self.RATING_RAW, 0),
"Remaining": ("token", self.REMAINING, 60000),
"RemainingVFD": ("token", self.REMAINING_VFD, 60000),
"RunningStatus": ("token", self.RUNNING_STATUS, 0),
"ServiceName": ("token", self.SERVICE_NAME, 0),
"ServiceReference": ("token", self.SERVICE_REFERENCE, 0),
"ShortDescription": ("token", self.SHORT_DESCRIPTION, 0),
"SmallRating": ("token", self.RATING_CODE, 0), # Deprecated?
"StartTime": ("token", self.START_TIME, 0),
"ThirdDescription": ("token", self.THIRD_DESCRIPTION, 0),
"ThirdDuration": ("token", self.THIRD_DURATION, 0),
"ThirdEndTime": ("token", self.THIRD_END_TIME, 0),
"ThirdName": ("token", self.THIRD_NAME, 0),
"ThirdNameOnly": ("token", self.THIRD_NAME2, 0),
"ThirdStartTime": ("token", self.THIRD_START_TIME, 0),
"ThirdTimes": ("token", self.THIRD_TIMES, 0),
"Times": ("token", self.TIMES, 0),
"VFDElapsed": ("token", self.ELAPSED_VFD, 60000),
"VFDRemaining": ("token", self.REMAINING_VFD, 60000),
# Options...
"NotSeparated": ("separator", "\n", 0),
"NotTrimmed": ("trim", False, 0),
"Separated": ("separator", "\n\n", 0),
"SeparatorComma": ("separator", ", ", 0),
"SeparatorSlash": ("separator", "/", 0),
"Trimmed": ("trim", True, 0)
}
self.token = self.NAME
self.separator = None
self.trim = False
parse = ","
tokens = tokens.replace(";", parse) # Some builds use ";" as a separator, most use ",".
tokens = [x.strip() for x in tokens.split(parse)]
for token in tokens:
variable, value, poll = tokenDictionary.get(token, (None, None, 0))
if variable:
setattr(self, variable, value)
if variable == "token" and poll:
self.poll_interval = poll
self.poll_enabled = True
elif token:
print(f"[EventInfo] Error: Converter argument '{token}' is invalid!")
if self.separator is None:
self.separator = tokenDictionary["SeparatorComma" if self.token == self.GENRE_LIST else "NotSeparated"][1]
self.epgCache = eEPGCache.getInstance()
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Declared methods (1) and inherited methods (16)
Inherited methods
destroy(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementpoll(self)—Components.Converter.Poll.PollconnectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, what)—Components.Converter.EventInfo.EventInfosetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.ConvertergetBoolean(self)—Components.Converter.EventInfo.EventInfogetText(self)—Components.Converter.EventInfo.EventInfogetTime(self)—Components.Converter.EventInfo.EventInfogetValue(self)—Components.Converter.EventInfo.EventInfo
ExtendedServiceInfo
lib/python/Components/Converter/ExtendedServiceInfo.py, line 11 ↗
Class: Components.Converter.ExtendedServiceInfo.ExtendedServiceInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.ExtendedServiceInfo.ExtendedServiceInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
SERVICENAME = 0
SERVICENUMBER = 1
ORBITALPOSITION = 2
SATNAME = 3
PROVIDER = 4
FROMCONFIG = 5
ALL = 6ExtendedServiceInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.satNames = {}
self.readSatXml()
self.getLists()
self.type = {
"Config": self.FROMCONFIG,
"OrbitalPosition": self.ORBITALPOSITION,
"Provider": self.PROVIDER,
"SatName": self.SATNAME,
"ServiceName": self.SERVICENAME,
"ServiceNumber": self.SERVICENUMBER
}.get(tokens, self.ALL)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (8) and inherited methods (10)
__init__(self, tokens)changed(self, what)getListFromRef(self, ref)getLists(self)getOrbitalPosition(self, info)getServiceNumber(self, name, ref)getText(self)readSatXml(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ExtremeInfo
lib/python/Components/Converter/ExtremeInfo.py, line 9 ↗
Class: Components.Converter.ExtremeInfo.ExtremeInfo. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (5) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollboolean=property(getBoolean)— Components.Converter.ExtremeInfo.ExtremeInfotext=property(getText)— Components.Converter.ExtremeInfo.ExtremeInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
TUNERINFO = 0
CAMNAME = 1
NUMBER = 2
ECMINFO = 3
IRDCRYPT = 4
SECACRYPT = 5
NAGRACRYPT = 6
VIACRYPT = 7
CONAXCRYPT = 8
BETACRYPT = 9
CRWCRYPT = 10
DREAMCRYPT = 11
NDSCRYPT = 12
IRDECM = 13
SECAECM = 14
NAGRAECM = 15
VIAECM = 16
CONAXECM = 17
BETAECM = 18
CRWECM = 19
DREAMECM = 20
NDSECM = 21
CAIDINFO = 22
FTA = 23
EMU = 24
CRD = 25
NET = 26
TUNERINFOBP = 27
BISCRYPT = 28
BISECM = 29
MGCAMD = 30
BULCRYPT = 31
BULECM = 32
SATELLITES = {3590: 'Thor/Intelsat (1.0W)', 3560: 'Amos (4.0W)', 3550: 'Atlantic Bird (5.0W)', 3530: 'Nilesat/Atlantic Bird (7.0W)', 3520: 'Atlantic Bird (8.0W)', 3475: 'Atlantic Bird (12.5W)', 3460: 'Express (14.0W)', 3450: 'Telstar (15.0W)', 3420: 'Intelsat (18.0W)', 3380: 'Nss (22.0W)', 3355: 'Intelsat (24.5W)', 3325: 'Intelsat (27.5W)', 3300: 'Hispasat (30.0W)', 3285: 'Intelsat (31.5W)', 3170: 'Intelsat (43.0W)', 3150: 'Intelsat (45.0W)', 3070: 'Intelsat (53.0W)', 3045: 'Intelsat (55.5W)', 3020: 'Intelsat 9 (58.0W)', 2990: 'Amazonas (61.0W)', 2900: 'Star One (70.0W)', 2880: 'AMC 6 (72.0W)', 2875: 'Echostar 6 (72.7W)', 2860: 'Horizons (74.0W)', 2810: 'AMC5 (79.0W)', 2780: 'NIMIQ 4 (82.0W)', 2690: 'NIMIQ 1 (91.0W)', 3592: 'Thor/Intelsat (0.8W)', 2985: 'Echostar 3,12 (61.5W)', 2830: 'Echostar 8 (77.0W)', 2630: 'Galaxy 19 (97.0W)', 2500: 'Echostar 10,11 (110.0W)', 2502: 'DirectTV 5 (110.0W)', 2410: 'Echostar 7 Anik F3 (119.0W)', 2391: 'Galaxy 23 (121.0W)', 2390: 'Echostar 9 (121.0W)', 2412: 'DirectTV 7S (119.0W)', 2310: 'Galaxy 27 (129.0W)', 2311: 'Ciel 2 (129.0W)', 2120: 'Echostar 2 (148.0W)', 1100: 'BSat 1A,2A (110.0E)', 1101: 'N-Sat 110 (110.0E)', 1131: 'KoreaSat 5 (113.0E)', 1440: 'SuperBird 7,C2 (144.0E)', 1006: 'AsiaSat 2 (100.5E)', 1030: 'Express A2 (103.0E)', 1056: 'Asiasat 3S (105.5E)', 1082: 'NSS 11 (108.2E)', 881: 'ST1 (88.0E)', 900: 'Yamal 201 (90.0E)', 917: 'Mesat (91.5E)', 950: 'Insat 4B (95.0E)', 951: 'NSS 6 (95.0E)', 765: 'Telestar (76.5E)', 785: 'ThaiCom 5 (78.5E)', 800: 'Express (80.0E)', 830: 'Insat 4A (83.0E)', 850: 'Intelsat 709 (85.2E)', 750: 'Abs (75.0E)', 720: 'Intelsat (72.0E)', 705: 'Eutelsat W5 (70.5E)', 685: 'Intelsat (68.5E)', 620: 'Intelsat 902 (62.0E)', 600: 'Intelsat 904 (60.0E)', 570: 'Nss (57.0E)', 530: 'Express AM22 (53.0E)', 480: 'Eutelsat 2F2 (48.0E)', 450: 'Intelsat (45.0E)', 420: 'Turksat 2A (42.0E)', 400: 'Express AM1 (40.0E)', 390: 'Hellas Sat 2 (39.0E)', 380: 'Paksat 1 (38.0E)', 360: 'Eutelsat Sesat (36.0E)', 335: 'Astra 1M (33.5E)', 330: 'Eurobird 3 (33.0E)', 328: 'Galaxy 11 (32.8E)', 315: 'Astra 5A (31.5E)', 310: 'Turksat (31.0E)', 305: 'Arabsat (30.5E)', 285: 'Eurobird 1 (28.5E)', 284: 'Eurobird/Astra (28.2E)', 282: 'Eurobird/Astra (28.2E)', 1220: 'AsiaSat (122.0E)', 1380: 'Telstar 18 (138.0E)', 260: 'Badr 3/4 (26.0E)', 255: 'Eurobird 2 (25.5E)', 235: 'Astra 1E (23.5E)', 215: 'Eutelsat (21.5E)', 216: 'Eutelsat W6 (21.6E)', 210: 'AfriStar 1 (21.0E)', 192: 'Astra 1F (19.2E)', 160: 'Eutelsat W2 (16.0E)', 130: 'Hot Bird 6,7A,8 (13.0E)', 100: 'Eutelsat W1 (10.0E)', 90: 'Eurobird 9 (9.0E)', 70: 'Eutelsat W3A (7.0E)', 50: 'Sirius 4 (5.0E)', 48: 'Sirius 4 (4.8E)', 30: 'Telecom 2 (3.0E)'}ExtremeInfo.__init__(self, tokens)
def __init__(self, tokens):
Poll.__init__(self)
Converter.__init__(self, tokens)
self.list = []
self.getLists()
self.type = {
"BetaCrypt": self.BETACRYPT,
"BetaEcm": self.BETAECM,
"BisCrypt": self.BISCRYPT,
"BisEcm": self.BISECM,
"BulCrypt": self.BULCRYPT,
"BulEcm": self.BULECM,
"CaidInfo": self.CAIDINFO,
"CamName": self.CAMNAME,
"ConaxCrypt": self.CONAXCRYPT,
"ConaxEcm": self.CONAXECM,
"Crd": self.CRD,
"CrwCrypt": self.CRWCRYPT,
"CrwEcm": self.CRWECM,
"DreamCrypt": self.DREAMCRYPT,
"DreamEcm": self.DREAMECM,
"EcmInfo": self.ECMINFO,
"Emu": self.EMU,
"Fta": self.FTA,
"IrdCrypt": self.IRDCRYPT,
"IrdEcm": self.IRDECM,
"Mgcamd": self.MGCAMD,
"NagraCrypt": self.NAGRACRYPT,
"NagraEcm": self.NAGRAECM,
"NdsCrypt": self.NDSCRYPT,
"NdsEcm": self.NDSECM,
"Net": self.NET,
"Number": self.NUMBER,
"SecaCrypt": self.SECACRYPT,
"SecaEcm": self.SECAECM,
"TunerInfo": self.TUNERINFO,
"TunerInfoBP": self.TUNERINFOBP,
"ViaCrypt": self.VIACRYPT,
"ViaEcm": self.VIAECM
# This is for future enhancement.
# "Camd3": self.CAMD3,
# "Cccam": self.CCAM,
# "Gbox": self.GBOX,
# "Incubus": self.INCUBUS,
# "Mbox": self.MBOX,
# "Oscam": self.OSCAM,
# "Wicardd": self.WICARDD
}.get(tokens, self.TUNERINFO)
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (21) and inherited methods (11)
__init__(self, tokens)changed(self, what)ecmfile(self)getBoolean(self)getCaidInfo(self)getCamName(self)getCrd(self)getCrypt(self, value)getEcm(self, value)getEcmCamInfo(self)getecminfo(self)getEmu(self)getFta(self)getLists(self)getNet(self)getServiceNumber(self, name, ref)getText(self)getTunerInfo(self, service)int2hex(self, integer)parseEcmInfoLine(self, line)parseInfoLine(self, line)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
FrontendInfo
Converts frontend measurements and tuner status to text, boolean or value/range. Not every mode supports every output property; see the mode-specific assertions and recipes.
lib/python/Components/Converter/FrontendInfo.py, line 10 ↗
Class: Components.Converter.FrontendInfo.FrontendInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: agc, ber, frontend_type, lock, slot_number, snr, snr_db, tuner_mask. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBool)— Components.Converter.FrontendInfo.FrontendInfotext=property(getText)— Components.Converter.FrontendInfo.FrontendInfovalue=property(getValue)— Components.Converter.FrontendInfo.FrontendInfo
range = 65536 — Components.Converter.FrontendInfo.FrontendInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
BER = 0
SNR = 1
AGC = 2
LOCK = 3
SNRdB = 4
SLOT_NUMBER = 5
TUNER_TYPE = 6
STRING = 7
REC_TUNER = 8
TUNERS = 9
SNR_STREAM = 10
range = 65536FrontendInfo.__init__(self, tokens)
def __init__(self, tokens):
def checkColor(color, default):
if color in ("", "Default"):
color = default
return None if color == "None" else rf"\c{parseColor(color, default).argb():08X}"
Converter.__init__(self, tokens)
if tokens.startswith("STRING"): # "STRING[,spaceForTuners[,spaceForTunersWithSpaces]]"
self.type = self.STRING
data = [x.strip() for x in tokens.split(",")]
self.spaceForTuners = len(data) > 1 and int(data[1]) or 10
self.spaceForTunersWithSpaces = len(data) > 2 and int(data[2]) or 6
elif tokens.startswith("TUNERS"): # "TUNERS[,idleColor[,activeColor[,recordingColor[,disabledColor[,spacer]]]]]"
self.type = self.TUNERS
data = [x.strip() for x in tokens.split(",", 5)]
self.idleColor = checkColor(data[1], "#00CFCFCF") if len(data) > 1 and data[1] else r"\c00CFCFCF"
self.activeColor = checkColor(data[2], "#0000FF00") if len(data) > 2 and data[2] else r"\c0000FF00"
self.recordingColor = checkColor(data[3], "#00FF0000") if len(data) > 3 and data[3] else r"\c00FF0000"
self.disabledColor = checkColor(data[4], "#006F6F6F") if len(data) > 4 and data[4] else r"\c006F6F6F"
if len(data) > 5 and data[5]:
spacer = data[5]
self.spacer = spacer[1:-1] if len(spacer) > 1 and spacer[0] == spacer[-1] else spacer
else:
self.spacer = " "
elif tokens.split("_")[0] == "REC":
self.type = self.REC_TUNER
self.tunerNum = int(tokens.split("_")[1])
else:
self.type = {
"AGC": self.AGC,
"BER": self.BER,
"NUMBER": self.SLOT_NUMBER,
"SNR": self.SNR,
"SNRStream": self.SNR_STREAM,
"SNRdB": self.SNRdB,
"TYPE": self.TUNER_TYPE
}.get(tokens, self.LOCK)
self.recordTimer = None
if self.type in (self.TUNERS, self.REC_TUNER) and NavigationInstance.instance:
self.recordTimer = NavigationInstance.instance.RecordTimer
self.recordTimer.on_state_change.append(self.recordTimerStateChanged)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (8) and inherited methods (10)
__init__(self, tokens)destroy(self)getAGC(self)getBool(self)getRecordingTuners(self)getText(self)getValue(self)recordTimerStateChanged(self, timer)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
HbbtvApplicationInfo
lib/python/Components/Converter/HbbtvApplicationInfo.py, line 5 ↗
Class: Components.Converter.HbbtvApplicationInfo.HbbtvApplicationInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: name. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.HbbtvApplicationInfo.HbbtvApplicationInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
NAME = 0HbbtvApplicationInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = self.NAME if tokens == "Name" else ""
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
MenuEntryCompare
lib/python/Components/Converter/MenuEntryCompare.py, line 5 ↗
Class: Components.Converter.MenuEntryCompare.MenuEntryCompare. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: current, onSelectionChanged. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBool)— Components.Converter.MenuEntryCompare.MenuEntryCompare
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
MenuEntryCompare.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.entry_id = tokens
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (4) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
MovieInfo
lib/python/Components/Converter/MovieInfo.py, line 10 ↗
Class: Components.Converter.MovieInfo.MovieInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: event, info, service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.MovieInfo.MovieInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
MOVIE_SHORT_DESCRIPTION = 0
MOVIE_META_DESCRIPTION = 1
MOVIE_REC_SERVICE_NAME = 2
MOVIE_REC_SERVICE_REF = 3
MOVIE_REC_FILESIZE = 4
MOVIE_NAME = 5
MOVIE_FULL_DESCRIPTION = 6MovieInfo.__init__(self, tokens)
def __init__(self, tokens):
self.type = {
"FileSize": self.MOVIE_REC_FILESIZE,
"FullDescription": self.MOVIE_FULL_DESCRIPTION,
"MetaDescription": self.MOVIE_META_DESCRIPTION,
"Name": self.MOVIE_NAME,
"RecordServiceName": self.MOVIE_REC_SERVICE_NAME,
"RecordServiceRef": self.MOVIE_REC_SERVICE_REF,
"Reference": self.MOVIE_REC_SERVICE_REF,
"ShortDescription": self.MOVIE_SHORT_DESCRIPTION
}.get(tokens)
if self.type is None:
raise ElementError(f"'{tokens}' is not <ShortDescription|MetaDescription|FullDescription|RecordServiceName|FileSize> for MovieInfo converter")
Converter.__init__(self, tokens)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
MovieReference
lib/python/Components/Converter/MovieReference.py, line 16 ↗
Class: Components.Converter.MovieReference.MovieReference. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: info, service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.MovieReference.MovieReference
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
MovieReference.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
PliExtraInfo
lib/python/Components/Converter/PliExtraInfo.py, line 39 ↗
Class: Components.Converter.PliExtraInfo.PliExtraInfo. Bases: Converter, Poll.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (5) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
poll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollsuspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBool)— Components.Converter.PliExtraInfo.PliExtraInfotext=property(getText)— Components.Converter.PliExtraInfo.PliExtraInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
satelliteNames = {30: 'Rascom/Eutelsat 3E', 48: 'SES 5', 70: 'Eutelsat 7E', 90: 'Eutelsat 9E', 100: 'Eutelsat 10E', 130: 'Hot Bird', 160: 'Eutelsat 16E', 192: 'Astra 1KR/1LMNP', 200: 'Arabsat 20E', 216: 'Eutelsat 21.5E', 235: 'Astra 3', 255: 'Eutelsat 25.5E', 260: 'Badr 4/5/6', 282: 'Astra 2E/2F/2G', 305: 'Arabsat 30.5E', 315: 'Astra 5', 330: 'Eutelsat 33E', 360: 'Eutelsat 36E', 380: 'Paksat', 390: 'Hellas Sat', 400: 'Express 40E', 420: 'Turksat', 450: 'Intelsat 45E', 480: 'Afghansat', 490: 'Yamal 49E', 530: 'Express 53E', 570: 'NSS 57E', 600: 'Intelsat 60E', 620: 'Intelsat 62E', 685: 'Intelsat 68.5E', 705: 'Eutelsat 70.5E', 720: 'Intelsat 72E', 750: 'ABS', 765: 'Apstar', 785: 'ThaiCom', 800: 'Express 80E', 830: 'Insat', 851: 'Intelsat/Horizons', 880: 'ST2', 900: 'Yamal 90E', 915: 'Mesat', 950: 'NSS/SES 95E', 1005: 'AsiaSat 100E', 1030: 'Express 103E', 1055: 'Asiasat 105E', 1082: 'NSS/SES 108E', 1100: 'BSat/NSAT', 1105: 'ChinaSat', 1130: 'KoreaSat', 1222: 'AsiaSat 122E', 1380: 'Telstar 18', 1440: 'SuperBird', 2310: 'Ciel', 2390: 'Echostar/Galaxy 121W', 2410: 'Echostar/DirectTV 119W', 2500: 'Echostar/DirectTV 110W', 2630: 'Galaxy 97W', 2690: 'NIMIQ 91W', 2780: 'NIMIQ 82W', 2830: 'Echostar/QuetzSat', 2880: 'AMC 72W', 2900: 'Star One', 2985: 'Echostar 61.5W', 2990: 'Amazonas', 3020: 'Intelsat 58W', 3045: 'Intelsat 55.5W', 3070: 'Intelsat 53W', 3100: 'Intelsat 50W', 3150: 'Intelsat 45W', 3169: 'Intelsat 43.1W', 3195: 'SES 40.5W', 3225: 'NSS/Telstar 37W', 3255: 'Intelsat 34.5W', 3285: 'Intelsat 31.5W', 3300: 'Hispasat', 3325: 'Intelsat 27.5W', 3355: 'Intelsat 24.5W', 3380: 'SES 22W', 3400: 'NSS 20W', 3420: 'Intelsat 18W', 3450: 'Telstar 15W', 3460: 'Express 14W', 3475: 'Eutelsat 12.5W', 3490: 'Express 11W', 3520: 'Eutelsat 8W', 3530: 'Nilesat/Eutelsat 7W', 3550: 'Eutelsat 5W', 3560: 'Amos', 3592: 'Thor/Intelsat'}
caTable = (('CryptoCaidSecaAvailable', 'S', False), ('CryptoCaidViaAvailable', 'V', False), ('CryptoCaidIrdetoAvailable', 'I', False), ('CryptoCaidNDSAvailable', 'Nd', False), ('CryptoCaidConaxAvailable', 'Co', False), ('CryptoCaidCryptoWAvailable', 'Cw', False), ('CryptoCaidPowerVUAvailable', 'P', False), ('CryptoCaidBetaAvailable', 'B', False), ('CryptoCaidNagraAvailable', 'N', False), ('CryptoCaidBissAvailable', 'Bi', False), ('CryptoCaidDre3Available', 'D3', False), ('CryptoCaidDreAvailable', 'D', False), ('CryptoCaidBulCrypt1Available', 'B1', False), ('CryptoCaidBulCrypt2Available', 'B2', False), ('CryptoCaidTandbergAvailable', 'T', False), ('CryptoCaidSecaSelected', 'S', True), ('CryptoCaidViaSelected', 'V', True), ('CryptoCaidIrdetoSelected', 'I', True), ('CryptoCaidNDSSelected', 'Nd', True), ('CryptoCaidConaxSelected', 'Co', True), ('CryptoCaidCryptoWSelected', 'Cw', True), ('CryptoCaidPowerVUSelected', 'P', True), ('CryptoCaidBetaSelected', 'B', True), ('CryptoCaidNagraSelected', 'N', True), ('CryptoCaidBissSelected', 'Bi', True), ('CryptoCaidDre3Selected', 'D3', True), ('CryptoCaidDreSelected', 'D', True), ('CryptoCaidBulCrypt1Selected', 'B1', True), ('CryptoCaidBulCrypt2Selected', 'B2', True), ('CryptoCaidTandbergSelected', 'T', True))
cryptoData = {'CryptoSeca': ('0x100', '0x1ff', 'S'), 'CryptoVia': ('0x500', '0x5ff', 'V'), 'CryptoIrdeto': ('0x600', '0x6ff', 'I'), 'CryptoNDS': ('0x900', '0x9ff', 'NDS'), 'CryptoConax': ('0xb00', '0xbff', 'CO'), 'CryptoCryptoW': ('0xd00', '0xdff', 'CW'), 'CryptoBeta': ('0x1700', '0x17ff', 'B'), 'CryptoNagra': ('0x1800', '0x18ff', 'N'), 'CryptoBiss': ('0x2600', '0x26ff', 'BI'), 'CryptoDre': ('0x4ae0', '0x4ae1', 'DC'), 'CryptoTandberg': ('0x1010', '0x1010', 'T'), 'CryptoPowerVU': ('0xe00', '0xeff', 'P')}PliExtraInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.type = tokens
self.cryptoColors = parameters.get("PliExtraInfoCryptoColors", ("#004C7D3F", "#009F9F9F", "#00EEEE00", "#00FFFFFF"))
self.cryptoColors = [rf"\c{parseColor(x).argb():08X}" for x in self.cryptoColors]
self.infoColors = parameters.get("PliExtraInfoColors", ("#0000FF00", "#00FFFF00", "#007F7F7F", "#00FFFFFF")) # "Found", "Not found", "Available", "Default" colors.
self.infoColors = [rf"\c{parseColor(x).argb():08X}" for x in self.infoColors]
self.poll_interval = 1000 # This is a shared variable!
self.poll_enabled = True # This is a shared variable!
self.ecmData = GetEcmInfo()
self.feRaw = None
self.feData = None
self.feDataUpdate = None
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Declared methods (27) and inherited methods (11)
__init__(self, tokens)changed(self, what)createChannelNumber(self, feData, feRaw)createCrypto(self, info, start, end, crypto)createCryptoBar(self, info)createCryptoNameCaid(self, info)createCryptoSpecial(self, info)createFEC(self, feData, feRaw)createFrequency(self, feData)createMisPls(self, feData)createModulation(self, feData)createOrbPos(self, feRaw)createOrbPosOrTunerSystem(self, feData, feRaw)createPIDInfo(self, info)createPolarization(self, feData)createProviderName(self, info)createResolution(self, info)createServiceRef(self, info)createSymbolRate(self, feData, feRaw)createTransponderInfo(self, feData, feRaw, info)createTransponderName(self, feRaw)createTunerSystem(self, feData)createTunerType(self, feRaw)createVideoCodec(self, info)getBool(self)getCryptoInfo(self, info)getText(self)
Inherited methods
destroy(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementpoll(self)—Components.Converter.Poll.PollconnectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
Poll
Polling helper mixed into converters. Poll does not inherit Converter and is not a standalone XML converter.
lib/python/Components/Converter/Poll.py, line 4 ↗
Class: Components.Converter.Poll.Poll. Bases: none.
Helper: does not inherit Converter. Use a concrete implementation for a skin chain.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
poll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Poll
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Declared methods (6) and inherited methods (0)
__init__(self)destroy(self)doSuspend(self, suspended)poll(self)__setEnable(self, enabled)__setInterval(self, interval)
Inherited methods
ProgressToText
lib/python/Components/Converter/ProgressToText.py, line 5 ↗
Class: Components.Converter.ProgressToText.ProgressToText. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: range, value. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.ProgressToText.ProgressToText
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
ProgressToText.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.in_percent = "InPercent" in tokens.split(",")
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
pstrCnvrt
lib/python/Components/Converter/pstrCnvrt.py, line 13 ↗
Class: Components.Converter.pstrCnvrt.pstrCnvrt. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: event. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.pstrCnvrt.pstrCnvrt
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
pstrCnvrt.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = tokens
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (4) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
RdsInfo
lib/python/Components/Converter/RdsInfo.py, line 7 ↗
Class: Components.Converter.RdsInfo.RdsInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: decoder, navcore. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (3) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.RdsInfo.RdsInfotext=property(getText)— Components.Converter.RdsInfo.RdsInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
RASS_INTERACTIVE_AVAILABLE = 0
RTP_TEXT_CHANGED = 1
RADIO_TEXT_CHANGED = 2
RTP_TEXT_WITHOUT_EVENT = 3
RADIO_TEXT_WITHOUT_CURRENT_EVENT = 4RdsInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type, self.interesting_events = {
"RadioText": (self.RADIO_TEXT_CHANGED, (iPlayableService.evUpdatedRadioText,)),
"RadioTextIfNoEvent": (self.RADIO_TEXT_WITHOUT_CURRENT_EVENT, (iPlayableService.evUpdatedRadioText, iPlayableService.evUpdatedEventInfo)),
"RasInteractiveAvailable": (self.RASS_INTERACTIVE_AVAILABLE, (iPlayableService.evUpdatedRassInteractivePicMask,)),
"RtpText": (self.RTP_TEXT_CHANGED, (iPlayableService.evUpdatedRtpText,)),
"RtpTextIfNoEvent": (self.RTP_TEXT_WITHOUT_EVENT, (iPlayableService.evUpdatedRtpText, iPlayableService.evUpdatedEventInfo))
}[tokens]
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (5) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
RemainingToText
lib/python/Components/Converter/RemainingToText.py, line 8 ↗
Class: Components.Converter.RemainingToText.RemainingToText. Bases: Converter, Poll.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: time. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
poll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollsuspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.RemainingToText.RemainingToText
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
DEFAULT = 0
IN_SECONDS = 1
IN_SECONDS_VFD = 7
NO_SECONDS = 2
NO_SECONDS_VFD = 8
ONLY_MINUTE = 3
ONLY_MINUTE2 = 4
PERCENTAGE = 5
PERCENTAGE_VFD = 9
VFD = 6
WITH_SECONDS = 11
WITH_SECONDS_VFD = 10RemainingToText.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.token, self.poll_interval = {
"Default": (self.DEFAULT, 0),
"InSeconds": (self.IN_SECONDS, 1000),
"NoSeconds": (self.NO_SECONDS, 1000),
"OnlyMinute": (self.ONLY_MINUTE, 0),
"OnlyMinute2": (self.ONLY_MINUTE2, 0),
"Percentage": (self.PERCENTAGE, 60000),
"VFD": (self.VFD, 0),
"VFDInSeconds": (self.IN_SECONDS_VFD, 1000),
"VFDNoSeconds": (self.NO_SECONDS_VFD, 60000),
"VFDPercentage": (self.PERCENTAGE_VFD, 60000),
"VFDWithSeconds": (self.WITH_SECONDS_VFD, 1000),
"WithSeconds": (self.WITH_SECONDS, 1000)
}.get(tokens, (None, 0))
if tokens and self.token is None:
print(f"[RemainingToText] Error: Converter argument '{tokens}' is invalid!")
if self.token is None:
self.token = self.DEFAULT
if config.usage.swap_time_display_on_osd.value in ("1", "3", "5") or config.usage.swap_time_display_on_vfd.value in ("1", "3", "5"):
self.poll_interval = 60000
elif config.usage.swap_time_display_on_osd.value in ("2", "4") or config.usage.swap_time_display_on_vfd.value in ("2", "4"):
self.poll_interval = 1000
if self.poll_interval:
self.poll_enabled = True
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Declared methods (2) and inherited methods (12)
Inherited methods
destroy(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementpoll(self)—Components.Converter.Poll.PollconnectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
RemoteControlInfo
lib/python/Components/Converter/RemoteControlInfo.py, line 19 ↗
Class: Components.Converter.RemoteControlInfo.RemoteControlInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.RemoteControlInfo.RemoteControlInfovalue=property(getValue)— Components.Converter.RemoteControlInfo.RemoteControlInfoboolean=property(getBoolean)— Components.Converter.RemoteControlInfo.RemoteControlInfo
range = 100 — Components.Converter.RemoteControlInfo.RemoteControlInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
BATTERY = 0
BATTERY_LOW = 1
SIGNAL = 2
NAME = 3
CONNECTED = 4
range = 100RemoteControlInfo.__init__(self, type)
def __init__(self, type):
Converter.__init__(self, type)
self.type = {
"Battery": self.BATTERY,
"BatteryLow": self.BATTERY_LOW,
"Signal": self.SIGNAL,
"Name": self.NAME,
"Connected": self.CONNECTED
}.get(type, self.BATTERY)
self.manager = eInputDeviceManager.getInstance()
if self.manager:
self.manager.getDeviceListChanged().append(self.deviceListChanged)
self.manager.getDeviceStateChanged().append(self.deviceStateChanged)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (8) and inherited methods (10)
__init__(self, type)destroy(self)deviceListChanged(self)deviceStateChanged(self, address, state)getDevice(self)getText(self)getValue(self)getBoolean(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
SCServicePosition
lib/python/Components/Converter/SCServicePosition.py, line 10 ↗
Class: Components.Converter.SCServicePosition.SCServicePosition. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (8) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollcutlist=property(getCutlist)— Components.Converter.SCServicePosition.SCServicePositionlength=property(getLength)— Components.Converter.SCServicePosition.SCServicePositionposition=property(getPosition)— Components.Converter.SCServicePosition.SCServicePositiontext=property(getText)— Components.Converter.SCServicePosition.SCServicePositionvalue=property(getValue)— Components.Converter.SCServicePosition.SCServicePosition
range = 10000 — Components.Converter.SCServicePosition.SCServicePosition
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
TYPE_LENGTH = 0
TYPE_POSITION = 1
TYPE_REMAINING = 2
TYPE_GAUGE = 3
TYPE_ENDTIME = 4
range = 10000SCServicePosition.__init__(self, tokens)
def __init__(self, tokens):
Poll.__init__(self)
Converter.__init__(self, tokens)
args = tokens.split(",")
self.type = {
"EndTime": self.TYPE_ENDTIME,
"Gauge": self.TYPE_GAUGE,
"Length": self.TYPE_LENGTH,
"Position": self.TYPE_POSITION,
"Remaining": self.TYPE_REMAINING
}.get(args.pop(0))
if self.type is None:
raise ElementError("type must be {Length|Position|Remaining|Gauge|EndTime} with optional arguments {Negate|Detailed|ShowHours|ShowNoSeconds} for SCServicePosition converter")
self.negate = "Negate" in args
self.detailed = "Detailed" in args
self.showHours = "ShowHours" in args
self.showNoSeconds = "ShowNoSeconds" in args
# FIXME: The original code checked "elif self.TYPE_ENDTIME:" which is always true, so every type
# that is not detailed polls with 1000. The intended values were 1000 for EndTime, 2000 for Length and 500 for all others.
self.poll_interval = 100 if self.detailed else 1000
self.poll_enabled = True
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (8) and inherited methods (11)
__init__(self, tokens)changed(self, what)getCutlist(self)getLength(self)getPosition(self)getSeek(self)getText(self)getValue(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
SensorToText
lib/python/Components/Converter/SensorToText.py, line 4 ↗
Class: Components.Converter.SensorToText.SensorToText. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: getUnit, getValue. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.SensorToText.SensorToText
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
SensorToText.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ServiceInfo
Provides selected service information as text, booleans or numeric properties. Match the chosen mode to the renderer's expected input.
lib/python/Components/Converter/ServiceInfo.py, line 13 ↗
Class: Components.Converter.ServiceInfo.ServiceInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: editmode, service. Attribute probes: editmode, isDVBI. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.ServiceInfo.ServiceInfotext=property(getText)— Components.Converter.ServiceInfo.ServiceInfovalue=property(getValue)— Components.Converter.ServiceInfo.ServiceInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
APID = 0
AUDIOTRACKS_AVAILABLE = 1
EDITMODE = 2
FRAMERATE = 3
FREQUENCY_INFORMATION = 4
HAS_HBBTV = 5
HAS_TELETEXT = 6
IS_1080 = 7
IS_480 = 8
IS_4K = 9
IS_576 = 10
IS_720 = 11
IS_CRYPTED = 12
IS_HD = 13
IS_HDHDR = 14
IS_HDR = 15
IS_HDR10 = 16
IS_HLG = 17
IS_MULTICHANNEL = 18
IS_NOT_WIDESCREEN = 19
IS_SD = 20
IS_SDR = 21
IS_SD_AND_NOT_WIDESCREEN = 22
IS_SD_AND_WIDESCREEN = 23
IS_STEREO = 24
IS_STREAM = 25
IS_VIDEO_AVC = 26
IS_VIDEO_HEVC = 27
IS_VIDEO_MPEG2 = 28
IS_WIDESCREEN = 29
ONID = 30
PCRPID = 31
PMTPID = 32
PROGRESSIVE = 33
PROVIDER = 34
REFERENCE = 35
SID = 36
SUBSERVICES_AVAILABLE = 37
SUBTITLES_AVAILABLE = 38
TRANSFERBPS = 39
TSID = 40
TXTPID = 41
VIDEO_INFORMATION = 42
VIDEO_SIZE = 43
VPID = 44
XRES = 45
YRES = 46
IS_SOFTCSA = 47
IS_DAB = 48
IS_DVBI = 49
VIDEO_INFO_WIDTH = 0
VIDEO_INFO_HEIGHT = 1
VIDEO_INFO_FRAME_RATE = 2
VIDEO_INFO_PROGRESSIVE = 3
VIDEO_INFO_ASPECT = 4
VIDEO_INFO_GAMMA = 5ServiceInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
# Poll.__init__(self)
# self.poll_interval = 10000
# self.poll_enabled = True
self.argument = tokens
self.token, self.interestingEvents = {
"AudioPid": (self.APID, (iPlayableService.evUpdatedInfo,)),
"AudioTracksAvailable": (self.AUDIOTRACKS_AVAILABLE, (iPlayableService.evUpdatedInfo,)),
"EditMode": (self.EDITMODE, (iPlayableService.evUpdatedInfo,)),
"Editmode": (self.EDITMODE, (iPlayableService.evUpdatedInfo,)),
"FrameRate": (self.FRAMERATE, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
"Framerate": (self.FRAMERATE, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
"FrequencyInfo": (self.FREQUENCY_INFORMATION, (iPlayableService.evUpdatedInfo,)),
"Freq_Info": (self.FREQUENCY_INFORMATION, (iPlayableService.evUpdatedInfo,)),
"HasHBBTV": (self.HAS_HBBTV, (iPlayableService.evUpdatedInfo, iPlayableService.evHBBTVInfo,)),
"HasTeletext": (self.HAS_TELETEXT, (iPlayableService.evUpdatedInfo,)),
"HasTelext": (self.HAS_TELETEXT, (iPlayableService.evUpdatedInfo,)),
"Is1080": (self.IS_1080, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
"Is480": (self.IS_480, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
"Is4K": (self.IS_4K, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"Is576": (self.IS_576, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
"Is720": (self.IS_720, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
"IsCrypted": (self.IS_CRYPTED, (iPlayableService.evUpdatedInfo,)),
"IsDAB": (self.IS_DAB, (iPlayableService.evStart, iPlayableService.evUpdatedInfo)),
"IsDVBI": (self.IS_DVBI, (iPlayableService.evStart, iPlayableService.evEnd, iPlayableService.evUpdatedInfo)),
"IsHD": (self.IS_HD, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"IsHDHDR": (self.IS_HDHDR, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"IsHDR": (self.IS_HDR, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"IsHDR10": (self.IS_HDR10, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"IsHLG": (self.IS_HLG, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"IsIPStream": (self.IS_STREAM, (iPlayableService.evUpdatedInfo,)),
"IsMultichannel": (self.IS_MULTICHANNEL, (iPlayableService.evUpdatedInfo,)),
"IsNotWidescreen": (self.IS_NOT_WIDESCREEN, (iPlayableService.evVideoSizeChanged,)),
"IsSD": (self.IS_SD, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
# "IsSDAndNotWidescreen": (self.IS_SD_AND_NOT_WIDESCREEN, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
# "IsSDAndWidescreen": (self.IS_SD_AND_WIDESCREEN, (iPlayableService.evVideoSizeChanged, iPlayableService.evUpdatedInfo)),
"IsSDR": (self.IS_SDR, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"IsSoftCSA": (self.IS_SOFTCSA, (iPlayableService.evUpdatedInfo,)),
"IsStereo": (self.IS_STEREO, (iPlayableService.evUpdatedInfo,)),
"IsStream": (self.IS_STREAM, (iPlayableService.evUpdatedInfo,)),
# "IsVideoAVC": (self.IS_VIDEO_AVC, (iPlayableService.evUpdatedInfo,)),
# "IsVideoHEVC": (self.IS_VIDEO_HEVC, (iPlayableService.evUpdatedInfo,)),
# "IsVideoMPEG2": (self.IS_VIDEO_MPEG2, (iPlayableService.evUpdatedInfo,)),
"IsWidescreen": (self.IS_WIDESCREEN, (iPlayableService.evVideoSizeChanged,)),
"OnId": (self.ONID, (iPlayableService.evUpdatedInfo,)),
"PcrPid": (self.PCRPID, (iPlayableService.evUpdatedInfo,)),
"PmtPid": (self.PMTPID, (iPlayableService.evUpdatedInfo,)),
"Progressive": (self.PROGRESSIVE, (iPlayableService.evVideoProgressiveChanged, iPlayableService.evUpdatedInfo)),
# "Provider": (self.PROVIDER, self.getTextItem, (iPlayableService.evStart,)),
# "Reference": (self.REFERENCE, self.getTextItem, (iPlayableService.evStart,)),
"Sid": (self.SID, (iPlayableService.evUpdatedInfo,)),
"SubservicesAvailable": (self.SUBSERVICES_AVAILABLE, (iPlayableService.evUpdatedEventInfo,)),
"SubtitlesAvailable": (self.SUBTITLES_AVAILABLE, (iPlayableService.evUpdatedInfo,)),
"TransferBPS": (self.TRANSFERBPS, (iPlayableService.evUpdatedInfo,)),
"TsId": (self.TSID, (iPlayableService.evUpdatedInfo,)),
"TxtPid": (self.TXTPID, (iPlayableService.evUpdatedInfo,)),
"VideoHeight": (self.YRES, (iPlayableService.evVideoSizeChanged,)),
"VideoInfo": (self.VIDEO_INFORMATION, (iPlayableService.evVideoSizeChanged, iPlayableService.evVideoFramerateChanged, iPlayableService.evVideoProgressiveChanged, iPlayableService.evVideoGammaChanged, iPlayableService.evUpdatedInfo)),
"VideoPid": (self.VPID, (iPlayableService.evUpdatedInfo,)),
# "VideoSize": (self.VIDEO_SIZE, (iPlayableService.evVideoSizeChanged,)),
"VideoWidth": (self.XRES, (iPlayableService.evVideoSizeChanged,)),
}.get(tokens)
self.instanceInfoBarSubserviceSelection = None
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (5) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ServiceName
Formats service name/reference/provider information according to its constructor mode.
lib/python/Components/Converter/ServiceName.py, line 13 ↗
Class: Components.Converter.ServiceName.ServiceName. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: info, service, serviceref. Attribute probes: editmode, serviceref. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.ServiceName.ServiceName
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
NAME = 0
NAME_ONLY = 1
NAME_EVENT = 2
PROVIDER = 3
REFERENCE = 4
EDITREFERENCE = 5
TRANSPONDER = 6
TUNERSYSTEM = 7
ORB_POS = 8
NUMBER = 9ServiceName.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.epgQuery = eEPGCache.getInstance().lookupEventTime
self.mode = ""
if ";" in tokens:
tokens, self.mode = tokens.split(";")
self.type = {
"EditReference": self.EDITREFERENCE,
"NameAndEvent": self.NAME_EVENT,
"NameOnly": self.NAME_ONLY,
"Number": self.NUMBER,
"OrbitalPosition": self.ORB_POS,
"Provider": self.PROVIDER,
"Reference": self.REFERENCE,
"TransponderInfo": self.TRANSPONDER,
"TunerSystem": self.TUNERSYSTEM
}.get(tokens, self.NAME)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ServiceName2
lib/python/Components/Converter/ServiceName2.py, line 33 ↗
Class: Components.Converter.ServiceName2.ServiceName2. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: __class__, info, service, serviceref. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.ServiceName2.ServiceName2
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
NAME = 0
NUMBER = 1
BOUQUET = 2
PROVIDER = 3
REFERENCE = 4
ORBPOS = 5
TPRDATA = 6
SATELLITE = 7
ALLREF = 8
FORMAT = 9ServiceName2.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"AllRef": self.ALLREF,
"Bouquet": self.BOUQUET,
"Name": self.NAME,
"Number": self.NUMBER,
"OrbitalPos": self.ORBPOS,
"Provider": self.PROVIDER,
"Reference": self.REFERENCE,
"Satellite": self.SATELLITE,
"TpansponderInfo": self.TPRDATA
}.get(tokens, self.FORMAT if tokens else self.NAME)
if self.type == self.FORMAT:
self.sfmt = tokens[:]
try:
if (self.type == self.NUMBER or (self.type == self.FORMAT and "%n" in self.sfmt)) and correctChannelNumber:
ChannelNumberClasses.append(self.forceChanged)
except Exception:
pass
self.refstr = self.isStream = self.ref = self.info = self.what = self.tpdata = None
self.Timer = eTimer()
self.Timer.callback.append(self.neededChange)
self.IPTVcontrol = self.isAdditionalService(group=False)
self.AlternativeControl = self.isAdditionalService(group=True)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (14) and inherited methods (10)
__init__(self, tokens)changed(self, what)forceChanged(self, what)getIPTVProvider(self, refstr)getPlayingref(self, ref)getProviderName(self, ref)getReferenceType(self, refstr, ref)getSatelliteName(self, ref)getServiceNumber(self, ref)getText(self)getTransponderInfo(self, info, ref, fmt)isAdditionalService(self, group=False)neededChange(self)resolveAlternate(self, ref)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ServiceOrbitalPosition
lib/python/Components/Converter/ServiceOrbitalPosition.py, line 8 ↗
Class: Components.Converter.ServiceOrbitalPosition.ServiceOrbitalPosition. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: info, service. Attribute probes: isDVBI. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.ServiceOrbitalPosition.ServiceOrbitalPosition
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
FULL = 0
SHORT = 1ServiceOrbitalPosition.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = self.SHORT if tokens == "Short" else self.FULL
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ServicePosition
Converts the current playable service's seek interface to time text or gauge values. First argument selects the mode; subsequent comma-separated flags modify formatting.
lib/python/Components/Converter/ServicePosition.py, line 11 ↗
Class: Components.Converter.ServicePosition.ServicePosition. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (8) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollcutlist=property(getCutlist)— Components.Converter.ServicePosition.ServicePositionlength=property(getLength)— Components.Converter.ServicePosition.ServicePositionposition=property(getPosition)— Components.Converter.ServicePosition.ServicePositiontext=property(getText)— Components.Converter.ServicePosition.ServicePositionvalue=property(getValue)— Components.Converter.ServicePosition.ServicePosition
range = 10000 — Components.Converter.ServicePosition.ServicePosition
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
TYPE_LENGTH = 0
TYPE_POSITION = 1
TYPE_REMAINING = 2
TYPE_GAUGE = 3
TYPE_SUMMARY = 4
TYPE_ENDTIME = 5
TYPE_VFD_LENGTH = 6
TYPE_VFD_POSITION = 7
TYPE_VFD_REMAINING = 8
TYPE_VFD_GAUGE = 9
TYPE_VFD_SUMMARY = 10
range = 10000ServicePosition.__init__(self, tokens)
def __init__(self, tokens):
Poll.__init__(self)
Converter.__init__(self, tokens)
args = tokens.split(",")
self.type = {
"EndTime": self.TYPE_ENDTIME,
"Gauge": self.TYPE_GAUGE,
"Length": self.TYPE_LENGTH,
"Position": self.TYPE_POSITION,
"Remaining": self.TYPE_REMAINING,
"Summary": self.TYPE_SUMMARY,
"VFDGauge": self.TYPE_VFD_GAUGE,
"VFDLength": self.TYPE_VFD_LENGTH,
"VFDPosition": self.TYPE_VFD_POSITION,
"VFDRemaining": self.TYPE_VFD_REMAINING,
"VFDSummary": self.TYPE_VFD_SUMMARY
}.get(args.pop(0))
if self.type is None:
raise ElementError("type must be {Length|Position|Remaining|Gauge|Summary} with optional arguments {Negate|Detailed|ShowHours|ShowNoSeconds|ShowNoSeconds2} for ServicePosition converter")
self.negate = "Negate" in args
self.detailed = "Detailed" in args
self.showHours = "ShowHours" in args
self.showNoSeconds = "ShowNoSeconds" in args
self.showNoSeconds2 = "ShowNoSeconds2" in args
self.OnlyMinute = "OnlyMinute" in args
self.vfd = "7segment" in args
if self.detailed:
self.poll_interval = 100
else:
self.poll_interval = {
self.TYPE_ENDTIME: 1000,
self.TYPE_LENGTH: 2000,
self.TYPE_VFD_LENGTH: 2000
}.get(self.type, 500)
self.poll_enabled = True
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (8) and inherited methods (11)
__init__(self, tokens)changed(self, what)getCutlist(self)getLength(self)getPosition(self)getSeek(self)getText(self)getValue(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
ServiceTime
lib/python/Components/Converter/ServiceTime.py, line 7 ↗
Class: Components.Converter.ServiceTime.ServiceTime. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: info, service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtime=property(getTime)— Components.Converter.ServiceTime.ServiceTime
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
STARTTIME = 0
ENDTIME = 1
DURATION = 2ServiceTime.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"Duration": self.DURATION,
"EndTime": self.ENDTIME,
"StartTime": self.STARTTIME
}.get(tokens)
if self.type is None:
raise ElementError(f"'{tokens}' is not <StartTime|EndTime|Duration> for ServiceTime converter")
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
SmartInfo
lib/python/Components/Converter/SmartInfo.py, line 10 ↗
Class: Components.Converter.SmartInfo.SmartInfo. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.SmartInfo.SmartInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
EXPERTINFO = 0SmartInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.type = self.EXPERTINFO
self.poll_interval = 30000
self.poll_enabled = True
self.ar_fec = ("Auto", "1/2", "2/3", "3/4", "5/6", "7/8", "3/5", "4/5", "8/9", "9/10", "None", "None", "None", "None", "None")
self.ar_pol = ("H", "V", "CL", "CR", "na", "na", "na", "na", "na", "na", "na", "na")
self.satNames = {}
self.readSatXml()
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (5) and inherited methods (11)
__init__(self, tokens)changed(self, what)getOrbitalPosition(self, info)getText(self)readSatXml(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
StaticMultiList
Turns a python list in 'multi list format' into a list which can be used in a listbox.
lib/python/Components/Converter/StaticMultiList.py, line 6 ↗
Class: Components.Converter.StaticMultiList.StaticMultiList. Bases: StringList.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: fonts, item_height, list. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.StringList.StringList: accesseslist, selectionChanged; probesnone.Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (3) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementcurrent=property(getCurrent)— Components.Converter.StringList.StringListindex=property(getIndex, setIndex)— Components.Converter.StringList.StringList
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
StringList.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.content = None
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (1) and inherited methods (15)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converterentry_changed(self, index)—Components.Converter.StringList.StringListgetCurrent(self)—Components.Converter.StringList.StringListgetIndex(self)—Components.Converter.StringList.StringListselectionChanged(self, index)—Components.Converter.StringList.StringListsetIndex(self, index)—Components.Converter.StringList.StringList
StaticText
lib/python/Components/Converter/StaticText.py, line 4 ↗
Class: Components.Converter.StaticText.StaticText. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (1) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Element
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
StaticText.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.text = str(tokens)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (1) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
Streaming
lib/python/Components/Converter/Streaming.py, line 11 ↗
Class: Components.Converter.Streaming.Streaming. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.Streaming.Streaming
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (1) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
Streaming2
lib/python/Components/Converter/Streaming2.py, line 11 ↗
Class: Components.Converter.Streaming2.Streaming2. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.Streaming2.Streaming2
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (1) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
StringList
Turns a simple python list into a list which can be used in a listbox.
lib/python/Components/Converter/StringList.py, line 7 ↗
Class: Components.Converter.StringList.StringList. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: list, selectionChanged. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (3) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementcurrent=property(getCurrent)— Components.Converter.StringList.StringListindex=property(getIndex, setIndex)— Components.Converter.StringList.StringList
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
StringList.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.content = None
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (7) and inherited methods (10)
__init__(self, tokens)changed(self, what)entry_changed(self, index)getCurrent(self)getIndex(self)selectionChanged(self, index)setIndex(self, index)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
StringListSelection
Extracts the first element of the current string list element for displaying it on LCD.
lib/python/Components/Converter/StringListSelection.py, line 5 ↗
Class: Components.Converter.StringListSelection.StringListSelection. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: current, onSelectionChanged. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.StringListSelection.StringListSelection
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
StringListSelection.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (4) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
TemplatedMultiContent
Builds native list content from Python-expression templates. This is executable skin configuration; use templates from trusted sources.
lib/python/Components/Converter/TemplatedMultiContent.py, line 6 ↗
Class: Components.Converter.TemplatedMultiContent.TemplatedMultiContent. Bases: StringList.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: list, style. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.StringList.StringList: accesseslist, selectionChanged; probesnone.Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (3) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementcurrent=property(getCurrent)— Components.Converter.StringList.StringListindex=property(getIndex, setIndex)— Components.Converter.StringList.StringList
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
TemplatedMultiContent.__init__(self, tokens)
def __init__(self, tokens):
StringList.__init__(self, tokens)
# These imports are needed as locals for the template eval.
from enigma import BT_HALIGN_CENTER, BT_HALIGN_LEFT, BT_HALIGN_RIGHT, BT_KEEP_ASPECT_RATIO, BT_SCALE, BT_VALIGN_BOTTOM, BT_VALIGN_CENTER, BT_VALIGN_TOP, RADIUS_ALL, RADIUS_BOTTOM, RADIUS_BOTTOM_LEFT, RADIUS_BOTTOM_RIGHT, RADIUS_LEFT, RADIUS_RIGHT, RADIUS_TOP, RADIUS_TOP_LEFT, RADIUS_TOP_RIGHT, RT_BLEND, RT_ELLIPSIS, RT_HALIGN_CENTER, RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_VALIGN_BOTTOM, RT_VALIGN_CENTER, RT_VALIGN_TOP, RT_WRAP, gFont # noqa: F401
from skin import getSkinFactor, parseFont # noqa: F401
from Components.MultiContent import MultiContentEntryLinearGradient, MultiContentEntryLinearGradientAlphaBlend, MultiContentEntryPixmap, MultiContentEntryPixmapAlphaBlend, MultiContentEntryPixmapAlphaTest, MultiContentEntryProgress, MultiContentEntryProgressPixmap, MultiContentEntryRectangle, MultiContentEntryText, MultiContentTemplateColor # noqa: F401
f = getSkinFactor() # This is needed for special OpenViX skins using f in the template.
loc = locals()
del loc["self"] # Cleanup locals a bit.
del loc["tokens"]
self.activeStyle = None
self.template = eval(tokens, {}, loc)
self.scale = None
if "template" in self.template or "templates" in self.template:
if "template" in self.template or "default" in self.template["templates"]:
if "template" not in self.template: # Default template can be ["template"] or ["templates"]["default"].
self.template["itemSize"] = self.template["templates"]["default"][0]
self.template["template"] = self.template["templates"]["default"][1]
if "fonts" not in self.template:
print("[TemplatedMultiContent] Error: All templates must include a 'fonts' entry!")
if "itemHeight" not in self.template and "itemSize" not in self.template:
print("[TemplatedMultiContent] Error: All 'template' entries must include an 'itemHeight' or 'itemSize' entry!")
else:
print("[TemplatedMultiContent] Error: All 'templates' must include a 'default' template!")
else:
print("[TemplatedMultiContent] Error: All TemplatedMultiContent converters must include either a 'template' or 'templates' entry!")
StringList.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.content = None
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (15)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converterentry_changed(self, index)—Components.Converter.StringList.StringListgetCurrent(self)—Components.Converter.StringList.StringListgetIndex(self)—Components.Converter.StringList.StringListselectionChanged(self, index)—Components.Converter.StringList.StringListsetIndex(self, index)—Components.Converter.StringList.StringList
TextCase
Changes the case of upstream text using its selected mode.
lib/python/Components/Converter/TextCase.py, line 5 ↗
Class: Components.Converter.TextCase.TextCase. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: getText. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.TextCase.TextCase
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
UPPER = 0
LOWER = 1TextCase.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = self.LOWER if tokens == "ToLower" else self.UPPER
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
TrackInfo
lib/python/Components/Converter/TrackInfo.py, line 8 ↗
Class: Components.Converter.TrackInfo.TrackInfo. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.TrackInfo.TrackInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
AUDIO = 0
SUBTITLE = 1
AUDIO_CODEC = 2
AUDIO_LANG = 3
SUBTITLE_TYPE = 4
SUBTITLE_LANG = 5TrackInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.poll_interval = 1500
self.poll_enabled = True
self.type = {
"Audio": self.AUDIO,
"AudioCodec": self.AUDIO_CODEC,
"AudioLang": self.AUDIO_LANG,
"Subtitle": self.SUBTITLE,
"SubtitleLang": self.SUBTITLE_LANG,
"SubtitleType": self.SUBTITLE_TYPE
}.get(tokens, self.AUDIO)
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
TransponderInfo
lib/python/Components/Converter/TransponderInfo.py, line 9 ↗
Class: Components.Converter.TransponderInfo.TransponderInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: info, service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (3) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.TransponderInfo.TransponderInfotext=property(getText)— Components.Converter.TransponderInfo.TransponderInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
TransponderInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = tokens.split(";")
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (4) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
TunerInfo
lib/python/Components/Converter/TunerInfo.py, line 6 ↗
Class: Components.Converter.TunerInfo.TunerInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: getTunerAmount, getTunerUseMask. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.TunerInfo.TunerInfotext=property(getText)— Components.Converter.TunerInfo.TunerInfovalue=property(getValue)— Components.Converter.TunerInfo.TunerInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
TunerInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"TunerAvailable": TunerInfoSource.TUNER_AVAILABLE,
"TunerUseMask": TunerInfoSource.FE_USE_MASK
}[tokens]
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (5) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ValueBitTest
Tests a bitmask against upstream value and exposes a boolean.
lib/python/Components/Converter/ValueBitTest.py, line 5 ↗
Class: Components.Converter.ValueBitTest.ValueBitTest. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: value. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.ValueBitTest.ValueBitTest
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
ValueBitTest.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.value = int(tokens)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ValueRange
Tests an upstream value against constructor-supplied numeric limits and exposes a boolean.
lib/python/Components/Converter/ValueRange.py, line 5 ↗
Class: Components.Converter.ValueRange.ValueRange. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: value. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.ValueRange.ValueRange
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
ValueRange.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
(self.lower, self.upper) = (int(x) for x in tokens.split(","))
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (2) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
ValueToPixmap
Maps upstream data to a pixmap according to its constructor mode, for an image renderer.
lib/python/Components/Converter/ValueToPixmap.py, line 8 ↗
Class: Components.Converter.ValueToPixmap.ValueToPixmap. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: text. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpixmap=property(getPixmap)— Components.Converter.ValueToPixmap.ValueToPixmap
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
LANGUAGE_CODE = 0
PATH = 1ValueToPixmap.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"LanguageCode": self.LANGUAGE_CODE,
"Path": self.PATH
}.get(tokens)
if self.type is None:
raise ElementError(f"'{tokens}' is not <LanguageCode|Path> for ValueToPixmap converter")
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
VAudioInfo
lib/python/Components/Converter/VAudioInfo.py, line 8 ↗
Class: Components.Converter.VAudioInfo.VAudioInfo. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.VAudioInfo.VAudioInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
GET_AUDIO_ICON = 0
GET_AUDIO_CODEC = 1VAudioInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.poll_interval = 1000
self.poll_enabled = True
self.lang_strings = ("ger", "german", "deu")
self.codecs = {
"01_dolbydigitalplus": ("ac3+", "digital+", "digitalplus",),
"02_dolbydigital": ("ac3", "dolbydigital",),
"03_mp3": ("mp3",),
"04_wma": ("wma",),
"05_flac": ("flac",),
"06_mpeg": ("mpeg",),
"07_lpcm": ("lpcm",),
"08_dts-hd": ("dts-hd",),
"09_dts": ("dts",),
"10_pcm": ("pcm",),
"11_aac": ("aac",),
"12_he-aac": ("he-aac",),
"13_truehd": ("truehd",),
"14_aacplus": ("aac+",),
"15_ipcm": ("ipcm",),
"16_wma-pro": ("wma pro",),
"17_vorbis": ("vorbis",),
"18_opus": ("opus",),
"19_amr": ("amr",),
"20_mp2": ("mp2",),
}
self.codec_info = {
"dolbydigitalplus": ("51", "20", "71"),
"dolbydigital": ("51", "20", "71"),
"wma": ("8", "9"),
}
self.type, self.interesting_events = {
"AudioCodec": (self.GET_AUDIO_CODEC, (iPlayableService.evUpdatedInfo,)),
"AudioIcon": (self.GET_AUDIO_ICON, (iPlayableService.evUpdatedInfo,)),
}[tokens]
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (8) and inherited methods (11)
__init__(self, tokens)changed(self, what)get_short(self, audioName)getAudio(self)getAudioCodec(self, info)getAudioIcon(self, info)getLanguage(self)getText(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
VExtraNumText
lib/python/Components/Converter/VExtraNumText.py, line 23 ↗
Class: Components.Converter.VExtraNumText.VExtraNumText. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: agc, ber, snr, time. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (3) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.VExtraNumText.VExtraNumTextvalue=property(getValue)— Components.Converter.VExtraNumText.VExtraNumText
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
SNRNUM = 0
AGCNUM = 1
BERNUM = 2
STEP = 3
SNRTEXT = 4
AGCTEXT = 5
LOCK = 6
SLOT_NUMBER = 7
SECHAND = 8
MINHAND = 9
HOURHAND = 10VExtraNumText.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = {
"AgcNum": self.AGCNUM,
"AgcText": self.AGCTEXT,
"BerNum": self.BERNUM,
"NUMBER": self.SLOT_NUMBER,
"SnrNum": self.SNRNUM,
"SnrText": self.SNRTEXT,
"Step": self.STEP,
"hourHand": self.HOURHAND,
"minHand": self.MINHAND,
"secHand": self.SECHAND
}.get(tokens, self.LOCK)
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
VfdDisplay
lib/python/Components/Converter/VfdDisplay.py, line 11 ↗
Class: Components.Converter.VfdDisplay.VfdDisplay. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: serviceref, text. Attribute probes: text. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.VfdDisplay.VfdDisplay
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
VfdDisplay.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
Poll.__init__(self)
self.num = None
self.showclock = 0
self.delay = 5000
self.loop = -1
self.type = tokens.lower().split(";")
configValue = None
for value in self.type:
if value.startswith("config."):
configValue = configfile.getResolvedKey(value, silent=True) # Invalid/non-existent keys will return None.
break
if configValue == "nothing":
self.delay = 0
self.type = ["nothing"]
else:
match configValue:
case "number":
self.type = ["number"]
case "time":
self.type = []
if "number" in self.type and "clock" not in self.type: # Only channel number.
self.delay = 0
self.poll_enabled = False
else:
self.poll_enabled = True
if "clock" in self.type and "number" not in self.type: # Only clock.
self.showclock = 1
self.delay = -1
else:
for value in self.type:
if value.isdigit():
self.delay = int(value) * 1000
break
if "loop" in self.type and self.delay:
self.loop = self.delay
self.hour = {
(False, False): "%H",
(False, True): "%k",
(True, False): "%I",
(True, True): "%l"
}[("12h" in self.type, "nozero" in self.type)]
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
VNetSpeedInfo
lib/python/Components/Converter/VNetSpeedInfo.py, line 22 ↗
Class: Components.Converter.VNetSpeedInfo.VNetSpeedInfo. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.VNetSpeedInfo.VNetSpeedInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
RCL = 0
TML = 1
RCW = 2
TMW = 3
RCLT = 4
TMLT = 5
RCWT = 6
TMWT = 7
RCL_MB = 8
TML_MB = 9
RCW_MB = 10
TMW_MB = 11
RC = 12
TM = 13
RCT = 14
TMT = 15
RC_MB = 16
TM_MB = 17
NET_TYP = 18
ERR_RCL = 19
ERR_TML = 20
DRO_RCL = 21
DRO_TML = 22
ERR_RCW = 23
ERR_TMW = 24
DRO_RCW = 25
DRO_TMW = 26VNetSpeedInfo.__init__(self, tokens, update_interval=1000)
def __init__(self, tokens, update_interval=1000):
Poll.__init__(self)
self.poll_interval = 1000
self.poll_enabled = True
self.lanreceivetotal = 0
self.lanreceivetotalout = 0
self.lanreceive = 0
self.lanreceivemb = 0
self.wlanreceivetotal = 0
self.wlanreceivetotalout = 0
self.wlanreceive = 0
self.wlanreceivemb = 0
self.lantransmittotal = 0
self.lantransmittotalout = 0
self.lantransmit = 0
self.lantransmitmb = 0
self.wlantransmittotal = 0
self.wlantransmittotalout = 0
self.wlantransmit = 0
self.wlantransmitmb = 0
self.receivetotal = 0
self.receivetotalout = 0
self.receive = 0
self.transmittotal = 0
self.transmittotalout = 0
self.transmit = 0
self.receivemb = 0
self.transmitmb = 0
self.nettyp = "NONE"
self.error_lanreceive = 0
self.drop_lanreceive = 0
self.error_lantransmite = 0
self.drop_lantransmite = 0
self.error_wlanreceive = 0
self.drop_wlanreceive = 0
self.error_wlantransmite = 0
self.drop_wlantransmite = 0
Converter.__init__(self, tokens)
self.type = {
"DRO_RCL": self.DRO_RCL,
"DRO_RCW": self.DRO_RCW,
"DRO_TML": self.DRO_TML,
"DRO_TMW": self.DRO_TMW,
"ERR_RCL": self.ERR_RCL,
"ERR_RCW": self.ERR_RCW,
"ERR_TML": self.ERR_TML,
"ERR_TMW": self.ERR_TMW,
"NET_TYP": self.NET_TYP,
"RC": self.RC,
"RCL": self.RCL,
"RCLT": self.RCLT,
"RCL_MB": self.RCL_MB,
"RCT": self.RCT,
"RCW": self.RCW,
"RCWT": self.RCWT,
"RCW_MB": self.RCW_MB,
"RC_MB": self.RC_MB,
"TM": self.TM,
"TML": self.TML,
"TMLT": self.TMLT,
"TML_MB": self.TML_MB,
"TMT": self.TMT,
"TMW": self.TMW,
"TMWT": self.TMWT,
"TMW_MB": self.TMW_MB,
"TM_MB": self.TM_MB
}.get(tokens, tokens)
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (4) and inherited methods (11)
__init__(self, tokens, update_interval=1000)changed(self, what)getText(self)updateNetSpeedInfoStatus(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
VServiceInfo
lib/python/Components/Converter/VServiceInfo.py, line 7 ↗
Class: Components.Converter.VServiceInfo.VServiceInfo. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementboolean=property(getBoolean)— Components.Converter.VServiceInfo.VServiceInfotext=property(getText)— Components.Converter.VServiceInfo.VServiceInfovalue=property(getValue)— Components.Converter.VServiceInfo.VServiceInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
AUDIOTRACKS_AVAILABLE = 1
SUBTITLES_AVAILABLE = 2VServiceInfo.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type, self.interesting_events = {
"AudioTracksAvailable": (self.AUDIOTRACKS_AVAILABLE, (iPlayableService.evUpdatedInfo,)),
"SubtitlesAvailable": (self.SUBTITLES_AVAILABLE, (iPlayableService.evUpdatedInfo,)),
}[tokens]
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (6) and inherited methods (10)
__init__(self, tokens)changed(self, what)getBoolean(self)getServiceInfoString(self, info, what, convert=lambda x: f'{int(x)}')getText(self)getValue(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
VServiceOrbitalPosition
lib/python/Components/Converter/VServiceOrbitalPosition.py, line 7 ↗
Class: Components.Converter.VServiceOrbitalPosition.VServiceOrbitalPosition. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: info, service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.VServiceOrbitalPosition.VServiceOrbitalPosition
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
FULL = 0
SHORT = 1VServiceOrbitalPosition.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.type = self.SHORT if tokens == "Short" else self.FULL
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (10)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
VtiInfo
lib/python/Components/Converter/VtiInfo.py, line 9 ↗
Class: Components.Converter.VtiInfo.VtiInfo. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: service. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (5) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Pollboolean=property(getBoolean)— Components.Converter.VtiInfo.VtiInfotext=property(getText)— Components.Converter.VtiInfo.VtiInfo
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
ECMINFO = 1
ONLINETEST = 21
TEMPINFO = 22
FANINFO = 23
ALL = 24VtiInfo.__init__(self, tokens)
def __init__(self, tokens):
Poll.__init__(self)
Converter.__init__(self, tokens)
self.poll_interval = 2000
self.poll_enabled = True
self.type = {
"EcmInfo": self.ECMINFO,
"FanInfo": self.FANINFO,
"OnlineTest": self.ONLINETEST,
"TempInfo": self.TEMPINFO
}.get(tokens, self.ALL)
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (8) and inherited methods (11)
__init__(self, tokens)changed(self, what)ecmfile(self)fanfile(self)getBoolean(self)getText(self)pingtest(self)tempfile(self)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
VtiTempFan
lib/python/Components/Converter/VtiTempFan.py, line 6 ↗
Class: Components.Converter.VtiTempFan.VtiTempFan. Bases: Poll, Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (4) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementpoll_interval=property(lambda self: self.__interval, __setInterval)— Components.Converter.Poll.Pollpoll_enabled=property(lambda self: self.__enabled, __setEnable)— Components.Converter.Poll.Polltext=property(getText)— Components.Converter.VtiTempFan.VtiTempFan
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
Class-level constants and option maps
TEMPINFO = 1
FANINFO = 2
ALL = 5VtiTempFan.__init__(self, tokens)
def __init__(self, tokens):
Poll.__init__(self)
Converter.__init__(self, tokens)
self.poll_interval = 30000
self.poll_enabled = True
self.type = {
"FanInfo": self.FANINFO,
"TempInfo": self.TEMPINFO
}.get(tokens, self.ALL)
Poll.__init__(self)
def __init__(self):
self.__poll_timer = eTimer()
self.__poll_timer.callback.append(self.poll)
self.__interval = 1000
self.__enabled = False
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (5) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspended)—Components.Converter.Poll.Polldestroy(self)—Components.Converter.Poll.PollhandleCommand(self, cmd)—Components.Converter.Converter.Converterpoll(self)—Components.Converter.Poll.Poll
VWeather
lib/python/Components/Converter/VWeather.py, line 32 ↗
Class: Components.Converter.VWeather.VWeather. Bases: Converter.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: none. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (2) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementtext=property(getText)— Components.Converter.VWeather.VWeather
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
VWeather.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
global weather_data
if weather_data is None:
weather_data = WeatherData()
self.type = tokens
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
Declared methods (3) and inherited methods (11)
Inherited methods
connectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.Elementchanged(self, *args, **kwargs)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.Converter
XmlMultiContent
Builds native list content from XML templates, styles and row field indexes. Read the list-template chapter for row contracts and matching source data.
lib/python/Components/Converter/XmlMultiContent.py, line 205 ↗
Class: Components.Converter.XmlMultiContent.XmlMultiContent. Bases: StringList, MultiContentTemplateParser.
Inherits Converter. Constructor arguments belong inside <convert>; they are not widget attributes.
Direct upstream accesses declared here: additionalTemplateAttributes, indexNames, list, style, template, templateDataFormats. Attribute probes: none. These are source-code accesses, not a claim that every property is required in every mode.
Upstream accesses in base classes
Components.Converter.StringList.StringList: accesseslist, selectionChanged; probesnone.Components.Converter.Converter.Converter: accesseshandleCommand; probesnone.
Effective Python properties (3) and value/range constants
These are Python descriptors, including inherited ones. Their usefulness as renderer outputs depends on the selected mode. Internal properties such as suspended manage lifecycle.
suspended=property(lambda self: self.__suspended, setSuspend)— Components.Element.Elementcurrent=property(getCurrent)— Components.Converter.StringList.StringListindex=property(getIndex, setIndex)— Components.Converter.StringList.StringList
Arguments, defaults and skin parsing — exact implementation
Read the selected class first, then any base constructor or applySkin it calls. This preserves separators, defaults, validation and conditional behaviour. It is source code for reference, not a desktop Python example.
XmlMultiContent.__init__(self, tokens)
def __init__(self, tokens):
StringList.__init__(self, tokens)
MultiContentTemplateParser.__init__(self)
self.activeStyle = None
self.activeTemplate = None # Not "Default", so that the first changed() call always reads the template.
self.dom = tokens.get("dom")
if self.dom is not None:
self.scale = tokens.get("scale")
self.itemWidth = tokens.get("itemWidth", 0)
self.itemHeight = tokens.get("itemHeight", 0)
else:
print("[XmlMultiContent] Error: This is for internal usage and not an argument for a 'converter' tag!")
StringList.__init__(self, tokens)
def __init__(self, tokens):
Converter.__init__(self, tokens)
self.content = None
Converter.__init__(self, tokens)
def __init__(self, tokens):
Element.__init__(self)
self.converter_arguments = tokens
Element.__init__(self)
def __init__(self):
self.downstream_elements = CList()
self.master = None
self.sources = []
self.source = None
self.__suspended = True
self.cache = None
self.onChanged = []
MultiContentTemplateParser.__init__(self, debug=False)
def __init__(self, debug=False):
TemplateParser.__init__(self, debug=debug)
self.template = {}
self.indexNames = {}
self.additionalTemplateAttributes = {}
self.templateDataFormats = {}
Declared methods (3) and inherited methods (17)
Inherited methods
readTemplate(self, templateName)—Components.Converter.XmlMultiContent.MultiContentTemplateParserscalePadding(self, padding)—Components.Converter.XmlMultiContent.MultiContentTemplateParserscaleWithHeight(self, itemWidth, itemHeight)—Components.Converter.XmlMultiContent.MultiContentTemplateParserconnectDownstream(self, downstream)—Components.Element.ElementconnectUpstream(self, upstream)—Components.Element.Elementconnect(self, upstream)—Components.Element.ElementdisconnectAll(self)—Components.Element.ElementdisconnectDownstream(self, downstream)—Components.Element.ElementsetSuspend(self, suspended)—Components.Element.ElementcheckSuspend(self)—Components.Element.ElementdoSuspend(self, suspend)—Components.Element.Elementdestroy(self)—Components.Element.ElementhandleCommand(self, cmd)—Components.Converter.Converter.ConvertergetCurrent(self)—Components.Converter.StringList.StringListgetIndex(self)—Components.Converter.StringList.StringListselectionChanged(self, index)—Components.Converter.StringList.StringListsetIndex(self, index)—Components.Converter.StringList.StringList
No matching class. Clear the filter or use the handbook search.
Properties are not all display outputs
Abschnitt betitelt „Properties are not all display outputs“text, boolean, value, range, pixmap, time, content and list are common data contracts. A given converter may expose only some of them. Properties such as suspended belong to the Element lifecycle and should not be selected as displayed values merely because they appear in the API list.
ConditionalShowHide illustrates another case: it reads a boolean, changes downstream visibility and forwards other requests upstream. It is useful between a boolean-producing converter and a fixed-label/rectangle renderer. It does not manufacture a useful text label for every boolean source.
Poll supplies scheduled updates as a mixin. Its presence in the Converter directory does not make <convert type="Poll">…</convert> a valid standalone conversion. Likewise, a source module named StaticText and a converter named StaticText live in different namespaces; select the intended class.
Inherited implementations matter: EventTime delegates to EventInfo; inspect that constructor and its properties. The catalogue includes base contracts so a small compatibility subclass does not appear to have an empty API.
