Named GUI component API
<widget name="status" … /> skins an object already created by the screen’s Python code. The XML name does not tell you its class. Find the assignment, for example self["status"] = Label("Ready"), then look up that Python component here.
from Components.Label import Labelfrom Components.MenuList import MenuList
self["status"] = Label("Ready")self["choices"] = MenuList(["One", "Two", "Three"])<widget name="status" position="24,24" size="400,40" font="Regular;28" foregroundColor="#00FFFFFF" /><widget name="choices" position="24,84" size="400,210" itemHeight="42" enableWrapAround="1" />Here Label uses eLabel, while MenuList uses eListbox. The string-list content supplies the rows. Adding a renderer-style <convert> chain does not turn a named GUI component into a source.
Why the native class alone is insufficient
Section titled “Why the native class alone is insufficient”| Component | Skinning consequence |
|---|---|
Input |
createWidget() returns eLabel; do not use the native eInput attribute list just because of the Python name. |
TunerInfo |
createWidget() chooses a label or slider according to the constructor mode. |
ScrollLabel |
Creates multiple labels and a scrollbar; its own applySkin distributes attributes. |
ServiceListLegacy |
Adds service fonts, event colours and progress-bar attributes beyond native listbox styling. |
ServiceList |
Modern list configuration and templates; its own contract differs from the legacy component. |
Addons such as ScreenButtonsBar |
Consume layout, button, font and spacing options while building list content. |
The catalogue includes 55 core GUI-component classes and helpers, excluding the separately listed renderers. Plugins can add their own classes and applySkin handlers; those are outside this core-source inventory. A screen-local GUI class also needs its own contract. Helper classes without a concrete native widget are retained so inheritance remains understandable.
GUI component catalogue
Section titled “GUI component catalogue”55 entries
Source snapshot f4135659cb. Current attribute counts exclude legacy names and structural XML names. Deprecated attributes and compatibility migrations have their own reference.
ButtonSequence
lib/python/Components/Addons/ButtonSequence.py, line 15 ↗
Class: Components.Addons.ButtonSequence.ButtonSequence. Bases: GUIAddon.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 4. alignment, orientation, pixmaps, spacing These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.Addons.ButtonSequence.ButtonSequence
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.
ButtonSequence.__init__(self)
def __init__(self):
GUIAddon.__init__(self)
self.l = eListboxPythonMultiContent() # noqa: E741
self.l.setBuildFunc(self.buildEntry)
self.l.setItemHeight(36)
self.l.setItemWidth(36)
self.spacing = applySkinFactor(10)
self.orientations = {"orHorizontal": eListbox.orHorizontal, "orVertical": eListbox.orVertical}
self.orientation = eListbox.orHorizontal
self.alignment = "left"
self.pixmaps = {}
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ButtonSequence.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
attribs = []
for (attrib, value) in self.skinAttributes[:]:
if attrib == "pixmaps":
self.pixmaps = {k: v for k, v in (item.split(':') for item in value.split(','))}
elif attrib == "spacing":
self.spacing = self.parseScale(value)
elif attrib == "alignment":
self.alignment = value
elif attrib == "orientation":
self.orientation = self.orientations.get(value, self.orientations["orHorizontal"])
if self.orientation == eListbox.orHorizontal:
self.instance.setOrientation(eListbox.orVertical)
self.l.setOrientation(eListbox.orVertical)
else:
self.instance.setOrientation(eListbox.orHorizontal)
self.l.setOrientation(eListbox.orHorizontal)
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
return GUIAddon.applySkin(self, desktop, parent)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (7) and inherited methods (23)
__init__(self)onContainerShown(self)updateAddon(self, sequence)buildEntry(self, sequence)postWidgetCreate(self, instance)constructButtonSequence(self)applySkin(self, desktop, parent)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentparseScale(self, value)—Components.Addons.GUIAddon.GUIAddonconnectRelatedElement(self, relatedElementName, container)—Components.Addons.GUIAddon.GUIAddononSourceVisibleChanged(self)—Components.Addons.GUIAddon.GUIAddon
ColorButtonsSequence
lib/python/Components/Addons/ColorButtonsSequence.py, line 14 ↗
Class: Components.Addons.ColorButtonsSequence.ColorButtonsSequence. Bases: GUIAddon.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 11. alignment, buttonCornerRadius, font, foregroundColor, layoutStyle, orientation, pixmaps, renderType, spacing, spacingPixmapText, textColors These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.Addons.ColorButtonsSequence.ColorButtonsSequence
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.
ColorButtonsSequence.__init__(self)
def __init__(self):
GUIAddon.__init__(self)
self.foreColor = None
self.font = gFont("Regular", 18)
self.l = eListboxPythonMultiContent() # noqa: E741
self.l.setBuildFunc(self.buildEntry)
self.l.setItemHeight(35)
self.l.setItemWidth(35)
self.spacingButtons = applySkinFactor(40)
self.spacingPixmapText = applySkinFactor(10)
self.layoutStyle = "fixed"
self.colorIndicatorStyle = "pixmap"
self.orientations = {"orHorizontal": eListbox.orHorizontal, "orVertical": eListbox.orVertical}
self.orientation = eListbox.orHorizontal
self.renderType = "ImageTextRight" # Currently supported are ImageTextRight, ImageTextOver and ColorTextOver
self.alignment = "left"
self.cornerRadius = 0
self.pixmaps = {}
self.colors = {}
self.textRenderer = Label("")
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ColorButtonsSequence.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
attribs = []
for (attrib, value) in self.skinAttributes[:]:
if attrib == "pixmaps":
self.pixmaps = {k: v for k, v in (item.split(':') for item in value.split(','))}
elif attrib == "spacing":
self.spacingButtons = self.parseScale(value)
elif attrib == "spacingPixmapText":
self.spacingPixmapText = self.parseScale(value)
elif attrib == "layoutStyle":
self.layoutStyle = value
elif attrib == "alignment":
self.alignment = value
elif attrib == "orientation":
self.orientation = self.orientations.get(value, self.orientations["orHorizontal"])
if self.orientation == eListbox.orHorizontal:
self.instance.setOrientation(eListbox.orVertical)
self.l.setOrientation(eListbox.orVertical)
else:
self.instance.setOrientation(eListbox.orHorizontal)
self.l.setOrientation(eListbox.orHorizontal)
elif attrib == "font":
self.font = parseFont(value, parent.scale)
elif attrib == "foregroundColor":
self.foreColor = parseColor(value).argb()
elif attrib == "textColors":
self.colors = {k: v for k, v in (item.split(':') for item in value.split(','))}
elif attrib == "buttonCornerRadius":
self.cornerRadius = self.parseScale(value)
elif attrib == "renderType":
self.renderType = value
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
self.l.setFont(0, self.font)
return GUIAddon.applySkin(self, desktop, parent)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (9) and inherited methods (23)
__init__(self)onContainerShown(self)updateAddon(self, sequence)buildEntry(self, sequence)postWidgetCreate(self, instance)constructColorButtonSequence(self)applySkin(self, desktop, parent)_calcTextWidth(self, text, font=None, size=None)getDesktopWith(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentparseScale(self, value)—Components.Addons.GUIAddon.GUIAddonconnectRelatedElement(self, relatedElementName, container)—Components.Addons.GUIAddon.GUIAddononSourceVisibleChanged(self)—Components.Addons.GUIAddon.GUIAddon
GUIAddon
lib/python/Components/Addons/GUIAddon.py, line 5 ↗
Class: Components.Addons.GUIAddon.GUIAddon. Bases: GUIComponent.
No single GUI_WIDGET declaration. Inspect the construction contract below; this can be a base/helper, composite or non-visual class.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
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.
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (5) and inherited methods (22)
__init__(self)parseScale(self, value)connectRelatedElement(self, relatedElementName, container)onContainerShown(self)onSourceVisibleChanged(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
MainMenu
lib/python/Components/Addons/MainMenu.py, line 23 ↗
Class: Components.Addons.MainMenu.MainMenu. Bases: GUIAddon.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 9. backgroundColor, font, foregroundColor, foregroundColorSelected, iconSize, itemHeight, itemWidth, maxWidth, minWidth These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.Addons.MainMenu.MainMenu
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.
MainMenu.__init__(self)
def __init__(self):
GUIAddon.__init__(self)
self.itemHeight = 36
self.itemWidth = 36
self.l = eListboxPythonMultiContent() # noqa: E741
self.l.setBuildFunc(self.buildEntry)
self.l.setItemHeight(self.itemHeight)
self.l.setItemWidth(self.itemWidth)
self.orientation = eListbox.orVertical
self.font = gFont("Regular", applySkinFactor(22))
self.iconSize = 0
self.foregroundColor = 0xffffff
self.foregroundColorSelected = 0xffffff
self.backgroundColor = 0x000000
self.textRenderer = Label("")
self.longestMenuTextWidth = 0
self.minWidth = 100
self.maxWidth = 700
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
MainMenu.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
attribs = []
for (attrib, value) in self.skinAttributes[:]:
if attrib == "font":
self.font = parseFont(value, parent.scale)
elif attrib == "foregroundColor":
self.foregroundColor = parseColor(value).argb()
elif attrib == "foregroundColorSelected":
self.foregroundColorSelected = parseColor(value).argb()
elif attrib == "backgroundColor":
self.backgroundColor = parseColor(value).argb()
elif attrib == "iconSize":
self.iconSize = self.parseScale(value)
elif attrib == "minWidth":
self.minWidth = self.parseScale(value)
elif attrib == "maxWidth":
self.maxWidth = self.parseScale(value)
elif attrib == "itemWidth":
self.itemWidth = self.parseScale(value)
elif attrib == "itemHeight":
self.itemHeight = self.parseScale(value)
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
self.l.setFont(0, self.font)
self.l.setItemHeight(self.itemHeight)
self.l.setItemWidth(self.itemWidth)
return GUIAddon.applySkin(self, desktop, parent)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (18) and inherited methods (23)
__init__(self)onContainerShown(self)getDesktopWith(self)_calcTextWidth(self, text, font=None, size=None)buildEntry(self, *args)moveSelection(self, index)selectionChanged(self)setMinWidth(self, value)setMaxWidth(self, value)setIconSize(self, value)setForegroundColor(self, value)setForegroundColorSelected(self, value)setBackgroundColor(self, value)setItemWidth(self, value)setItemHeight(self, value)postWidgetCreate(self, instance)constructMenu(self)applySkin(self, desktop, parent)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentparseScale(self, value)—Components.Addons.GUIAddon.GUIAddonconnectRelatedElement(self, relatedElementName, container)—Components.Addons.GUIAddon.GUIAddononSourceVisibleChanged(self)—Components.Addons.GUIAddon.GUIAddon
Pager
lib/python/Components/Addons/Pager.py, line 15 ↗
Class: Components.Addons.Pager.Pager. Bases: GUIAddon.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 17. bubbletextBackgroundColor, bubbletextFont, bubbletextPadding, currentPageStyle, foregroundColor, itemHeight, itemWidth, maxPages, orientation, picD, picL, picPage, picPageCurrent, picR, picU, showIcons, spacing These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.Addons.Pager.Pager
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.
Pager.__init__(self)
def __init__(self):
GUIAddon.__init__(self)
self.foreColor = None
self.l = eListboxPythonMultiContent() # noqa: E741
self.l.setBuildFunc(self.buildEntry)
self.l.setItemHeight(25) # 25 is the height of the default images. For other images set the height in the skin.
self.l.setItemWidth(25) # 25 is the width of the default images. For other images set the width in the skin.
self.spacing = applySkinFactor(5)
self.font = gFont("Regular", 16)
self.picDotPage = LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/dot.png"))
self.picDotCurPage = LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/dotfull.png"))
self.picShevronLeft = LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/shevronleft.png"))
self.picShevronRight = LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/shevronright.png"))
self.picShevronUp = LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/shevronup.png"))
self.picShevronDown = LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/shevrondown.png"))
self.showIcons = "showAll" # can be "showAll", "onlyFirst", "onlyLast"
self.orientations = {"orHorizontal": eListbox.orHorizontal, "orVertical": eListbox.orVertical}
self.orientation = eListbox.orHorizontal
self.maxPages = 10
self.currentPageStyle = "bubbletext" # possible is bubbletext and graphic
self.textRenderer = Label("")
self.bubbletextCornerRadius = 12
self.bubbletextBkColor = 0x02444444
self.bubbletextPadding = 10
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
Pager.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
attribs = []
for (attrib, value) in self.skinAttributes[:]:
if attrib == "picPage":
pic = LoadPixmap(resolveFilename(SCOPE_GUISKIN, value))
if pic:
self.picDotPage = pic
elif attrib == "picPageCurrent":
pic = LoadPixmap(resolveFilename(SCOPE_GUISKIN, value))
if pic:
self.picDotCurPage = pic
elif attrib == "picL":
pic = LoadPixmap(resolveFilename(SCOPE_GUISKIN, value))
if pic:
self.picShevronLeft = pic
elif attrib == "picR":
pic = LoadPixmap(resolveFilename(SCOPE_GUISKIN, value))
if pic:
self.picShevronRight = pic
elif attrib == "picU":
pic = LoadPixmap(resolveFilename(SCOPE_GUISKIN, value))
if pic:
self.picShevronUp = pic
elif attrib == "picD":
pic = LoadPixmap(resolveFilename(SCOPE_GUISKIN, value))
if pic:
self.picShevronDown = pic
elif attrib == "itemHeight":
self.l.setItemHeight(self.parseScale(value))
elif attrib == "itemWidth":
self.l.setItemWidth(self.parseScale(value))
elif attrib == "spacing":
self.spacing = self.parseScale(value)
elif attrib == "showIcons":
self.showIcons = value
elif attrib == "maxPages":
self.maxPages = int(value)
elif attrib == "currentPageStyle":
self.currentPageStyle = value
elif attrib == "bubbletextFont":
self.font = parseFont(value, parent.scale)
elif attrib == "bubbletextPadding":
self.bubbletextPadding = self.parseScale(value)
elif attrib == "foregroundColor":
self.foreColor = parseColor(value).argb()
elif attrib == "bubbletextBackgroundColor":
self.bubbletextBkColor = parseColor(value).argb()
elif attrib == "orientation":
self.orientation = self.orientations.get(value, self.orientations["orHorizontal"])
if self.orientation == eListbox.orHorizontal:
self.instance.setOrientation(eListbox.orVertical)
self.l.setOrientation(eListbox.orVertical)
else:
self.instance.setOrientation(eListbox.orHorizontal)
self.l.setOrientation(eListbox.orHorizontal)
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
self.l.setFont(0, self.font)
return GUIAddon.applySkin(self, desktop, parent)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (15) and inherited methods (22)
__init__(self)onContainerShown(self)onSourceVisibleChanged(self, visible)buildEntry(self, currentPage, pageCount)selChange(self, currentPage, pagesCount)postWidgetCreate(self, instance)getSourceOrientation(self)getCurrentIndex(self)getSourceSize(self)getListCount(self)getListItemSize(self)initPager(self)applySkin(self, desktop, parent)_calcTextWidth(self, text, font=None, size=None)getDesktopWith(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentparseScale(self, value)—Components.Addons.GUIAddon.GUIAddonconnectRelatedElement(self, relatedElementName, container)—Components.Addons.GUIAddon.GUIAddon
ScreenButtonsBar
lib/python/Components/Addons/ScreenButtonsBar.py, line 14 ↗
Class: Components.Addons.ScreenButtonsBar.ScreenButtonsBar. Bases: GUIAddon.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 15. actionButtonsPos, alignment, buttonCornerRadius, font, foregroundColor, layoutStyle, orientation, pixmaps, renderType, spacingAction, spacingActionColorGroups, spacingColor, spacingColorTight, spacingPixmapText, textColors These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.Addons.ScreenButtonsBar.ScreenButtonsBar
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.
ScreenButtonsBar.__init__(self)
def __init__(self):
GUIAddon.__init__(self)
self.foreColor = None
self.font = gFont("Regular", 18)
self.l = eListboxPythonMultiContent() # noqa: E741
self.l.setBuildFunc(self.buildEntry)
self.l.setItemHeight(35)
self.l.setItemWidth(35)
self.spacingButtons = applySkinFactor(40)
self.spacingButtonsTight = applySkinFactor(30)
self.spacingPixmapText = applySkinFactor(10)
self.layoutStyle = "fixed"
self.colorIndicatorStyle = "pixmap"
self.orientations = {"orHorizontal": eListbox.orHorizontal, "orVertical": eListbox.orVertical}
self.orientation = eListbox.orHorizontal
self.actionButtonsPosition = "farRight" # can be left, right, farRight
self.renderType = "ImageTextRight" # Currently supported are ImageTextRight, ImageTextOver and ColorTextOver
self.alignment = "left"
self.cornerRadius = 0
self.pixmaps = {}
self.colors = {}
self.textRenderer = Label("")
self.colorButtonSources = {}
self.actionButtonSources = {}
self.spacing = applySkinFactor(10)
self.spacingBetweenActionAndColorGroups = applySkinFactor(60)
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ScreenButtonsBar.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
attribs = []
for (attrib, value) in self.skinAttributes[:]:
if attrib == "actionButtonsPos":
self.actionButtonsPosition = value
elif attrib == "pixmaps":
self.pixmaps = {k: v for k, v in (item.split(':') for item in value.split(','))}
elif attrib == "spacingColor":
self.spacingButtons = self.parseScale(value)
elif attrib == "spacingColorTight":
self.spacingButtonsTight = self.parseScale(value)
elif attrib == "spacingAction":
self.spacing = self.parseScale(value)
elif attrib == "spacingPixmapText":
self.spacingPixmapText = self.parseScale(value)
elif attrib == "spacingActionColorGroups":
self.spacingBetweenActionAndColorGroups = self.parseScale(value)
elif attrib == "layoutStyle":
self.layoutStyle = value
elif attrib == "alignment":
self.alignment = value
elif attrib == "orientation":
self.orientation = self.orientations.get(value, self.orientations["orHorizontal"])
if self.orientation == eListbox.orHorizontal:
self.instance.setOrientation(eListbox.orVertical)
self.l.setOrientation(eListbox.orVertical)
else:
self.instance.setOrientation(eListbox.orHorizontal)
self.l.setOrientation(eListbox.orHorizontal)
elif attrib == "font":
self.font = parseFont(value, parent.scale)
elif attrib == "foregroundColor":
self.foreColor = parseColor(value).argb()
elif attrib == "textColors":
self.colors = {k: v for k, v in (item.split(':') for item in value.split(','))}
elif attrib == "buttonCornerRadius":
self.cornerRadius = self.parseScale(value)
elif attrib == "renderType":
self.renderType = value
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
self.l.setFont(0, self.font)
return GUIAddon.applySkin(self, desktop, parent)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (9) and inherited methods (23)
__init__(self)onContainerShown(self)updateAddon(self, sequenceColor, sequenceAction)buildEntry(self, sequence, sequenceAction)postWidgetCreate(self, instance)constructButtonSequence(self)applySkin(self, desktop, parent)_calcTextWidth(self, text, font=None, size=None)getDesktopWidth(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentparseScale(self, value)—Components.Addons.GUIAddon.GUIAddonconnectRelatedElement(self, relatedElementName, container)—Components.Addons.GUIAddon.GUIAddononSourceVisibleChanged(self)—Components.Addons.GUIAddon.GUIAddon
ScreenHeader
lib/python/Components/Addons/ScreenHeader.py, line 12 ↗
Class: Components.Addons.ScreenHeader.ScreenHeader. Bases: GUIAddon.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 6. backgroundColor, pathFont, pathForegroundColor, titleFont, titleForegroundColor, titleSingleFont These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.Addons.ScreenHeader.ScreenHeader
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.
ScreenHeader.__init__(self)
def __init__(self):
GUIAddon.__init__(self)
self.l = eListboxPythonMultiContent() # noqa: E741
self.l.setBuildFunc(self.buildEntry)
self.l.setItemHeight(36)
self.l.setItemWidth(36)
self.orientation = eListbox.orHorizontal
self.titleFont = gFont("Regular", applySkinFactor(22))
self.titleSingleFont = gFont("Regular", applySkinFactor(24))
self.pathFont = gFont("Regular", applySkinFactor(16))
self.titleForeground = 0xffffff
self.pathForeground = 0xffffff
self.backgroundColor = 0x000000
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ScreenHeader.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "titleFont":
self.titleFont = parseFont(value, parent.scale)
elif attrib == "titleSingleFont":
self.titleSingleFont = parseFont(value, parent.scale)
elif attrib == "pathFont":
self.pathFont = parseFont(value, parent.scale)
elif attrib == "titleForegroundColor":
self.titleForeground = parseColor(value).argb()
elif attrib == "pathForegroundColor":
self.pathForeground = parseColor(value).argb()
elif attrib == "backgroundColor":
self.backgroundColor = parseColor(value).argb()
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
self.l.setFont(0, self.titleFont)
self.l.setFont(1, self.pathFont)
self.l.setFont(2, self.titleSingleFont)
return GUIAddon.applySkin(self, desktop, parent)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (7) and inherited methods (23)
__init__(self)onContainerShown(self)updateAddon(self, sequence)buildEntry(self, sequence)postWidgetCreate(self, instance)constructTitleItem(self)applySkin(self, desktop, parent)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentparseScale(self, value)—Components.Addons.GUIAddon.GUIAddonconnectRelatedElement(self, relatedElementName, container)—Components.Addons.GUIAddon.GUIAddononSourceVisibleChanged(self)—Components.Addons.GUIAddon.GUIAddon
ServiceInfoBar
lib/python/Components/Addons/ServiceInfoBar.py, line 28 ↗
Class: Components.Addons.ServiceInfoBar.ServiceInfoBar. Bases: GUIAddon.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 13. alignment, autoresizeMode, elements, font, foregroundColor, orientation, permanent, pixmaps, pixmapsDisabled, separatorLineColor, separatorLineThickness, spacing, textBackColor These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.Addons.ServiceInfoBar.ServiceInfoBar
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.
ServiceInfoBar.__init__(self)
def __init__(self):
GUIAddon.__init__(self)
self.nav = NavigationInstance.instance
self.nav.record_event.append(self.gotRecordEvent)
self.refreshCryptoInfo = eTimer()
self.refreshCryptoInfo.callback.append(self.checkCrypto_update)
self.refreshAddon = eTimer()
self.refreshAddon.callback.append(self.updateAddon)
self.elements = []
self.l = eListboxPythonMultiContent() # noqa: E741
self.l.setBuildFunc(self.buildEntry)
self.l.setItemHeight(36)
self.l.setItemWidth(36)
self.spacing = applySkinFactor(10)
self.orientations = {"orHorizontal": eListbox.orHorizontal, "orVertical": eListbox.orVertical}
self.orientation = eListbox.orHorizontal
self.alignment = "left"
self.pixmaps = {}
self.pixmapsDisabled = {}
self.separatorLineColor = 0xC0C0C0
self.foreColor = 0xFFFFFF
self.textBackColor = None
self.separatorLineThickness = 0
self.autoresizeMode = "auto" # possible values: auto, fixed, condensed
self.font = gFont("Regular", 18)
self.__event_tracker = None
self.currentCrypto = ""
self.tuner_string = ""
self.textRenderer = Label("")
self.permanentIcons = []
self.records_running = 0
self.streamServer = eStreamServer.getInstance()
self.currentServiceSource = None
self.frontendInfoSource = None
self.isCryptedDetected = False
self.tunerColors = parameters.get("FrontendInfoColors", (0x0000FF00, 0x00FFFF00, 0x007F7F7F)) # tuner active, busy, available colors
self.instanceInfoBarSubserviceSelection = None
GUIAddon.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.source = None
self.sources = {}
self.relatedScreen = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ServiceInfoBar.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
attribs = []
for (attrib, value) in self.skinAttributes[:]:
if attrib == "pixmaps":
self.pixmaps = {k: v for k, v in (item.split(':') for item in value.split(','))}
elif attrib == "pixmapsDisabled":
self.pixmapsDisabled = {k: v for k, v in (item.split(':') for item in value.split(','))}
elif attrib == "spacing":
self.spacing = self.parseScale(value)
elif attrib == "alignment":
self.alignment = value
elif attrib == "orientation":
self.orientation = self.orientations.get(value, self.orientations["orHorizontal"])
if self.orientation == eListbox.orHorizontal:
self.instance.setOrientation(eListbox.orVertical)
self.l.setOrientation(eListbox.orVertical)
else:
self.instance.setOrientation(eListbox.orHorizontal)
self.l.setOrientation(eListbox.orHorizontal)
elif attrib == "elements":
self.elements = value.split(",")
elif attrib == "separatorLineColor":
self.foreColor = parseColor(value).argb()
elif attrib == "separatorLineThickness":
self.separatorLineThickness = self.parseScale(value)
elif attrib == "autoresizeMode":
self.autoresizeMode = value
elif attrib == "font":
self.font = parseFont(value, parent.scale)
elif attrib == "foregroundColor":
self.foreColor = parseColor(value).argb()
elif attrib == "textBackColor":
self.textBackColor = parseColor(value).argb()
elif attrib == "permanent":
self.permanentIcons = value.split(",")
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
self.l.setFont(0, self.font)
return GUIAddon.applySkin(self, desktop, parent)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (14) and inherited methods (22)
__init__(self)onContainerShown(self)destroy(self)remove_doubles(self, a_list)gotRecordEvent(self, service, event)scheduleAddonUpdate(self)checkCrypto_update(self)updateAddon(self)detectVisible(self, key)buildEntry(self, sequence)getDesktopWith(self)_calcTextWidth(self, text, font=None, size=None)postWidgetCreate(self, instance)applySkin(self, desktop, parent)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentparseScale(self, value)—Components.Addons.GUIAddon.GUIAddonconnectRelatedElement(self, relatedElementName, container)—Components.Addons.GUIAddon.GUIAddononSourceVisibleChanged(self)—Components.Addons.GUIAddon.GUIAddon
BlinkingPixmap
lib/python/Components/BlinkingPixmap.py, line 5 ↗
Class: Components.BlinkingPixmap.BlinkingPixmap. Bases: BlinkingWidget.
No single GUI_WIDGET declaration. Inspect the construction contract below; this can be a base/helper, composite or non-visual class.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
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.
BlinkingPixmap.__init__(self)
def __init__(self):
BlinkingWidget.__init__(self)
BlinkingWidget.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.blinking = False
self.setBlinkTime(500)
self.timer = eTimer()
self.timer.callback.append(self.blink)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (26)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetBlinkTime(self, time)—Components.ConditionalWidget.BlinkingWidgetblink(self)—Components.ConditionalWidget.BlinkingWidgetstartBlinking(self)—Components.ConditionalWidget.BlinkingWidgetstopBlinking(self)—Components.ConditionalWidget.BlinkingWidget
BlinkingPixmapConditional
lib/python/Components/BlinkingPixmap.py, line 10 ↗
Class: Components.BlinkingPixmap.BlinkingPixmapConditional. Bases: BlinkingWidgetConditional, PixmapConditional.
Native root: ePixmap (18 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
Inherited Python attribute handlers
Components.Pixmap.Pixmap:offset
Inheritance does not mean every branch calls every base handler. The applySkin implementations below show delegation and precedence.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = ePixmap — Components.Pixmap.Pixmap
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.
BlinkingPixmapConditional.__init__(self)
def __init__(self):
BlinkingWidgetConditional.__init__(self)
PixmapConditional.__init__(self)
BlinkingWidgetConditional.__init__(self)
def __init__(self):
BlinkingWidget.__init__(self)
ConditionalWidget.__init__(self)
BlinkingWidget.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.blinking = False
self.setBlinkTime(500)
self.timer = eTimer()
self.timer.callback.append(self.blink)
PixmapConditional.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
ConditionalWidget.__init__(self)
Pixmap.__init__(self)
ConditionalWidget.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
GUIComponent.__init__(self)
self.setConnect(None)
if withTimer:
self.conditionCheckTimer = eTimer()
self.conditionCheckTimer.callback.append(self.update)
self.conditionCheckTimer.start(1000)
Pixmap.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.xOffset = 0
self.yOffset = 0
self.pixmap = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
Pixmap.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "offset":
self.xOffset, self.yOffset = map(int, value.split(","))
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
return GUIComponent.applySkin(self, desktop, screen)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (33)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, screen)—Components.Pixmap.Pixmapmove(self, x, y=None)—Components.Pixmap.Pixmapresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, x, y)—Components.Pixmap.PixmapgetPosition(self)—Components.Pixmap.PixmapgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.ConditionalWidget.ConditionalWidgetpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentgetSize(self)—Components.Pixmap.PixmapsetPixmap(self, pixmap)—Components.Pixmap.PixmapsetOffset(self, x, y)—Components.Pixmap.PixmapgetOffset(self)—Components.Pixmap.PixmapsetConnect(self, conditionalFunction)—Components.ConditionalWidget.ConditionalWidgetactivateCondition(self, condition)—Components.ConditionalWidget.BlinkingWidgetConditionalupdate(self)—Components.ConditionalWidget.ConditionalWidgetsetBlinkTime(self, time)—Components.ConditionalWidget.BlinkingWidgetblink(self)—Components.ConditionalWidget.BlinkingWidgetstartBlinking(self)—Components.ConditionalWidget.BlinkingWidgetstopBlinking(self)—Components.ConditionalWidget.BlinkingWidget
Button
lib/python/Components/Button.py, line 7 ↗
Class: Components.Button.Button. Bases: VariableText, GUIComponent.
Native root: eButton (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eButton — Components.Button.Button
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.
Button.__init__(self, text='', onClick=None)
def __init__(self, text="", onClick=None):
if not onClick:
onClick = []
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
self.onClick = onClick
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (9) and inherited methods (23)
__init__(self, text='', onClick=None)push(self)disable(self)enable(self)connectDownstream(self, downstream)checkSuspend(self)disconnectDownstream(self, downstream)postWidgetCreate(self, instance)preWidgetRemove(self, instance)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableText
ChoiceList
lib/python/Components/ChoiceList.py, line 75 ↗
Class: Components.ChoiceList.ChoiceList. Bases: MenuList.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuList
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
ChoiceList.__init__(self, list, selection=0, enableWrapAround=False)
def __init__(self, list, selection=0, enableWrapAround=False):
MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
font = fonts.get("ChoiceList", ("Regular", 20, 25))
self.l.setFont(0, gFont(font[0], font[1]))
if parameters.get("ChoiceListNative", 0):
iconFont = fonts.get("ChoiceListIcons", ("enigma2icons", font[1]))
self.l.setFont(1, gFont(iconFont[0], iconFont[1]))
self.l.setItemHeight(font[2])
self.itemHeight = font[2]
self.selection = selection
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (3) and inherited methods (52)
__init__(self, list, selection=0, enableWrapAround=False)postWidgetCreate(self, instance)getItemHeight(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListgetCurrent(self)—Components.MenuList.MenuListgetCurrentIndex(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuList
Clock
lib/python/Components/Clock.py, line 10 ↗
Class: Components.Clock.Clock. Bases: VariableText, GUIComponent.
Created by createWidget(): eLabel. The constructor may choose a widget by mode.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
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.
Clock.__init__(self)
def __init__(self):
VariableText.__init__(self)
GUIComponent.__init__(self)
self.doClock()
self.clockTimer = eTimer()
self.clockTimer.callback.append(self.doClock)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
Clock.createWidget(self, parent)
def createWidget(self, parent):
return eLabel(parent)
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (6) and inherited methods (22)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableText
ConditionalWidget
lib/python/Components/ConditionalWidget.py, line 5 ↗
Class: Components.ConditionalWidget.ConditionalWidget. Bases: GUIComponent.
No single GUI_WIDGET declaration. Inspect the construction contract below; this can be a base/helper, composite or non-visual class.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
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.
ConditionalWidget.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
GUIComponent.__init__(self)
self.setConnect(None)
if withTimer:
self.conditionCheckTimer = eTimer()
self.conditionCheckTimer.callback.append(self.update)
self.conditionCheckTimer.start(1000)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (5) and inherited methods (21)
__init__(self, withTimer=True)postWidgetCreate(self, instance)setConnect(self, conditionalFunction)activateCondition(self, condition)update(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
BlinkingWidget
lib/python/Components/ConditionalWidget.py, line 37 ↗
Class: Components.ConditionalWidget.BlinkingWidget. Bases: GUIComponent.
No single GUI_WIDGET declaration. Inspect the construction contract below; this can be a base/helper, composite or non-visual class.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
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.
BlinkingWidget.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.blinking = False
self.setBlinkTime(500)
self.timer = eTimer()
self.timer.callback.append(self.blink)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (5) and inherited methods (22)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
BlinkingWidgetConditional
lib/python/Components/ConditionalWidget.py, line 63 ↗
Class: Components.ConditionalWidget.BlinkingWidgetConditional. Bases: BlinkingWidget, ConditionalWidget.
No single GUI_WIDGET declaration. Inspect the construction contract below; this can be a base/helper, composite or non-visual class.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
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.
BlinkingWidgetConditional.__init__(self)
def __init__(self):
BlinkingWidget.__init__(self)
ConditionalWidget.__init__(self)
BlinkingWidget.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.blinking = False
self.setBlinkTime(500)
self.timer = eTimer()
self.timer.callback.append(self.blink)
ConditionalWidget.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
GUIComponent.__init__(self)
self.setConnect(None)
if withTimer:
self.conditionCheckTimer = eTimer()
self.conditionCheckTimer.callback.append(self.update)
self.conditionCheckTimer.start(1000)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (2) and inherited methods (28)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.ConditionalWidget.ConditionalWidgetpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetConnect(self, conditionalFunction)—Components.ConditionalWidget.ConditionalWidgetupdate(self)—Components.ConditionalWidget.ConditionalWidgetsetBlinkTime(self, time)—Components.ConditionalWidget.BlinkingWidgetblink(self)—Components.ConditionalWidget.BlinkingWidgetstartBlinking(self)—Components.ConditionalWidget.BlinkingWidgetstopBlinking(self)—Components.ConditionalWidget.BlinkingWidget
ConfigList
Configuration-entry list. Native list styling and row fonts work with configuration content; editable values and actions are supplied by Python.
lib/python/Components/ConfigList.py, line 18 ↗
Class: Components.ConfigList.ConfigList. Bases: GUIComponent.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentlist=property(getList, setList)— Components.ConfigList.ConfigList
GUI_WIDGET = eListbox — Components.ConfigList.ConfigList
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.
ConfigList.__init__(self, list, session=None)
def __init__(self, list, session=None):
GUIComponent.__init__(self)
self.session = session
self.l = eListboxPythonConfigContent()
seperation = parameters.get("ConfigListSeperator", 200)
self.l.setSeperation(seperation)
height, borderWidth = parameters.get("ConfigListSlider", (17, 0))
self.l.setSlider(height, borderWidth)
self.list = list
self.timer = eTimer()
self.onSelectionChanged = []
self.current = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (31) and inherited methods (18)
__init__(self, list, session=None)execBegin(self)execEnd(self)timeout(self)postWidgetCreate(self, instance)preWidgetRemove(self, instance)selectionChanged(self)getCurrent(self, full=True)handleKey(self, key, callback=None)toggle(self)getCurrentIndex(self)setCurrentIndex(self, index)invalidateCurrent(self)invalidate(self, entry)isChanged(self)selectionEnabled(self, enabled)enableAutoNavigation(self, enabled)getList(self)setList(self, newList)goTop(self)goPageUp(self)goLineUp(self)goLineDown(self)goPageDown(self)goBottom(self)moveTop(self)pageUp(self)moveUp(self)moveDown(self)pageDown(self)moveBottom(self)
Inherited methods
onShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponent
DiskInfo
lib/python/Components/DiskInfo.py, line 11 ↗
Class: Components.DiskInfo.DiskInfo. Bases: VariableText, GUIComponent.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.DiskInfo.DiskInfo
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
FREE = 0
USED = 1
SIZE = 2DiskInfo.__init__(self, path, type, update=True)
def __init__(self, path, type, update=True):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.type = type
self.path = path
if update:
self.update()
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (2) and inherited methods (25)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableText
EPGList
lib/python/Components/EpgList.py, line 51 ↗
Class: Components.EpgList.EPGList. Bases: GUIComponent.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 47. EntryBackgroundColor, EntryBackgroundColorNow, EntryBackgroundColorNowSelected, EntryBackgroundColorPast, EntryBackgroundColorPastSelected, EntryBackgroundColorSelected, EntryBorderColor, EntryFontAlignment, EntryFontGraphical, EntryFontWrap, EntryForegroundColor, EntryForegroundColorNow, EntryForegroundColorNowSelected, EntryForegroundColorPast, EntryForegroundColorPastSelected, EntryForegroundColorSelected, EventBorderWidth, EventFontInfobar, EventFontMulti, EventFontSingle, EventFontVertical, EventNamePadding, MinimumItemHeight, NumberOfRows, PrimeTimeBackgroundColor, PrimeTimeForegroundColor, RecordBackgroundColor, RecordBackgroundColorSelected, RecordForegroundColor, RecordForegroundColorSelected, ServiceBackgroundColor, ServiceBackgroundColorNow, ServiceBorderColor, ServiceBorderWidth, ServiceFontGraphical, ServiceFontInfobar, ServiceForegroundColor, ServiceForegroundColorNow, ServiceNamePadding, ServiceNumberPadding, TimeBackgroundColor, TimeFontVertical, TimeForegroundColor, ZapBackgroundColor, ZapBackgroundColorSelected, ZapForegroundColor, ZapForegroundColorSelected These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.EpgList.EPGList
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.
EPGList.__init__(self, type=EPG_TYPE_SINGLE, selChangedCB=None, timer=None, time_epoch=120, overjump_empty=False, graphic=False)
def __init__(self, type=EPG_TYPE_SINGLE, selChangedCB=None, timer=None, time_epoch=120, overjump_empty=False, graphic=False):
sf = getSkinFactor()
self.screenwidth = int(1280 * sf) # important for compatibility to other plugins (e.g. partnerbox)
if sf == 1.5:
self.posx, self.posy, self.picx, self.picy, self.gap = skinparameter.get("EpgListIcon", (2, 13, 25, 25, 2))
self.column_service, self.column_time, self.column_remaining, self.column_gap = skinparameter.get("EpgListMulti", (240, 180, 120, 30))
self.progress_width, self.progress_height, self.progress_borderwidth = skinparameter.get("EpgListMultiProgressBar", (120, 15, 1))
self.column_weekday, self.column_datetime = skinparameter.get("EpgListSingle", (75, 225))
else:
self.posx, self.posy, self.picx, self.picy, self.gap = skinparameter.get("EpgListIcon", (1, 11, 23, 23, 1))
self.column_service, self.column_time, self.column_remaining, self.column_gap = skinparameter.get("EpgListMulti", (160, 120, 80, 20))
self.progress_width, self.progress_height, self.progress_borderwidth = skinparameter.get("EpgListMultiProgressBar", (80, 10, 1))
self.column_weekday, self.column_datetime = skinparameter.get("EpgListSingle", (50, 150))
self.cur_event = None
self.cur_service = None
self.offs = 0
self.time_base = None
self.time_epoch = time_epoch
self.select_rect = None
self.event_rect = None
self.service_rect = None
self.listSizeWidth = None
self.currentlyPlaying = None
self.showPicon = False
self.showServiceTitle = True
self.showServiceNumber = False
self.skinUsingForeColorByTime = False
self.skinUsingBackColorByTime = False
# //vertical
self.days = (_("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun"))
# //
self.listRows = 8
self.listFirstServiceIndex = 0
self.pageRow = 0
self.serviceList = ()
self.overjump_empty = overjump_empty
self.timer = timer
self.onSelChanged = []
if selChangedCB is not None:
self.onSelChanged.append(selChangedCB)
GUIComponent.__init__(self)
self.type = type
self.graphic = graphic
self.l = eListboxPythonMultiContent()
if type == EPG_TYPE_SINGLE or type == EPG_TYPE_ENHANCED or type == EPG_TYPE_INFOBAR:
self.l.setBuildFunc(self.buildSingleEntry)
elif type == EPG_TYPE_MULTI:
self.l.setBuildFunc(self.buildMultiEntry)
elif type == EPG_TYPE_GRAPH or type == EPG_TYPE_INFOBARGRAPH:
self.l.setBuildFunc(self.buildGraphEntry)
elif type == EPG_TYPE_VERTICAL:
self.l.setBuildFunc(self.buildVerticalEntry)
else:
assert (type == EPG_TYPE_SIMILAR)
self.l.setBuildFunc(self.buildSimilarEntry)
self.epgcache = eEPGCache.getInstance()
self.clocks = [LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_add.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_pre.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_prepost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_post.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_add.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_pre.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_zap.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_prepost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_post.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_add.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_pre.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_zaprec.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_prepost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_post.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_disabled.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_fallback.png'))]
self.selclocks = [LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_add.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selpre.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selprepost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selpost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_add.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selpre.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_zap.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selprepost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selpost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_add.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selpre.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_zaprec.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selprepost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_selpost.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_disabled.png')),
LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_fallback.png'))]
self.autotimericon = LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_autotimer.png'))
self.icetvicon = LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_icetv.png'))
self.primetimeicon = LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/epgclock_primetime.png'))
self.catchupicon = LoadPixmap(cached=True, path=resolveFilename(SCOPE_GUISKIN, 'icons/catchup.png'))
self.nowEvPix = None
self.nowSelEvPix = None
self.othEvPix = None
self.selEvPix = None
self.othServPix = None
self.nowServPix = None
self.recEvPix = None
self.recSelEvPix = None
self.recordingEvPix = None
self.zapEvPix = None
self.zapSelEvPix = None
self.borderTopPix = None
self.borderBottomPix = None
self.borderLeftPix = None
self.borderRightPix = None
self.borderSelectedTopPix = None
self.borderSelectedLeftPix = None
self.borderSelectedBottomPix = None
self.borderSelectedRightPix = None
self.InfoPix = None
self.selInfoPix = None
self.graphicsloaded = False
self.borderColor = 0xC0C0C0
self.borderColorService = 0xC0C0C0
self.foreColor = 0xffffff
self.foreColorSelected = 0xffffff
self.backColor = 0x2D455E
self.backColorSelected = 0xd69600
self.foreColorService = 0xffffff
self.backColorService = 0x2D455E
self.foreColorNow = 0xffffff
self.foreColorNowSelected = 0xffffff
self.backColorNow = 0x00825F
self.backColorNowSelected = 0xd69600
self.foreColorPast = 0x808080
self.foreColorPastSelected = 0x808080
self.backColorPast = 0x2D455E
self.backColorPastSelected = 0xd69600
self.foreColorServiceNow = 0xffffff
self.backColorServiceNow = 0x00825F
self.foreColorTime = 0xF0A30A
self.backColorTime = 0x2D455E
self.foreColorPrimeTime = 0xffffff
self.backColorPrimeTime = 0x704A05
self.foreColorRecord = 0xffffff
self.backColorRecord = 0xd13333
self.foreColorRecordSelected = 0xffffff
self.backColorRecordSelected = 0x9e2626
self.foreColorZap = 0xffffff
self.backColorZap = 0x669466
self.foreColorZapSelected = 0xffffff
self.backColorZapSelected = 0x436143
self.serviceFontNameGraph = "Regular"
self.eventFontNameGraph = "Regular"
self.eventFontNameSingle = "Regular"
self.eventFontNameMulti = "Regular"
self.serviceFontNameInfobar = "Regular"
self.eventFontNameInfobar = "Regular"
self.eventFontNameVertical = "Regular"
self.timeFontNameVertical = "Regular"
self.serviceFontSizeGraph = int(20 * sf)
self.eventFontSizeGraph = int(18 * sf)
self.eventFontSizeSingle = int(22 * sf)
self.eventFontSizeMulti = int(22 * sf)
self.serviceFontSizeInfobar = int(20 * sf)
self.eventFontSizeInfobar = int(22 * sf)
self.eventFontSizeVertical = int(18 * sf)
self.timeFontSizeVertical = int(20 * sf)
self.listHeight = None
self.listWidth = None
self.serviceBorderWidth = 1
self.serviceNamePadding = 3
self.serviceNumberPadding = 9
self.eventBorderWidth = 1
self.eventNamePadding = 3
self.eventNameAlign = 'left'
self.eventNameWrap = 'yes'
self.NumberOfRows = None
self.minimumItemHeight = 0
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
EPGList.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
self.skinUsingForeColorByTime = False
self.skinUsingBackColorByTime = False
for (attrib, value) in self.skinAttributes:
if attrib == "ServiceFontGraphical":
font = parseFont(value, ((1, 1), (1, 1)))
self.serviceFontNameGraph = font.family
self.serviceFontSizeGraph = font.pointSize
elif attrib == "EntryFontGraphical":
font = parseFont(value, ((1, 1), (1, 1)))
self.eventFontNameGraph = font.family
self.eventFontSizeGraph = font.pointSize
elif attrib == "ServiceFontInfobar":
font = parseFont(value, ((1, 1), (1, 1)))
self.serviceFontNameInfobar = font.family
self.serviceFontSizeInfobar = font.pointSize
elif attrib == "EventFontInfobar":
font = parseFont(value, ((1, 1), (1, 1)))
self.eventFontNameInfobar = font.family
self.eventFontSizeInfobar = font.pointSize
elif attrib == "EventFontSingle":
font = parseFont(value, ((1, 1), (1, 1)))
self.eventFontNameSingle = font.family
self.eventFontSizeSingle = font.pointSize
elif attrib == "EventFontMulti":
font = parseFont(value, ((1, 1), (1, 1)))
self.eventFontNameMulti = font.family
self.eventFontSizeMulti = font.pointSize
elif attrib == "EventFontVertical":
font = parseFont(value, ((1, 1), (1, 1)))
self.eventFontNameVertical = font.family
self.eventFontSizeVertical = font.pointSize
elif attrib == "TimeFontVertical":
font = parseFont(value, ((1, 1), (1, 1)))
self.timeFontNameVertical = font.family
self.timeFontSizeVertical = font.pointSize
elif attrib == "EntryFontAlignment":
self.eventNameAlign = value
elif attrib == "EntryFontWrap":
self.eventNameWrap = value
elif attrib == "ServiceForegroundColor":
self.foreColorService = parseColor(value).argb()
elif attrib == "ServiceForegroundColorNow":
self.foreColorServiceNow = parseColor(value).argb()
elif attrib == "ServiceBackgroundColor":
self.backColorService = parseColor(value).argb()
elif attrib == "ServiceBackgroundColorNow":
self.backColorServiceNow = parseColor(value).argb()
elif attrib == "EntryForegroundColor":
self.foreColor = parseColor(value).argb()
elif attrib == "EntryForegroundColorSelected":
self.foreColorSelected = parseColor(value).argb()
elif attrib == "EntryBackgroundColor":
self.backColor = parseColor(value).argb()
elif attrib == "EntryBackgroundColorSelected":
self.backColorSelected = parseColor(value).argb()
elif attrib == "EntryBackgroundColorNow":
self.backColorNow = parseColor(value).argb()
self.skinUsingBackColorByTime = True
elif attrib == "EntryBackgroundColorNowSelected":
self.backColorNowSelected = parseColor(value).argb()
self.skinUsingBackColorByTime = True
elif attrib == "EntryForegroundColorNow":
self.foreColorNow = parseColor(value).argb()
self.skinUsingForeColorByTime = True
elif attrib == "EntryForegroundColorNowSelected":
self.foreColorNowSelected = parseColor(value).argb()
self.skinUsingForeColorByTime = True
elif attrib == "EntryBackgroundColorPast":
self.backColorPast = parseColor(value).argb()
self.skinUsingBackColorByTime = True
elif attrib == "EntryBackgroundColorPastSelected":
self.backColorPastSelected = parseColor(value).argb()
self.skinUsingBackColorByTime = True
elif attrib == "EntryForegroundColorPast":
self.foreColorPast = parseColor(value).argb()
self.skinUsingForeColorByTime = True
elif attrib == "EntryForegroundColorPastSelected":
self.foreColorPastSelected = parseColor(value).argb()
self.skinUsingForeColorByTime = True
elif attrib == "TimeForegroundColor":
self.foreColorTime = parseColor(value).argb()
elif attrib == "TimeBackgroundColor":
self.backColorTime = parseColor(value).argb()
elif attrib == "PrimeTimeForegroundColor":
self.foreColorPrimeTime = parseColor(value).argb()
elif attrib == "PrimeTimeBackgroundColor":
self.backColorPrimeTime = parseColor(value).argb()
elif attrib == "ServiceBorderColor":
self.borderColorService = parseColor(value).argb()
elif attrib == "ServiceBorderWidth":
self.serviceBorderWidth = int(value)
elif attrib == "ServiceNamePadding":
self.serviceNamePadding = int(value)
elif attrib == "ServiceNumberPadding":
self.serviceNumberPadding = int(value)
elif attrib == "EntryBorderColor":
self.borderColor = parseColor(value).argb()
elif attrib == "EventBorderWidth":
self.eventBorderWidth = int(value)
elif attrib == "EventNamePadding":
self.eventNamePadding = int(value)
elif attrib == "RecordForegroundColor":
self.foreColorRecord = parseColor(value).argb()
elif attrib == "RecordForegroundColorSelected":
self.foreColorRecordSelected = parseColor(value).argb()
elif attrib == "RecordBackgroundColor":
self.backColorRecord = parseColor(value).argb()
elif attrib == "RecordBackgroundColorSelected":
self.backColorRecordSelected = parseColor(value).argb()
elif attrib == "ZapForegroundColor":
self.foreColorZap = parseColor(value).argb()
elif attrib == "ZapBackgroundColor":
self.backColorZap = parseColor(value).argb()
elif attrib == "ZapForegroundColorSelected":
self.foreColorZapSelected = parseColor(value).argb()
elif attrib == "ZapBackgroundColorSelected":
self.backColorZapSelected = parseColor(value).argb()
elif attrib == "NumberOfRows":
self.NumberOfRows = int(value)
elif attrib == "MinimumItemHeight":
self.minimumItemHeight = max(0, int(value))
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
rc = GUIComponent.applySkin(self, desktop, screen)
self.listHeight = self.instance.size().height()
self.listWidth = self.instance.size().width()
self.setItemsPerPage()
self.setFontsize()
return rc
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (60) and inherited methods (19)
__init__(self, type=EPG_TYPE_SINGLE, selChangedCB=None, timer=None, time_epoch=120, overjump_empty=False, graphic=False)applySkin(self, desktop, screen)getCurrentChangeCount(self)isSelectable(self, service, service_name, events, picon, channel)setShowServiceMode(self, value)setOverjump_Empty(self, overjump_empty)setEpoch(self, epoch)setCurrentlyPlaying(self, serviceref)getEventFromId(self, service, eventid)getIndexFromService(self, serviceref)getCurrentIndex(self)moveToService(self, serviceref)setCurrentIndex(self, index)moveTo(self, dir)getCurrent(self)serviceChanged(self)findBestEvent(self, getnow=False)selectionChanged(self)setItemsPerPage(self)setFontsize(self)postWidgetCreate(self, instance)preWidgetRemove(self, instance)selectionEnabled(self, enabled)recalcEntrySize(self)calcEntryPosAndWidthHelper(self, stime, duration, start, end, width)calcEntryPosAndWidth(self, event_rect, time_base, time_epoch, ev_start, ev_duration)isIceTV(self, service)getPixmapForEntry(self, service, eventId, beginTime, duration)buildSingleEntry(self, service, eventId, beginTime, duration, EventName)buildSimilarEntry(self, service, eventId, beginTime, service_name, duration)buildMultiEntry(self, changecount, service, eventId, beginTime, duration, EventName, nowTime, service_name)buildGraphEntry(self, service, service_name, events, picon, channel)buildVerticalEntry(self, service, eventId, beginTime, duration, EventName)detectCatchupAvailable(self, beginTime, serviceReference)getIcons(self, clock_types, service, beginTime)getSelectionPosition(self, serviceref, activeList=1)selEntry(self, dir, visible=True)queryEPG(self, list, buildFunc=None)fillSimilarList(self, refstr, event_id)fillSingleEPG(self, service, stime=None)fillMultiEPG(self, services, stime=None)updateMultiEPG(self, direction)fillGraphEPG(self, services, stime=None, getnow=False, current_service=None)sortSingleEPG(self, type)getChannelNumber(self, service)getEventRect(self)getServiceRect(self)getTimeEpoch(self)getTimeBase(self)resetOffset(self)getSelectedEventId(self)moveToEventId(self, eventId)pageRows(self)storePageRow(self)nextPage(self, selectFirstService=False)prevPage(self, selectLastService=False)moveUp(self)moveDown(self)toTop(self, stime=None, getnow=False)toEnd(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponent
TimelineText
lib/python/Components/EpgList.py, line 1725 ↗
Class: Components.EpgList.TimelineText. Bases: GUIComponent.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 8. TimelineAlignment, TimelineFont, backgroundColor, borderColor, borderWidth, font, foregroundColor, itemHeight These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.EpgList.TimelineText
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.
TimelineText.__init__(self, type=EPG_TYPE_GRAPH, graphic=False)
def __init__(self, type=EPG_TYPE_GRAPH, graphic=False):
GUIComponent.__init__(self)
self.type = type
self.graphic = graphic
self.l = eListboxPythonMultiContent()
self.l.setSelectionClip(eRect(0, 0, 0, 0))
self.itemHeight = 30
self.TlDate = None
self.TlTime = None
self.foreColor = 0xffc000
self.borderColor = 0x000000
self.backColor = 0x000000
self.borderWidth = 1
self.time_base = 0
self.time_epoch = 0
self.timelineFontName = "Regular"
self.timelineFontSize = int(20 * getSkinFactor())
self.timelineAlign = 'left'
self.datefmt = ""
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
TimelineText.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "foregroundColor":
self.foreColor = parseColor(value).argb()
elif attrib == "borderColor":
self.borderColor = parseColor(value).argb()
elif attrib == "backgroundColor":
self.backColor = parseColor(value).argb()
elif attrib == "font":
self.l.setFont(0, parseFont(value, ((1, 1), (1, 1))))
elif attrib == "borderWidth":
self.borderWidth = int(value)
elif attrib == "TimelineFont":
font = parseFont(value, ((1, 1), (1, 1)))
self.timelineFontName = font.family
self.timelineFontSize = font.pointSize
elif attrib == "TimelineAlignment":
self.timelineAlign = value
elif attrib == "itemHeight":
self.itemHeight = int(value)
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
rc = GUIComponent.applySkin(self, desktop, screen)
self.listHeight = self.instance.size().height()
self.listWidth = self.instance.size().width()
self.l.setItemHeight(self.itemHeight)
if self.graphic:
self.TlDate = loadPNG(resolveFilename(SCOPE_GUISKIN, 'epg/TimeLineDate.png'))
self.TlTime = loadPNG(resolveFilename(SCOPE_GUISKIN, 'epg/TimeLineTime.png'))
self.setTimeLineFontsize()
return rc
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (5) and inherited methods (20)
__init__(self, type=EPG_TYPE_GRAPH, graphic=False)applySkin(self, desktop, screen)setTimeLineFontsize(self)postWidgetCreate(self, instance)setEntries(self, epgList, timeline_now, time_lines, force)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
EPGBouquetList
lib/python/Components/EpgList.py, line 1922 ↗
Class: Components.EpgList.EPGBouquetList. Bases: GUIComponent.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 8. backgroundColor, backgroundColorSelected, borderColor, borderWidth, font, foregroundColor, foregroundColorSelected, itemHeight These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.EpgList.EPGBouquetList
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.
EPGBouquetList.__init__(self, graphic=False)
def __init__(self, graphic=False):
GUIComponent.__init__(self)
self.graphic = graphic
self.l = eListboxPythonMultiContent()
self.l.setBuildFunc(self.buildEntry)
self.onSelChanged = []
self.foreColor = 0xffffff
self.foreColorSelected = 0xffffff
self.backColor = 0x2D455E
self.backColorSelected = 0xd69600
self.borderColor = 0xC0C0C0
self.BorderWidth = 1
self.othPix = None
self.selPix = None
self.graphicsloaded = False
self.bouquetFontName = "Regular"
self.bouquetFontSize = int(20 * getSkinFactor())
self.itemHeight = 31
self.listHeight = None
self.listWidth = None
self.bouquetNamePadding = 3
self.bouquetNameAlign = 'left'
self.bouquetNameWrap = 'no'
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
EPGBouquetList.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "font":
font = parseFont(value, ((1, 1), (1, 1)))
self.bouquetFontName = font.family
self.bouquetFontSize = font.pointSize
elif attrib == "foregroundColor":
self.foreColor = parseColor(value).argb()
elif attrib == "backgroundColor":
self.backColor = parseColor(value).argb()
elif attrib == "foregroundColorSelected":
self.foreColorSelected = parseColor(value).argb()
elif attrib == "backgroundColorSelected":
self.backColorSelected = parseColor(value).argb()
elif attrib == "borderColor":
self.borderColor = parseColor(value).argb()
elif attrib == "borderWidth":
self.BorderWidth = int(value)
elif attrib == "itemHeight":
self.itemHeight = int(value)
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
rc = GUIComponent.applySkin(self, desktop, screen)
self.listHeight = self.instance.size().height()
self.listWidth = self.instance.size().width()
self.l.setItemHeight(self.itemHeight)
self.setBouquetFontsize()
return rc
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (18) and inherited methods (19)
__init__(self, graphic=False)applySkin(self, desktop, screen)getCurrentBouquet(self)getCurrentBouquetService(self)setCurrentBouquet(self, CurrentBouquetService)selectionChanged(self)getIndexFromService(self, serviceref)moveToService(self, serviceref)setCurrentIndex(self, index)moveTo(self, dir)setBouquetFontsize(self)postWidgetCreate(self, instance)preWidgetRemove(self, instance)selectionEnabled(self, enabled)recalcEntrySize(self)getBouquetRect(self)buildEntry(self, name, func)fillBouquetList(self, bouquets)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponent
FileListBase
lib/python/Components/FileList.py, line 139 ↗
Class: Components.FileList.FileListBase. Bases: MenuList.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuListcurrent_directory=property(getCurrentDirectory, setCurrentDirectory)— Components.FileList.FileListBase
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
FileListBase.__init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories='0.0', sortFiles='0.0', directoriesFirst=True, showCurrentDirectory=False)
def __init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories="0.0", sortFiles="0.0", directoriesFirst=True, showCurrentDirectory=False):
self.extensionIcons = {}
for icon in ("lock_off", "lock_on", "link_arrow", "link_error", "storage", "parent", "current", "directory", "file"):
folder = "icons" if icon.startswith("lock_") else "extensions"
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"{folder}/{icon}.png")
for icon in set(EXTENSIONS.values()):
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"extensions/{icon}.png")
if self.extensionIcons["storage"] is None:
self.extensionIcons["storage"] = self.extensionIcons["directory"]
if self.extensionIcons["parent"] is None:
self.extensionIcons["parent"] = self.extensionIcons["directory"]
if self.extensionIcons["current"] is None:
self.extensionIcons["current"] = self.extensionIcons["directory"]
self.fileList = []
MenuList.__init__(self, self.fileList, content=eListboxPythonMultiContent)
self.selectedItems = selectedItems
self.showDirectories = showDirectories
self.showFiles = showFiles
self.showMountPoints = showMountPoints
self.matchingPattern = compile(matchingPattern) if matchingPattern else None # Example: To match .nfi and .ts files use "^.*\.(nfi|ts)$".
self.useServiceRef = useServiceRef
self.inhibitDirs = inhibitDirs or []
self.inhibitMounts = inhibitMounts or []
self.isTop = isTop
self.additionalExtensions = additionalExtensions
self.sortDirectories = sortDirectories
self.sortFiles = sortFiles
self.directoriesFirst = directoriesFirst
self.showCurrentDirectory = showCurrentDirectory
self.mountPoints = []
self.currentDirectory = None
self.previousDirectory = None
self.serviceHandler = eServiceCenter.getInstance()
if self.multiSelect:
self.setMultiSelectMode()
else:
self.setSingleSelectMode()
self.refreshMountPoints()
self.changeDir(directory, directory)
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (47) and inherited methods (51)
__init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories='0.0', sortFiles='0.0', directoriesFirst=True, showCurrentDirectory=False)execBegin(self)execEnd(self)partitionListChanged(self, action, device)refreshMountPoints(self)setSingleSelectMode(self)setMultiSelectMode(self)setIconFont(self)iconEntry(self, icon, x, y, w, h)changeDir(self, directory, select=None)refresh(self, path=None)fileListComponent(self, name, path, isDir, isLink, selected, dirIcon)assignSelection(self, entry, type, selected)setSelection(self)setAllSelections(self, type=SELECT_ALL)clearSelection(self)clearAllSelections(self, type=SELECT_ALL)toggleSelection(self)toggleAllSelections(self, type=SELECT_ALL)getServiceRef(self)getPath(self)getName(self)getIsDir(self)getIsLink(self)getIsSelected(self)getIsSpecialFolder(self, selection=None)getFilename(self)getSelection(self)getMountPointLink(self, path)getMountpointLink(self, path)getMountPoint(self, path)getMountpoint(self, path)inParentDirs(self, path, parents)setSortBy(self, sortBy)getSortBy(self)sortList(self, items, sortBy)getCurrentDirectory(self)setCurrentDirectory(self, directory)getFileList(self)getCurrentEvent(self)canDescend(self)canDescent(self)descend(self)descent(self)changeSelectionState(self)getSelectedItems(self)getSelectedList(self)
Inherited methods
onShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.MenuList.MenuListpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListgetCurrent(self)—Components.MenuList.MenuListgetCurrentIndex(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuList
FileList
lib/python/Components/FileList.py, line 584 ↗
Class: Components.FileList.FileList. Bases: FileListBase.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuListcurrent_directory=property(getCurrentDirectory, setCurrentDirectory)— Components.FileList.FileListBase
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
FileList.__init__(self, directory, showDirectories=True, showFiles=True, showMountpoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirs='0.0', sortFiles='0.0', firstDirs=True, showCurrentDirectory=False, enableWrapAround=False)
def __init__(self, directory, showDirectories=True, showFiles=True, showMountpoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirs='0.0', sortFiles='0.0', firstDirs=True, showCurrentDirectory=False, enableWrapAround=False):
self.multiSelect = False
selectedItems = []
FileListBase.__init__(self, selectedItems, directory, showMountPoints=showMountpoints, matchingPattern=matchingPattern, showDirectories=showDirectories, showFiles=showFiles, useServiceRef=useServiceRef, inhibitDirs=inhibitDirs, inhibitMounts=inhibitMounts, isTop=isTop, additionalExtensions=additionalExtensions, sortDirectories=sortDirs, sortFiles=sortFiles, directoriesFirst=firstDirs, showCurrentDirectory=showCurrentDirectory)
FileListBase.__init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories='0.0', sortFiles='0.0', directoriesFirst=True, showCurrentDirectory=False)
def __init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories="0.0", sortFiles="0.0", directoriesFirst=True, showCurrentDirectory=False):
self.extensionIcons = {}
for icon in ("lock_off", "lock_on", "link_arrow", "link_error", "storage", "parent", "current", "directory", "file"):
folder = "icons" if icon.startswith("lock_") else "extensions"
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"{folder}/{icon}.png")
for icon in set(EXTENSIONS.values()):
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"extensions/{icon}.png")
if self.extensionIcons["storage"] is None:
self.extensionIcons["storage"] = self.extensionIcons["directory"]
if self.extensionIcons["parent"] is None:
self.extensionIcons["parent"] = self.extensionIcons["directory"]
if self.extensionIcons["current"] is None:
self.extensionIcons["current"] = self.extensionIcons["directory"]
self.fileList = []
MenuList.__init__(self, self.fileList, content=eListboxPythonMultiContent)
self.selectedItems = selectedItems
self.showDirectories = showDirectories
self.showFiles = showFiles
self.showMountPoints = showMountPoints
self.matchingPattern = compile(matchingPattern) if matchingPattern else None # Example: To match .nfi and .ts files use "^.*\.(nfi|ts)$".
self.useServiceRef = useServiceRef
self.inhibitDirs = inhibitDirs or []
self.inhibitMounts = inhibitMounts or []
self.isTop = isTop
self.additionalExtensions = additionalExtensions
self.sortDirectories = sortDirectories
self.sortFiles = sortFiles
self.directoriesFirst = directoriesFirst
self.showCurrentDirectory = showCurrentDirectory
self.mountPoints = []
self.currentDirectory = None
self.previousDirectory = None
self.serviceHandler = eServiceCenter.getInstance()
if self.multiSelect:
self.setMultiSelectMode()
else:
self.setSingleSelectMode()
self.refreshMountPoints()
self.changeDir(directory, directory)
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (97)
Inherited methods
execBegin(self)—Components.FileList.FileListBaseexecEnd(self)—Components.FileList.FileListBaseonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.MenuList.MenuListpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListgetCurrent(self)—Components.MenuList.MenuListgetCurrentIndex(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuListpartitionListChanged(self, action, device)—Components.FileList.FileListBaserefreshMountPoints(self)—Components.FileList.FileListBasesetSingleSelectMode(self)—Components.FileList.FileListBasesetMultiSelectMode(self)—Components.FileList.FileListBasesetIconFont(self)—Components.FileList.FileListBaseiconEntry(self, icon, x, y, w, h)—Components.FileList.FileListBasechangeDir(self, directory, select=None)—Components.FileList.FileListBaserefresh(self, path=None)—Components.FileList.FileListBasefileListComponent(self, name, path, isDir, isLink, selected, dirIcon)—Components.FileList.FileListBaseassignSelection(self, entry, type, selected)—Components.FileList.FileListBasesetSelection(self)—Components.FileList.FileListBasesetAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBaseclearSelection(self)—Components.FileList.FileListBaseclearAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBasetoggleSelection(self)—Components.FileList.FileListBasetoggleAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBasegetServiceRef(self)—Components.FileList.FileListBasegetPath(self)—Components.FileList.FileListBasegetName(self)—Components.FileList.FileListBasegetIsDir(self)—Components.FileList.FileListBasegetIsLink(self)—Components.FileList.FileListBasegetIsSelected(self)—Components.FileList.FileListBasegetIsSpecialFolder(self, selection=None)—Components.FileList.FileListBasegetFilename(self)—Components.FileList.FileListBasegetSelection(self)—Components.FileList.FileListBasegetMountPointLink(self, path)—Components.FileList.FileListBasegetMountpointLink(self, path)—Components.FileList.FileListBasegetMountPoint(self, path)—Components.FileList.FileListBasegetMountpoint(self, path)—Components.FileList.FileListBaseinParentDirs(self, path, parents)—Components.FileList.FileListBasesetSortBy(self, sortBy)—Components.FileList.FileListBasegetSortBy(self)—Components.FileList.FileListBasesortList(self, items, sortBy)—Components.FileList.FileListBasegetCurrentDirectory(self)—Components.FileList.FileListBasesetCurrentDirectory(self, directory)—Components.FileList.FileListBasegetFileList(self)—Components.FileList.FileListBasegetCurrentEvent(self)—Components.FileList.FileListBasecanDescend(self)—Components.FileList.FileListBasecanDescent(self)—Components.FileList.FileListBasedescend(self)—Components.FileList.FileListBasedescent(self)—Components.FileList.FileListBasechangeSelectionState(self)—Components.FileList.FileListBasegetSelectedItems(self)—Components.FileList.FileListBasegetSelectedList(self)—Components.FileList.FileListBase
FileListMultiSelect
lib/python/Components/FileList.py, line 591 ↗
Class: Components.FileList.FileListMultiSelect. Bases: FileListBase.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuListcurrent_directory=property(getCurrentDirectory, setCurrentDirectory)— Components.FileList.FileListBase
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
FileListMultiSelect.__init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountpoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirs='0.0', sortFiles='0.0', firstDirs=True, showCurrentDirectory=False, enableWrapAround=False)
def __init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountpoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirs='0.0', sortFiles='0.0', firstDirs=True, showCurrentDirectory=False, enableWrapAround=False):
self.multiSelect = True
FileListBase.__init__(self, selectedItems, directory, showMountPoints=showMountpoints, matchingPattern=matchingPattern, showDirectories=showDirectories, showFiles=showFiles, useServiceRef=useServiceRef, inhibitDirs=inhibitDirs, inhibitMounts=inhibitMounts, isTop=isTop, additionalExtensions=additionalExtensions, sortDirectories=sortDirs, sortFiles=sortFiles, directoriesFirst=firstDirs, showCurrentDirectory=showCurrentDirectory)
FileListBase.__init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories='0.0', sortFiles='0.0', directoriesFirst=True, showCurrentDirectory=False)
def __init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories="0.0", sortFiles="0.0", directoriesFirst=True, showCurrentDirectory=False):
self.extensionIcons = {}
for icon in ("lock_off", "lock_on", "link_arrow", "link_error", "storage", "parent", "current", "directory", "file"):
folder = "icons" if icon.startswith("lock_") else "extensions"
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"{folder}/{icon}.png")
for icon in set(EXTENSIONS.values()):
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"extensions/{icon}.png")
if self.extensionIcons["storage"] is None:
self.extensionIcons["storage"] = self.extensionIcons["directory"]
if self.extensionIcons["parent"] is None:
self.extensionIcons["parent"] = self.extensionIcons["directory"]
if self.extensionIcons["current"] is None:
self.extensionIcons["current"] = self.extensionIcons["directory"]
self.fileList = []
MenuList.__init__(self, self.fileList, content=eListboxPythonMultiContent)
self.selectedItems = selectedItems
self.showDirectories = showDirectories
self.showFiles = showFiles
self.showMountPoints = showMountPoints
self.matchingPattern = compile(matchingPattern) if matchingPattern else None # Example: To match .nfi and .ts files use "^.*\.(nfi|ts)$".
self.useServiceRef = useServiceRef
self.inhibitDirs = inhibitDirs or []
self.inhibitMounts = inhibitMounts or []
self.isTop = isTop
self.additionalExtensions = additionalExtensions
self.sortDirectories = sortDirectories
self.sortFiles = sortFiles
self.directoriesFirst = directoriesFirst
self.showCurrentDirectory = showCurrentDirectory
self.mountPoints = []
self.currentDirectory = None
self.previousDirectory = None
self.serviceHandler = eServiceCenter.getInstance()
if self.multiSelect:
self.setMultiSelectMode()
else:
self.setSingleSelectMode()
self.refreshMountPoints()
self.changeDir(directory, directory)
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (97)
Inherited methods
execBegin(self)—Components.FileList.FileListBaseexecEnd(self)—Components.FileList.FileListBaseonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.MenuList.MenuListpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListgetCurrent(self)—Components.MenuList.MenuListgetCurrentIndex(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuListpartitionListChanged(self, action, device)—Components.FileList.FileListBaserefreshMountPoints(self)—Components.FileList.FileListBasesetSingleSelectMode(self)—Components.FileList.FileListBasesetMultiSelectMode(self)—Components.FileList.FileListBasesetIconFont(self)—Components.FileList.FileListBaseiconEntry(self, icon, x, y, w, h)—Components.FileList.FileListBasechangeDir(self, directory, select=None)—Components.FileList.FileListBaserefresh(self, path=None)—Components.FileList.FileListBasefileListComponent(self, name, path, isDir, isLink, selected, dirIcon)—Components.FileList.FileListBaseassignSelection(self, entry, type, selected)—Components.FileList.FileListBasesetSelection(self)—Components.FileList.FileListBasesetAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBaseclearSelection(self)—Components.FileList.FileListBaseclearAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBasetoggleSelection(self)—Components.FileList.FileListBasetoggleAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBasegetServiceRef(self)—Components.FileList.FileListBasegetPath(self)—Components.FileList.FileListBasegetName(self)—Components.FileList.FileListBasegetIsDir(self)—Components.FileList.FileListBasegetIsLink(self)—Components.FileList.FileListBasegetIsSelected(self)—Components.FileList.FileListBasegetIsSpecialFolder(self, selection=None)—Components.FileList.FileListBasegetFilename(self)—Components.FileList.FileListBasegetSelection(self)—Components.FileList.FileListBasegetMountPointLink(self, path)—Components.FileList.FileListBasegetMountpointLink(self, path)—Components.FileList.FileListBasegetMountPoint(self, path)—Components.FileList.FileListBasegetMountpoint(self, path)—Components.FileList.FileListBaseinParentDirs(self, path, parents)—Components.FileList.FileListBasesetSortBy(self, sortBy)—Components.FileList.FileListBasegetSortBy(self)—Components.FileList.FileListBasesortList(self, items, sortBy)—Components.FileList.FileListBasegetCurrentDirectory(self)—Components.FileList.FileListBasesetCurrentDirectory(self, directory)—Components.FileList.FileListBasegetFileList(self)—Components.FileList.FileListBasegetCurrentEvent(self)—Components.FileList.FileListBasecanDescend(self)—Components.FileList.FileListBasecanDescent(self)—Components.FileList.FileListBasedescend(self)—Components.FileList.FileListBasedescent(self)—Components.FileList.FileListBasechangeSelectionState(self)—Components.FileList.FileListBasegetSelectedItems(self)—Components.FileList.FileListBasegetSelectedList(self)—Components.FileList.FileListBase
MultiFileSelectList
lib/python/Components/FileList.py, line 597 ↗
Class: Components.FileList.MultiFileSelectList. Bases: FileListMultiSelect.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuListcurrent_directory=property(getCurrentDirectory, setCurrentDirectory)— Components.FileList.FileListBase
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
FileListMultiSelect.__init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountpoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirs='0.0', sortFiles='0.0', firstDirs=True, showCurrentDirectory=False, enableWrapAround=False)
def __init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountpoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirs='0.0', sortFiles='0.0', firstDirs=True, showCurrentDirectory=False, enableWrapAround=False):
self.multiSelect = True
FileListBase.__init__(self, selectedItems, directory, showMountPoints=showMountpoints, matchingPattern=matchingPattern, showDirectories=showDirectories, showFiles=showFiles, useServiceRef=useServiceRef, inhibitDirs=inhibitDirs, inhibitMounts=inhibitMounts, isTop=isTop, additionalExtensions=additionalExtensions, sortDirectories=sortDirs, sortFiles=sortFiles, directoriesFirst=firstDirs, showCurrentDirectory=showCurrentDirectory)
FileListBase.__init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories='0.0', sortFiles='0.0', directoriesFirst=True, showCurrentDirectory=False)
def __init__(self, selectedItems, directory, showDirectories=True, showFiles=True, showMountPoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, additionalExtensions=None, sortDirectories="0.0", sortFiles="0.0", directoriesFirst=True, showCurrentDirectory=False):
self.extensionIcons = {}
for icon in ("lock_off", "lock_on", "link_arrow", "link_error", "storage", "parent", "current", "directory", "file"):
folder = "icons" if icon.startswith("lock_") else "extensions"
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"{folder}/{icon}.png")
for icon in set(EXTENSIONS.values()):
self.extensionIcons[icon] = loadSkinIcon("FileList", icon, f"extensions/{icon}.png")
if self.extensionIcons["storage"] is None:
self.extensionIcons["storage"] = self.extensionIcons["directory"]
if self.extensionIcons["parent"] is None:
self.extensionIcons["parent"] = self.extensionIcons["directory"]
if self.extensionIcons["current"] is None:
self.extensionIcons["current"] = self.extensionIcons["directory"]
self.fileList = []
MenuList.__init__(self, self.fileList, content=eListboxPythonMultiContent)
self.selectedItems = selectedItems
self.showDirectories = showDirectories
self.showFiles = showFiles
self.showMountPoints = showMountPoints
self.matchingPattern = compile(matchingPattern) if matchingPattern else None # Example: To match .nfi and .ts files use "^.*\.(nfi|ts)$".
self.useServiceRef = useServiceRef
self.inhibitDirs = inhibitDirs or []
self.inhibitMounts = inhibitMounts or []
self.isTop = isTop
self.additionalExtensions = additionalExtensions
self.sortDirectories = sortDirectories
self.sortFiles = sortFiles
self.directoriesFirst = directoriesFirst
self.showCurrentDirectory = showCurrentDirectory
self.mountPoints = []
self.currentDirectory = None
self.previousDirectory = None
self.serviceHandler = eServiceCenter.getInstance()
if self.multiSelect:
self.setMultiSelectMode()
else:
self.setSingleSelectMode()
self.refreshMountPoints()
self.changeDir(directory, directory)
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (0) and inherited methods (97)
Inherited methods
execBegin(self)—Components.FileList.FileListBaseexecEnd(self)—Components.FileList.FileListBaseonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.MenuList.MenuListpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListgetCurrent(self)—Components.MenuList.MenuListgetCurrentIndex(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuListpartitionListChanged(self, action, device)—Components.FileList.FileListBaserefreshMountPoints(self)—Components.FileList.FileListBasesetSingleSelectMode(self)—Components.FileList.FileListBasesetMultiSelectMode(self)—Components.FileList.FileListBasesetIconFont(self)—Components.FileList.FileListBaseiconEntry(self, icon, x, y, w, h)—Components.FileList.FileListBasechangeDir(self, directory, select=None)—Components.FileList.FileListBaserefresh(self, path=None)—Components.FileList.FileListBasefileListComponent(self, name, path, isDir, isLink, selected, dirIcon)—Components.FileList.FileListBaseassignSelection(self, entry, type, selected)—Components.FileList.FileListBasesetSelection(self)—Components.FileList.FileListBasesetAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBaseclearSelection(self)—Components.FileList.FileListBaseclearAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBasetoggleSelection(self)—Components.FileList.FileListBasetoggleAllSelections(self, type=SELECT_ALL)—Components.FileList.FileListBasegetServiceRef(self)—Components.FileList.FileListBasegetPath(self)—Components.FileList.FileListBasegetName(self)—Components.FileList.FileListBasegetIsDir(self)—Components.FileList.FileListBasegetIsLink(self)—Components.FileList.FileListBasegetIsSelected(self)—Components.FileList.FileListBasegetIsSpecialFolder(self, selection=None)—Components.FileList.FileListBasegetFilename(self)—Components.FileList.FileListBasegetSelection(self)—Components.FileList.FileListBasegetMountPointLink(self, path)—Components.FileList.FileListBasegetMountpointLink(self, path)—Components.FileList.FileListBasegetMountPoint(self, path)—Components.FileList.FileListBasegetMountpoint(self, path)—Components.FileList.FileListBaseinParentDirs(self, path, parents)—Components.FileList.FileListBasesetSortBy(self, sortBy)—Components.FileList.FileListBasegetSortBy(self)—Components.FileList.FileListBasesortList(self, items, sortBy)—Components.FileList.FileListBasegetCurrentDirectory(self)—Components.FileList.FileListBasesetCurrentDirectory(self, directory)—Components.FileList.FileListBasegetFileList(self)—Components.FileList.FileListBasegetCurrentEvent(self)—Components.FileList.FileListBasecanDescend(self)—Components.FileList.FileListBasecanDescent(self)—Components.FileList.FileListBasedescend(self)—Components.FileList.FileListBasedescent(self)—Components.FileList.FileListBasechangeSelectionState(self)—Components.FileList.FileListBasegetSelectedItems(self)—Components.FileList.FileListBasegetSelectedList(self)—Components.FileList.FileListBase
GUIComponent
Base lifecycle for named Python widgets: GUIcreate, applySkin, postWidgetCreate and preWidgetRemove. Instantiate concrete subclasses for actual screen content.
lib/python/Components/GUIComponent.py, line 6 ↗
Class: Components.GUIComponent.GUIComponent. Bases: none.
No single GUI_WIDGET declaration. Inspect the construction contract below; this can be a base/helper, composite or non-visual class.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
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.
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (23) and inherited methods (0)
__init__(self)execBegin(self)execEnd(self)onShow(self)onHide(self)destroy(self)applySkin(self, desktop, parent)move(self, xPos, yPos=None)resize(self, width, height=None)setZPosition(self, zPosition)show(self)hide(self)getVisible(self)setVisible(self, visible)setPosition(self, xPos, yPos)getPosition(self)getWidth(self)getHeight(self)GUIcreate(self, parent)GUIdelete(self)createWidget(self, parent)postWidgetCreate(self, instance)preWidgetRemove(self, instance)
Inherited methods
Input
Python text-input component using VariableText and GUIComponent. createWidget returns eLabel; it is not the native eInput class.
lib/python/Components/Input.py, line 8 ↗
Class: Components.Input.Input. Bases: VariableText, GUIComponent, NumericalTextInput.
Created by createWidget(): eLabel. The constructor may choose a widget by mode.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
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
TEXT = 0
PIN = 1
NUMBER = 2Input.__init__(self, text='', maxSize=False, visible_width=False, type=TEXT, currPos=0, allMarked=True)
def __init__(self, text="", maxSize=False, visible_width=False, type=TEXT, currPos=0, allMarked=True):
VariableText.__init__(self)
GUIComponent.__init__(self)
NumericalTextInput.__init__(self, self.right)
self.maxSize = maxSize
self.visibleWidth = visible_width
self.type = type
self.currPos = currPos
self.allMarked = allMarked and (text != "") and (type != self.PIN)
self.offset = 0
self.overwrite = maxSize
self.setText(text)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
Input.createWidget(self, parent)
def createWidget(self, parent):
if self.allMarked:
return eLabel(parent, -2)
return eLabel(parent, self.currPos - self.offset)
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (26) and inherited methods (22)
__init__(self, text='', maxSize=False, visible_width=False, type=TEXT, currPos=0, allMarked=True)__len__(self)createWidget(self, parent)getSize(self)getText(self)setText(self, text)update(self)markAll(self)up(self)home(self)left(self)right(self)end(self)down(self)innerRight(self)tab(self)insertChar(self, character, pos=False, overwrite=False, ins=False)delete(self)deleteBackward(self)deleteForward(self)deleteAllChars(self)deleteChar(self, pos)toggleOverwrite(self)handleAscii(self, asciiCode)char(self, character)number(self, digit)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetMarkedPos(self, pos)—Components.VariableText.VariableText
Label
lib/python/Components/Label.py, line 9 ↗
Class: Components.Label.Label. Bases: VariableText, GUIComponent.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.Label.Label
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.
Label.__init__(self, text='')
def __init__(self, text=""):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (5) and inherited methods (25)
__init__(self, text='')connectDownstream(self, downstream)checkSuspend(self)disconnectDownstream(self, downstream)getSize(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableText
LabelConditional
lib/python/Components/Label.py, line 33 ↗
Class: Components.Label.LabelConditional. Bases: Label, ConditionalWidget.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.Label.Label
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.
LabelConditional.__init__(self, text='', withTimer=True)
def __init__(self, text="", withTimer=True):
ConditionalWidget.__init__(self, withTimer=withTimer)
Label.__init__(self, text=text)
Label.__init__(self, text='')
def __init__(self, text=""):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
ConditionalWidget.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
GUIComponent.__init__(self)
self.setConnect(None)
if withTimer:
self.conditionCheckTimer = eTimer()
self.conditionCheckTimer.callback.append(self.update)
self.conditionCheckTimer.start(1000)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (32)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetConnect(self, conditionalFunction)—Components.ConditionalWidget.ConditionalWidgetactivateCondition(self, condition)—Components.ConditionalWidget.ConditionalWidgetupdate(self)—Components.ConditionalWidget.ConditionalWidgetsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableTextconnectDownstream(self, downstream)—Components.Label.LabelcheckSuspend(self)—Components.Label.LabeldisconnectDownstream(self, downstream)—Components.Label.LabelgetSize(self)—Components.Label.Label
BlinkingLabel
lib/python/Components/Label.py, line 39 ↗
Class: Components.Label.BlinkingLabel. Bases: Label, BlinkingWidget.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.Label.Label
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.
BlinkingLabel.__init__(self, text='')
def __init__(self, text=""):
Label.__init__(self, text=text)
BlinkingWidget.__init__(self)
Label.__init__(self, text='')
def __init__(self, text=""):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
BlinkingWidget.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.blinking = False
self.setBlinkTime(500)
self.timer = eTimer()
self.timer.callback.append(self.blink)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (33)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetBlinkTime(self, time)—Components.ConditionalWidget.BlinkingWidgetblink(self)—Components.ConditionalWidget.BlinkingWidgetstartBlinking(self)—Components.ConditionalWidget.BlinkingWidgetstopBlinking(self)—Components.ConditionalWidget.BlinkingWidgetsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableTextconnectDownstream(self, downstream)—Components.Label.LabelcheckSuspend(self)—Components.Label.LabeldisconnectDownstream(self, downstream)—Components.Label.LabelgetSize(self)—Components.Label.Label
BlinkingLabelConditional
lib/python/Components/Label.py, line 45 ↗
Class: Components.Label.BlinkingLabelConditional. Bases: BlinkingWidgetConditional, LabelConditional.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.Label.Label
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.
BlinkingLabelConditional.__init__(self, text='')
def __init__(self, text=""):
LabelConditional.__init__(self, text=text)
BlinkingWidgetConditional.__init__(self)
BlinkingWidgetConditional.__init__(self)
def __init__(self):
BlinkingWidget.__init__(self)
ConditionalWidget.__init__(self)
BlinkingWidget.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.blinking = False
self.setBlinkTime(500)
self.timer = eTimer()
self.timer.callback.append(self.blink)
LabelConditional.__init__(self, text='', withTimer=True)
def __init__(self, text="", withTimer=True):
ConditionalWidget.__init__(self, withTimer=withTimer)
Label.__init__(self, text=text)
Label.__init__(self, text='')
def __init__(self, text=""):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
ConditionalWidget.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
GUIComponent.__init__(self)
self.setConnect(None)
if withTimer:
self.conditionCheckTimer = eTimer()
self.conditionCheckTimer.callback.append(self.update)
self.conditionCheckTimer.start(1000)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (36)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetConnect(self, conditionalFunction)—Components.ConditionalWidget.ConditionalWidgetactivateCondition(self, condition)—Components.ConditionalWidget.BlinkingWidgetConditionalupdate(self)—Components.ConditionalWidget.ConditionalWidgetsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableTextconnectDownstream(self, downstream)—Components.Label.LabelcheckSuspend(self)—Components.Label.LabeldisconnectDownstream(self, downstream)—Components.Label.LabelgetSize(self)—Components.Label.LabelsetBlinkTime(self, time)—Components.ConditionalWidget.BlinkingWidgetblink(self)—Components.ConditionalWidget.BlinkingWidgetstartBlinking(self)—Components.ConditionalWidget.BlinkingWidgetstopBlinking(self)—Components.ConditionalWidget.BlinkingWidget
MultiColorLabel
lib/python/Components/Label.py, line 51 ↗
Class: Components.Label.MultiColorLabel. Bases: Label.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 4. backgroundColor, backgroundColors, foregroundColor, foregroundColors These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.Label.Label
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.
MultiColorLabel.__init__(self, text='')
def __init__(self, text=""):
Label.__init__(self, text)
self.foreColors = []
self.backColors = []
Label.__init__(self, text='')
def __init__(self, text=""):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
MultiColorLabel.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
foregroundColor = None
backgroundColor = None
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "foregroundColors":
colors = value.split(',')
for color in colors:
self.foreColors.append(parseColor(color))
if not foregroundColor:
foregroundColor = colors[0]
elif attrib == "backgroundColors":
colors = value.split(',')
for color in colors:
self.backColors.append(parseColor(color))
if not backgroundColor:
backgroundColor = colors[0]
elif attrib == "backgroundColor":
backgroundColor = value
elif attrib == "foregroundColor":
foregroundColor = value
else:
attribs.append((attrib, value))
if foregroundColor:
attribs.append(("foregroundColor", foregroundColor))
if backgroundColor:
attribs.append(("backgroundColor", backgroundColor))
self.skinAttributes = attribs
return GUIComponent.applySkin(self, desktop, screen)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (4) and inherited methods (28)
__init__(self, text='')applySkin(self, desktop, screen)setForegroundColorNum(self, x)setBackgroundColorNum(self, x)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableTextconnectDownstream(self, downstream)—Components.Label.LabelcheckSuspend(self)—Components.Label.LabeldisconnectDownstream(self, downstream)—Components.Label.LabelgetSize(self)—Components.Label.Label
PlayList
lib/python/Components/MediaPlayer.py, line 19 ↗
Class: Components.MediaPlayer.PlayList. Bases: MenuList.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuList
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
PlayList.__init__(self, enableWrapAround=False)
def __init__(self, enableWrapAround=False):
MenuList.__init__(self, [], enableWrapAround, eListboxPythonMultiContent)
font = fonts.get("PlayList", ("Regular", 18, 23))
self.l.setFont(0, gFont(font[0], font[1]))
self.l.setItemHeight(font[2])
self.currPlaying = -1
self.oldCurrPlaying = -1
self.serviceHandler = eServiceCenter.getInstance()
self.state = STATE_NONE
self.icons = [
LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/ico_mp_play.png")),
LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/ico_mp_pause.png")),
LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/ico_mp_stop.png")),
LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/ico_mp_rewind.png")),
LoadPixmap(resolveFilename(SCOPE_GUISKIN, "icons/ico_mp_forward.png")),
]
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (22) and inherited methods (51)
__init__(self, enableWrapAround=False)PlaylistEntryComponent(self, serviceReference, state)clear(self)getSelection(self)addFile(self, serviceReference)updateFile(self, index, serviceReference)deleteFile(self, index)setCurrentPlaying(self, index)updateState(self, state)isStopped(self)playFile(self)pauseFile(self)stopFile(self)rewindFile(self)forwardFile(self)updateList(self)getCurrentIndex(self)getCurrentEvent(self)getCurrent(self)getServiceRefList(self)playlistShuffle(self)__len__(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.MenuList.MenuListpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuList
MenuList
lib/python/Components/MenuList.py, line 6 ↗
Class: Components.MenuList.MenuList. Bases: GUIComponent.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuList
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (34) and inherited methods (20)
__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)postWidgetCreate(self, instance)preWidgetRemove(self, instance)enableAutoNavigation(self, enabled)selectionEnabled(self, enabled)getList(self)setList(self, menuList)updateEntry(self, index, data)count(self)selectionChanged(self)getCurrent(self)getCurrentIndex(self)setCurrentIndex(self, index)getTopIndex(self)setTopIndex(self, index)goTop(self)goPageUp(self)goLineUp(self)goFirst(self)goLeft(self)goRight(self)goLast(self)goLineDown(self)goPageDown(self)goBottom(self)getSelectionIndex(self)getSelectedIndex(self)moveToIndex(self, index)top(self)pageUp(self)up(self)down(self)pageDown(self)bottom(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponent
MovieList
lib/python/Components/MovieList.py, line 145 ↗
Class: Components.MovieList.MovieList. Bases: GUIComponent.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 1. font These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentplayInBackground=property(get_playInBackground, set_playInBackground)— Components.MovieList.MovieListplayInForeground=property(get_playInForeground, set_playInForeground)— Components.MovieList.MovieList
GUI_WIDGET = eListbox — Components.MovieList.MovieList
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
SORT_ALPHANUMERIC = 1
SORT_RECORDED = 2
SHUFFLE = 3
SORT_ALPHANUMERIC_REVERSE = 4
SORT_RECORDED_REVERSE = 5
SORT_ALPHANUMERIC_FLAT = 6
SORT_ALPHANUMERIC_FLAT_REVERSE = 7
SORT_GROUPWISE = 8
SORT_ALPHA_DATE_OLDEST_FIRST = 9
SORT_ALPHAREV_DATE_NEWEST_FIRST = 10
HIDE_DESCRIPTION = 1
SHOW_DESCRIPTION = 2MovieList.__init__(self, root, sort_type=None, descr_state=None)
def __init__(self, root, sort_type=None, descr_state=None):
GUIComponent.__init__(self)
self.list = []
self.descr_state = descr_state or self.HIDE_DESCRIPTION
self.sort_type = sort_type or self.SORT_GROUPWISE
self.firstFileEntry = 0
self.parentDirectory = 0
self.fontName = "Regular"
self.fontSize = 28 if getSkinFactor() == 1.5 else 20
self.listHeight = None
self.listWidth = None
self.reloadDelayTimer = None
self.l = eListboxPythonMultiContent()
self.tags = set()
self.root = None
self._playInBackground = None
self._playInForeground = None
self._char = ""
if root is not None:
self.reload(root)
self.onSelectionChanged = []
self.iconPart = []
for part in list(range(5)):
self.iconPart.append(loadSkinIcon("MovieList", f"part_{part}_4", f"icons/part_{part}_4.png"))
self.iconMovieRec = loadSkinIcon("MovieList", "record", "icons/part_new.png")
self.iconMoviePlay = loadSkinIcon("MovieList", "play", "icons/movie_play.png")
self.iconMoviePlayRec = loadSkinIcon("MovieList", "play_record", "icons/movie_play_rec.png")
self.iconUnwatched = loadSkinIcon("MovieList", "unwatched", "icons/part_unwatched.png")
self.iconFolder = loadSkinIcon("MovieList", "folder", "icons/folder.png")
self.iconTrash = loadSkinIcon("MovieList", "trash", "icons/trashcan.png")
self.runningTimers = {}
self.updateRecordings()
self.updatePlayPosCache()
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
MovieList.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "font":
font = parseFont(value, ((1, 1), (1, 1)))
self.fontName = font.family
self.fontSize = font.pointSize
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
self.setFontsize()
rc = GUIComponent.applySkin(self, desktop, parent)
self.listHeight = self.instance.size().height()
self.listWidth = self.instance.size().width()
self.setItemsPerPage()
return rc
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (49) and inherited methods (19)
__init__(self, root, sort_type=None, descr_state=None)applySkin(self, desktop, parent)get_playInBackground(self)set_playInBackground(self, value)get_playInForeground(self)set_playInForeground(self, value)updatePlayPosCache(self)updateRecordings(self, timer=None)connectSelChanged(self, fnc)disconnectSelChanged(self, fnc)selectionChanged(self)setDescriptionState(self, val)setSortType(self, type)setItemsPerPage(self)setFontsize(self)setIconFont(self)iconEntry(self, icon, pos, size)invalidateItem(self, index)invalidateCurrentItem(self)buildMovieListEntry(self, serviceref, info, begin, data)moveToFirstMovie(self)moveToParentDirectory(self)moveToLast(self)moveToFirst(self)moveToIndex(self, index)getCurrentIndex(self)getCurrentEvent(self)getCurrent(self)getItem(self, index)postWidgetCreate(self, instance)preWidgetRemove(self, instance)reload(self, root=None, filter_tags=None)removeService(self, service)findService(self, service)__len__(self)__getitem__(self, index)__iter__(self)load(self, root, filter_tags)buildAlphaNumericSortKey(self, x)buildAlphaDateSortKey(self, x)buildAlphaNumericFlatSortKey(self, x)buildBeginTimeSortKey(self, x)buildGroupwiseSortkey(self, x)moveTo(self, serviceref)moveDown(self)moveUp(self)moveToChar(self, char, lbl=None)moveToString(self, char, lbl=None)_moveToChrStr(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponent
PerServiceDisplay
Mixin for building components which display something which changes on navigation events, for example "service name"
lib/python/Components/PerServiceDisplay.py, line 63 ↗
Class: Components.PerServiceDisplay.PerServiceDisplay. Bases: PerServiceBase, VariableText, GUIComponent.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.PerServiceDisplay.PerServiceDisplay
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.
PerServiceDisplay.__init__(self, navcore, eventmap)
def __init__(self, navcore, eventmap):
GUIComponent.__init__(self)
VariableText.__init__(self)
PerServiceBase.__init__(self, navcore, eventmap)
PerServiceBase.__init__(self, navcore, eventmap, with_event=False)
def __init__(self, navcore, eventmap, with_event=False):
self.navcore = navcore
self.eventmap = eventmap #NOSONAR
self.poll_timer = eTimer()
self.with_event = with_event
self.poll_timer.callback.append(self.poll)
EventMap = PerServiceBase.EventMap
if not len(EventMap):
self.navcore.event.append(PerServiceBase.event)
EventMap = EventMap.setdefault
for x in eventmap.items():
EventMap(x[0], []).append((with_event, x[1]))
# start with stopped state, so simulate that
evEndEntry = eventmap.get(iPlayableService.evEnd)
if evEndEntry:
if with_event:
evEndEntry(iPlayableService.evEnd)
else:
evEndEntry()
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (2) and inherited methods (28)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableTextevent(ev)—Components.PerServiceDisplay.PerServiceBaseenablePolling(self, interval=60000)—Components.PerServiceDisplay.PerServiceBasedisablePolling(self)—Components.PerServiceDisplay.PerServiceBasepoll(self)—Components.PerServiceDisplay.PerServiceBase
PerServiceDisplayProgress
lib/python/Components/PerServiceDisplay.py, line 78 ↗
Class: Components.PerServiceDisplay.PerServiceDisplayProgress. Bases: PerServiceBase, VariableValue, GUIComponent.
Native root: eSlider (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentvalue=property(getValue, setValue)— Components.VariableValue.VariableValue
GUI_WIDGET = eSlider — Components.PerServiceDisplay.PerServiceDisplayProgress
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.
PerServiceDisplayProgress.__init__(self, navcore, eventmap)
def __init__(self, navcore, eventmap):
GUIComponent.__init__(self)
VariableValue.__init__(self)
PerServiceBase.__init__(self, navcore, eventmap)
self.eventmap = eventmap
self.navcore = navcore
self.navcore.event.append(self.event)
# start with stopped state, so simulate that
self.event(iPlayableService.evEnd)
PerServiceBase.__init__(self, navcore, eventmap, with_event=False)
def __init__(self, navcore, eventmap, with_event=False):
self.navcore = navcore
self.eventmap = eventmap #NOSONAR
self.poll_timer = eTimer()
self.with_event = with_event
self.poll_timer.callback.append(self.poll)
EventMap = PerServiceBase.EventMap
if not len(EventMap):
self.navcore.event.append(PerServiceBase.event)
EventMap = EventMap.setdefault
for x in eventmap.items():
EventMap(x[0], []).append((with_event, x[1]))
# start with stopped state, so simulate that
evEndEntry = eventmap.get(iPlayableService.evEnd)
if evEndEntry:
if with_event:
evEndEntry(iPlayableService.evEnd)
else:
evEndEntry()
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (2) and inherited methods (27)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableValue.VariableValuepreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetValue(self, value)—Components.VariableValue.VariableValuegetValue(self)—Components.VariableValue.VariableValueevent(ev)—Components.PerServiceDisplay.PerServiceBaseenablePolling(self, interval=60000)—Components.PerServiceDisplay.PerServiceBasedisablePolling(self)—Components.PerServiceDisplay.PerServiceBasepoll(self)—Components.PerServiceDisplay.PerServiceBase
Pixmap
lib/python/Components/Pixmap.py, line 11 ↗
Class: Components.Pixmap.Pixmap. Bases: GUIComponent.
Native root: ePixmap (18 current central attribute names).
Names explicitly handled in this class's applySkin: 1. offset These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = ePixmap — Components.Pixmap.Pixmap
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.
Pixmap.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.xOffset = 0
self.yOffset = 0
self.pixmap = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
Pixmap.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "offset":
self.xOffset, self.yOffset = map(int, value.split(","))
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
return GUIComponent.applySkin(self, desktop, screen)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (9) and inherited methods (18)
__init__(self)getSize(self)setPixmap(self, pixmap)applySkin(self, desktop, screen)move(self, x, y=None)setPosition(self, x, y)getPosition(self)setOffset(self, x, y)getOffset(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
PixmapConditional
lib/python/Components/Pixmap.py, line 61 ↗
Class: Components.Pixmap.PixmapConditional. Bases: ConditionalWidget, Pixmap.
Native root: ePixmap (18 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
Inherited Python attribute handlers
Components.Pixmap.Pixmap:offset
Inheritance does not mean every branch calls every base handler. The applySkin implementations below show delegation and precedence.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = ePixmap — Components.Pixmap.Pixmap
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.
PixmapConditional.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
ConditionalWidget.__init__(self)
Pixmap.__init__(self)
ConditionalWidget.__init__(self, withTimer=True)
def __init__(self, withTimer=True):
GUIComponent.__init__(self)
self.setConnect(None)
if withTimer:
self.conditionCheckTimer = eTimer()
self.conditionCheckTimer.callback.append(self.update)
self.conditionCheckTimer.start(1000)
Pixmap.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.xOffset = 0
self.yOffset = 0
self.pixmap = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
Pixmap.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "offset":
self.xOffset, self.yOffset = map(int, value.split(","))
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
return GUIComponent.applySkin(self, desktop, screen)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (29)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, screen)—Components.Pixmap.Pixmapmove(self, x, y=None)—Components.Pixmap.Pixmapresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, x, y)—Components.Pixmap.PixmapgetPosition(self)—Components.Pixmap.PixmapgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.ConditionalWidget.ConditionalWidgetpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentgetSize(self)—Components.Pixmap.PixmapsetPixmap(self, pixmap)—Components.Pixmap.PixmapsetOffset(self, x, y)—Components.Pixmap.PixmapgetOffset(self)—Components.Pixmap.PixmapsetConnect(self, conditionalFunction)—Components.ConditionalWidget.ConditionalWidgetactivateCondition(self, condition)—Components.ConditionalWidget.ConditionalWidgetupdate(self)—Components.ConditionalWidget.ConditionalWidget
MovingPixmap
lib/python/Components/Pixmap.py, line 67 ↗
Class: Components.Pixmap.MovingPixmap. Bases: Pixmap.
Native root: ePixmap (18 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
Inherited Python attribute handlers
Components.Pixmap.Pixmap:offset
Inheritance does not mean every branch calls every base handler. The applySkin implementations below show delegation and precedence.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = ePixmap — Components.Pixmap.Pixmap
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.
MovingPixmap.__init__(self)
def __init__(self):
Pixmap.__init__(self)
self.moving = False
self.x = 0 # Get actual value after skin applied.
self.y = 0 # Get actual value after skin applied.
self.clearPath()
self.moveTimer = eTimer()
self.moveTimer.callback.append(self.doMove)
self.callback = None
Pixmap.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.xOffset = 0
self.yOffset = 0
self.pixmap = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
MovingPixmap.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
ret = Pixmap.applySkin(self, desktop, screen)
self.x, self.y = self.getPosition()
return ret
Pixmap.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "offset":
self.xOffset, self.yOffset = map(int, value.split(","))
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
return GUIComponent.applySkin(self, desktop, screen)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (8) and inherited methods (25)
__init__(self)applySkin(self, desktop, screen)clearPath(self, repeated=False)addMovePoint(self, x, y, time=20)moveTo(self, x, y, time=20)startMoving(self, callback=None)stopMoving(self)doMove(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, x, y=None)—Components.Pixmap.Pixmapresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, x, y)—Components.Pixmap.PixmapgetPosition(self)—Components.Pixmap.PixmapgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentgetSize(self)—Components.Pixmap.PixmapsetPixmap(self, pixmap)—Components.Pixmap.PixmapsetOffset(self, x, y)—Components.Pixmap.PixmapgetOffset(self)—Components.Pixmap.Pixmap
MultiPixmap
lib/python/Components/Pixmap.py, line 145 ↗
Class: Components.Pixmap.MultiPixmap. Bases: Pixmap.
Native root: ePixmap (18 current central attribute names).
Names explicitly handled in this class's applySkin: 2. pixmap, pixmaps These can override central meanings.
Inherited Python attribute handlers
Components.Pixmap.Pixmap:offset
Inheritance does not mean every branch calls every base handler. The applySkin implementations below show delegation and precedence.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = ePixmap — Components.Pixmap.Pixmap
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.
MultiPixmap.__init__(self)
def __init__(self):
Pixmap.__init__(self)
self.pixmaps = []
self.iconGlyphs = None
self.iconColors = []
self.iconFont = None
Pixmap.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
self.xOffset = 0
self.yOffset = 0
self.pixmap = None
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
MultiPixmap.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attributes = dict(self.skinAttributes)
self.skinAttributes = [(name, value) for name, value in self.skinAttributes if name not in ("iconFont", "iconGlyphs", "iconColors")]
if self.iconGlyphs is not None:
self.skinAttributes = [(name, value) for name, value in self.skinAttributes if name not in ("pixmap", "pixmaps", "scale", "font")]
self.skinAttributes.append(("font", self.iconFont))
if "iconColors" in attributes:
self.iconColors = [parseColor(value.strip()) for value in attributes["iconColors"].split(",") if value.strip()]
if len(self.iconColors) != len(self.iconGlyphs):
print("[MultiPixmap] iconColors must provide one color per glyph; using the widget foreground color")
self.iconColors = []
return GUIComponent.applySkin(self, desktop, screen)
if self.skinAttributes is not None:
myScreen, path = domScreens.get(screen.__class__.__name__, (None, None))
skinPathPrefix = getattr(screen, "skin_path", path)
pixmap = None
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "pixmaps":
pixmaps = value.split(",")
for pix in pixmaps:
if fileExists(resolveFilename(SCOPE_GUISKIN, pix, path_prefix=skinPathPrefix)):
pngfile = resolveFilename(SCOPE_GUISKIN, pix, path_prefix=skinPathPrefix)
elif fileExists(resolveFilename(SCOPE_LCDSKIN, pix, path_prefix=skinPathPrefix)):
pngfile = resolveFilename(SCOPE_LCDSKIN, pix, path_prefix=skinPathPrefix)
else:
pngfile = ""
if pngfile and isfile(pngfile):
self.pixmaps.append(parsePixmap(pngfile, desktop))
if not pixmap:
if fileExists(resolveFilename(SCOPE_GUISKIN, pixmaps[0], path_prefix=skinPathPrefix)):
pixmap = resolveFilename(SCOPE_GUISKIN, pixmaps[0], path_prefix=skinPathPrefix)
elif fileExists(resolveFilename(SCOPE_LCDSKIN, pixmaps[0], path_prefix=skinPathPrefix)):
pixmap = resolveFilename(SCOPE_LCDSKIN, pixmaps[0], path_prefix=skinPathPrefix)
elif attrib == "pixmap":
if fileExists(resolveFilename(SCOPE_GUISKIN, value, path_prefix=skinPathPrefix)):
pixmap = resolveFilename(SCOPE_GUISKIN, value, path_prefix=skinPathPrefix)
elif fileExists(resolveFilename(SCOPE_LCDSKIN, value, path_prefix=skinPathPrefix)):
pixmap = resolveFilename(SCOPE_LCDSKIN, value, path_prefix=skinPathPrefix)
else:
attribs.append((attrib, value))
if pixmap:
attribs.append(("pixmap", pixmap))
self.skinAttributes = attribs
return GUIComponent.applySkin(self, desktop, screen)
Pixmap.applySkin(self, desktop, screen)
def applySkin(self, desktop, screen):
if self.skinAttributes is not None:
attribs = []
for (attrib, value) in self.skinAttributes:
if attrib == "offset":
self.xOffset, self.yOffset = map(int, value.split(","))
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
return GUIComponent.applySkin(self, desktop, screen)
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
MultiPixmap.createWidget(self, parent)
def createWidget(self, parent):
# Widget-local opt-in: embedded plugin skins can still use their PNGs.
attributes = dict(self.skinAttributes or ())
self.iconGlyphs = None
self.iconColors = []
self.iconFont = attributes.get("iconFont")
if attributes.get("iconFont") and attributes.get("iconGlyphs"):
try:
codepoints = [int(value.strip(), 0) for value in attributes["iconGlyphs"].split(",")]
if any(not 0 < value <= 0x10FFFF or 0xD800 <= value <= 0xDFFF for value in codepoints):
raise ValueError("Invalid Unicode codepoint")
self.iconGlyphs = [chr(value) for value in codepoints]
except ValueError as error:
print(f"[MultiPixmap] Invalid iconGlyphs, using pixmaps: {error}")
return eLabel(parent) if self.iconGlyphs is not None else Pixmap.createWidget(self, parent)
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (4) and inherited methods (24)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, x, y=None)—Components.Pixmap.Pixmapresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, x, y)—Components.Pixmap.PixmapgetPosition(self)—Components.Pixmap.PixmapgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentgetSize(self)—Components.Pixmap.PixmapsetPixmap(self, pixmap)—Components.Pixmap.PixmapsetOffset(self, x, y)—Components.Pixmap.PixmapgetOffset(self)—Components.Pixmap.Pixmap
PluginList
lib/python/Components/PluginList.py, line 86 ↗
Class: Components.PluginList.PluginList. Bases: MenuList.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuList
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
PluginList.__init__(self, pluginList, enableWrapAround=True)
def __init__(self, pluginList, enableWrapAround=True):
MenuList.__init__(self, pluginList, enableWrapAround, eListboxPythonMultiContent)
font = fonts.get("PluginBrowser0", ("Regular", 20, 50))
self.l.setFont(0, gFont(font[0], font[1]))
self.l.setItemHeight(font[2])
font = fonts.get("PluginBrowser1", ("Regular", 14))
self.l.setFont(1, gFont(font[0], font[1]))
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (53)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.MenuList.MenuListpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListgetCurrent(self)—Components.MenuList.MenuListgetCurrentIndex(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuList
ProgressBar
lib/python/Components/ProgressBar.py, line 6 ↗
Class: Components.ProgressBar.ProgressBar. Bases: VariableValue, GUIComponent.
Native root: eSlider (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentvalue=property(getValue, setValue)— Components.VariableValue.VariableValuerange=property(getRange, setRange)— Components.ProgressBar.ProgressBar
GUI_WIDGET = eSlider — Components.ProgressBar.ProgressBar
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.
ProgressBar.__init__(self)
def __init__(self):
GUIComponent.__init__(self)
VariableValue.__init__(self)
self.__range = (0, 100)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (4) and inherited methods (23)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetValue(self, value)—Components.VariableValue.VariableValuegetValue(self)—Components.VariableValue.VariableValue
QRCode
lib/python/Components/QRCode.py, line 7 ↗
Class: Components.QRCode.QRCode. Bases: VariableText, GUIComponent.
Native root: eQRCode (19 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eQRCode — Components.QRCode.QRCode
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.
QRCode.__init__(self, text='')
def __init__(self, text=""):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (1) and inherited methods (25)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableText
ScrollLabel
Composite scrollable text component. GUIcreate builds labels and a slider; applySkin distributes options between them. A single GUI_WIDGET/native-attribute union would be misleading.
lib/python/Components/ScrollLabel.py, line 7 ↗
Class: Components.ScrollLabel.ScrollLabel. Bases: GUIComponent.
No single GUI_WIDGET declaration. Inspect the construction contract below; this can be a base/helper, composite or non-visual class.
Names explicitly handled in this class's applySkin: 26. backgroundColor, colPosition, colors, colposition, divideChar, dividechar, leftColAlign, leftColumnAlignment, noWrap, rightColAlign, rightColumnAlignment, scrollbarBorderWidth, scrollbarGradient, scrollbarMode, scrollbarOffset, scrollbarRadius, scrollbarScroll, scrollbarWidth, split, splitCharacter, splitMargin, splitPosition, splitSeparated, splitTrim, transparent, wrap These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.ScrollLabel.ScrollLabel
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.
ScrollLabel.__init__(self, text='')
def __init__(self, text=""):
GUIComponent.__init__(self)
self.msgText = text
self.instance = None
self.leftText = None
self.rightText = None
self.slider = None
self.split = False
self.splitCharacter = "|"
self.splitTrim = False
self.lineWrap = True
self.lineHeight = 0
self.pageWidth = 0
self.pageHeight = 0
self.totalTextHeight = 0
self.currentPosition = 0
self.leftColX = 0
self.rightColX = 0
self.colors = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ScrollLabel.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
splitMargin = 0
splitPosition = 0
splitSeparated = False
sliderBorderWidth = scrollLabelStyle.get("scrollbarBorderWidth", eListbox.DefaultScrollBarBorderWidth)
sliderMode = scrollLabelStyle.get("scrollbarMode", eListbox.showOnDemand)
sliderScroll = scrollLabelStyle.get("scrollbarScroll", eListbox.DefaultScrollBarScroll)
sliderOffset = scrollLabelStyle.get("scrollbarOffset", eListbox.DefaultScrollBarOffset)
sliderWidth = scrollLabelStyle.get("scrollbarWidth", eListbox.DefaultScrollBarWidth)
scrollbarRadius = scrollLabelStyle.get("scrollbarRadius", None)
scrollbarGradient = None
lineWrap = True
if self.skinAttributes:
sliderProperties = (
"scrollbarBorderColor",
"scrollbarBorderWidth",
"scrollbarBackgroundColor",
"scrollbarForegroundColor",
"scrollbarBackgroundPixmap",
"scrollbarForegroundPixmap"
)
widgetAttributes = []
leftLabelAttributes = [("transparent", "1")]
rightLabelAttributes = [("transparent", "1")]
sliderAttributes = [("transparent", "1")]
leftAlign = "left"
rightAlign = "left"
for attribute, value in self.skinAttributes:
if attribute in sliderProperties:
sliderAttributes.append((attribute, value))
else:
if attribute == "backgroundColor":
widgetAttributes.append((attribute, value))
if "scrollbarBackgroundColor" not in [x[0] for x in sliderAttributes]:
sliderAttributes.append(("scrollbarBackgroundColor", value))
continue
if attribute == "transparent":
widgetAttributes.append((attribute, value))
continue
if attribute in ("leftColumnAlignment", "leftColAlign"):
leftAlign = value
elif attribute in ("rightColumnAlignment", "rightColAlign"):
rightAlign = value
self.split = True
elif attribute == "split":
self.split = parseBoolean("split", value)
elif attribute in ("splitCharacter", "divideChar", "dividechar"):
self.splitCharacter = value
self.split = True
elif attribute == "splitMargin":
splitMargin = parseInteger(value)
elif attribute in ("splitPosition", "colPosition", "colposition"):
splitPosition = parseInteger(value)
self.split = True
elif attribute == "splitSeparated":
splitSeparated = parseBoolean("splitSeparated", value)
self.split = True
elif attribute == "splitTrim":
self.splitTrim = parseBoolean("splitTrim", value)
elif attribute == "scrollbarBorderWidth":
sliderBorderWidth = parseInteger(value, eListbox.DefaultScrollBarBorderWidth)
elif attribute == "scrollbarMode":
sliderMode = parseScrollbarMode(value)
elif attribute == "scrollbarScroll":
sliderScroll = parseScrollbarScroll(value)
elif attribute == "scrollbarOffset":
sliderOffset = parseInteger(value, eListbox.DefaultScrollBarOffset)
elif attribute == "scrollbarWidth":
sliderWidth = parseInteger(value, eListbox.DefaultScrollBarWidth)
elif attribute == "scrollbarRadius":
scrollbarRadius = parseRadius(value)
elif attribute == "scrollbarGradient":
scrollbarGradient = parseGradient(value)
elif attribute == "colors":
self.colors = [parseColor(x.strip()) if x else None for x in value.split(",")]
else:
leftLabelAttributes.append((attribute, value))
rightLabelAttributes.append((attribute, value))
if attribute == "noWrap" and value in ("1", "enable", "enabled", "on", "true", "yes"):
lineWrap = False
if attribute == "wrap" and value not in ("1", "enable", "enabled", "on", "true", "yes"):
lineWrap = False
if self.split:
if not splitSeparated:
leftAlign = "left" # If columns are used and not separated then left column needs to be "left" aligned to avoid overlapping text.
leftLabelAttributes.append(("horizontalAlignment", leftAlign))
rightLabelAttributes.append(("horizontalAlignment", rightAlign))
applyAllAttributes(self.instance, desktop, widgetAttributes, parent.scale)
applyAllAttributes(self.leftText, desktop, leftLabelAttributes, parent.scale)
applyAllAttributes(self.rightText, desktop, rightLabelAttributes, parent.scale)
applyAllAttributes(self.slider, desktop, sliderAttributes, parent.scale)
retVal = True
else:
retVal = False
self.lineWrap = lineWrap
self.lineHeight = eLabel.calculateTextSize(self.leftText.getFont(), "Abcdefgh", eSize(10000, 10000), True).height()
self.pageWidth = self.leftText.size().width()
self.pageHeight = (self.leftText.size().height() // self.lineHeight) * self.lineHeight
self.instance.move(self.leftText.position())
self.instance.resize(eSize(self.pageWidth, self.pageHeight))
self.sliderWidth = sliderOffset + sliderWidth
if self.split and sliderMode != eListbox.showNever: # Check that there is space for the scrollbar in the split.
if abs(splitPosition) < self.sliderWidth:
splitPosition = None
elif abs(self.pageWidth - splitPosition) < self.sliderWidth:
splitPosition = None
splitPosition = self.pageWidth // 2 if splitPosition is None else splitPosition
self.leftWidth = (splitPosition - splitMargin) if splitSeparated else self.pageWidth
self.rightColX = splitPosition + splitMargin
self.rightWidth = self.pageWidth - splitPosition - splitMargin
self.splitSeparated = splitSeparated
self.leftText.move(ePoint(0, 0))
self.rightText.move(ePoint(self.rightColX, 0))
self.slider.move(ePoint(0 if sliderMode in (eListbox.showLeftOnDemand, eListbox.showLeftAlways) else (self.pageWidth - sliderWidth), 0))
self.slider.resize(eSize(sliderWidth, self.pageHeight))
self.slider.setOrientation(eSlider.orVertical)
self.slider.setRange(0, 1000)
self.slider.setBorderWidth(sliderBorderWidth)
if scrollbarRadius:
self.slider.setCornerRadius(*scrollbarRadius)
if scrollbarGradient:
scrollbarGradient = scrollbarGradient + (True,) # Add fullColor.
self.slider.setForegroundGradient(*scrollbarGradient)
self.sliderMode = sliderMode
self.sliderScroll = self.lineHeight if sliderScroll else self.pageHeight
self.setText(self.msgText)
return retVal
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
ScrollLabel.GUIcreate(self, parent)
def GUIcreate(self, parent):
self.instance = eWidget(parent)
self.leftText = eLabel(self.instance)
self.rightText = eLabel(self.instance)
self.slider = eSlider(self.instance)
self.slider.setIsScrollbar()
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (29) and inherited methods (19)
__init__(self, text='')GUIcreate(self, parent)GUIdelete(self)applySkin(self, desktop, parent)getForegroundColor(self)getFont(self)getText(self)setText(self, text, showBottom=False)appendText(self, text, showBottom=True)isSliderVisible(self)isNavigationNeeded(self)isAtLastPage(self)setPos(self, pos)getColors(self)goTop(self)goPageUp(self)goLineUp(self)goLineDown(self)goPageDown(self)goBottom(self)moveTop(self)homePage(self)pageUp(self)moveUp(self)moveDown(self)pageDown(self)moveBottom(self)endPage(self)lastPage(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
SelectionList
lib/python/Components/SelectionList.py, line 26 ↗
Class: Components.SelectionList.SelectionList. Bases: MenuList.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentcurrent=property(getCurrent)— Components.MenuList.MenuListindex=property(getCurrentIndex, setCurrentIndex)— Components.MenuList.MenuList
GUI_WIDGET = eListbox — Components.MenuList.MenuList
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.
SelectionList.__init__(self, list=None, enableWrapAround=False)
def __init__(self, list=None, enableWrapAround=False):
MenuList.__init__(self, list or [], enableWrapAround=enableWrapAround, content=eListboxPythonMultiContent)
font = fonts.get("SelectionList", ("Regular", 20, 30))
self.l.setFont(0, gFont(font[0], font[1]))
self.l.setItemHeight(font[2])
global icons
icons = [
LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/lock_on.png")),
LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/lock_off.png"))
]
MenuList.__init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent)
def __init__(self, menuList, enableWrapAround=None, content=eListboxPythonStringContent): # enableWrapAround is deprecated as this is now controllable in the skin and windowstyle.
GUIComponent.__init__(self)
self.list = menuList
self.l = content()
self.l.setList(self.list)
self.onSelectionChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (8) and inherited methods (53)
__init__(self, list=None, enableWrapAround=False)addSelection(self, description, value, index, selected=True)toggleSelection(self)getSelectionsList(self)toggleAllSelection(self)removeSelection(self, selection)toggleItemSelection(self, selection)sort(self, sortType=False, flag=False)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.MenuList.MenuListpreWidgetRemove(self, instance)—Components.MenuList.MenuListenableAutoNavigation(self, enabled)—Components.MenuList.MenuListselectionEnabled(self, enabled)—Components.MenuList.MenuListgetList(self)—Components.MenuList.MenuListsetList(self, menuList)—Components.MenuList.MenuListupdateEntry(self, index, data)—Components.MenuList.MenuListcount(self)—Components.MenuList.MenuListselectionChanged(self)—Components.MenuList.MenuListgetCurrent(self)—Components.MenuList.MenuListgetCurrentIndex(self)—Components.MenuList.MenuListsetCurrentIndex(self, index)—Components.MenuList.MenuListgetTopIndex(self)—Components.MenuList.MenuListsetTopIndex(self, index)—Components.MenuList.MenuListgoTop(self)—Components.MenuList.MenuListgoPageUp(self)—Components.MenuList.MenuListgoLineUp(self)—Components.MenuList.MenuListgoFirst(self)—Components.MenuList.MenuListgoLeft(self)—Components.MenuList.MenuListgoRight(self)—Components.MenuList.MenuListgoLast(self)—Components.MenuList.MenuListgoLineDown(self)—Components.MenuList.MenuListgoPageDown(self)—Components.MenuList.MenuListgoBottom(self)—Components.MenuList.MenuListgetSelectionIndex(self)—Components.MenuList.MenuListgetSelectedIndex(self)—Components.MenuList.MenuListmoveToIndex(self, index)—Components.MenuList.MenuListtop(self)—Components.MenuList.MenuListpageUp(self)—Components.MenuList.MenuListup(self)—Components.MenuList.MenuListdown(self)—Components.MenuList.MenuListpageDown(self)—Components.MenuList.MenuListbottom(self)—Components.MenuList.MenuList
ServiceListBase
lib/python/Components/ServiceList.py, line 305 ↗
Class: Components.ServiceList.ServiceListBase. Bases: GUIComponent.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.ServiceList.ServiceListBase
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
MODE_NORMAL = 0
MODE_FAVOURITES = 1
MODE_ALL = 2
MODE_OTHER = 0
MODE_BOUQUETS = 1
MODE_SERVICES = 2ServiceListBase.__init__(self, serviceList)
def __init__(self, serviceList):
self.serviceList = serviceList
GUIComponent.__init__(self)
self.onSelectionChanged = []
self.root = None
self.mode = self.MODE_OTHER
self.picFolder = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/folder.png"))
self.picMarker = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/marker.png"))
self.picDVB_S = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-s.png"))
self.picDVB_C = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-c.png"))
self.picDVB_T = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-t.png"))
self.picServiceGroup = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_service_group.png"))
self.picCrypto = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/icon_crypt.png"))
self.picRecord = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/record.png"))
self.picStream = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_stream.png"))
self.picDAB = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dab-plus.png"))
self.picCatchup = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_catchup.png"))
self.picFavorites = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/epgclock_primetime.png")) # TODO
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (51) and inherited methods (21)
__init__(self, serviceList)connectSelChanged(self, fnc)disconnectSelChanged(self, fnc)selectionChanged(self)isVertical(self)isHorizontal(self)isGrid(self)sort(self)fillFinished(self)getNext(self)getPrev(self)selectionEnabled(self, enabled)setCurrentMarked(self, state)getMarked(self)addService(self, service, beforeCurrent=False)finishFill(self)clearMarks(self)isMarked(self, ref)addMarked(self, ref)removeMarked(self, ref)setRoot(self, root, justSet=False)resetRoot(self)removeCurrent(self)getRoot(self)getRootServices(self)preWidgetRemove(self, instance)getCurrent(self)getList(self)atBegin(self)atEnd(self)moveToChar(self, char)moveToNextMarker(self)moveToPrevMarker(self)moveToIndex(self, index)getCurrentIndex(self)setCurrent(self, ref, adjust=True)setHideNumberMarker(self, value)goTop(self)goPageUp(self)goLineUp(self)goFirst(self)goLeft(self)goRight(self)goLast(self)goLineDown(self)goPageDown(self)goBottom(self)moveUp(self)moveDown(self)moveTop(self)moveEnd(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.GUIComponent.GUIComponent
ServiceListLegacy
lib/python/Components/ServiceList.py, line 573 ↗
Class: Components.ServiceList.ServiceListLegacy. Bases: ServiceListBase.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 38. backgroundColorMarked, backgroundColorMarkedSelected, colorEventProgressbar, colorEventProgressbarBorder, colorEventProgressbarBorderSelected, colorEventProgressbarSelected, colorFallbackItem, colorServiceDescription, colorServiceDescriptionFallback, colorServiceDescriptionSelected, colorServiceDescriptionSelectedFallback, colorServicePseudoRecorded, colorServiceRecorded, colorServiceRecording, colorServiceSelectedFallback, colorServiceStreamed, colorServiceWithAdvertisment, fieldMargins, foregroundColorEvent, foregroundColorEventSelected, foregroundColorEventborder, foregroundColorEventborderSelected, foregroundColorMarked, foregroundColorMarkedSelected, foregroundColorServiceNotAvail, itemsDistances, listMarginLeft, listMarginRight, nonplayableMargins, picServiceEventProgressbar, progressBarWidth, progressInfoFont, progressbarBorderWidth, progressbarHeight, serviceInfoFont, serviceItemHeight, serviceNameFont, serviceNumberFont These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.ServiceList.ServiceListBase
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.
ServiceListLegacy.__init__(self, serviceList)
def __init__(self, serviceList):
ServiceListBase.__init__(self, serviceList)
self.l = eListboxServiceContent()
if self.picFolder:
self.l.setPixmap(self.l.picFolder, self.picFolder)
if self.picMarker:
self.l.setPixmap(self.l.picMarker, self.picMarker)
if self.picDVB_S:
self.l.setPixmap(self.l.picDVB_S, self.picDVB_S)
if self.picDVB_C:
self.l.setPixmap(self.l.picDVB_C, self.picDVB_C)
if self.picDVB_C:
self.l.setPixmap(self.l.picDVB_T, self.picDVB_T)
if self.picServiceGroup:
self.l.setPixmap(self.l.picServiceGroup, self.picServiceGroup)
if self.picCrypto:
self.l.setPixmap(self.l.picCrypto, self.picCrypto)
if self.picRecord:
self.l.setPixmap(self.l.picRecord, self.picRecord)
if self.picCatchup:
self.l.setPixmap(self.l.picCatchup, self.picCatchup)
if self.picStream:
self.l.setPixmap(self.l.picStream, self.picStream)
if self.picDAB:
self.l.setPixmap(self.l.picDAB, self.picDAB)
self.listHeight = 0
self.listWidth = 0
self.ServiceNumberFontName = "Regular"
self.ServiceNumberFontSize = 20
self.ServiceNameFontName = "Regular"
self.ServiceNameFontSize = 22
self.ServiceInfoFontName = "Regular"
self.ServiceInfoFontSize = 18
self.progressInfoFontName = "Regular"
self.progressInfoFontSize = -1
self.progressBarWidth = 52
self.fieldMargins = 10
self.itemsDistances = 8
self.listMarginRight = 25 # scrollbar is fixed 20 + 5 Extra marge
self.listMarginLeft = 5
ServiceListBase.__init__(self, serviceList)
def __init__(self, serviceList):
self.serviceList = serviceList
GUIComponent.__init__(self)
self.onSelectionChanged = []
self.root = None
self.mode = self.MODE_OTHER
self.picFolder = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/folder.png"))
self.picMarker = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/marker.png"))
self.picDVB_S = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-s.png"))
self.picDVB_C = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-c.png"))
self.picDVB_T = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-t.png"))
self.picServiceGroup = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_service_group.png"))
self.picCrypto = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/icon_crypt.png"))
self.picRecord = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/record.png"))
self.picStream = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_stream.png"))
self.picDAB = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dab-plus.png"))
self.picCatchup = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_catchup.png"))
self.picFavorites = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/epgclock_primetime.png")) # TODO
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ServiceListLegacy.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
def foregroundColorMarked(value):
self.l.setColor(eListboxServiceContent.markedForeground, parseColor(value))
def foregroundColorMarkedSelected(value):
self.l.setColor(eListboxServiceContent.markedForegroundSelected, parseColor(value))
def backgroundColorMarked(value):
self.l.setColor(eListboxServiceContent.markedBackground, parseColor(value))
def backgroundColorMarkedSelected(value):
self.l.setColor(eListboxServiceContent.markedBackgroundSelected, parseColor(value))
def foregroundColorServiceNotAvail(value):
self.l.setColor(eListboxServiceContent.serviceNotAvail, parseColor(value))
def foregroundColorEvent(value):
self.l.setColor(eListboxServiceContent.eventForeground, parseColor(value))
def colorServiceDescription(value):
self.l.setColor(eListboxServiceContent.serviceDescriptionColor, parseColor(value))
def foregroundColorEventSelected(value):
self.l.setColor(eListboxServiceContent.eventForegroundSelected, parseColor(value))
def colorServiceDescriptionSelected(value):
self.l.setColor(eListboxServiceContent.serviceDescriptionColorSelected, parseColor(value))
def foregroundColorEventborder(value):
self.l.setColor(eListboxServiceContent.eventborderForeground, parseColor(value))
def foregroundColorEventborderSelected(value):
self.l.setColor(eListboxServiceContent.eventborderForegroundSelected, parseColor(value))
def colorEventProgressbar(value):
self.l.setColor(eListboxServiceContent.serviceEventProgressbarColor, parseColor(value))
def colorEventProgressbarSelected(value):
self.l.setColor(eListboxServiceContent.serviceEventProgressbarColorSelected, parseColor(value))
def colorEventProgressbarBorder(value):
self.l.setColor(eListboxServiceContent.serviceEventProgressbarBorderColor, parseColor(value))
def colorEventProgressbarBorderSelected(value):
self.l.setColor(eListboxServiceContent.serviceEventProgressbarBorderColorSelected, parseColor(value))
def colorServiceRecorded(value):
self.l.setColor(eListboxServiceContent.serviceRecorded, parseColor(value))
def colorServicePseudoRecorded(value):
self.l.setColor(eListboxServiceContent.servicePseudoRecorded, parseColor(value))
def colorServiceStreamed(value):
self.l.setColor(eListboxServiceContent.serviceStreamed, parseColor(value))
def colorFallbackItem(value):
self.l.setColor(eListboxServiceContent.serviceItemFallback, parseColor(value))
def colorServiceSelectedFallback(value):
self.l.setColor(eListboxServiceContent.serviceSelectedFallback, parseColor(value))
def colorServiceDescriptionFallback(value):
self.l.setColor(eListboxServiceContent.eventForegroundFallback, parseColor(value))
def colorServiceDescriptionSelectedFallback(value):
self.l.setColor(eListboxServiceContent.eventForegroundSelectedFallback, parseColor(value))
def colorServiceRecording(value):
self.l.setColor(eListboxServiceContent.serviceRecordingColor, parseColor(value))
def colorServiceWithAdvertisment(value):
self.l.setColor(eListboxServiceContent.serviceAdvertismentColor, parseColor(value))
def picServiceEventProgressbar(value):
pic = LoadPixmap(resolveFilename(SCOPE_GUISKIN, value))
pic and self.l.setPixmap(self.l.picServiceEventProgressbar, pic)
def serviceItemHeight(value):
self.ItemHeight = int(value)
def serviceNameFont(value):
font = parseFont(value, ((1, 1), (1, 1)))
self.ServiceNameFontName = font.family
self.ServiceNameFontSize = font.pointSize
def serviceInfoFont(value):
font = parseFont(value, ((1, 1), (1, 1)))
self.ServiceInfoFontName = font.family
self.ServiceInfoFontSize = font.pointSize
def serviceNumberFont(value):
font = parseFont(value, ((1, 1), (1, 1)))
self.ServiceNumberFontName = font.family
self.ServiceNumberFontSize = font.pointSize
def progressInfoFont(value):
font = parseFont(value, ((1, 1), (1, 1)))
self.progressInfoFontName = font.family
self.progressInfoFontSize = font.pointSize
def progressbarHeight(value):
self.l.setProgressbarHeight(int(value))
def progressbarBorderWidth(value):
self.l.setProgressbarBorderWidth(int(value))
def progressBarWidth(value):
self.progressBarWidth = int(value)
def fieldMargins(value):
self.fieldMargins = int(value)
def listMarginRight(value):
self.listMarginRight = int(value)
def listMarginLeft(value):
self.listMarginLeft = int(value)
def nonplayableMargins(value):
self.l.setNonplayableMargins(int(value))
def itemsDistances(value):
self.itemsDistances = int(value)
self.l.setItemsDistances(self.itemsDistances)
if self.skinAttributes is not None:
for (attrib, value) in list(self.skinAttributes):
try:
locals().get(attrib)(value)
self.skinAttributes.remove((attrib, value))
except Exception:
pass
rc = GUIComponent.applySkin(self, desktop, parent)
self.listHeight = self.instance.size().height()
self.listWidth = self.instance.size().width()
self.setItemsPerPage()
self.setFontsize()
return rc
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (11) and inherited methods (66)
__init__(self, serviceList)reloadSkin(self)applySkin(self, desktop, parent)isVertical(self)isHorizontal(self)isGrid(self)setItemsPerPage(self)setFontsize(self)postWidgetCreate(self, instance)setPlayableIgnoreService(self, ref)setMode(self, mode)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.ServiceList.ServiceListBaseconnectSelChanged(self, fnc)—Components.ServiceList.ServiceListBasedisconnectSelChanged(self, fnc)—Components.ServiceList.ServiceListBaseselectionChanged(self)—Components.ServiceList.ServiceListBasesort(self)—Components.ServiceList.ServiceListBasefillFinished(self)—Components.ServiceList.ServiceListBasegetNext(self)—Components.ServiceList.ServiceListBasegetPrev(self)—Components.ServiceList.ServiceListBaseselectionEnabled(self, enabled)—Components.ServiceList.ServiceListBasesetCurrentMarked(self, state)—Components.ServiceList.ServiceListBasegetMarked(self)—Components.ServiceList.ServiceListBaseaddService(self, service, beforeCurrent=False)—Components.ServiceList.ServiceListBasefinishFill(self)—Components.ServiceList.ServiceListBaseclearMarks(self)—Components.ServiceList.ServiceListBaseisMarked(self, ref)—Components.ServiceList.ServiceListBaseaddMarked(self, ref)—Components.ServiceList.ServiceListBaseremoveMarked(self, ref)—Components.ServiceList.ServiceListBasesetRoot(self, root, justSet=False)—Components.ServiceList.ServiceListBaseresetRoot(self)—Components.ServiceList.ServiceListBaseremoveCurrent(self)—Components.ServiceList.ServiceListBasegetRoot(self)—Components.ServiceList.ServiceListBasegetRootServices(self)—Components.ServiceList.ServiceListBasegetCurrent(self)—Components.ServiceList.ServiceListBasegetList(self)—Components.ServiceList.ServiceListBaseatBegin(self)—Components.ServiceList.ServiceListBaseatEnd(self)—Components.ServiceList.ServiceListBasemoveToChar(self, char)—Components.ServiceList.ServiceListBasemoveToNextMarker(self)—Components.ServiceList.ServiceListBasemoveToPrevMarker(self)—Components.ServiceList.ServiceListBasemoveToIndex(self, index)—Components.ServiceList.ServiceListBasegetCurrentIndex(self)—Components.ServiceList.ServiceListBasesetCurrent(self, ref, adjust=True)—Components.ServiceList.ServiceListBasesetHideNumberMarker(self, value)—Components.ServiceList.ServiceListBasegoTop(self)—Components.ServiceList.ServiceListBasegoPageUp(self)—Components.ServiceList.ServiceListBasegoLineUp(self)—Components.ServiceList.ServiceListBasegoFirst(self)—Components.ServiceList.ServiceListBasegoLeft(self)—Components.ServiceList.ServiceListBasegoRight(self)—Components.ServiceList.ServiceListBasegoLast(self)—Components.ServiceList.ServiceListBasegoLineDown(self)—Components.ServiceList.ServiceListBasegoPageDown(self)—Components.ServiceList.ServiceListBasegoBottom(self)—Components.ServiceList.ServiceListBasemoveUp(self)—Components.ServiceList.ServiceListBasemoveDown(self)—Components.ServiceList.ServiceListBasemoveTop(self)—Components.ServiceList.ServiceListBasemoveEnd(self)—Components.ServiceList.ServiceListBase
ServiceList
Service-list component with legacy appearance options and modern templates. Its applySkin handles additional service-specific attributes before forwarding native list options.
lib/python/Components/ServiceList.py, line 896 ↗
Class: Components.ServiceList.ServiceList. Bases: ServiceListBase, ServiceListTemplateParser.
Native root: eListbox (63 current central attribute names).
Names explicitly handled in this class's applySkin: 8. colorServiceWithAdvertisment, fieldMargins, itemsDistances, listMarginLeft, listMarginRight, nonplayableMargins, picServiceEventProgressbar, serviceItemHeight These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eListbox — Components.ServiceList.ServiceListBase
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.
ServiceList.__init__(self, serviceList)
def __init__(self, serviceList):
ServiceListBase.__init__(self, serviceList)
ServiceListTemplateParser.__init__(self, config.crash.debugScreens.value)
self.session = serviceList.session
self.l = eListboxPythonServiceContent()
self.l.setBuildFunc(self.buildEntry)
self.list = []
self.size = 0
self.ItemHeight = 20
self.service_center = eServiceCenter.getInstance()
self.numberoffset = 0
self.PlayableIgnoreService = eServiceReference()
self.recordingList = {}
if self.session:
self.session.nav.RecordTimer.on_state_change.append(self.onTimerEntryStateChange)
config.channelSelection.showTimers.addNotifier(self.getRecordingList, initial_call=True)
self.desktopWidth = getDesktop(0).size().width()
self.reloadTimer = eTimer()
self.reloadTimer.callback.append(self.doReload)
self.skinAttributes = None
ServiceListBase.__init__(self, serviceList)
def __init__(self, serviceList):
self.serviceList = serviceList
GUIComponent.__init__(self)
self.onSelectionChanged = []
self.root = None
self.mode = self.MODE_OTHER
self.picFolder = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/folder.png"))
self.picMarker = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/marker.png"))
self.picDVB_S = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-s.png"))
self.picDVB_C = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-c.png"))
self.picDVB_T = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dvb-t.png"))
self.picServiceGroup = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_service_group.png"))
self.picCrypto = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/icon_crypt.png"))
self.picRecord = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/record.png"))
self.picStream = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_stream.png"))
self.picDAB = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_dab-plus.png"))
self.picCatchup = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/ico_catchup.png"))
self.picFavorites = LoadPixmap(path=resolveFilename(SCOPE_GUISKIN, "icons/epgclock_primetime.png")) # TODO
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
ServiceListTemplateParser.__init__(self, debug=False)
def __init__(self, debug=False):
TemplateParser.__init__(self, debug=debug)
self.listHeight = 0
self.listWidth = 0
self.recordIndicatorMode = config.channelSelection.recordIndicatorMode.value
self.widgetAttributes = {}
self.widgetColors = ("recordColor", "streamColor", "pseudoColor", "serviceNotAvailColor", "fallbackColor", "recordColorSelected", "streamColorSelected", "pseudoColorSelected", "serviceNotAvailColorSelected", "fallbackColorSelected")
ServiceList.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent):
if self.skinAttributes is None:
return GUIComponent.applySkin(self, desktop, parent)
attribs = []
attributeMapping = {
"foregroundColorServiceNotAvail": "serviceNotAvailColor",
"colorServiceRecording": "recordColor",
"colorServiceRecorded": "recordColor",
"colorServicePseudoRecorded": "pseudoColor",
"colorServiceStreamed": "streamColor",
"colorFallbackItem": "fallbackColor",
"colorServiceSelectedFallback": "fallbackColorSelected"
}
self.widgetAttributes["recordColor"] = "#00b40431"
self.widgetAttributes["streamColor"] = "#00f56712"
self.widgetAttributes["pseudoColor"] = "#0041b1ec"
self.widgetAttributes["serviceNotAvailColor"] = "#00bbbbbb"
self.widgetAttributes["recordColorSelected"] = "#00b40431"
self.widgetAttributes["streamColorSelected"] = "#00f56712"
self.widgetAttributes["pseudoColorSelected"] = "#0041b1ec"
self.widgetAttributes["serviceNotAvailColorSelected"] = "#00bbbbbb"
for (attrib, value) in self.skinAttributes:
# Color attributes
newattrib = attributeMapping.get(attrib, attrib)
if newattrib in ("foregroundColorMarked", "foregroundColorMarkedSelected", "backgroundColorMarked", "backgroundColorMarkedSelected") + self.widgetColors:
self.widgetAttributes[newattrib] = value
continue
# LEGACY attributes will be ignored
if attrib.startswith("colorEventProgressbar"):
continue
if attrib.startswith("progressBar"):
continue
if attrib.startswith("foregroundColorEvent"):
continue
if attrib.startswith("colorServiceDescription"):
continue
if attrib.endswith("Font"):
continue
if attrib in ("listMarginLeft", "listMarginRight", "fieldMargins", "itemsDistances", "nonplayableMargins", "serviceItemHeight", "picServiceEventProgressbar", "colorServiceWithAdvertisment"):
continue
else:
attribs.append((attrib, value))
self.skinAttributes = attribs
rc = GUIComponent.applySkin(self, desktop, parent)
self.listHeight = self.instance.size().height()
self.listWidth = self.instance.size().width()
self.readTemplate(config.channelSelection.widgetStyle.value)
return rc
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (23) and inherited methods (70)
__init__(self, serviceList)getRecordingList(self, configElement=None)onTimerEntryStateChange(self, timer)setItemSize(self, configElement=None)buildServiceListEventPixmap(self, service, begin_time=0, duration=0, title='', short_description='', extended_description='', size=None, next_event=False, fallback_to_picon=False)— Build an optional event pixmap via a registered provider. The default core implementation has no image provider. Optional plugins may register a provider with registerServiceListEventPixmapProvider(). For ImageOrPicon the core falls back to an existing service picon when no provider pixmap is available. No placeholder/default image is used.buildOptionEntryDisplay(self, event, isPlayable, mode)buildOptionEntryServicePicon(self, service)buildOptionEntryServicePixmap(self, service)buildOptionEntryServiceResolutionPixmap(self, service)buildOptioncheckHasRecordings(self, service, isPlayable)reloadSkin(self)applySkin(self, desktop, parent)onShow(self)onHide(self)doReload(self)resetReloadTimer(self)postWidgetCreate(self, instance)setNumberOffset(self, offset)setPlayableIgnoreService(self, ref)setMode(self, mode)setFontsize(self)setItemsPerPage(self)buildEntry(self, service, status)
Inherited methods
collectColors(self, attributes, widgetColors=None)—Components.ServiceList.ServiceListTemplateParsercollectAttributes(self, node, context, ignore=(), excludeItemIndexes=None, includeItemIndexes=None)—Components.ServiceList.ServiceListTemplateParserreadTemplate(self, templateName)—Components.ServiceList.ServiceListTemplateParserexecBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.ServiceList.ServiceListBaseconnectSelChanged(self, fnc)—Components.ServiceList.ServiceListBasedisconnectSelChanged(self, fnc)—Components.ServiceList.ServiceListBaseselectionChanged(self)—Components.ServiceList.ServiceListBaseisVertical(self)—Components.ServiceList.ServiceListBaseisHorizontal(self)—Components.ServiceList.ServiceListBaseisGrid(self)—Components.ServiceList.ServiceListBasesort(self)—Components.ServiceList.ServiceListBasefillFinished(self)—Components.ServiceList.ServiceListBasegetNext(self)—Components.ServiceList.ServiceListBasegetPrev(self)—Components.ServiceList.ServiceListBaseselectionEnabled(self, enabled)—Components.ServiceList.ServiceListBasesetCurrentMarked(self, state)—Components.ServiceList.ServiceListBasegetMarked(self)—Components.ServiceList.ServiceListBaseaddService(self, service, beforeCurrent=False)—Components.ServiceList.ServiceListBasefinishFill(self)—Components.ServiceList.ServiceListBaseclearMarks(self)—Components.ServiceList.ServiceListBaseisMarked(self, ref)—Components.ServiceList.ServiceListBaseaddMarked(self, ref)—Components.ServiceList.ServiceListBaseremoveMarked(self, ref)—Components.ServiceList.ServiceListBasesetRoot(self, root, justSet=False)—Components.ServiceList.ServiceListBaseresetRoot(self)—Components.ServiceList.ServiceListBaseremoveCurrent(self)—Components.ServiceList.ServiceListBasegetRoot(self)—Components.ServiceList.ServiceListBasegetRootServices(self)—Components.ServiceList.ServiceListBasegetCurrent(self)—Components.ServiceList.ServiceListBasegetList(self)—Components.ServiceList.ServiceListBaseatBegin(self)—Components.ServiceList.ServiceListBaseatEnd(self)—Components.ServiceList.ServiceListBasemoveToChar(self, char)—Components.ServiceList.ServiceListBasemoveToNextMarker(self)—Components.ServiceList.ServiceListBasemoveToPrevMarker(self)—Components.ServiceList.ServiceListBasemoveToIndex(self, index)—Components.ServiceList.ServiceListBasegetCurrentIndex(self)—Components.ServiceList.ServiceListBasesetCurrent(self, ref, adjust=True)—Components.ServiceList.ServiceListBasesetHideNumberMarker(self, value)—Components.ServiceList.ServiceListBasegoTop(self)—Components.ServiceList.ServiceListBasegoPageUp(self)—Components.ServiceList.ServiceListBasegoLineUp(self)—Components.ServiceList.ServiceListBasegoFirst(self)—Components.ServiceList.ServiceListBasegoLeft(self)—Components.ServiceList.ServiceListBasegoRight(self)—Components.ServiceList.ServiceListBasegoLast(self)—Components.ServiceList.ServiceListBasegoLineDown(self)—Components.ServiceList.ServiceListBasegoPageDown(self)—Components.ServiceList.ServiceListBasegoBottom(self)—Components.ServiceList.ServiceListBasemoveUp(self)—Components.ServiceList.ServiceListBasemoveDown(self)—Components.ServiceList.ServiceListBasemoveTop(self)—Components.ServiceList.ServiceListBasemoveEnd(self)—Components.ServiceList.ServiceListBase
ServicePosition
lib/python/Components/ServicePosition.py, line 7 ↗
Class: Components.ServicePosition.ServicePosition. Bases: PerServiceDisplay.
Native root: eLabel (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponenttext=property(getText, setText)— Components.VariableText.VariableText
GUI_WIDGET = eLabel — Components.PerServiceDisplay.PerServiceDisplay
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_RELATIVE = 3ServicePosition.__init__(self, navcore, type)
def __init__(self, navcore, type):
PerServiceDisplay.__init__(self, navcore,
{
iPlayableService.evStart: self.newService,
iPlayableService.evEnd: self.stopEvent
})
self.updateTimer = eTimer()
self.updateTimer.callback.append(self.update)
self.type = type
self.relative_base = 0
PerServiceDisplay.__init__(self, navcore, eventmap)
def __init__(self, navcore, eventmap):
GUIComponent.__init__(self)
VariableText.__init__(self)
PerServiceBase.__init__(self, navcore, eventmap)
PerServiceBase.__init__(self, navcore, eventmap, with_event=False)
def __init__(self, navcore, eventmap, with_event=False):
self.navcore = navcore
self.eventmap = eventmap #NOSONAR
self.poll_timer = eTimer()
self.with_event = with_event
self.poll_timer.callback.append(self.poll)
EventMap = PerServiceBase.EventMap
if not len(EventMap):
self.navcore.event.append(PerServiceBase.event)
EventMap = EventMap.setdefault
for x in eventmap.items():
EventMap(x[0], []).append((with_event, x[1]))
# start with stopped state, so simulate that
evEndEntry = eventmap.get(iPlayableService.evEnd)
if evEndEntry:
if with_event:
evEndEntry(iPlayableService.evEnd)
else:
evEndEntry()
VariableText.__init__(self)
def __init__(self):
object.__init__(self)
self.message = ""
self.instance = None
self.onChanged = []
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (7) and inherited methods (29)
__init__(self, navcore, type)newService(self)setType(self, type)setRelative(self, rel)get(self, what)update(self)stopEvent(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.PerServiceDisplay.PerServiceDisplayapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpostWidgetCreate(self, instance)—Components.VariableText.VariableTextpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetText(self, text)—Components.VariableText.VariableTextsetMarkedPos(self, pos)—Components.VariableText.VariableTextgetText(self)—Components.VariableText.VariableTextevent(ev)—Components.PerServiceDisplay.PerServiceBaseenablePolling(self, interval=60000)—Components.PerServiceDisplay.PerServiceBasedisablePolling(self)—Components.PerServiceDisplay.PerServiceBasepoll(self)—Components.PerServiceDisplay.PerServiceBase
ServicePositionGauge
lib/python/Components/ServicePosition.py, line 89 ↗
Class: Components.ServicePosition.ServicePositionGauge. Bases: PerServiceBase, GUIComponent.
Native root: ePositionGauge (18 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentseek_pointer_enabled=property(getSeekEnable, setSeekEnable)— Components.ServicePosition.ServicePositionGaugeseek_pointer_position=property(getSeekPosition, setSeekPosition)— Components.ServicePosition.ServicePositionGauge
GUI_WIDGET = ePositionGauge — Components.ServicePosition.ServicePositionGauge
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.
ServicePositionGauge.__init__(self, navcore)
def __init__(self, navcore):
GUIComponent.__init__(self)
PerServiceBase.__init__(self, navcore,
{
iPlayableService.evStart: self.newService,
iPlayableService.evEnd: self.stopEvent,
iPlayableService.evCuesheetChanged: self.newCuesheet
})
self.instance = None
self.__seek_position = 0
PerServiceBase.__init__(self, navcore, eventmap, with_event=False)
def __init__(self, navcore, eventmap, with_event=False):
self.navcore = navcore
self.eventmap = eventmap #NOSONAR
self.poll_timer = eTimer()
self.with_event = with_event
self.poll_timer.callback.append(self.poll)
EventMap = PerServiceBase.EventMap
if not len(EventMap):
self.navcore.event.append(PerServiceBase.event)
EventMap = EventMap.setdefault
for x in eventmap.items():
EventMap(x[0], []).append((with_event, x[1]))
# start with stopped state, so simulate that
evEndEntry = eventmap.get(iPlayableService.evEnd)
if evEndEntry:
if with_event:
evEndEntry(iPlayableService.evEnd)
else:
evEndEntry()
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (12) and inherited methods (23)
__init__(self, navcore)newService(self)get(self)poll(self)stopEvent(self)postWidgetCreate(self, instance)newCuesheet(self)getSeekEnable(self)setSeekEnable(self, val)getSeekPosition(self)setSeekPosition(self, pos)destroy(self)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentevent(ev)—Components.PerServiceDisplay.PerServiceBaseenablePolling(self, interval=60000)—Components.PerServiceDisplay.PerServiceBasedisablePolling(self)—Components.PerServiceDisplay.PerServiceBase
Slider
lib/python/Components/Slider.py, line 7 ↗
Class: Components.Slider.Slider. Bases: VariableValue, GUIComponent.
Native root: eSlider (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentvalue=property(getValue, setValue)— Components.VariableValue.VariableValue
GUI_WIDGET = eSlider — Components.Slider.Slider
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.
Slider.__init__(self, min, max)
def __init__(self, min, max):
VariableValue.__init__(self)
GUIComponent.__init__(self)
self.min = min
self.max = max
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (2) and inherited methods (23)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetValue(self, value)—Components.VariableValue.VariableValuegetValue(self)—Components.VariableValue.VariableValue
TunerInfo
lib/python/Components/TunerInfo.py, line 8 ↗
Class: Components.TunerInfo.TunerInfo. Bases: GUIComponent.
Created by createWidget(): eLabel, eSlider. The constructor may choose a widget by mode.
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
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
SNR = 0
SNR_DB = 1
AGC = 2
BER = 3
SNR_PERCENTAGE = 0
AGC_PERCENTAGE = 2
BER_VALUE = 3
SNR_BAR = 4
AGC_BAR = 5
BER_BAR = 6
LOCK_STATE = 7
SYNC_STATE = 8
LOCK = 9TunerInfo.__init__(self, type, servicefkt=None, frontendfkt=None, statusDict=None)
def __init__(self, type, servicefkt=None, frontendfkt=None, statusDict=None):
GUIComponent.__init__(self)
self.instance = None
self.message = None
self.value = None
self.servicefkt = servicefkt
self.frontendfkt = frontendfkt
self.statusDict = statusDict
self.type = type
self.update()
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
TunerInfo.createWidget(self, parent)
def createWidget(self, parent):
if self.SNR_PERCENTAGE <= self.type <= self.BER_VALUE or self.type == self.LOCK_STATE:
return eLabel(parent)
elif self.SNR_BAR <= self.type <= self.BER_BAR:
self.g = eSlider(parent)
self.g.setRange(0, 100)
return self.g
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (8) and inherited methods (20)
__init__(self, type, servicefkt=None, frontendfkt=None, statusDict=None)setText(self, text)setValue(self, value)calc(self, val)update(self)getValue(self, what)createWidget(self, parent)postWidgetCreate(self, instance)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
VideoWindow
lib/python/Components/VideoWindow.py, line 5 ↗
Class: Components.VideoWindow.VideoWindow. Bases: GUIComponent.
Native root: eVideoWidget (31 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponent
GUI_WIDGET = eVideoWidget — Components.VideoWindow.VideoWindow
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.
VideoWindow.__init__(self, decoder=1, fb_width=720, fb_height=576)
def __init__(self, decoder=1, fb_width=720, fb_height=576):
GUIComponent.__init__(self)
self.decoder = decoder
self.fb_width = fb_width
self.fb_height = fb_height
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (2) and inherited methods (21)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponent
VolumeBar
lib/python/Components/VolumeBar.py, line 7 ↗
Class: Components.VolumeBar.VolumeBar. Bases: VariableValue, GUIComponent.
Native root: eSlider (30 current central attribute names).
Names explicitly handled in this class's applySkin: 0. No named comparisons or local-handler dispatch found here; check inherited handling below. These can override central meanings.
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.
visible=property(getVisible, setVisible)— Components.GUIComponent.GUIComponentposition=property(getPosition)— Components.GUIComponent.GUIComponentvalue=property(getValue, setValue)— Components.VariableValue.VariableValue
GUI_WIDGET = eSlider — Components.VolumeBar.VolumeBar
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.
VolumeBar.__init__(self)
def __init__(self):
VariableValue.__init__(self)
GUIComponent.__init__(self)
GUIComponent.__init__(self)
def __init__(self):
self.onVisibilityChange = []
self.instance = None
self.visiblity = False
self.visible = True
self.skinAttributes = None
self.deprecationInfo = None
GUIComponent.applySkin(self, desktop, parent)
def applySkin(self, desktop, parent): # This only works with normal widgets, if you don't have a self.instance override this method.
if not self.visible:
self.instance.hide()
if self.skinAttributes is None:
result = False
else:
# // Workaround for values from attributes the not be set.
#
# The order of some attributes is crucial if they are applied. Also, an attribute may be responsible that another does not take effect and occurs at different skins.
# It was noticed at "scrollbarSliderBorderWidth" and "scrollbarSliderForegroundColor".
#
# if config.skin.primary_skin.value.split("/")[0] not in ("DMConcinnity-HD"):
# self.skinAttributes.sort()
#
# NOTE: The code above is invalid. It always returns False! It is being removed until it's need is confirmed.
# To be correct the code could/should be one of, depending on the original intention:
# if config.skin.primary_skin.value.split("/")[0] != "DMConcinnity-HD":
# if config.skin.primary_skin.value.split("/")[0] == "DMConcinnity-HD":
#
# //
applyAllAttributes(self.instance, desktop, self.skinAttributes, parent.scale)
result = True
return result
GUIComponent.createWidget(self, parent)
def createWidget(self, parent): # Default for argument less widget constructor.
return self.GUI_WIDGET(parent)
GUIComponent.GUIcreate(self, parent)
def GUIcreate(self, parent): # Default implementation for only one widget per component. Feel free to override!
self.instance = self.createWidget(parent)
self.postWidgetCreate(self.instance)
Declared methods (2) and inherited methods (23)
Inherited methods
execBegin(self)—Components.GUIComponent.GUIComponentexecEnd(self)—Components.GUIComponent.GUIComponentonShow(self)—Components.GUIComponent.GUIComponentonHide(self)—Components.GUIComponent.GUIComponentdestroy(self)—Components.GUIComponent.GUIComponentapplySkin(self, desktop, parent)—Components.GUIComponent.GUIComponentmove(self, xPos, yPos=None)—Components.GUIComponent.GUIComponentresize(self, width, height=None)—Components.GUIComponent.GUIComponentsetZPosition(self, zPosition)—Components.GUIComponent.GUIComponentshow(self)—Components.GUIComponent.GUIComponenthide(self)—Components.GUIComponent.GUIComponentgetVisible(self)—Components.GUIComponent.GUIComponentsetVisible(self, visible)—Components.GUIComponent.GUIComponentsetPosition(self, xPos, yPos)—Components.GUIComponent.GUIComponentgetPosition(self)—Components.GUIComponent.GUIComponentgetWidth(self)—Components.GUIComponent.GUIComponentgetHeight(self)—Components.GUIComponent.GUIComponentGUIcreate(self, parent)—Components.GUIComponent.GUIComponentGUIdelete(self)—Components.GUIComponent.GUIComponentcreateWidget(self, parent)—Components.GUIComponent.GUIComponentpreWidgetRemove(self, instance)—Components.GUIComponent.GUIComponentsetValue(self, value)—Components.VariableValue.VariableValuegetValue(self)—Components.VariableValue.VariableValue
No matching class. Clear the filter or use the handbook search.
For the list-specific rendering APIs, continue with classic service lists, modern channel templates and network list templates. A tuple field index in a template is data binding, not an attribute on the outer listbox.
