Ejemplo n.º 1
0
def registerPlexFonts():
	'''
	registers fonts for skins
	
	@param: none 
	@return none
	'''
	printl2("", "__common__::registerPlexFonts", "S")
	
	printl2("adding fonts", "__common__::registerPlexFonts", "I")
	
	tree = getXmlContent("/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skin/params")
	for font in tree.findall('font'):
		
		path = str(font.get('path'))
		printl2("path: " + str(font.get('path')), "__common__::registerPlexFonts", "D")
		
		size = int(font.get('size'))
		printl2("size: " + str(font.get('size')), "__common__::registerPlexFonts", "D")
		
		name = str(font.get('name'))
		printl2("name: " + str(font.get('name')), "__common__::registerPlexFonts", "D")
		
		addFont(path, name, size, False)
		printl2("added => " + name, "__common__::registerPlexFonts", "I")
	
	printl2("", "__common__::registerPlexFonts", "C")
Ejemplo n.º 2
0
def registerPlexFonts():
	"""
	registers fonts for skins
	
	@param: none 
	@return none
	"""
	printl2("", "__common__::registerPlexFonts", "S")

	printl2("adding fonts", "__common__::registerPlexFonts", "D")

	tree = Singleton().getSkinParamsInstance()

	for font in tree.findall('font'):
		path = str(font.get('path'))
		printl2("path: " + str(font.get('path')), "__common__::registerPlexFonts", "D")

		size = int(font.get('size'))
		printl2("size: " + str(font.get('size')), "__common__::registerPlexFonts", "D")

		name = str(font.get('name'))
		printl2("name: " + str(font.get('name')), "__common__::registerPlexFonts", "D")

		addFont(path, name, size, False)
		printl2("added => " + name, "__common__::registerPlexFonts", "D")

	printl2("", "__common__::registerPlexFonts", "C")
Ejemplo n.º 3
0
def registerPlexFonts():
	"""
	registers fonts for skins
	
	@param: none 
	@return none
	"""
	printl2("", "__common__::registerPlexFonts", "S")

	printl2("adding fonts", "__common__::registerPlexFonts", "I")

	tree = Singleton().getSkinParamsInstance()
	#tree = getXmlContent("/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skins/" + config.plugins.dreamplex.skins.value +"/params")
	for font in tree.findall('font'):
		path = str(font.get('path'))
		printl2("path: " + str(font.get('path')), "__common__::registerPlexFonts", "D")

		size = int(font.get('size'))
		printl2("size: " + str(font.get('size')), "__common__::registerPlexFonts", "D")

		name = str(font.get('name'))
		printl2("name: " + str(font.get('name')), "__common__::registerPlexFonts", "D")

		addFont(path, name, size, False)
		printl2("added => " + name, "__common__::registerPlexFonts", "I")

	printl2("", "__common__::registerPlexFonts", "C")
Ejemplo n.º 4
0
def registerFont(file, name, scale, replacement):
	printl("(in DMC_Global)", "registerFont", "S")
	printl("Loading Font: %s as %s" % (file, name, ), "registerFont -> ")
	try:
		addFont(file, name, scale, replacement)
	except Exception, ex: #probably just openpli
		printl("Exception(" + str(type(ex)) + "): " + str(ex), "registerFont -> ", "W")
		printl("maybe openPLI, trying ...", "registerFont ->", "H")
		addFont(file, name, scale, replacement, 0)
Ejemplo n.º 5
0
 def loadfont(self):
     self.fonttype_list = []
     self.fonttype_list.append("Regular")
       
     fonts = []
     fonts_paths =[ "/usr/share/fonts/" , PluginPath + "fonts/"]
     for font_path in fonts_paths:
         if path.exists(font_path):
             for file in listdir(font_path):
                 if file.lower().endswith(".ttf") and file not in fonts:
                     fonts.append( (font_path + '/' + file, file))
                     addFont(font_path + '/' + file, file, 100, False)
     fonts.sort()
     for font in fonts:
         self.fonttype_list.append(font[1])  
Ejemplo n.º 6
0
    def loadfont(self):
        self.fonttype_list = []
        self.fonttype_list.append('Regular')

        fonts = []
        fonts_paths = ['/usr/share/fonts/', PluginPath + 'fonts/']
        for font_path in fonts_paths:
            if path.exists(font_path):
                for file in listdir(font_path):
                    if file.lower().endswith('.ttf') and file not in fonts:
                        fonts.append((font_path + '/' + file, file))
                        addFont(font_path + '/' + file, file, 100, False)
        fonts.sort()
        for font in fonts:
            self.fonttype_list.append(font[1])
Ejemplo n.º 7
0
def registerEnigmalightFonts():
    """
	registers fonts for skins
	
	@param: none 
	@return none
	"""
    EnigmaLight_log("", None, "__common__::registerEnigmalightFonts()")

    tree = Singleton().getSkinParamsInstance()

    for font in tree.findall('font'):
        path = str(font.get('path'))
        size = int(font.get('size'))
        name = str(font.get('name'))
        addFont(path, name, size, False)
Ejemplo n.º 8
0
def registerEnigmalightFonts():
	"""
	registers fonts for skins
	
	@param: none 
	@return none
	"""
	EnigmaLight_log("",None,"__common__::registerEnigmalightFonts()")

	tree = Singleton().getSkinParamsInstance()

	for font in tree.findall('font'):
		path = str(font.get('path'))
		size = int(font.get('size'))
		name = str(font.get('name'))
		addFont(path, name, size, False)
Ejemplo n.º 9
0
def Plugins(**kwargs):
    fontpath = '/usr/lib/enigma2/python/Plugins/Extensions/JediEPGXtream/fonts/'
    addFont(fontpath + 'Etelka-Text-Pro.ttf', 'jediepgregular', 100, 0)

    iconFile = 'icons/JediEPGXtream.png'
    if screenwidth.width() > 1280:
        iconFile = 'icons/JediEPGXtreamFHD.png'
    description = (_('Assign 3rd Party EPG to IPTV Channels'))
    pluginname = (_('JediEPGXtream'))

    result = PluginDescriptor(name=pluginname,
                              description=description,
                              where=PluginDescriptor.WHERE_PLUGINMENU,
                              icon=iconFile,
                              fnc=main)

    return result
Ejemplo n.º 10
0
def getFonts():
    global FONTS
    if len(FONTS) > 0:
        return FONTS.keys()
    allFonts = []
    fontDir = eEnv.resolve("${datadir}/fonts/")
    print '[getFonts] fontDir: %s'% fontDir
    for font in os.listdir(fontDir):
        fontPath = os.path.join(fontDir, font)
        if os.path.isdir(fontPath):
            for f in os.listdir(fontPath):
                if not f.endswith(".ttf"):
                    continue
                allFonts.append(os.path.join(fontPath, f))
        if not fontPath.endswith(".ttf"):
            continue
        allFonts.append(fontPath)
    skinFiles = ["skin_default.xml", "skin_subtitles.xml", "skin_user.xml"]
    fonts = {}
    for skinFile in skinFiles:
        skinPath = resolveFilename(SCOPE_SKIN, skinFile)
        if fileExists(skinPath):
            try:
                skin = xml.etree.cElementTree.parse(skinPath).getroot()
            except Exception as e:
                print e
                continue
            for c in skin.findall("fonts"):
                for font in c.findall("font"):
                    get_attr = font.attrib.get
                    filename = get_attr("filename", "<NONAME>")
                    name = get_attr("name", "Regular")
                    fonts[filename] = name
                    print '[getFonts] find font %s in %s'%(name, skinFile)
    for fontFilepath in allFonts:
        fontFilename = os.path.basename(fontFilepath)
        if fontFilename not in fonts.keys():
            fontName = os.path.splitext(fontFilename)[0]
            addFont(fontFilepath, fontName, 100, False)
            FONTS[fontName] = fontFilepath
        else:
            FONTS[fonts[fontFilename]] = fontFilename
    if "Regular" not in FONTS:
        FONTS["Regular"] = ""
    return FONTS.keys()
Ejemplo n.º 11
0
def getFonts():
    global FONTS
    if len(FONTS) > 0:
        return FONTS.keys()
    allFonts = []
    fontDir = eEnv.resolve("${datadir}/fonts/")
    print '[getFonts] fontDir: %s' % fontDir
    for font in os.listdir(fontDir):
        fontPath = os.path.join(fontDir, font)
        if os.path.isdir(fontPath):
            for f in os.listdir(fontPath):
                if not f.endswith(".ttf"):
                    continue
                allFonts.append(os.path.join(fontPath, f))
        if not fontPath.endswith(".ttf"):
            continue
        allFonts.append(fontPath)
    skinFiles = ["skin_default.xml", "skin_subtitles.xml", "skin_user.xml"]
    fonts = {}
    for skinFile in skinFiles:
        skinPath = resolveFilename(SCOPE_SKIN, skinFile)
        if fileExists(skinPath):
            try:
                skin = xml.etree.cElementTree.parse(skinPath).getroot()
            except Exception as e:
                print e
                continue
            for c in skin.findall("fonts"):
                for font in c.findall("font"):
                    get_attr = font.attrib.get
                    filename = get_attr("filename", "<NONAME>")
                    name = get_attr("name", "Regular")
                    fonts[filename] = name
                    print '[getFonts] find font %s in %s' % (name, skinFile)
    for fontFilepath in allFonts:
        fontFilename = os.path.basename(fontFilepath)
        if fontFilename not in fonts.keys():
            fontName = os.path.splitext(fontFilename)[0]
            addFont(fontFilepath, fontName, 100, False)
            FONTS[fontName] = fontFilepath
        else:
            FONTS[fonts[fontFilename]] = fontFilename
    if "Regular" not in FONTS:
        FONTS["Regular"] = ""
    return FONTS.keys()
Ejemplo n.º 12
0
def registerPlexFonts():
	'''
	registers fonts for skins
	
	@param: none 
	@return none
	'''
	printl2("", "__common__::registerPlexFonts", "S")
	
	printl2("adding fonts", "registerPlexFonts", "I")

	addFont("/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skins/mayatypeuitvg.ttf", "Modern", 100, False)
	printl2("added => mayatypeuitvg.ttf", "registerPlexFonts", "I")
	
	addFont("/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skins/goodtime.ttf", "Named", 100, False)
	printl2("added => goodtime.ttf", "registerPlexFonts", "I")
	
	printl2("", "__common__::registerPlexFonts", "C")
Ejemplo n.º 13
0
def registerPlexFonts():
    '''
	registers fonts for skins
	
	@param: none 
	@return none
	'''
    printl2("", "__common__::registerPlexFonts", "S")

    printl2("adding fonts", "__common__::registerPlexFonts", "I")

    addFont(
        "/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skin/mayatypeuitvg.ttf",
        "Modern", 100, False)
    printl2("added => mayatypeuitvg.ttf", "__common__::registerPlexFonts", "I")

    addFont(
        "/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skin/goodtime.ttf",
        "Named", 100, False)
    printl2("added => goodtime.ttf", "__common__::registerPlexFonts", "I")

    addFont(
        "/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skin/saint.ttf",
        "Saint", 100, False)
    printl2("added => saint.ttf", "__common__::registerPlexFonts", "I")

    printl2("", "__common__::registerPlexFonts", "C")
Ejemplo n.º 14
0
def Plugins(**kwargs):
    addFont(fontfolder + 'subset-RoundedMplus1c-Regular.ttf', 'xstreamityregular', 100, 0)
    addFont(fontfolder + 'subset-RoundedMplus1c-Medium.ttf', 'xstreamitybold', 100, 0)

    iconFile = 'icons/plugin-icon_sd.png'
    if screenwidth.width() > 1280:
        iconFile = 'icons/plugin-icon.png'
    description = (_('IPTV Xtream Codes playlists player by KiddaC'))
    pluginname = (_('XStreamity'))

    main_menu = PluginDescriptor(name=pluginname, description=description, where=PluginDescriptor.WHERE_MENU, fnc=mainmenu, needsRestart=True)

    extensions_menu = PluginDescriptor(name=pluginname, description=description, where=PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=extensionsmenu, needsRestart=True)

    result = [PluginDescriptor(name=pluginname, description=description, where=PluginDescriptor.WHERE_PLUGINMENU, icon=iconFile, fnc=main)]

    result.append(extensions_menu)

    if cfg.main.getValue():
        result.append(main_menu)

    return result
Ejemplo n.º 15
0
from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE, SCOPE_LANGUAGE
from Tools.LoadPixmap import LoadPixmap
from skin import parseColor, parseFont
from os import system, environ
from enigma import addFont
import os, gettext, urllib

lang = language.getLanguage()
environ["LANGUAGE"] = lang[:2]
gettext.bindtextdomain("enigma2", resolveFilename(SCOPE_LANGUAGE))
gettext.textdomain("enigma2")
gettext.bindtextdomain(
    "SetupCyberLCD", "%s%s" %
    (resolveFilename(SCOPE_PLUGINS), "Extensions/SetupCyberLCD/locale"))

addFont("/usr/share/enigma2/CyberLCD/fonts/Neuropol.ttf", "SkinTitles", 100, 1)
addFont("/usr/share/enigma2/CyberLCD/fonts/LedCounter.ttf", "SkinIndication",
        100, 1)
addFont("/usr/share/enigma2/CyberLCD/fonts/Roboto-Regular.ttf", "SkinGlobal",
        100, 1)


def _(txt):
    t = gettext.dgettext("SetupCyberLCD", txt)
    if t == txt:
        t = gettext.gettext(txt)
    return t


def SearchReplaceWrite(skinPartSearchAndReplace, source, target):
    inFile = open(source, "r")
Ejemplo n.º 16
0
def registerFont(file, name, scale, replacement):
    try:
        addFont(file, name, scale, replacement)
    except Exception as ex:
        addFont(file, name, scale, replacement, 0)
Ejemplo n.º 17
0
def registerFont(file, name, scale, replacement):
		try:
				addFont(file, name, scale, replacement)
		except Exception, ex: #probably just openpli
				addFont(file, name, scale, replacement, 0)
Ejemplo n.º 18
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"
	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for skininclude in skin.findall("include"):
		filename = skininclude.attrib.get("filename")
		if filename:
			skinfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
			if not fileExists(skinfile):
				skinfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
			if fileExists(skinfile):
				print "[SKIN] loading include:", skinfile
				loadSkin(skinfile)

	for c in skin.findall('switchpixmap'):
		for pixmap in c.findall('pixmap'):
			get_attr = pixmap.attrib.get
			name = get_attr('name')
			if not name:
				raise SkinError('[Skin] pixmap needs name attribute')
			filename = get_attr('filename')
			if not filename:
				raise SkinError('[Skin] pixmap needs filename attribute')
			resolved_png = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
			if fileExists(resolved_png):
				switchPixmap[name] = resolved_png
			else:
				raise SkinError('[Skin] switchpixmap pixmap filename="%s" (%s) not found' % (filename, resolved_png))

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				if color[0] != '#':
					for key in colorNames:
						if key == color:
							colorNamesHuman[name] = colorNamesHuman[key]
							break
				else:
					humancolor = color[1:]
					if len(humancolor) >= 6:
						colorNamesHuman[name] = int(humancolor,16)
			else:
				print("need color and name, got %s %s" % (name, color))

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			render = get_attr("render")
			if render:
				render = int(render)
			else:
				render = 0
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
				if fileExists(resolveFilename(SCOPE_ACTIVE_SKIN, filename)):
					resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
				elif fileExists(resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)):
					resolved_font = resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)
			addFont(resolved_font, name, scale, is_replacement, render)
			#print "Font: ", resolved_font, name, scale, is_replacement
		for alias in c.findall("alias"):
			get = alias.attrib.get
			try:
				name = get("name")
				font = get("font")
				size = int(get("size"))
				height = int(get("height", size)) # to be calculated some day
				width = int(get("width", size))
				global fonts
				fonts[name] = (font, size, height, width)
			except Exception, ex:
				print "[SKIN] bad font alias", ex
Ejemplo n.º 19
0
from Components.ConfigList import ConfigListScreen
from Components.config import config, ConfigYesNo, ConfigSubsection, getConfigListEntry, ConfigSelection
from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE, SCOPE_LANGUAGE
from Tools.LoadPixmap import LoadPixmap
from skin import parseColor, parseFont
from os import system, environ
from enigma import addFont
import os, gettext, urllib

lang = language.getLanguage()
environ["LANGUAGE"] = lang[:2]
gettext.bindtextdomain("enigma2", resolveFilename(SCOPE_LANGUAGE))
gettext.textdomain("enigma2")
gettext.bindtextdomain("SetupCyberLCD", "%s%s" % (resolveFilename(SCOPE_PLUGINS), "Extensions/SetupCyberLCD/locale"))

addFont("/usr/share/enigma2/CyberLCD/fonts/Neuropol.ttf", "SkinTitles", 100, 1)
addFont("/usr/share/enigma2/CyberLCD/fonts/LedCounter.ttf", "SkinIndication", 100, 1)
addFont("/usr/share/enigma2/CyberLCD/fonts/Roboto-Regular.ttf", "SkinGlobal", 100, 1)

def _(txt):
	t = gettext.dgettext("SetupCyberLCD", txt)
	if t == txt:
		t = gettext.gettext(txt)
	return t

def SearchReplaceWrite(skinPartSearchAndReplace, source, target):
	inFile = open(source, "r")
	file_lines = inFile.readlines()
	inFile.close()
	outFile =  open(target, "w")
	for skinLine in file_lines:
Ejemplo n.º 20
0
def loadSingleSkinData(desktop, skin, path_prefix):
    """loads skin data like colors, windowstyle etc."""
    assert skin.tag == "skin", "root element in skin must be 'skin'!"

    for c in skin.findall("output"):
        id = c.attrib.get('id')
        if id:
            id = int(id)
        else:
            id = 0
        if id == 0:  # framebuffer
            for res in c.findall("resolution"):
                get_attr = res.attrib.get
                xres = get_attr("xres")
                if xres:
                    xres = int(xres)
                else:
                    xres = 720
                yres = get_attr("yres")
                if yres:
                    yres = int(yres)
                else:
                    yres = 576
                bpp = get_attr("bpp")
                if bpp:
                    bpp = int(bpp)
                else:
                    bpp = 32
                #print "Resolution:", xres,yres,bpp
                from enigma import gMainDC
                gMainDC.getInstance().setResolution(xres, yres)
                desktop.resize(eSize(xres, yres))
                if bpp != 32:
                    # load palette (not yet implemented)
                    pass

    for skininclude in skin.findall("include"):
        filename = skininclude.attrib.get("filename")
        if filename:
            skinfile = resolveFilename(SCOPE_CURRENT_SKIN,
                                       filename,
                                       path_prefix=path_prefix)
            if not fileExists(skinfile):
                skinfile = resolveFilename(SCOPE_SKIN_IMAGE,
                                           filename,
                                           path_prefix=path_prefix)
            if fileExists(skinfile):
                print "[SKIN] loading include:", skinfile
                loadSkin(skinfile)

    for c in skin.findall("colors"):
        for color in c.findall("color"):
            get_attr = color.attrib.get
            name = get_attr("name")
            color = get_attr("value")
            if name and color:
                colorNames[name] = parseColor(color)
                #print "Color:", name, color
            else:
                raise SkinError("need color and name, got %s %s" %
                                (name, color))

    #mpiero regularHD compatibility check resolution and RegularHD font exist
    spaRegularHD = 0
    for c in skin.findall("output"):
        if str(c.attrib.get('id')) == "0":
            for res in c.findall("resolution"):
                xres = res.attrib.get("xres")
                if xres and int(xres) > 1400:
                    spaRegularHD = 1
    if spaRegularHD == 1:
        for c in skin.findall("fonts"):
            for font in c.findall("font"):
                if font.attrib.get("name") == "RegularHD":
                    spaRegularHD = 2
                    break
            if spaRegularHD == 2: break

    for c in skin.findall("fonts"):
        for font in c.findall("font"):
            get_attr = font.attrib.get
            filename = get_attr("filename", "<NONAME>")
            name = get_attr("name", "Regular")
            scale = get_attr("scale")
            if scale:
                scale = int(scale)
            else:
                scale = 100
            is_replacement = get_attr("replacement") and True or False
            render = get_attr("render")
            if render:
                render = int(render)
            else:
                render = 0
            resolved_font = resolveFilename(SCOPE_FONTS,
                                            filename,
                                            path_prefix=path_prefix)
            if not fileExists(
                    resolved_font
            ):  #when font is not available look at current skin path
                skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
                if fileExists(skin_path):
                    resolved_font = skin_path

            #mpiero regularHD compatibility add font RegularHD for plugins in external skin
            if name == "Regular" and spaRegularHD == 1:
                addFont(resolved_font, "RegularHD", 150, False, render)

            addFont(resolved_font, name, scale, is_replacement, render)
            #print "Font: ", resolved_font, name, scale, is_replacement
        for alias in c.findall("alias"):
            get = alias.attrib.get
            try:
                name = get("name")
                font = get("font")
                size = int(get("size"))
                height = int(get("height", size))  # to be calculated some day
                width = int(get("width", size))
                global fonts
                fonts[name] = (font, size, height, width)
            except Exception, ex:
                print "[SKIN] bad font alias", ex
Ejemplo n.º 21
0
from skin import parseColor
from Components.Pixmap import Pixmap
from Components.Label import Label
import urllib2
import urllib
from xml.dom.minidom import parseString
import gettext
from Components.GUIComponent import GUIComponent
from Components.MenuList import MenuList
from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
from enigma import eListbox, RT_HALIGN_LEFT, RT_HALIGN_RIGHT
from enigma import ePicLoad, eListboxPythonMultiContent, gFont, addFont, loadPic, loadPNG
from Tools.Directories import fileExists, resolveFilename, SCOPE_LANGUAGE, SCOPE_PLUGINS
import metrixDefaults
import metrixTools
addFont('/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/setrixHD.ttf', 'SetrixHD', 100, False)
config = metrixDefaults.loadDefaults()
lang = language.getLanguage()
environ['LANGUAGE'] = lang[:2]
gettext.bindtextdomain('enigma2', resolveFilename(SCOPE_LANGUAGE))
gettext.textdomain('enigma2')
gettext.bindtextdomain('MyMetrix', '%s%s' % (resolveFilename(SCOPE_PLUGINS), 'Extensions/MyMetrix/locale/'))

def _(txt):
    t = gettext.dgettext('MyMetrix', txt)
    if t == txt:
        t = gettext.gettext(txt)
    return t


def translateBlock(block):
Ejemplo n.º 22
0
from time import time
from Plugins.Extensions.FreeServer.outils.MyDynaTextScreen import *
from Screens.InfoBarGenerics import InfoBarShowHide, InfoBarSeek, InfoBarNotifications, InfoBarServiceNotifications
from Screens.InfoBarGenerics import InfoBarShowHide, NumberZap, InfoBarSeek, InfoBarAudioSelection, InfoBarSubtitleSupport  #1680,1152

dwidth = getDesktop(0).size().width()

######################################################################################################
plugin_path = '/usr/lib/enigma2/python/Plugins/Extensions/FreeServer/fonts'
skin_path = '/usr/lib/enigma2/python/Plugins/Extensions/FreeServer/Skin/'
p_path = '/usr/lib/enigma2/python/Plugins/Extensions/FreeServer'
from enigma import addFont
try:
    #addFont('%s/Raleway-Black.ttf' % plugin_path, 'Rale', 100, 1)
    #addFont('%s/PlayfairDisplay-Black.otf' % plugin_path, 'Play', 100, 1)
    addFont('%s/bpmono.ttf' % plugin_path, 'bpmo', 100, 1)
except Exception as ex:
    print ex
#########################################################################################################


class ALAJREStream(Screen, InfoBarNotifications):
    STATE_IDLE = 0
    STATE_PLAYING = 1
    STATE_PAUSED = 2
    ENABLE_RESUME_SUPPORT = True
    ALLOW_SUSPEND = True
    PLAYER_STOPS = 3
    skinfhd = '''<screen name="ALAJREStream" flags="wfNoBorder" position="0,0" size="1920,1080" title="ALAJREStream" backgroundColor="transparent">
<widget source="session.CurrentService" render="Label" position="0,0" size="1920,1080" font="Regular; 22" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-100,-100" transparent="1" zPosition="1" halign="center">
<convert type="ServiceName">Name</convert>
Ejemplo n.º 23
0
from Components.MenuList import MenuList
from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
from enigma import eListbox, RT_HALIGN_LEFT, RT_HALIGN_RIGHT
from enigma import ePicLoad, eListboxPythonMultiContent, gFont, addFont, loadPic, loadPNG
from Tools.Directories import fileExists, resolveFilename, SCOPE_LANGUAGE, SCOPE_PLUGINS
import metrixConnector
import metrix_MetrixColors
import metrixDefaults
import metrixTools
import shutil
import metrixInfobar
import store_Packages_Categories
import metrix_MainMenu
from enigma import addFont
#from xml.etree.ElementTree import parse
addFont(metrixDefaults.PLUGIN_DIR + "setrixHD.ttf", "SetrixHD", 100, False)
addFont(metrixDefaults.PLUGIN_DIR + "meteocons.ttf", "Meteo", 100, False)


def startMetrixDeamon(reason, **kwargs):
    metrixConnector.syncStart(global_session)


def startSession(reason, session):
    global global_session
    global_session = session

    #Copy components
    shutil.copy(metrixDefaults.PLUGIN_DIR + "Components/Renderer/XPicon.py",
                "/usr/lib/enigma2/python/Components/Renderer/")
    shutil.copy(
Ejemplo n.º 24
0
import sys
from enigma import *
from Components.config import config, ConfigSubsection, ConfigText, ConfigYesNo
from time import *
from Components.Pixmap import Pixmap
from Components.config import getConfigListEntry, config
from urlparse import urlparse
import xml.etree.cElementTree
import httplib
import datetime
DESKHEIGHT = getDesktop(0).size().height()
plugin_path = '/usr/lib/enigma2/python/Plugins/Extensions/SatVenusPanel/fonts'
skin_path = '/usr/lib/enigma2/python/Plugins/Extensions/SatVenusPanel/Skin/'
from enigma import addFont
try:
    addFont('%s/Sansation-Bold.ttf' % plugin_path, 'Sansation-Bold', 100, 1)
except Exception as ex:
    print ex

TMP_SETTINGS_PWD = '/tmp/sl_settings_tmp'
TMP_IMPORT_PWD = '/tmp/sl_import_tmp'
ENIGMA2_SETTINGS_PWD = '/etc/enigma2'
ENIGMA2_TUXBOX_PWD = '/etc/tuxbox'
config.settingsloader = ConfigSubsection()
config.settingsloader.keepterrestrial = ConfigYesNo(False)
config.settingsloader.keepsatellitesxml = ConfigYesNo(False)
config.settingsloader.keepcablesxml = ConfigYesNo(False)
config.settingsloader.keepterrestrialxml = ConfigYesNo(False)
config.settingsloader.keepbouquets = ConfigText('', False)

class Settings_Menu(Screen):
Ejemplo n.º 25
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"
	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				#print "Color:", name, color
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			render = get_attr("render")
			if render:
				render = int(render)
			else:
				render = 0
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if fileExists(skin_path):
					resolved_font = skin_path
			addFont(resolved_font, name, scale, is_replacement, render)
			#print "Font: ", resolved_font, name, scale, is_replacement

	for c in skin.findall("subtitles"):
		from enigma import eWidget, eSubtitleWidget
		scale = ((1,1),(1,1))
		for substyle in c.findall("sub"):
			get_attr = substyle.attrib.get
			font = parseFont(get_attr("font"), scale)
			col = get_attr("foregroundColor")
			if col:
				foregroundColor = parseColor(col)
				haveColor = 1
			else:
				foregroundColor = gRGB(0xFFFFFF)
				haveColor = 0
			col = get_attr("borderColor")
			if col:
				borderColor = parseColor(col)
			else:
				borderColor = gRGB(0)
			borderwidth = get_attr("borderWidth")
			if borderwidth is None:
				# default: use a subtitle border
				borderWidth = 3
			else:
				borderWidth = int(borderwidth)
			face = eSubtitleWidget.__dict__[get_attr("name")]
			eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)

	for windowstyle in skin.findall("windowstyle"):
		style = eWindowStyleSkinned()
		id = windowstyle.attrib.get("id")
		if id:
			id = int(id)
		else:
			id = 0
		#print "windowstyle:", id

		# defaults
		font = gFont("Regular", 20)
		offset = eSize(20, 5)

		for title in windowstyle.findall("title"):
			get_attr = title.attrib.get
			offset = parseSize(get_attr("offset"), ((1,1),(1,1)))
			font = parseFont(get_attr("font"), ((1,1),(1,1)))

		style.setTitleFont(font);
		style.setTitleOffset(offset)
		#print "  ", font, offset

		for borderset in windowstyle.findall("borderset"):
			bsName = str(borderset.attrib.get("name"))
			for pixmap in borderset.findall("pixmap"):
				get_attr = pixmap.attrib.get
				bpName = get_attr("pos")
				filename = get_attr("filename")
				if filename and bpName:
					png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix), desktop)
					style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
				#print "  borderset:", bpName, filename

		for color in windowstyle.findall("color"):
			get_attr = color.attrib.get
			colorType = get_attr("name")
			color = parseColor(get_attr("color"))
			try:
				style.setColor(eWindowStyleSkinned.__dict__["col" + colorType], color)
			except:
				raise SkinError("Unknown color %s" % (colorType))
				#pass

			#print "  color:", type, color

		x = eWindowStyleManager.getInstance()
		x.setStyle(id, style)
Ejemplo n.º 26
0
def FontWeather(file, name, scale, replacement):
	try:
		addFont(file, name, scale, replacement)
	except Exception, ex:
		addFont(file, name, scale, replacement, 0)				
Ejemplo n.º 27
0
def loadSingleSkinData(desktop, skin, path_prefix):
    for c in skin.findall("output"):
        id = c.attrib.get("id")
        if id:
            id = int(id)
        else:
            id = 0
        if id == 0:
            for res in c.findall("resolution"):
                get_attr = res.attrib.get
                xres = get_attr("xres")
                if xres:
                    xres = int(xres)
                else:
                    xres = 720
                yres = get_attr("yres")
                if yres:
                    yres = int(yres)
                else:
                    yres = 576
                bpp = get_attr("bpp")
                if bpp:
                    bpp = int(bpp)
                else:
                    bpp = 32
                from enigma import gMainDC

                gMainDC.getInstance().setResolution(xres, yres)
                desktop.resize(eSize(xres, yres))
                if bpp != 32:
                    pass

    for skininclude in skin.findall("include"):
        filename = skininclude.attrib.get("filename")
        if filename:
            skinfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
            if not fileExists(skinfile):
                skinfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
            if fileExists(skinfile):
                print "[SKIN] loading include:", skinfile
                loadSkin(skinfile)

    for c in skin.findall("colors"):
        for color in c.findall("color"):
            get_attr = color.attrib.get
            name = get_attr("name")
            color = get_attr("value")
            if name and color:
                colorNames[name] = parseColor(color)
            else:
                raise SkinError("need color and name, got %s %s" % (name, color))

    for c in skin.findall("fonts"):
        for font in c.findall("font"):
            get_attr = font.attrib.get
            filename = get_attr("filename", "<NONAME>")
            name = get_attr("name", "Regular")
            scale = get_attr("scale")
            if scale:
                scale = int(scale)
            else:
                scale = 100
            is_replacement = get_attr("replacement") and True or False
            render = get_attr("render")
            if render:
                render = int(render)
            else:
                render = 0
            resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
            if not fileExists(resolved_font):
                resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
                if fileExists(resolveFilename(SCOPE_CURRENT_SKIN, filename)):
                    resolved_font = resolveFilename(SCOPE_CURRENT_SKIN, filename)
                elif fileExists(resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)):
                    resolved_font = resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)
            addFont(resolved_font, name, scale, is_replacement, render)

        for alias in c.findall("alias"):
            get = alias.attrib.get
            try:
                name = get("name")
                font = get("font")
                size = int(get("size"))
                height = int(get("height", size))
                width = int(get("width", size))
                fonts[name] = (font, size, height, width)
            except Exception as ex:
                print "[SKIN] bad font alias", ex

    for c in skin.findall("parameters"):
        for parameter in c.findall("parameter"):
            get = parameter.attrib.get
            try:
                name = get("name")
                value = get("value")
                parameters[name] = map(int, value.split(","))
            except Exception as ex:
                print "[SKIN] bad parameter", ex

    for c in skin.findall("subtitles"):
        from enigma import eSubtitleWidget

        scale = ((1, 1), (1, 1))
        for substyle in c.findall("sub"):
            get_attr = substyle.attrib.get
            font = parseFont(get_attr("font"), scale)
            col = get_attr("foregroundColor")
            if col:
                foregroundColor = parseColor(col)
                haveColor = 1
            else:
                foregroundColor = gRGB(16777215)
                haveColor = 0
            col = get_attr("borderColor")
            if col:
                borderColor = parseColor(col)
            else:
                borderColor = gRGB(0)
            borderwidth = get_attr("borderWidth")
            if borderwidth is None:
                borderWidth = 3
            else:
                borderWidth = int(borderwidth)
            face = eSubtitleWidget.__dict__[get_attr("name")]
            eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)

    for windowstyle in skin.findall("windowstyle"):
        style = eWindowStyleSkinned()
        style_id = windowstyle.attrib.get("id")
        if style_id:
            style_id = int(style_id)
        else:
            style_id = 0
        font = gFont("Regular", 20)
        offset = eSize(20, 5)
        for title in windowstyle.findall("title"):
            get_attr = title.attrib.get
            offset = parseSize(get_attr("offset"), ((1, 1), (1, 1)))
            font = parseFont(get_attr("font"), ((1, 1), (1, 1)))

        style.setTitleFont(font)
        style.setTitleOffset(offset)
        for borderset in windowstyle.findall("borderset"):
            bsName = str(borderset.attrib.get("name"))
            for pixmap in borderset.findall("pixmap"):
                get_attr = pixmap.attrib.get
                bpName = get_attr("pos")
                filename = get_attr("filename")
                if filename and bpName:
                    pngfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
                    if fileExists(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)):
                        pngfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
                    png = loadPixmap(pngfile, desktop)
                    style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)

        for color in windowstyle.findall("color"):
            get_attr = color.attrib.get
            colorType = get_attr("name")
            color = parseColor(get_attr("color"))
            try:
                style.setColor(eWindowStyleSkinned.__dict__["col" + colorType], color)
            except:
                raise SkinError("Unknown color %s" % colorType)

        x = eWindowStyleManager.getInstance()
        x.setStyle(style_id, style)

    for margin in skin.findall("margin"):
        style_id = margin.attrib.get("id")
        if style_id:
            style_id = int(style_id)
        else:
            style_id = 0
        r = eRect(0, 0, 0, 0)
        v = margin.attrib.get("left")
        if v:
            r.setLeft(int(v))
        v = margin.attrib.get("top")
        if v:
            r.setTop(int(v))
        v = margin.attrib.get("right")
        if v:
            r.setRight(int(v))
        v = margin.attrib.get("bottom")
        if v:
            r.setBottom(int(v))
        getDesktop(style_id).setMargins(r)

    return
Ejemplo n.º 28
0
            txt = txt.decode('utf-8')
    else:
        if type(txt) == type(unicode()):
            txt = txt.encode('utf-8')
    return txt


skin_path = PLUGIN_PATH + '/skin'
if isDreamOS:
    skin_path = skin_path + '/skin_cvs/'
else:
    skin_path = skin_path + '/skin_pli/'

from enigma import addFont
try:
    addFont('%s/nxt1.ttf' % PLUGIN_PATH, 'RegularIPTV', 100, 1)
except Exception as ex:
    print('addfont', ex)


def checkInternet():
    try:
        response = urlopen("http://google.com", None, 5)
        response.close()
    except HTTPError:
        return False
    except URLError:
        return False
    except socket.timeout:
        return False
Ejemplo n.º 29
0
def loadSingleSkinData(desktop, skin, path_prefix):
    """loads skin data like colors, windowstyle etc."""
    assert skin.tag == "skin", "root element in skin must be 'skin'!"

    #print "***SKIN: ", path_prefix

    for c in skin.findall("output"):
        id = c.attrib.get('id')
        if id:
            id = int(id)
        else:
            id = 0
        if id == 0:  # framebuffer
            for res in c.findall("resolution"):
                xres = int(res.get("xres", "720"))
                yres = int(res.get("yres", "576"))
                bpp = int(res.get("bpp", "32"))
                from enigma import gMainDC
                gMainDC.getInstance().setResolution(xres, yres, bpp)
                desktop.resize(eSize(xres, yres))
                break

    for c in skin.findall("colors"):
        for color in c.findall("color"):
            get_attr = color.attrib.get
            name = get_attr("name")
            color = get_attr("value")
            if name and color:
                colorNames[name] = parseColor(color)
                #print "Color:", name, color
            else:
                raise SkinError("need color and name, got %s %s" %
                                (name, color))

    for c in skin.findall("listboxcontent"):
        for offset in c.findall("offset"):
            get_attr = offset.attrib.get
            name = get_attr("name")
            value = get_attr("value")
            if name and value:
                if name == "left":
                    eListboxPythonStringContent.setLeftOffset(
                        parseValue(value))
                elif name == "right":
                    eListboxPythonStringContent.setRightOffset(
                        parseValue(value))
                else:
                    raise SkinError(
                        "got listboxcontent offset '%s'' but 'left' or 'right' is allowed only"
                        % name)
        for font in c.findall("font"):
            get_attr = font.attrib.get
            name = get_attr("name")
            font = get_attr("font")
            if name and font:
                if name == "string":
                    eListboxPythonStringContent.setFont(
                        parseFont(font, ((1, 1), (1, 1))))
                elif name == "config_description":
                    eListboxPythonConfigContent.setDescriptionFont(
                        parseFont(font, ((1, 1), (1, 1))))
                elif name == "config_value":
                    eListboxPythonConfigContent.setValueFont(
                        parseFont(font, ((1, 1), (1, 1))))
                else:
                    raise SkinError(
                        "got listboxcontent font '%s' but 'string', 'config_description' or 'config_value' is allowed only"
                        % name)
        for value in c.findall("value"):
            get_attr = value.attrib.get
            name = get_attr("name")
            value = get_attr("value")
            if name and value:
                if name == "string_item_height":
                    eListboxPythonStringContent.setItemHeight(
                        parseValue(value))
                elif name == "config_item_height":
                    eListboxPythonConfigContent.setItemHeight(
                        parseValue(value))
                else:
                    raise SkinError(
                        "got listboxcontent value '%s' but 'string_item_height' or 'config_item_height' is allowed only"
                        % name)
        for cfgpm in c.findall("config"):
            onPath = cfgpm.attrib.get("onPixmap")
            if not fileExists(onPath):
                onPath = resolveFilename(SCOPE_CURRENT_SKIN, onPath)
            offPath = cfgpm.attrib.get("offPixmap")
            if not fileExists(offPath):
                offPath = resolveFilename(SCOPE_CURRENT_SKIN, offPath)
            pixmapSize = cfgpm.attrib.get("size")
            if pixmapSize:
                pixmapSize = parseSize(pixmapSize, ((1, 1), (1, 1)))
            else:
                pixmapSize = eSize()
            ConfigBoolean.setOnOffPixmaps(
                loadPixmap(onPath, desktop, pixmapSize),
                loadPixmap(offPath, desktop, pixmapSize))
    for c in skin.findall("fonts"):
        for font in c.findall("font"):
            get_attr = font.attrib.get
            filename = get_attr("filename", "<NONAME>")
            name = get_attr("name", "Regular")
            scale = get_attr("scale")
            if scale:
                scale = int(scale)
            else:
                scale = 100
            is_replacement = get_attr("replacement") and True or False
            resolved_font = resolveFilename(SCOPE_FONTS,
                                            filename,
                                            path_prefix=path_prefix)
            if not fileExists(
                    resolved_font
            ):  #when font is not available look at current skin path
                skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
                if fileExists(skin_path):
                    resolved_font = skin_path
            addFont(resolved_font, name, scale, is_replacement)
            #print "Font: ", resolved_font, name, scale, is_replacement

    for c in skin.findall("subtitles"):
        from enigma import eSubtitleWidget
        scale = ((1, 1), (1, 1))
        for substyle in c.findall("sub"):
            get_attr = substyle.attrib.get
            font = parseFont(get_attr("font"), scale)
            col = get_attr("foregroundColor")
            if col:
                foregroundColor = parseColor(col)
                haveColor = 1
            else:
                foregroundColor = gRGB(0xFFFFFF)
                haveColor = 0
            col = get_attr("shadowColor")
            if col:
                shadowColor = parseColor(col)
            else:
                shadowColor = gRGB(0)
            shadowOffset = parsePosition(get_attr("shadowOffset"), scale)
            face = eSubtitleWidget.__dict__[get_attr("name")]
            eSubtitleWidget.setFontStyle(face, font, haveColor,
                                         foregroundColor, shadowColor,
                                         shadowOffset)

    for windowstyle in skin.findall("windowstyle"):
        style = eWindowStyleSkinned()
        id = windowstyle.attrib.get("id")
        if id:
            id = int(id)
        else:
            id = 0
        #print "windowstyle:", id

        # defaults
        font = gFont("Regular", 20)
        offset = eSize(20, 5)

        for title in windowstyle.findall("title"):
            get_attr = title.attrib.get
            offset = parseSize(get_attr("offset"), ((1, 1), (1, 1)))
            font = parseFont(get_attr("font"), ((1, 1), (1, 1)))

        style.setTitleFont(font)
        style.setTitleOffset(offset)
        #print "  ", font, offset

        for borderset in windowstyle.findall("borderset"):
            bsName = str(borderset.attrib.get("name"))
            for pixmap in borderset.findall("pixmap"):
                get_attr = pixmap.attrib.get
                bpName = get_attr("pos")
                if "filename" in pixmap.attrib:
                    filename = get_attr("filename")
                    if filename and bpName:
                        png = loadPixmap(
                            resolveFilename(SCOPE_SKIN_IMAGE,
                                            filename,
                                            path_prefix=path_prefix), desktop)
                        style.setPixmap(eWindowStyleSkinned.__dict__[bsName],
                                        eWindowStyleSkinned.__dict__[bpName],
                                        png)
                elif "color" in pixmap.attrib:
                    color = parseColor(get_attr("color"))
                    size = int(get_attr("size"))
                    Log.w("%s: %s @ %s" % (bpName, color.argb(), size))
                    style.setColorBorder(eWindowStyleSkinned.__dict__[bsName],
                                         eWindowStyleSkinned.__dict__[bpName],
                                         color, size)

        for color in windowstyle.findall("color"):
            get_attr = color.attrib.get
            colorType = get_attr("name")
            color = parseColor(get_attr("color"))
            try:
                style.setColor(eWindowStyleSkinned.__dict__["col" + colorType],
                               color)
            except:
                raise SkinError("Unknown color %s" % (colorType))

        for listfont in windowstyle.findall("listfont"):
            get_attr = listfont.attrib.get
            fontType = get_attr("type")
            fontSize = int(get_attr("size"))
            fontFace = get_attr("font")
            try:
                Log.i("########### ADDING %s: %s" % (fontType, fontSize))
                style.setListFont(
                    eWindowStyleSkinned.__dict__["listFont" + fontType],
                    fontSize, fontFace)
            except:
                raise SkinError("Unknown listFont %s" % (fontType))

        x = eWindowStyleManager.getInstance()
        x.setStyle(id, style)

    for windowstylescrollbar in skin.findall("windowstylescrollbar"):
        style = eWindowStyleScrollbar()
        id = windowstylescrollbar.attrib.get("id")
        if id:
            id = int(id)
        else:
            id = 4
        for value in windowstylescrollbar.findall("value"):
            get_attr = value.attrib.get
            vType = get_attr("name")
            v = get_attr("value")
            if vType in ("BackgroundPixmapTopHeight",
                         "BackgroundPixmapBeginSize"):
                style.setBackgroundPixmapTopHeight(int(v))
            elif vType in ("BackgroundPixmapBottomHeight",
                           "BackgroundPixmapEndSize"):
                style.setBackgroundPixmapBottomHeight(int(v))
            elif vType in ("ValuePixmapTopHeight", "ValuePixmapBeginSize"):
                style.setValuePixmapTopHeight(int(v))
            elif vType in ("ValuePixmapBottomHeight", "ValuePixmapEndSize"):
                style.setValuePixmapBottomHeight(int(v))
            elif vType == "ScrollbarWidth":
                style.setScrollbarWidth(int(v))
            elif vType == "ScrollbarBorderWidth":
                style.setScrollbarBorderWidth(int(v))
        for pixmap in windowstylescrollbar.findall("pixmap"):
            get_attr = pixmap.attrib.get
            vType = get_attr("name")
            filename = get_attr("filename")
            if filename:
                if vType == "BackgroundPixmap":
                    png = loadPixmap(
                        resolveFilename(SCOPE_SKIN_IMAGE,
                                        filename,
                                        path_prefix=path_prefix), desktop)
                    style.setBackgroundPixmap(png)
                elif vType == "ValuePixmap":
                    png = loadPixmap(
                        resolveFilename(SCOPE_SKIN_IMAGE,
                                        filename,
                                        path_prefix=path_prefix), desktop)
                    style.setValuePixmap(png)
        x = eWindowStyleManager.getInstance()
        x.setStyle(id, style)

    for g in skin.findall("globals"):
        for value in g.findall("value"):
            Log.i("Global skin value : %s" % (value.attrib, ))
            skinGlobals[value.attrib["name"]] = value.attrib["value"]

    for components in skin.findall("components"):
        for component in components.findall("component"):
            componentSizes.apply(component.attrib)
            for template in component.findall("template"):
                componentSizes.addTemplate(component.attrib, template.text)

    for l in skin.findall("layouts"):
        for layout in l.findall("layout"):
            layouts.apply(layout)
Ejemplo n.º 30
0
from collections import OrderedDict
from decimal import Decimal
from enigma import addFont, getDesktop
from Tools.Directories import resolveFilename, SCOPE_PLUGINS


try:
	addFont(resolveFilename(SCOPE_PLUGINS, "Extensions/SDGRadio/fonts/DSEG7Classic-BoldItalic.ttf"), "SDGRadio", 100, 1)
except:
	print("[SDGRadio] failed to add font")


SDR_MIN_FREQ = 0
SDR_MAX_FREQ = 1766

DAB_FREQ = OrderedDict([
	(Decimal("174.928"), "5A"), (Decimal("176.640"), "5B"), (Decimal("178.352"), "5C"), (Decimal("180.064"), "5D"),
	(Decimal("181.936"), "6A"), (Decimal("183.648"), "6B"), (Decimal("185.360"), "6C"), (Decimal("187.072"), "6D"),
	(Decimal("188.928"), "7A"), (Decimal("190.640"), "7B"), (Decimal("192.352"), "7C"), (Decimal("194.064"), "7D"),
	(Decimal("195.936"), "8A"), (Decimal("197.648"), "8B"), (Decimal("199.360"), "8C"), (Decimal("201.072"), "8D"),
	(Decimal("202.928"), "9A"), (Decimal("204.640"), "9B"), (Decimal("206.352"), "9C"), (Decimal("208.064"), "9D"),
	(Decimal("209.936"), "10A"), (Decimal("211.648"), "10B"), (Decimal("213.360"), "10C"), (Decimal("215.072"), "10D"),
	(Decimal("216.928"), "11A"), (Decimal("218.640"), "11B"), (Decimal("220.352"), "11C"), (Decimal("222.064"), "11D"),
	(Decimal("223.936"), "12A"), (Decimal("225.648"), "12B"), (Decimal("227.360"), "12C"), (Decimal("229.072"), "12D"),
	(Decimal("230.748"), "13A"), (Decimal("232.496"), "13B"), (Decimal("234.208"), "13C"), (Decimal("235.776"), "13D"),
	(Decimal("237.488"), "13E"), (Decimal("239.200"), "13F")
])

SKIN_DATA = (
	1155, 630,
Ejemplo n.º 31
0
def add_skin_font():
    fontpath = '/usr/lib/enigma2/python/Plugins/Extensions/JediMakerXtream/fonts/'
    addFont(fontpath + 'SourceSansPro-Regular.ttf', 'jediregular', 100, 0)
    addFont(fontpath + 'slyk-regular.ttf', 'slykregular', 100, 0)
    addFont(fontpath + 'slyk-medium.ttf', 'slykbold', 100, 0)
    addFont(fontpath + 'MavenPro-Regular.ttf', 'onyxregular', 100, 0)
    addFont(fontpath + 'MavenPro-Medium.ttf', 'onyxbold', 100, 0)
    addFont(fontpath + 'VSkin-Light.ttf', 'vskinregular', 100, 0)
Ejemplo n.º 32
0
from Components.MenuList import MenuList
from Components.MultiContent import MultiContentEntryText,MultiContentEntryPixmapAlphaTest
from enigma import eListbox, RT_HALIGN_LEFT, RT_HALIGN_RIGHT
from enigma import ePicLoad,eListboxPythonMultiContent,gFont,addFont, loadPic, loadPNG
from Tools.Directories import fileExists, resolveFilename, SCOPE_LANGUAGE, SCOPE_PLUGINS
import metrixConnector
import metrix_MetrixColors
import metrixDefaults
import metrixTools
import shutil
import metrixInfobar
import store_Packages_Categories
import metrix_MainMenu
from enigma import addFont
#from xml.etree.ElementTree import parse
addFont(metrixDefaults.PLUGIN_DIR + "setrixHD.ttf", "SetrixHD", 100, False)
addFont(metrixDefaults.PLUGIN_DIR + "meteocons.ttf", "Meteo", 100, False)

		
def startMetrixDeamon(reason, **kwargs):
	metrixConnector.syncStart(global_session)			

def startSession(reason, session):
	global global_session
	global_session = session
	
	#Copy components
	shutil.copy(metrixDefaults.PLUGIN_DIR+"Components/Renderer/XPicon.py","/usr/lib/enigma2/python/Components/Renderer/")
	shutil.copy(metrixDefaults.PLUGIN_DIR+"Components/Converter/MetrixWeather.py","/usr/lib/enigma2/python/Components/Converter/")
	metrixTools.checkComponents(metrixDefaults.PLUGIN_DIR,"/usr/lib/enigma2/python/","Components/Converter/")
	metrixTools.checkComponents(metrixDefaults.PLUGIN_DIR,"/usr/lib/enigma2/python/","Components/Renderer/")
Ejemplo n.º 33
0
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			render = get_attr("render")
			if render:
				render = int(render)
			else:
				render = 0
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
				if fileExists(resolveFilename(SCOPE_CURRENT_SKIN, filename)):
					resolved_font = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				elif fileExists(resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)):
					resolved_font = resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)
			addFont(resolved_font, name, scale, is_replacement, render)
			#print "Font: ", resolved_font, name, scale, is_replacement
		for alias in c.findall("alias"):
			get = alias.attrib.get
			try:
				name = get("name")
				font = get("font")
				size = int(get("size"))
				height = int(get("height", size)) # to be calculated some day
				width = int(get("width", size))
				global fonts
				fonts[name] = (font, size, height, width)
			except Exception, ex:
				print "[SKIN] bad font alias", ex

Ejemplo n.º 34
0
def loadSingleSkinData(desktop, skin, path_prefix):
    for c in skin.findall('output'):
        id = c.attrib.get('id')
        if id:
            id = int(id)
        else:
            id = 0
        if id == 0:
            for res in c.findall('resolution'):
                get_attr = res.attrib.get
                xres = get_attr('xres')
                if xres:
                    xres = int(xres)
                else:
                    xres = 720
                yres = get_attr('yres')
                if yres:
                    yres = int(yres)
                else:
                    yres = 576
                bpp = get_attr('bpp')
                if bpp:
                    bpp = int(bpp)
                else:
                    bpp = 32
                from enigma import gMainDC
                gMainDC.getInstance().setResolution(xres, yres)
                desktop.resize(eSize(xres, yres))
                if bpp != 32:
                    pass

    for skininclude in skin.findall('include'):
        filename = skininclude.attrib.get('filename')
        if filename:
            skinfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
            if not fileExists(skinfile):
                skinfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
            if fileExists(skinfile):
                print '[SKIN] loading include:', skinfile
                loadSkin(skinfile)

    for c in skin.findall('colors'):
        for color in c.findall('color'):
            get_attr = color.attrib.get
            name = get_attr('name')
            color = get_attr('value')
            if name and color:
                colorNames[name] = parseColor(color)
            else:
                raise SkinError('need color and name, got %s %s' % (name, color))

    for c in skin.findall('fonts'):
        for font in c.findall('font'):
            get_attr = font.attrib.get
            filename = get_attr('filename', '<NONAME>')
            name = get_attr('name', 'Regular')
            scale = get_attr('scale')
            if scale:
                scale = int(scale)
            else:
                scale = 100
            is_replacement = get_attr('replacement') and True or False
            render = get_attr('render')
            if render:
                render = int(render)
            else:
                render = 0
            resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
            if not fileExists(resolved_font):
                resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
                if fileExists(resolveFilename(SCOPE_CURRENT_SKIN, filename)):
                    resolved_font = resolveFilename(SCOPE_CURRENT_SKIN, filename)
                elif fileExists(resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)):
                    resolved_font = resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)
            addFont(resolved_font, name, scale, is_replacement, render)

        for alias in c.findall('alias'):
            get = alias.attrib.get
            try:
                name = get('name')
                font = get('font')
                size = int(get('size'))
                height = int(get('height', size))
                width = int(get('width', size))
                fonts[name] = (font,
                 size,
                 height,
                 width)
            except Exception as ex:
                print '[SKIN] bad font alias', ex

    for c in skin.findall('parameters'):
        for parameter in c.findall('parameter'):
            get = parameter.attrib.get
            try:
                name = get('name')
                value = get('value')
                parameters[name] = map(int, value.split(','))
            except Exception as ex:
                print '[SKIN] bad parameter', ex

    for c in skin.findall('subtitles'):
        from enigma import eSubtitleWidget
        scale = ((1, 1), (1, 1))
        for substyle in c.findall('sub'):
            get_attr = substyle.attrib.get
            font = parseFont(get_attr('font'), scale)
            col = get_attr('foregroundColor')
            if col:
                foregroundColor = parseColor(col)
                haveColor = 1
            else:
                foregroundColor = gRGB(16777215)
                haveColor = 0
            col = get_attr('borderColor')
            if col:
                borderColor = parseColor(col)
            else:
                borderColor = gRGB(0)
            borderwidth = get_attr('borderWidth')
            if borderwidth is None:
                borderWidth = 3
            else:
                borderWidth = int(borderwidth)
            face = eSubtitleWidget.__dict__[get_attr('name')]
            eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)

    for windowstyle in skin.findall('windowstyle'):
        style = eWindowStyleSkinned()
        style_id = windowstyle.attrib.get('id')
        if style_id:
            style_id = int(style_id)
        else:
            style_id = 0
        font = gFont('Regular', 20)
        offset = eSize(20, 5)
        for title in windowstyle.findall('title'):
            get_attr = title.attrib.get
            offset = parseSize(get_attr('offset'), ((1, 1), (1, 1)))
            font = parseFont(get_attr('font'), ((1, 1), (1, 1)))

        style.setTitleFont(font)
        style.setTitleOffset(offset)
        for borderset in windowstyle.findall('borderset'):
            bsName = str(borderset.attrib.get('name'))
            for pixmap in borderset.findall('pixmap'):
                get_attr = pixmap.attrib.get
                bpName = get_attr('pos')
                filename = get_attr('filename')
                if filename and bpName:
                    pngfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
                    if fileExists(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)):
                        pngfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
                    png = loadPixmap(pngfile, desktop)
                    style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)

        for color in windowstyle.findall('color'):
            get_attr = color.attrib.get
            colorType = get_attr('name')
            color = parseColor(get_attr('color'))
            try:
                style.setColor(eWindowStyleSkinned.__dict__['col' + colorType], color)
            except:
                raise SkinError('Unknown color %s' % colorType)

        x = eWindowStyleManager.getInstance()
        x.setStyle(style_id, style)

    for margin in skin.findall('margin'):
        style_id = margin.attrib.get('id')
        if style_id:
            style_id = int(style_id)
        else:
            style_id = 0
        r = eRect(0, 0, 0, 0)
        v = margin.attrib.get('left')
        if v:
            r.setLeft(int(v))
        v = margin.attrib.get('top')
        if v:
            r.setTop(int(v))
        v = margin.attrib.get('right')
        if v:
            r.setRight(int(v))
        v = margin.attrib.get('bottom')
        if v:
            r.setBottom(int(v))
        getDesktop(style_id).setMargins(r)
Ejemplo n.º 35
0
def registerFont(file, name, scale, replacement):
    try:
        addFont(file, name, scale, replacement)
    except Exception, ex:  #probably just openpli
        addFont(file, name, scale, replacement, 0)
Ejemplo n.º 36
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"
	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass
				if yres >= 1080:
					parameters["FileListName"] = (68,4,1000,34)
					parameters["FileListIcon"] = (7,4,52,37)
					parameters["FileListMultiName"] = (90,3,1000,32)
					parameters["FileListMultiIcon"] = (45, 4, 30, 30)
					parameters["FileListMultiLock"] = (2,0,36,36)
					parameters["ChoicelistDash"] = (0,3,1000,30)
					parameters["ChoicelistName"] = (68,3,1000,30)
					parameters["ChoicelistIcon"] = (7,0,52,38)
					parameters["PluginBrowserName"] = (180,8,38)
					parameters["PluginBrowserDescr"] = (180,42,25)
					parameters["PluginBrowserIcon"] = (15,8,150,60)
					parameters["PluginBrowserDownloadName"] = (120,8,38)
					parameters["PluginBrowserDownloadDescr"] = (120,42,25)
					parameters["PluginBrowserDownloadIcon"] = (15,0,90,76)
					parameters["ServiceInfo"] = (0,0,450,50)
					parameters["ServiceInfoLeft"] = (0,0,450,45)
					parameters["ServiceInfoRight"] = (450,0,1000,45)
					parameters["SelectionListDescr"] = (45,3,1000,32)
					parameters["SelectionListLock"] = (0,2,36,36)
					parameters["ConfigListSeperator"] = 300
					parameters["VirtualKeyboard"] = (68,68)
					parameters["PartnerBoxEntryListName"] = (8,2,225,38)
					parameters["PartnerBoxEntryListIP"] = (180,2,225,38)
					parameters["PartnerBoxEntryListPort"] = (405,2,150,38)
					parameters["PartnerBoxEntryListType"] = (615,2,150,38)
					parameters["PartnerBoxTimerServicename"] = (0,0,45)
					parameters["PartnerBoxTimerName"] = (0,42,30)
					parameters["PartnerBoxE1TimerTime"] = (0,78,255,30)
					parameters["PartnerBoxE1TimerState"] = (255,78,255,30)
					parameters["PartnerBoxE2TimerTime"] = (0,78,225,30)
					parameters["PartnerBoxE2TimerState"] = (225,78,225,30)
					parameters["PartnerBoxE2TimerIcon"] = (1050,8,20,20)
					parameters["PartnerBoxE2TimerIconRepeat"] = (1050,38,20,20)
					parameters["PartnerBoxBouquetListName"] = (0,0,45)
					parameters["PartnerBoxChannelListName"] = (0,0,45)
					parameters["PartnerBoxChannelListTitle"] = (0,42,30)
					parameters["PartnerBoxChannelListTime"] = (0,78,225,30)
					parameters["HelpMenuListHlp"] = (0,0,900,42)
					parameters["HelpMenuListExtHlp0"] = (0,0,900,39)
					parameters["HelpMenuListExtHlp1"] = (0,42,900,30)
					parameters["AboutHddSplit"] = 1
					parameters["DreamexplorerName"] = (62,0,1200,38)
					parameters["DreamexplorerIcon"] = (15,4,30,30)
					parameters["PicturePlayerThumb"] = (30,285,45,300,30,25)
					parameters["PlayListName"] = (38,2,1000,34)
					parameters["PlayListIcon"] = (7,7,24,24)
					parameters["SHOUTcastListItem"] = (30,27,35,96,35,33,60,32)

	for skininclude in skin.findall("include"):
		filename = skininclude.attrib.get("filename")
		if filename:
			skinfile = resolveFilename(SCOPE_CURRENT_SKIN, filename, path_prefix=path_prefix)
			if not fileExists(skinfile):
				skinfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
			if fileExists(skinfile):
				print "[SKIN] loading include:", skinfile
				loadSkin(skinfile)

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				#print "Color:", name, color
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			render = get_attr("render")
			if render:
				render = int(render)
			else:
				render = 0
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if fileExists(skin_path):
					resolved_font = skin_path
			addFont(resolved_font, name, scale, is_replacement, render)
			#print "Font: ", resolved_font, name, scale, is_replacement
		for alias in c.findall("alias"):
			get = alias.attrib.get
			try:
				name = get("name")
				font = get("font")
				size = int(get("size"))
				height = int(get("height", size)) # to be calculated some day
				width = int(get("width", size))
				global fonts
				fonts[name] = (font, size, height, width)
			except Exception, ex:
				print "[SKIN] bad font alias", ex
Ejemplo n.º 37
0
    def __init__(self, session):
        from enigma import addFont
        addFont('/usr/lib/enigma2/python/Plugins/Extensions/YahooWeather/Font/weather.ttf', 'weather', 87, 1)
        if config.plugins.YahooWeather.compactskin.value == True:
                path = "/usr/lib/enigma2/python/Plugins/Extensions/YahooWeather/Skin/WeatherCompact.xml" 
                with open(path, "r") as f:
		        self.skin = f.read()
		        f.close()
        else:
                path = "/usr/lib/enigma2/python/Plugins/Extensions/YahooWeather/Skin/Weather.xml" 
                with open(path, "r") as f:
		        self.skin = f.read()
		        f.close() 	         	
        Screen.__init__(self, session)
        self.skinName = ["YahooWeather"]		
        self['lab1'] = Label(_('Retrieving data ...'))
        self['5day'] = Label(_('5 Day Weather Forecast'))
        self['lab1b'] = Label('')
        self['lab2'] = Label('')
        self['lab3'] = Label('')
        self['lab4'] = Label('')
        self['lab4b'] = Label('')
        self['lab5'] = Pixmap()
        self['lab6'] = Label('')
        self['lab7'] = Label('')
        self['lab7b'] = Label('')
        self['lab8'] = Label('')
        self['lab8b'] = Label('')
        self['lab9'] = Label('')
        self['lab9b'] = Label('')
        self['lab10'] = Label('')
        self['lab10b'] = Label('')
        self['lab11'] = Label('')
        self['lab11b'] = Label('')
        self['lab12'] = Label('')
        self['lab12b'] = Label('')
        self['lab13'] = Label('')
        self['lab14'] = Label('')
        self['lab14b'] = Label('')
        self['lab15'] = Label('')
        self['lab15b'] = Label('')
        self['lab16'] = Label('')
        self['lab17'] = Pixmap()
        self['lab18'] = Label('')
        self['lab19'] = Label('')
        self['lab19b'] = Label('')
        self['lab20'] = Label('')
        self['lab20b'] = Label('')
        self['lab21'] = Label('')
        self['lab22'] = Pixmap()
        self['lab23'] = Label('')
        self['lab24'] = Label('')
        self['lab24b'] = Label('')
        self['lab25'] = Label('')
        self['lab25b'] = Label('')
        self['lab26'] = Label('')
        self['lab26b'] = Label('')
        self['lab27'] = Label('')
        self['lab27b'] = Label('')
        self['lab28'] = Pixmap()
        self['lab28a'] = Label('')
        self["Key_Red"] = Label(_("Change city"))
        self["Key_Green"] = Label(_("Change skin"))
        #############test 3day#####
        self['3lab22'] = Pixmap()
        self['3lab19'] = Label('')
        self['3lab19b'] = Label('')
        self['3lab20'] = Label('')
        self['3lab20b'] = Label('')
        self['3lab18'] = Label('')
        self['3lab21'] = Label('')
        #############test 4day#####
        self['4lab22'] = Pixmap()
        self['4lab19'] = Label('')
        self['4lab19b'] = Label('')
        self['4lab20'] = Label('')
        self['4lab20b'] = Label('')
        self['4lab18'] = Label('')
        self['4lab21'] = Label('')
        #############test 5day#####
        self['5lab22'] = Pixmap()
        self['5lab19'] = Label('')
        self['5lab19b'] = Label('')
        self['5lab20'] = Label('')
        self['5lab20b'] = Label('')
        self['5lab18'] = Label('')
        self['5lab21'] = Label('')
        ##########################
        self['daydate0'] = Label('')
        self['daydate1'] = Label('')
        self['daydate2'] = Label('')
        self['daydate3'] = Label('')
        self['daydate4'] = Label('')
        self['actions'] = ActionMap(['WizardActions', 'ColorActions', 'MenuActions'], {
         'red': self.key_red,
         'menu': self.key_red,
         'green': self.key_green,
         'back': self.close,
         'ok': self.close})
        self.activityTimer = eTimer()
        self.activityTimer.timeout.get().append(self.startConnection)
        self.onShow.append(self.startShow)
        self.onClose.append(self.delTimer)
        self.bhv = 2
Ejemplo n.º 38
0
def loadSingleSkinData(desktop, skin, path_prefix):
    for c in skin.findall('output'):
        id = c.attrib.get('id')
        if id:
            id = int(id)
        else:
            id = 0
        if id == 0:
            for res in c.findall('resolution'):
                get_attr = res.attrib.get
                xres = get_attr('xres')
                if xres:
                    xres = int(xres)
                else:
                    xres = 720
                yres = get_attr('yres')
                if yres:
                    yres = int(yres)
                else:
                    yres = 576
                bpp = get_attr('bpp')
                if bpp:
                    bpp = int(bpp)
                else:
                    bpp = 32
                from enigma import gMainDC
                gMainDC.getInstance().setResolution(xres, yres)
                desktop.resize(eSize(xres, yres))
                if bpp != 32:
                    pass

    for skininclude in skin.findall('include'):
        filename = skininclude.attrib.get('filename')
        if filename:
            skinfile = resolveFilename(SCOPE_CURRENT_SKIN, filename, path_prefix=path_prefix)
            if not fileExists(skinfile):
                skinfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
            if fileExists(skinfile):
                print '[SKIN] loading include:', skinfile
                loadSkin(skinfile)

    for c in skin.findall('colors'):
        for color in c.findall('color'):
            get_attr = color.attrib.get
            name = get_attr('name')
            color = get_attr('value')
            if name and color:
                colorNames[name] = parseColor(color)
            else:
                raise SkinError('need color and name, got %s %s' % (name, color))

    for c in skin.findall('fonts'):
        for font in c.findall('font'):
            get_attr = font.attrib.get
            filename = get_attr('filename', '<NONAME>')
            name = get_attr('name', 'Regular')
            scale = get_attr('scale')
            if scale:
                scale = int(scale)
            else:
                scale = 100
            is_replacement = get_attr('replacement') and True or False
            render = get_attr('render')
            if render:
                render = int(render)
            else:
                render = 0
            resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
            if not fileExists(resolved_font):
                skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
                if fileExists(skin_path):
                    resolved_font = skin_path
            addFont(resolved_font, name, scale, is_replacement, render)

        for alias in c.findall('alias'):
            get = alias.attrib.get
            try:
                name = get('name')
                font = get('font')
                size = int(get('size'))
                height = int(get('height', size))
                width = int(get('width', size))
                fonts[name] = (font,
                 size,
                 height,
                 width)
            except Exception as ex:
                print '[SKIN] bad font alias', ex

    for c in skin.findall('parameters'):
        for parameter in c.findall('parameter'):
            get = parameter.attrib.get
            try:
                name = get('name')
                value = get('value')
                parameters[name] = map(int, value.split(','))
            except Exception as ex:
                print '[SKIN] bad parameter', ex

    for c in skin.findall('subtitles'):
        from enigma import eWidget, eSubtitleWidget
        scale = ((1, 1), (1, 1))
        for substyle in c.findall('sub'):
            get_attr = substyle.attrib.get
            font = parseFont(get_attr('font'), scale)
            col = get_attr('foregroundColor')
            if col:
                foregroundColor = parseColor(col)
                haveColor = 1
            else:
                foregroundColor = gRGB(16777215)
                haveColor = 0
            col = get_attr('borderColor')
            if col:
                borderColor = parseColor(col)
            else:
                borderColor = gRGB(0)
            borderwidth = get_attr('borderWidth')
            if borderwidth is None:
                borderWidth = 3
            else:
                borderWidth = int(borderwidth)
            face = eSubtitleWidget.__dict__[get_attr('name')]
            eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)

    for windowstyle in skin.findall('windowstyle'):
        style = eWindowStyleSkinned()
        style_id = windowstyle.attrib.get('id')
        if style_id:
            style_id = int(style_id)
        else:
            style_id = 0
        font = gFont('Regular', 20)
        offset = eSize(20, 5)
        for title in windowstyle.findall('title'):
            get_attr = title.attrib.get
            offset = parseSize(get_attr('offset'), ((1, 1), (1, 1)))
            font = parseFont(get_attr('font'), ((1, 1), (1, 1)))

        style.setTitleFont(font)
        style.setTitleOffset(offset)
        for borderset in windowstyle.findall('borderset'):
            bsName = str(borderset.attrib.get('name'))
            for pixmap in borderset.findall('pixmap'):
                get_attr = pixmap.attrib.get
                bpName = get_attr('pos')
                filename = get_attr('filename')
                if filename and bpName:
                    png = loadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, filename, path_prefix=path_prefix), desktop)
                    style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)

        for color in windowstyle.findall('color'):
            get_attr = color.attrib.get
            colorType = get_attr('name')
            color = parseColor(get_attr('color'))
            try:
                style.setColor(eWindowStyleSkinned.__dict__['col' + colorType], color)
            except:
                raise SkinError('Unknown color %s' % colorType)

        x = eWindowStyleManager.getInstance()
        x.setStyle(style_id, style)

    for margin in skin.findall('margin'):
        style_id = margin.attrib.get('id')
        if style_id:
            style_id = int(style_id)
        else:
            style_id = 0
        r = eRect(0, 0, 0, 0)
        v = margin.attrib.get('left')
        if v:
            r.setLeft(int(v))
        v = margin.attrib.get('top')
        if v:
            r.setTop(int(v))
        v = margin.attrib.get('right')
        if v:
            r.setRight(int(v))
        v = margin.attrib.get('bottom')
        if v:
            r.setBottom(int(v))
        getDesktop(style_id).setMargins(r)
Ejemplo n.º 39
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"

	#print "***SKIN: ", path_prefix

	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				#print "Color:", name, color
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if fileExists(skin_path):
					resolved_font = skin_path
			addFont(resolved_font, name, scale, is_replacement)
			#print "Font: ", resolved_font, name, scale, is_replacement

	for c in skin.findall("subtitles"):
		from enigma import eWidget, eSubtitleWidget
		scale = ((1,1),(1,1))
		for substyle in c.findall("sub"):
			get_attr = substyle.attrib.get
			font = parseFont(get_attr("font"), scale)
			col = get_attr("foregroundColor")
			if col:
				foregroundColor = parseColor(col)
				haveColor = 1
			else:
				foregroundColor = gRGB(0xFFFFFF)
				haveColor = 0
			col = get_attr("shadowColor")
			if col:
				shadowColor = parseColor(col)
			else:
				shadowColor = gRGB(0)
			shadowOffset = parsePosition(get_attr("shadowOffset"), scale)
			face = eSubtitleWidget.__dict__[get_attr("name")]
			eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, shadowColor, shadowOffset)

	for windowstyle in skin.findall("windowstyle"):
		style = eWindowStyleSkinned()
		id = windowstyle.attrib.get("id")
		if id:
			id = int(id)
		else:
			id = 0
		#print "windowstyle:", id

		# defaults
		font = gFont("Regular", 20)
		offset = eSize(20, 5)

		for title in windowstyle.findall("title"):
			get_attr = title.attrib.get
			offset = parseSize(get_attr("offset"), ((1,1),(1,1)))
			font = parseFont(get_attr("font"), ((1,1),(1,1)))

		style.setTitleFont(font);
		style.setTitleOffset(offset)
		#print "  ", font, offset

		for borderset in windowstyle.findall("borderset"):
			bsName = str(borderset.attrib.get("name"))
			for pixmap in borderset.findall("pixmap"):
				get_attr = pixmap.attrib.get
				bpName = get_attr("pos")
				filename = get_attr("filename")
				if filename and bpName:
					png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix), desktop)
					style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
				#print "  borderset:", bpName, filename

		for color in windowstyle.findall("color"):
			get_attr = color.attrib.get
			colorType = get_attr("name")
			color = parseColor(get_attr("color"))
			try:
				style.setColor(eWindowStyleSkinned.__dict__["col" + colorType], color)
			except:
				raise SkinError("Unknown color %s" % (colorType))
				#pass

			#print "  color:", type, color

		x = eWindowStyleManager.getInstance()
		x.setStyle(id, style)
Ejemplo n.º 40
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"

	#print "***SKIN: ", path_prefix

	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				#print "Color:", name, color
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if fileExists(skin_path):
					resolved_font = skin_path
			addFont(resolved_font, name, scale, is_replacement)
			#print "Font: ", resolved_font, name, scale, is_replacement

		for alias in c.findall("alias"):
			get = alias.attrib.get
			try:
				name = get("name")
				font = get("font")
				size = int(get("size"))
				height = int(get("height", size)) # to be calculated some day
				width = int(get("width", size))
				global fonts
				fonts[name] = (font, size, height, width)
			except Exception, ex:
				print "[SKIN] bad font alias", ex
Ejemplo n.º 41
0
def loadSingleSkinData(desktop, screenID, domSkin, pathSkin, scope=SCOPE_CURRENT_SKIN):
	"""Loads skin data like colors, windowstyle etc."""
	assert domSkin.tag == "skin", "root element in skin must be 'skin'!"
	global colors, fonts, menus, parameters, setups, switchPixmap
	for tag in domSkin.findall("output"):
		scrnID = int(tag.attrib.get("id", GUI_SKIN_ID))
		if scrnID == GUI_SKIN_ID:
			for res in tag.findall("resolution"):
				xres = res.attrib.get("xres")
				xres = int(xres) if xres else 720
				yres = res.attrib.get("yres")
				yres = int(yres) if yres else 576
				bpp = res.attrib.get("bpp")
				bpp = int(bpp) if bpp else 32
				# print("[Skin] DEBUG: Resolution xres=%d, yres=%d, bpp=%d." % (xres, yres, bpp))
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					pass  # Load palette (Not yet implemented!)
				if yres >= 1080:
					parameters["AboutHddSplit"] = 1
					parameters["AutotimerListChannels"] = (2, 60, 4, 32)
					parameters["AutotimerListDays"] = (1, 40, 5, 25)
					parameters["AutotimerListHasTimespan"] = (154, 4, 150, 25)
					parameters["AutotimerListIcon"] = (3, -1, 36, 36)
					parameters["AutotimerListRectypeicon"] = (39, 4, 30, 30)
					parameters["AutotimerListTimerName"] = (76, 4, 26, 32)
					parameters["AutotimerListTimespan"] = (2, 40, 5, 25)
					parameters["ChoicelistDash"] = (0, 3, 1000, 30)
					parameters["ChoicelistIcon"] = (7, 0, 52, 38)
					parameters["ChoicelistName"] = (68, 3, 1000, 32)
					parameters["ChoicelistNameSingle"] = (7, 3, 1000, 32)
					parameters["ConfigListSeperator"] = 500
					parameters["DreamexplorerIcon"] = (15, 4, 30, 30)
					parameters["DreamexplorerName"] = (62, 0, 1200, 38)
					parameters["FileListIcon"] = (7, 4, 52, 37)
					parameters["FileListMultiIcon"] = (45, 4, 30, 30)
					parameters["FileListMultiLock"] = (2, 0, 36, 36)
					parameters["FileListMultiName"] = (90, 3, 1000, 32)
					parameters["FileListName"] = (68, 4, 1000, 34)
					parameters["HelpMenuListExtHlp0"] = (0, 0, 900, 39)
					parameters["HelpMenuListExtHlp1"] = (0, 42, 900, 30)
					parameters["HelpMenuListHlp"] = (0, 0, 900, 42)
					parameters["PartnerBoxBouquetListName"] = (0, 0, 45)
					parameters["PartnerBoxChannelListName"] = (0, 0, 45)
					parameters["PartnerBoxChannelListTime"] = (0, 78, 225, 30)
					parameters["PartnerBoxChannelListTitle"] = (0, 42, 30)
					parameters["PartnerBoxE1TimerState"] = (255, 78, 255, 30)
					parameters["PartnerBoxE1TimerTime"] = (0, 78, 255, 30)
					parameters["PartnerBoxE2TimerIcon"] = (1050, 8, 20, 20)
					parameters["PartnerBoxE2TimerIconRepeat"] = (1050, 38, 20, 20)
					parameters["PartnerBoxE2TimerState"] = (225, 78, 225, 30)
					parameters["PartnerBoxE2TimerTime"] = (0, 78, 225, 30)
					parameters["PartnerBoxEntryListIP"] = (180, 2, 225, 38)
					parameters["PartnerBoxEntryListName"] = (8, 2, 225, 38)
					parameters["PartnerBoxEntryListPort"] = (405, 2, 150, 38)
					parameters["PartnerBoxEntryListType"] = (615, 2, 150, 38)
					parameters["PartnerBoxTimerName"] = (0, 42, 30)
					parameters["PartnerBoxTimerServicename"] = (0, 0, 45)
					parameters["PicturePlayerThumb"] = (30, 285, 45, 300, 30, 25)
					parameters["PlayListIcon"] = (7, 7, 24, 24)
					parameters["PlayListName"] = (38, 2, 1000, 34)
					parameters["PluginBrowserDescr"] = (180, 42, 25)
					parameters["PluginBrowserDownloadDescr"] = (120, 42, 25)
					parameters["PluginBrowserDownloadIcon"] = (15, 0, 90, 76)
					parameters["PluginBrowserDownloadName"] = (120, 8, 38)
					parameters["PluginBrowserIcon"] = (15, 8, 150, 60)
					parameters["PluginBrowserName"] = (180, 8, 38)
					parameters["SHOUTcastListItem"] = (30, 27, 35, 96, 35, 33, 60, 32)
					parameters["SelectionListDescr"] = (45, 6, 1000, 45)
					parameters["SelectionListLock"] = (0, 2, 36, 36)
					parameters["ServiceInfoLeft"] = (0, 0, 450, 45)
					parameters["ServiceInfoRight"] = (450, 0, 1000, 45)
					parameters["VirtualKeyBoard"] = (68, 68)
					parameters["VirtualKeyBoardAlignment"] = (0, 0)
					parameters["VirtualKeyBoardPadding"] = (7, 7)
					parameters["VirtualKeyBoardShiftColors"] = (0x00ffffff, 0x00ffffff, 0x0000ffff, 0x00ff00ff)
	for tag in domSkin.findall("include"):
		filename = tag.attrib.get("filename")
		if filename:
			filename = resolveFilename(scope, filename, path_prefix=pathSkin)
			if isfile(filename):
				loadSkin(filename, scope=scope, desktop=desktop, screenID=screenID)
			else:
				raise SkinError("Included file '%s' not found" % filename)
	for tag in domSkin.findall("switchpixmap"):
		for pixmap in tag.findall("pixmap"):
			name = pixmap.attrib.get("name")
			if not name:
				raise SkinError("Pixmap needs name attribute")
			filename = pixmap.attrib.get("filename")
			if not filename:
				raise SkinError("Pixmap needs filename attribute")
			resolved = resolveFilename(scope, filename, path_prefix=pathSkin)
			if isfile(resolved):
				switchPixmap[name] = LoadPixmap(resolved, cached=True)
			else:
				raise SkinError("The switchpixmap pixmap filename='%s' (%s) not found" % (filename, resolved))
	for tag in domSkin.findall("colors"):
		for color in tag.findall("color"):
			name = color.attrib.get("name")
			color = color.attrib.get("value")
			if name and color:
				colors[name] = parseColor(color)
				# print("[Skin] DEBUG: Color name='%s', color='%s'." % (name, color))
			else:
				raise SkinError("Tag 'color' needs a name and color, got name='%s' and color='%s'" % (name, color))
	for tag in domSkin.findall("fonts"):
		for font in tag.findall("font"):
			filename = font.attrib.get("filename", "<NONAME>")
			name = font.attrib.get("name", "Regular")
			scale = font.attrib.get("scale")
			scale = int(scale) if scale else 100
			isReplacement = font.attrib.get("replacement") and True or False
			render = font.attrib.get("render")
			if render:
				render = int(render)
			else:
				render = 0
			filename = resolveFilename(SCOPE_FONTS, filename, path_prefix=pathSkin)
			# Log provided by C++ addFont code.
			# print("[Skin] Add font: Font path='%s', name='%s', scale=%d, isReplacement=%s, render=%d." % (filename, name, scale, isReplacement, render))
			if not fileExists(filename): # When font is not available look at current skin path
				filename = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if not fileExists(filename) and fileExists(resolveFilename(SCOPE_CURRENT_LCDSKIN, filename)):
					filename = resolveFilename(SCOPE_CURRENT_LCDSKIN, filename)
			addFont(filename, name, scale, isReplacement, render)
		fallbackFont = resolveFilename(SCOPE_FONTS, "fallback.font", path_prefix=pathSkin)
		if isfile(fallbackFont):
			addFont(fallbackFont, "Fallback", 100, -1, 0)
		# else:  # As this is optional don't raise an error.
		# 	raise SkinError("Fallback font '%s' not found" % fallbackFont)
		for alias in tag.findall("alias"):
			try:
				name = alias.attrib.get("name")
				font = alias.attrib.get("font")
				size = int(alias.attrib.get("size"))
				height = int(alias.attrib.get("height", size))  # To be calculated some day.
				width = int(alias.attrib.get("width", size))
				fonts[name] = (font, size, height, width)
				# print("[Skin] Add font alias: name='%s', font='%s', size=%d, height=%s, width=%d." % (name, font, size, height, width))
			except Exception as err:
				raise SkinError("Bad font alias: '%s'" % str(err))
	for tag in domSkin.findall("parameters"):
		for parameter in tag.findall("parameter"):
			try:
				name = parameter.attrib.get("name")
				value = parameter.attrib.get("value")
				parameters[name] = list(map(parseParameter, [x.strip() for x in value.split(",")]) if "," in value else parseParameter(value))
			except Exception as err:
				raise SkinError("Bad parameter: '%s'" % str(err))
	for tag in domSkin.findall("menus"):
		for setup in tag.findall("menu"):
			key = setup.attrib.get("key")
			image = setup.attrib.get("image")
			if key and image:
				menus[key] = image
				# print("[Skin] DEBUG: Menu key='%s', image='%s'." % (key, image))
			else:
				raise SkinError("Tag menu needs key and image, got key='%s' and image='%s'" % (key, image))
	for tag in domSkin.findall("setups"):
		for setup in tag.findall("setup"):
			key = setup.attrib.get("key")
			image = setup.attrib.get("image")
			if key and image:
				setups[key] = image
				# print("[Skin] DEBUG: Setup key='%s', image='%s'." % (key, image))
			else:
				raise SkinError("Tag setup needs key and image, got key='%s' and image='%s'" % (key, image))
	for tag in domSkin.findall("subtitles"):
		from enigma import eSubtitleWidget
		scale = ((1, 1), (1, 1))
		for substyle in tag.findall("sub"):
			font = parseFont(substyle.attrib.get("font"), scale)
			col = substyle.attrib.get("foregroundColor")
			if col:
				foregroundColor = parseColor(col)
				haveColor = 1
			else:
				foregroundColor = gRGB(0xFFFFFF)
				haveColor = 0
			col = substyle.attrib.get("borderColor" and "shadowColor")
			if col:
				borderColor = shadowColor = parseColor(col)
			else:
				borderColor = shadowColor = gRGB(0)
			borderwidth = substyle.attrib.get("borderWidth")
			if borderwidth is None:
				borderWidth = 3  # Default: Use a subtitle border.
			else:
				borderWidth = int(borderwidth)
			face = eSubtitleWidget.__dict__[substyle.attrib.get("name")]
			eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)
	for tag in domSkin.findall("windowstyle"):
		style = eWindowStyleSkinned()
		scrnID = int(tag.attrib.get("id", GUI_SKIN_ID))
		font = gFont("Regular", 20)  # Default
		offset = eSize(20, 5)  # Default
		for title in tag.findall("title"):
			offset = parseSize(title.attrib.get("offset"), ((1, 1), (1, 1)))
			font = parseFont(title.attrib.get("font"), ((1, 1), (1, 1)))
		style.setTitleFont(font)
		style.setTitleOffset(offset)
		# print("[Skin] DEBUG: WindowStyle font, offset - '%s' '%s'." % (str(font), str(offset)))
		for borderset in tag.findall("borderset"):
			bsName = str(borderset.attrib.get("name"))
			for pixmap in borderset.findall("pixmap"):
				bpName = pixmap.attrib.get("pos")
				filename = pixmap.attrib.get("filename")
				if filename and bpName:
					png = loadPixmap(resolveFilename(scope, filename, path_prefix=pathSkin), desktop)
					try:
						style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
					except Exception:
						pass
				# print("[Skin] DEBUG: WindowStyle borderset name, filename - '%s' '%s'." % (bpName, filename))
		for color in tag.findall("color"):
			colorType = color.attrib.get("name")
			color = parseColor(color.attrib.get("color"))
			try:
				style.setColor(eWindowStyleSkinned.__dict__["col" + colorType], color)
			except Exception:
				raise SkinError("Unknown color type '%s'" % colorType)
			# print("[Skin] DEBUG: WindowStyle color type, color -" % (colorType, str(color)))
		x = eWindowStyleManager.getInstance()
		x.setStyle(scrnID, style)
	for tag in domSkin.findall("margin"):
		scrnID = int(tag.attrib.get("id", GUI_SKIN_ID))
		r = eRect(0, 0, 0, 0)
		v = tag.attrib.get("left")
		if v:
			r.setLeft(int(v))
		v = tag.attrib.get("top")
		if v:
			r.setTop(int(v))
		v = tag.attrib.get("right")
		if v:
			r.setRight(int(v))
		v = tag.attrib.get("bottom")
		if v:
			r.setBottom(int(v))
		# The "desktop" parameter is hard-coded to the GUI screen, so we must ask
		# for the one that this actually applies to.
		getDesktop(scrnID).setMargins(r)
Ejemplo n.º 42
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"
	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for skininclude in skin.findall("include"):
		filename = skininclude.attrib.get("filename")
		if filename:
			skinfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
			if not fileExists(skinfile):
				skinfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
			if fileExists(skinfile):
				print "[SKIN] loading include:", skinfile
				loadSkin(skinfile)

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				#print "Color:", name, color
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			render = get_attr("render")
			if render:
				render = int(render)
			else:
				render = 0
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
				if fileExists(resolveFilename(SCOPE_CURRENT_SKIN, filename)):
					resolved_font = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				elif fileExists(resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)):
					resolved_font = resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)
			addFont(resolved_font, name, scale, is_replacement, render)
			#print "Font: ", resolved_font, name, scale, is_replacement
		for alias in c.findall("alias"):
			get = alias.attrib.get
			try:
				name = get("name")
				font = get("font")
				size = int(get("size"))
				height = int(get("height", size)) # to be calculated some day
				width = int(get("width", size))
				global fonts
				fonts[name] = (font, size, height, width)
			except Exception, ex:
				print "[SKIN] bad font alias", ex
Ejemplo n.º 43
0
 def __init__(self, session):
     addFont('/usr/lib/enigma2/python/Plugins/Extensions/YahooWeather/Font/weather.ttf', 'weather', 87, 1)
     if config.plugins.YahooWeather.compactskin.value == True:
             path = "/usr/lib/enigma2/python/Plugins/Extensions/YahooWeather/Skin/WeatherCompact.xml"
             with open(path, "r") as f:
                self.skin = f.read()
                f.close()
     else:
             path = "/usr/lib/enigma2/python/Plugins/Extensions/YahooWeather/Skin/Weather.xml"
             with open(path, "r") as f:
                 self.skin = f.read()
                 f.close()
     Screen.__init__(self, session)
     self.skinName = ["YahooWeather"]
     self['lab1'] = Label(_('Retrieving data ...'))
     self['5day'] = Label(_('5 Day Weather Forecast'))
     self['lab1b'] = Label('')
     self['lab2'] = Label('')
     self['lab3'] = Label('')
     self['lab4'] = Label('')
     self['lab4b'] = Label('')
     self['lab5'] = Pixmap()
     self['lab6'] = Label('')
     self['lab7'] = Label('')
     self['lab7b'] = Label('')
     self['lab8'] = Label('')
     self['lab8b'] = Label('')
     self['lab9'] = Label('')
     self['lab9b'] = Label('')
     self['lab10'] = Label('')
     self['lab10b'] = Label('')
     self['lab11'] = Label('')
     self['lab11b'] = Label('')
     self['lab12'] = Label('')
     self['lab12b'] = Label('')
     self['lab13'] = Label('')
     self['lab14'] = Label('')
     self['lab14b'] = Label('')
     self['lab15'] = Label('')
     self['lab15b'] = Label('')
     self['lab16'] = Label('')
     self['lab17'] = Pixmap()
     self['lab18'] = Label('')
     self['lab19'] = Label('')
     self['lab19b'] = Label('')
     self['lab20'] = Label('')
     self['lab20b'] = Label('')
     self['lab21'] = Label('')
     self['lab22'] = Pixmap()
     self['lab23'] = Label('')
     self['lab24'] = Label('')
     self['lab24b'] = Label('')
     self['lab25'] = Label('')
     self['lab25b'] = Label('')
     self['lab26'] = Label('')
     self['lab26b'] = Label('')
     self['lab27'] = Label('')
     self['lab27b'] = Label('')
     self['lab28'] = Pixmap()
     self['lab28a'] = Label('')
     self["Key_Red"] = Label(_("Change city"))
     self["Key_Green"] = Label(_("Change skin"))
     #############test 3day#####
     self['3lab22'] = Pixmap()
     self['3lab19'] = Label('')
     self['3lab19b'] = Label('')
     self['3lab20'] = Label('')
     self['3lab20b'] = Label('')
     self['3lab18'] = Label('')
     self['3lab21'] = Label('')
     #############test 4day#####
     self['4lab22'] = Pixmap()
     self['4lab19'] = Label('')
     self['4lab19b'] = Label('')
     self['4lab20'] = Label('')
     self['4lab20b'] = Label('')
     self['4lab18'] = Label('')
     self['4lab21'] = Label('')
     #############test 5day#####
     self['5lab22'] = Pixmap()
     self['5lab19'] = Label('')
     self['5lab19b'] = Label('')
     self['5lab20'] = Label('')
     self['5lab20b'] = Label('')
     self['5lab18'] = Label('')
     self['5lab21'] = Label('')
     ##########################
     self['daydate0'] = Label('')
     self['daydate1'] = Label('')
     self['daydate2'] = Label('')
     self['daydate3'] = Label('')
     self['daydate4'] = Label('')
     self['actions'] = ActionMap(['WizardActions', 'ColorActions', 'MenuActions'], {
      'red': self.key_red,
      'menu': self.key_red,
      'green': self.key_green,
      'back': self.close,
      'ok': self.close})
     self.activityTimer = eTimer()
     self.activityTimer.timeout.get().append(self.startConnection)
     self.onShow.append(self.startShow)
     self.onClose.append(self.delTimer)
     self.bhv = 2
Ejemplo n.º 44
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"

	#print "***SKIN: ", path_prefix

	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				if color[0] != '#':
					for key in colorNames:
						if key == color:
							colorNamesHuman[name] = colorNamesHuman[key]
							break
				else:
					humancolor = color[1:]
					if len(humancolor) >= 6:
						colorNamesHuman[name] = int(humancolor,16)
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if fileExists(skin_path):
					resolved_font = skin_path
			addFont(resolved_font, name, scale, is_replacement)
			#print "Font: ", resolved_font, name, scale, is_replacement

	for c in skin.findall("parameters"):
		for parameter in c.findall("parameter"):
			get = parameter.attrib.get
			try:
				name = get("name")
				value = get("value")
				if name.find('Font') != -1:
					font = value.split(";")
					if isinstance(font, list) and len(font) == 2:
						parameters[name] = (str(font[0]), int(font[1]))
				else:
					parameters[name] = map(int, value.split(","))
			except Exception, ex:
			 	print "[SKIN] bad parameter", ex
Ejemplo n.º 45
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"
	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for skininclude in skin.findall("include"):
		filename = skininclude.attrib.get("filename")
		if filename:
			skinfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
			if not fileExists(skinfile):
				skinfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
			if fileExists(skinfile):
				print("[SKIN] loading include:", skinfile)
				loadSkin(skinfile)

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				#print "Color:", name, color
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("parameters"):
		for parameter in c.findall("parameter"):
			get = parameter.attrib.get
			try:
				name = get("name")
				value = get("value")
				if name.find('Font') != -1:
					font = value.split(";")
					if isinstance(font, list) and len(font) == 2:
						parameters[name] = (str(font[0]), int(font[1]))
				else:
					parameters[name] = list(map(int, value.split(",")))
			except Exception as ex:
			 	print("[SKIN] bad parameter", ex)

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			render = get_attr("render")
			if render:
				render = int(render)
			else:
				render = 0
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
				if fileExists(resolveFilename(SCOPE_CURRENT_SKIN, filename)):
					resolved_font = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				elif fileExists(resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)):
					resolved_font = resolveFilename(SCOPE_ACTIVE_LCDSKIN, filename)
			addFont(resolved_font, name, scale, is_replacement, render)
			#print "Font: ", resolved_font, name, scale, is_replacement
		for alias in c.findall("alias"):
			get = alias.attrib.get
			try:
				name = get("name")
				font = get("font")
				size = int(get("size"))
				height = int(get("height", size)) # to be calculated some day
				width = int(get("width", size))
				global fonts
				fonts[name] = (font, size, height, width)
			except Exception as ex:
				print("[SKIN] bad font alias", ex)


	for c in skin.findall("subtitles"):
		from enigma import eWidget, eSubtitleWidget
		scale = ((1,1),(1,1))
		for substyle in c.findall("sub"):
			get_attr = substyle.attrib.get
			font = parseFont(get_attr("font"), scale)
			col = get_attr("foregroundColor")
			if col:
				foregroundColor = parseColor(col)
				haveColor = 1
			else:
				foregroundColor = gRGB(0xFFFFFF)
				haveColor = 0
			col = get_attr("borderColor")
			if col:
				borderColor = parseColor(col)
			else:
				borderColor = gRGB(0)
			borderwidth = get_attr("borderWidth")
			if borderwidth is None:
				# default: use a subtitle border
				borderWidth = 3
			else:
				borderWidth = int(borderwidth)
			face = eSubtitleWidget.__dict__[get_attr("name")]
			eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)

	for windowstyle in skin.findall("windowstyle"):
		style = eWindowStyleSkinned()
		style_id = windowstyle.attrib.get("id")
		if style_id:
			style_id = int(style_id)
		else:
			style_id = 0
		# defaults
		font = gFont("Regular", 20)
		offset = eSize(20, 5)
		for title in windowstyle.findall("title"):
			get_attr = title.attrib.get
			offset = parseSize(get_attr("offset"), ((1,1),(1,1)))
			font = parseFont(get_attr("font"), ((1,1),(1,1)))

		style.setTitleFont(font)
		style.setTitleOffset(offset)
		#print "  ", font, offset
		for borderset in windowstyle.findall("borderset"):
			bsName = str(borderset.attrib.get("name"))
			for pixmap in borderset.findall("pixmap"):
				get_attr = pixmap.attrib.get
				bpName = get_attr("pos")
				filename = get_attr("filename")
				if filename and bpName:
					pngfile = resolveFilename(SCOPE_ACTIVE_SKIN, filename, path_prefix=path_prefix)
					if fileExists(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)):
						pngfile = resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix)
					png = loadPixmap(pngfile, desktop)
					try:
						style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
					except:
						pass
				#print "  borderset:", bpName, filename
		for color in windowstyle.findall("color"):
			get_attr = color.attrib.get
			colorType = get_attr("name")
			color = parseColor(get_attr("color"))
			try:
				style.setColor(eWindowStyleSkinned.__dict__["col" + colorType], color)
			except:
				raise SkinError("Unknown color %s" % colorType)
				#pass
			#print "  color:", type, color
		x = eWindowStyleManager.getInstance()
		x.setStyle(style_id, style)
	for margin in skin.findall("margin"):
		style_id = margin.attrib.get("id")
		if style_id:
			style_id = int(style_id)
		else:
			style_id = 0
		r = eRect(0,0,0,0)
		v = margin.attrib.get("left")
		if v:
			r.setLeft(int(v))
		v = margin.attrib.get("top")
		if v:
			r.setTop(int(v))
		v = margin.attrib.get("right")
		if v:
			r.setRight(int(v))
		v = margin.attrib.get("bottom")
		if v:
			r.setBottom(int(v))
		# the "desktop" parameter is hardcoded to the UI screen, so we must ask
		# for the one that this actually applies to.
		getDesktop(style_id).setMargins(r)
Ejemplo n.º 46
0
def loadSingleSkinData(desktop, skin, path_prefix):
    for c in skin.findall('output'):
        id = c.attrib.get('id')
        if id:
            id = int(id)
        else:
            id = 0
        if id == 0:
            for res in c.findall('resolution'):
                get_attr = res.attrib.get
                xres = get_attr('xres')
                if xres:
                    xres = int(xres)
                else:
                    xres = 720
                yres = get_attr('yres')
                if yres:
                    yres = int(yres)
                else:
                    yres = 576
                bpp = get_attr('bpp')
                if bpp:
                    bpp = int(bpp)
                else:
                    bpp = 32
                from enigma import gMainDC
                gMainDC.getInstance().setResolution(xres, yres)
                desktop.resize(eSize(xres, yres))
                if bpp != 32:
                    pass

    for c in skin.findall('colors'):
        for color in c.findall('color'):
            get_attr = color.attrib.get
            name = get_attr('name')
            color = get_attr('value')
            if name and color:
                colorNames[name] = parseColor(color)
                if color[0] != '#':
                    for key in colorNames:
                        if key == color:
                            colorNamesHuman[name] = colorNamesHuman[key]
                            break

                else:
                    humancolor = color[1:]
                    if len(humancolor) >= 6:
                        colorNamesHuman[name] = int(humancolor, 16)
            else:
                raise SkinError('need color and name, got %s %s' % (name, color))

    for c in skin.findall('fonts'):
        for font in c.findall('font'):
            get_attr = font.attrib.get
            filename = get_attr('filename', '<NONAME>')
            name = get_attr('name', 'Regular')
            scale = get_attr('scale')
            if scale:
                scale = int(scale)
            else:
                scale = 100
            is_replacement = get_attr('replacement') and True or False
            resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
            if not fileExists(resolved_font):
                skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
                if fileExists(skin_path):
                    resolved_font = skin_path
            addFont(resolved_font, name, scale, is_replacement)

    for c in skin.findall('parameters'):
        for parameter in c.findall('parameter'):
            get = parameter.attrib.get
            try:
                name = get('name')
                value = get('value')
                if name.find('Font') != -1:
                    font = value.split(';')
                    if isinstance(font, list) and len(font) == 2:
                        parameters[name] = (str(font[0]), int(font[1]))
                else:
                    parameters[name] = map(int, value.split(','))
            except Exception as ex:
                print '[SKIN] bad parameter', ex

    for c in skin.findall('constant-widgets'):
        for constant_widget in c.findall('constant-widget'):
            get = constant_widget.attrib.get
            name = get('name')
            if name:
                constant_widgets[name] = constant_widget

    for c in skin.findall('variables'):
        for parameter in c.findall('variable'):
            get = parameter.attrib.get
            name = get('name')
            value = get('value')
            x, y = value.split(',')
            if value and name:
                variables[name] = str(x) + ',' + str(y)

    for c in skin.findall('subtitles'):
        from enigma import eWidget, eSubtitleWidget
        scale = ((1, 1), (1, 1))
        for substyle in c.findall('sub'):
            get_attr = substyle.attrib.get
            font = parseFont(get_attr('font'), scale)
            col = get_attr('foregroundColor')
            if col:
                foregroundColor = parseColor(col)
                haveColor = 1
            else:
                foregroundColor = gRGB(16777215)
                haveColor = 0
            col = get_attr('borderColor')
            if col:
                borderColor = parseColor(col)
            else:
                borderColor = gRGB(0)
            borderwidth = get_attr('borderWidth')
            if borderwidth is None:
                borderWidth = 3
            else:
                borderWidth = int(borderwidth)
            face = eSubtitleWidget.__dict__[get_attr('name')]
            eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)

    for windowstyle in skin.findall('windowstyle'):
        style = eWindowStyleSkinned()
        id = windowstyle.attrib.get('id')
        if id:
            id = int(id)
        else:
            id = 0
        font = gFont('Regular', 20)
        offset = eSize(20, 5)
        for title in windowstyle.findall('title'):
            get_attr = title.attrib.get
            offset = parseSize(get_attr('offset'), ((1, 1), (1, 1)))
            font = parseFont(get_attr('font'), ((1, 1), (1, 1)))

        style.setTitleFont(font)
        style.setTitleOffset(offset)
        for borderset in windowstyle.findall('borderset'):
            bsName = str(borderset.attrib.get('name'))
            for pixmap in borderset.findall('pixmap'):
                get_attr = pixmap.attrib.get
                bpName = get_attr('pos')
                filename = get_attr('filename')
                if filename and bpName:
                    png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix), desktop)
                    style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)

        for color in windowstyle.findall('color'):
            get_attr = color.attrib.get
            colorType = get_attr('name')
            color = parseColor(get_attr('color'))
            try:
                style.setColor(eWindowStyleSkinned.__dict__['col' + colorType], color)
            except:
                raise SkinError('Unknown color %s' % colorType)

        x = eWindowStyleManager.getInstance()
        x.setStyle(id, style)
Ejemplo n.º 47
0
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			render = get_attr("render")
			if render:
				render = int(render)
			else:
				render = 0
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font):  # when font is not available look at current skin path
				skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if fileExists(skin_path):
					resolved_font = skin_path
			addFont(resolved_font, name, scale, is_replacement, render)
			# print "Font: ", resolved_font, name, scale, is_replacement
		fallbackFont = resolveFilename(SCOPE_FONTS, "fallback.font", path_prefix=path_prefix)
		if fileExists(fallbackFont):
			addFont(fallbackFont, "Fallback", 100, -1, 0)
		for alias in c.findall("alias"):
			get = alias.attrib.get
			try:
				name = get("name")
				font = get("font")
				size = int(get("size"))
				height = int(get("height", size))  # To be calculated some day.
				width = int(get("width", size))
				global fonts
				fonts[name] = (font, size, height, width)
				# print "[Skin] Add font alias: name='%s', font='%s', size=%d, height=%s, width=%d." % (name, font, size, height, width)
Ejemplo n.º 48
0
def registerFont(file, name, scale, replacement):
    addFont(file, name, scale, replacement)
Ejemplo n.º 49
0
def loadSingleSkinData(desktop, screenID, domSkin, pathSkin, scope=SCOPE_CURRENT_SKIN):
	"""Loads skin data like colors, windowstyle etc."""
	assert domSkin.tag == "skin", "root element in skin must be 'skin'!"
	global colors, fonts, menus, parameters, setups, switchPixmap
	for tag in domSkin.findall("output"):
		id = tag.attrib.get("id")
		if id:
			id = int(id)
		else:
			id = GUI_SKIN_ID
		if id == GUI_SKIN_ID:
			for res in tag.findall("resolution"):
				xres = res.attrib.get("xres")
				xres = int(xres) if xres else 720
				yres = res.attrib.get("yres")
				yres = int(yres) if yres else 576
				bpp = res.attrib.get("bpp")
				bpp = int(bpp) if bpp else 32
				# print "[Skin] DEBUG: Resolution xres=%d, yres=%d, bpp=%d." % (xres, yres, bpp)
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					pass  # Load palette (Not yet implemented!)
	for tag in domSkin.findall("include"):
		filename = tag.attrib.get("filename")
		if filename:
			filename = resolveFilename(scope, filename, path_prefix=pathSkin)
			if isfile(filename):
				loadSkin(filename, scope=scope, desktop=desktop, screenID=screenID)
			else:
				raise SkinError("Included file '%s' not found" % filename)
	for tag in domSkin.findall("switchpixmap"):
		for pixmap in tag.findall("pixmap"):
			name = pixmap.attrib.get("name")
			if not name:
				raise SkinError("Pixmap needs name attribute")
			filename = pixmap.attrib.get("filename")
			if not filename:
				raise SkinError("Pixmap needs filename attribute")
			resolved = resolveFilename(scope, filename, path_prefix=pathSkin)
			if isfile(resolved):
				switchPixmap[name] = LoadPixmap(resolved, cached=True)
			else:
				raise SkinError("The switchpixmap pixmap filename='%s' (%s) not found" % (filename, resolved))
	for tag in domSkin.findall("colors"):
		for color in tag.findall("color"):
			name = color.attrib.get("name")
			color = color.attrib.get("value")
			if name and color:
				colors[name] = parseColor(color)
				# print "[Skin] DEBUG: Color name='%s', color='%s'." % (name, color)
			else:
				raise SkinError("Tag 'color' needs a name and color, got name='%s' and color='%s'" % (name, color))
	for tag in domSkin.findall("fonts"):
		for font in tag.findall("font"):
			filename = font.attrib.get("filename", "<NONAME>")
			name = font.attrib.get("name", "Regular")
			scale = font.attrib.get("scale")
			scale = int(scale) if scale else 100
			isReplacement = font.attrib.get("replacement") and True or False
			render = font.attrib.get("render")
			if render:
				render = int(render)
			else:
				render = 0
			filename = resolveFilename(SCOPE_FONTS, filename, path_prefix=pathSkin)
			if isfile(filename):
				addFont(filename, name, scale, isReplacement, render)
				# Log provided by C++ addFont code.
				# print "[Skin] Add font: Font path='%s', name='%s', scale=%d, isReplacement=%s, render=%d." % (filename, name, scale, isReplacement, render)
			else:
				raise SkinError("Font file '%s' not found" % filename)
		fallbackFont = resolveFilename(SCOPE_FONTS, "fallback.font", path_prefix=pathSkin)
		if isfile(fallbackFont):
			addFont(fallbackFont, "Fallback", 100, -1, 0)
		# else:  # As this is optional don't raise an error.
		# 	raise SkinError("Fallback font '%s' not found" % fallbackFont)
		for alias in tag.findall("alias"):
			try:
				name = alias.attrib.get("name")
				font = alias.attrib.get("font")
				size = int(alias.attrib.get("size"))
				height = int(alias.attrib.get("height", size))  # To be calculated some day.
				width = int(alias.attrib.get("width", size))
				fonts[name] = (font, size, height, width)
				# print "[Skin] Add font alias: name='%s', font='%s', size=%d, height=%s, width=%d." % (name, font, size, height, width)
			except Exception as err:
				raise SkinError("Bad font alias: '%s'" % str(err))
	for tag in domSkin.findall("parameters"):
		for parameter in tag.findall("parameter"):
			try:
				name = parameter.attrib.get("name")
				value = parameter.attrib.get("value")
				parameters[name] = map(parseParameter, [x.strip() for x in value.split(",")]) if "," in value else parseParameter(value)
			except Exception as err:
				raise SkinError("Bad parameter: '%s'" % str(err))
	for tag in domSkin.findall("menus"):
		for setup in tag.findall("menu"):
			key = setup.attrib.get("key")
			image = setup.attrib.get("image")
			if key and image:
				menus[key] = image
				# print "[Skin] DEBUG: Menu key='%s', image='%s'." % (key, image)
			else:
				raise SkinError("Tag menu needs key and image, got key='%s' and image='%s'" % (key, image))
	for tag in domSkin.findall("setups"):
		for setup in tag.findall("setup"):
			key = setup.attrib.get("key")
			image = setup.attrib.get("image")
			if key and image:
				setups[key] = image
				# print "[Skin] DEBUG: Setup key='%s', image='%s'." % (key, image)
			else:
				raise SkinError("Tag setup needs key and image, got key='%s' and image='%s'" % (key, image))
	for tag in domSkin.findall("constant-widgets"):
		for constant_widget in tag.findall("constant-widget"):
			name = constant_widget.attrib.get("name")
			if name:
				constantWidgets[name] = constant_widget
	for tag in domSkin.findall("variables"):
		for parameter in tag.findall("variable"):
			name = parameter.attrib.get("name")
			value = parameter.attrib.get("value")
			x, y = value.split(",")
			if value and name:
				variables[name] = "%s,%s" % (str(x), str(y))
	for tag in domSkin.findall("subtitles"):
		from enigma import eSubtitleWidget
		scale = ((1, 1), (1, 1))
		for substyle in tag.findall("sub"):
			font = parseFont(substyle.attrib.get("font"), scale)
			col = substyle.attrib.get("foregroundColor")
			if col:
				foregroundColor = parseColor(col)
				haveColor = 1
			else:
				foregroundColor = gRGB(0xFFFFFF)
				haveColor = 0
			col = substyle.attrib.get("borderColor")
			if col:
				borderColor = parseColor(col)
			else:
				borderColor = gRGB(0)
			borderwidth = substyle.attrib.get("borderWidth")
			if borderwidth is None:
				borderWidth = 3  # Default: Use a subtitle border.
			else:
				borderWidth = int(borderwidth)
			face = eSubtitleWidget.__dict__[substyle.attrib.get("name")]
			eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, borderColor, borderWidth)
	for tag in domSkin.findall("windowstyle"):
		style = eWindowStyleSkinned()
		styleId = tag.attrib.get("id")
		if styleId:
			styleId = int(styleId)
		else:
			styleId = GUI_SKIN_ID
		font = gFont("Regular", 20)  # Default
		offset = eSize(20, 5)  # Default
		for title in tag.findall("title"):
			offset = parseSize(title.attrib.get("offset"), ((1, 1), (1, 1)))
			font = parseFont(title.attrib.get("font"), ((1, 1), (1, 1)))
		style.setTitleFont(font)
		style.setTitleOffset(offset)
		# print "[Skin] DEBUG: WindowStyle font, offset -", font, offset
		for borderset in tag.findall("borderset"):
			bsName = str(borderset.attrib.get("name"))
			for pixmap in borderset.findall("pixmap"):
				bpName = pixmap.attrib.get("pos")
				filename = pixmap.attrib.get("filename")
				if filename and bpName:
					png = loadPixmap(resolveFilename(scope, filename, path_prefix=pathSkin), desktop)
					try:
						style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
					except Exception:
						pass
				# print "[Skin] DEBUG: WindowStyle borderset name, filename -", bpName, filename
		for color in tag.findall("color"):
			colorType = color.attrib.get("name")
			color = parseColor(color.attrib.get("color"))
			try:
				style.setColor(eWindowStyleSkinned.__dict__["col" + colorType], color)
			except Exception:
				raise SkinError("Unknown color type '%s'" % colorType)
			# print "[Skin] DEBUG: WindowStyle color type, color -", type, color
		x = eWindowStyleManager.getInstance()
		x.setStyle(styleId, style)
	for tag in domSkin.findall("margin"):
		styleId = tag.attrib.get("id")
		if styleId:
			styleId = int(styleId)
		else:
			styleId = GUI_SKIN_ID
		r = eRect(0, 0, 0, 0)
		v = tag.attrib.get("left")
		if v:
			r.setLeft(int(v))
		v = tag.attrib.get("top")
		if v:
			r.setTop(int(v))
		v = tag.attrib.get("right")
		if v:
			r.setRight(int(v))
		v = tag.attrib.get("bottom")
		if v:
			r.setBottom(int(v))
		# The "desktop" parameter is hard-coded to the GUI screen, so we must ask
		# for the one that this actually applies to.
		getDesktop(styleId).setMargins(r)
Ejemplo n.º 50
0
                render = 0
            resolved_font = resolveFilename(SCOPE_FONTS,
                                            filename,
                                            path_prefix=path_prefix)
            if not fileExists(
                    resolved_font
            ):  #when font is not available look at current skin path
                resolved_font = resolveFilename(SCOPE_ACTIVE_SKIN, filename)
                if fileExists(resolveFilename(SCOPE_CURRENT_SKIN, filename)):
                    resolved_font = resolveFilename(SCOPE_CURRENT_SKIN,
                                                    filename)
                elif fileExists(resolveFilename(SCOPE_ACTIVE_LCDSKIN,
                                                filename)):
                    resolved_font = resolveFilename(SCOPE_ACTIVE_LCDSKIN,
                                                    filename)
            addFont(resolved_font, name, scale, is_replacement, render)
            #print "Font: ", resolved_font, name, scale, is_replacement
        for alias in c.findall("alias"):
            get = alias.attrib.get
            try:
                name = get("name")
                font = get("font")
                size = int(get("size"))
                height = int(get("height", size))  # to be calculated some day
                width = int(get("width", size))
                global fonts
                fonts[name] = (font, size, height, width)
            except Exception, ex:
                print "[SKIN] bad font alias", ex

    for c in skin.findall("subtitles"):
Ejemplo n.º 51
0
Archivo: skin.py Proyecto: mi49/enigma2
def loadSingleSkinData(desktop, skin, path_prefix):
    """loads skin data like colors, windowstyle etc."""
    assert skin.tag == "skin", "root element in skin must be 'skin'!"
    for c in skin.findall("output"):
        id = c.attrib.get('id')
        if id:
            id = int(id)
        else:
            id = 0
        if id == 0:  # framebuffer
            for res in c.findall("resolution"):
                get_attr = res.attrib.get
                xres = get_attr("xres")
                if xres:
                    xres = int(xres)
                else:
                    xres = 720
                yres = get_attr("yres")
                if yres:
                    yres = int(yres)
                else:
                    yres = 576
                bpp = get_attr("bpp")
                if bpp:
                    bpp = int(bpp)
                else:
                    bpp = 32
                #print "Resolution:", xres,yres,bpp
                from enigma import gMainDC
                gMainDC.getInstance().setResolution(xres, yres)
                desktop.resize(eSize(xres, yres))
                if bpp != 32:
                    # load palette (not yet implemented)
                    pass
                if yres >= 1080:
                    parameters["FileListName"] = (68, 4, 1000, 34)
                    parameters["FileListIcon"] = (7, 4, 52, 37)
                    parameters["FileListMultiName"] = (90, 3, 1000, 32)
                    parameters["FileListMultiIcon"] = (45, 4, 30, 30)
                    parameters["FileListMultiLock"] = (2, 0, 36, 36)
                    parameters["ChoicelistDash"] = (0, 3, 1000, 30)
                    parameters["ChoicelistName"] = (68, 3, 1000, 30)
                    parameters["ChoicelistNameSingle"] = (7, 3, 1000, 30)
                    parameters["ChoicelistIcon"] = (7, 0, 52, 38)
                    parameters["PluginBrowserName"] = (180, 8, 38)
                    parameters["PluginBrowserDescr"] = (180, 42, 25)
                    parameters["PluginBrowserIcon"] = (15, 8, 150, 60)
                    parameters["PluginBrowserDownloadName"] = (120, 8, 38)
                    parameters["PluginBrowserDownloadDescr"] = (120, 42, 25)
                    parameters["PluginBrowserDownloadIcon"] = (15, 0, 90, 76)
                    parameters["ServiceInfo"] = (0, 0, 450, 50)
                    parameters["ServiceInfoLeft"] = (0, 0, 450, 45)
                    parameters["ServiceInfoRight"] = (450, 0, 1000, 45)
                    parameters["SelectionListDescr"] = (45, 6, 1000, 45)
                    parameters["SelectionListLock"] = (0, 2, 36, 36)
                    parameters["ConfigListSeperator"] = 500
                    parameters["VirtualKeyboard"] = (68, 68)
                    parameters["PartnerBoxEntryListName"] = (8, 2, 225, 38)
                    parameters["PartnerBoxEntryListIP"] = (180, 2, 225, 38)
                    parameters["PartnerBoxEntryListPort"] = (405, 2, 150, 38)
                    parameters["PartnerBoxEntryListType"] = (615, 2, 150, 38)
                    parameters["PartnerBoxTimerServicename"] = (0, 0, 45)
                    parameters["PartnerBoxTimerName"] = (0, 42, 30)
                    parameters["PartnerBoxE1TimerTime"] = (0, 78, 255, 30)
                    parameters["PartnerBoxE1TimerState"] = (255, 78, 255, 30)
                    parameters["PartnerBoxE2TimerTime"] = (0, 78, 225, 30)
                    parameters["PartnerBoxE2TimerState"] = (225, 78, 225, 30)
                    parameters["PartnerBoxE2TimerIcon"] = (1050, 8, 20, 20)
                    parameters["PartnerBoxE2TimerIconRepeat"] = (1050, 38, 20,
                                                                 20)
                    parameters["PartnerBoxBouquetListName"] = (0, 0, 45)
                    parameters["PartnerBoxChannelListName"] = (0, 0, 45)
                    parameters["PartnerBoxChannelListTitle"] = (0, 42, 30)
                    parameters["PartnerBoxChannelListTime"] = (0, 78, 225, 30)
                    parameters["HelpMenuListHlp"] = (0, 0, 900, 42)
                    parameters["HelpMenuListExtHlp0"] = (0, 0, 900, 39)
                    parameters["HelpMenuListExtHlp1"] = (0, 42, 900, 30)
                    parameters["AboutHddSplit"] = 1
                    parameters["DreamexplorerName"] = (62, 0, 1200, 38)
                    parameters["DreamexplorerIcon"] = (15, 4, 30, 30)
                    parameters["PicturePlayerThumb"] = (30, 285, 45, 300, 30,
                                                        25)
                    parameters["PlayListName"] = (38, 2, 1000, 34)
                    parameters["PlayListIcon"] = (7, 7, 24, 24)
                    parameters["SHOUTcastListItem"] = (30, 27, 35, 96, 35, 33,
                                                       60, 32)

    for skininclude in skin.findall("include"):
        filename = skininclude.attrib.get("filename")
        if filename:
            skinfile = resolveFilename(SCOPE_CURRENT_SKIN,
                                       filename,
                                       path_prefix=path_prefix)
            if not fileExists(skinfile):
                skinfile = resolveFilename(SCOPE_SKIN_IMAGE,
                                           filename,
                                           path_prefix=path_prefix)
            if fileExists(skinfile):
                print "[Skin] Loading include:", skinfile
                loadSkin(skinfile)

    for c in skin.findall('switchpixmap'):
        for pixmap in c.findall('pixmap'):
            get_attr = pixmap.attrib.get
            name = get_attr('name')
            if not name:
                raise SkinError('[Skin] pixmap needs name attribute')
            filename = get_attr('filename')
            if not filename:
                raise SkinError('[Skin] pixmap needs filename attribute')
            resolved_png = resolveFilename(SCOPE_CURRENT_SKIN,
                                           filename,
                                           path_prefix=path_prefix)
            if fileExists(resolved_png):
                switchPixmap[name] = LoadPixmap(resolved_png, cached=True)
            else:
                raise SkinError(
                    '[Skin] switchpixmap pixmap filename="%s" (%s) not found' %
                    (filename, resolved_png))

    for c in skin.findall("colors"):
        for color in c.findall("color"):
            get_attr = color.attrib.get
            name = get_attr("name")
            color = get_attr("value")
            if name and color:
                colorNames[name] = parseColor(color)
                #print "Color:", name, color
            else:
                raise SkinError("need color and name, got %s %s" %
                                (name, color))

    for c in skin.findall("fonts"):
        for font in c.findall("font"):
            get_attr = font.attrib.get
            filename = get_attr("filename", "<NONAME>")
            name = get_attr("name", "Regular")
            scale = get_attr("scale")
            if scale:
                scale = int(scale)
            else:
                scale = 100
            is_replacement = get_attr("replacement") and True or False
            render = get_attr("render")
            if render:
                render = int(render)
            else:
                render = 0
            resolved_font = resolveFilename(SCOPE_FONTS,
                                            filename,
                                            path_prefix=path_prefix)
            if not fileExists(
                    resolved_font
            ):  #when font is not available look at current skin path
                skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
                if fileExists(skin_path):
                    resolved_font = skin_path
            addFont(resolved_font, name, scale, is_replacement, render)
            #print "Font: ", resolved_font, name, scale, is_replacement

        fallbackFont = resolveFilename(SCOPE_FONTS,
                                       "fallback.font",
                                       path_prefix=path_prefix)
        if fileExists(fallbackFont):
            addFont(fallbackFont, "Fallback", 100, -1, 0)

        for alias in c.findall("alias"):
            get = alias.attrib.get
            try:
                name = get("name")
                font = get("font")
                size = int(get("size"))
                height = int(get("height", size))  # to be calculated some day
                width = int(get("width", size))
                global fonts
                fonts[name] = (font, size, height, width)
            except Exception, ex:
                print "[Skin] Bad font alias", ex
Ejemplo n.º 52
0
def FontWeather(file, name, scale, replacement):
    try:
        addFont(file, name, scale, replacement)
    except Exception, ex:
        addFont(file, name, scale, replacement, 0)
Ejemplo n.º 53
0
from Components.Pixmap import Pixmap
from Components.Label import Label
import urllib2
import urllib
from xml.dom.minidom import parseString
import gettext
from Components.GUIComponent import GUIComponent
from Components.MenuList import MenuList
from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
from enigma import eListbox, RT_HALIGN_LEFT, RT_HALIGN_RIGHT
from enigma import ePicLoad, eListboxPythonMultiContent, gFont, addFont, loadPic, loadPNG
from enigma import getDesktop
from Tools.Directories import fileExists, resolveFilename, SCOPE_LANGUAGE, SCOPE_PLUGINS
import metrixDefaults
import metrixTools
addFont('/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/setrixHD.ttf', 'SetrixHD', 100, False)
config = metrixDefaults.loadDefaults()
lang = language.getLanguage()
environ['LANGUAGE'] = lang[:2]
gettext.bindtextdomain('enigma2', resolveFilename(SCOPE_LANGUAGE))
gettext.textdomain('enigma2')
gettext.bindtextdomain('MyMetrix', '%s%s' % (resolveFilename(SCOPE_PLUGINS), 'Extensions/MyMetrix/locale/'))

def _(txt):
    t = gettext.dgettext('MyMetrix', txt)
    if t == txt:
        t = gettext.gettext(txt)
    return t


def translateBlock(block):
Ejemplo n.º 54
0
def loadSingleSkinData(desktop, skin, path_prefix):
	"""loads skin data like colors, windowstyle etc."""
	assert skin.tag == "skin", "root element in skin must be 'skin'!"

	#print "***SKIN: ", path_prefix

	for c in skin.findall("output"):
		id = c.attrib.get('id')
		if id:
			id = int(id)
		else:
			id = 0
		if id == 0: # framebuffer
			for res in c.findall("resolution"):
				get_attr = res.attrib.get
				xres = get_attr("xres")
				if xres:
					xres = int(xres)
				else:
					xres = 720
				yres = get_attr("yres")
				if yres:
					yres = int(yres)
				else:
					yres = 576
				bpp = get_attr("bpp")
				if bpp:
					bpp = int(bpp)
				else:
					bpp = 32
				#print "Resolution:", xres,yres,bpp
				from enigma import gMainDC
				gMainDC.getInstance().setResolution(xres, yres)
				desktop.resize(eSize(xres, yres))
				if bpp != 32:
					# load palette (not yet implemented)
					pass

	for c in skin.findall("colors"):
		for color in c.findall("color"):
			get_attr = color.attrib.get
			name = get_attr("name")
			color = get_attr("value")
			if name and color:
				colorNames[name] = parseColor(color)
				#print "Color:", name, color
			else:
				raise SkinError("need color and name, got %s %s" % (name, color))

	for c in skin.findall("listboxcontent"):
		for offset in c.findall("offset"):
			get_attr = offset.attrib.get
			name = get_attr("name")
			value = get_attr("value")
			if name and value:
				if name == "left":
					eListboxPythonStringContent.setLeftOffset(parseValue(value))
				elif name == "right":
					eListboxPythonStringContent.setRightOffset(parseValue(value))
				else:
					raise SkinError("got listboxcontent offset '%s'' but 'left' or 'right' is allowed only" % name)
		for font in c.findall("font"):
			get_attr = font.attrib.get
			name = get_attr("name")
			font = get_attr("font")
			if name and font:
				if name == "string":
					eListboxPythonStringContent.setFont(parseFont(font, ((1,1),(1,1))))
				elif name == "config_description":
					eListboxPythonConfigContent.setDescriptionFont(parseFont(font, ((1,1),(1,1))))
				elif name == "config_value":
					eListboxPythonConfigContent.setValueFont(parseFont(font, ((1,1),(1,1))))
				else:
					raise SkinError("got listboxcontent font '%s' but 'string', 'config_description' or 'config_value' is allowed only" % name)
		for value in c.findall("value"):
			get_attr = value.attrib.get
			name = get_attr("name")
			value = get_attr("value")
			if name and value:
				if name == "string_item_height":
					eListboxPythonStringContent.setItemHeight(parseValue(value))
				elif name == "config_item_height":
					eListboxPythonConfigContent.setItemHeight(parseValue(value))
				else:
					raise SkinError("got listboxcontent value '%s' but 'string_item_height' or 'config_item_height' is allowed only" % name)

	for c in skin.findall("fonts"):
		for font in c.findall("font"):
			get_attr = font.attrib.get
			filename = get_attr("filename", "<NONAME>")
			name = get_attr("name", "Regular")
			scale = get_attr("scale")
			if scale:
				scale = int(scale)
			else:
				scale = 100
			is_replacement = get_attr("replacement") and True or False
			resolved_font = resolveFilename(SCOPE_FONTS, filename, path_prefix=path_prefix)
			if not fileExists(resolved_font): #when font is not available look at current skin path
				skin_path = resolveFilename(SCOPE_CURRENT_SKIN, filename)
				if fileExists(skin_path):
					resolved_font = skin_path
			addFont(resolved_font, name, scale, is_replacement)
			#print "Font: ", resolved_font, name, scale, is_replacement

	for c in skin.findall("subtitles"):
		from enigma import eWidget, eSubtitleWidget
		scale = ((1,1),(1,1))
		for substyle in c.findall("sub"):
			get_attr = substyle.attrib.get
			font = parseFont(get_attr("font"), scale)
			col = get_attr("foregroundColor")
			if col:
				foregroundColor = parseColor(col)
				haveColor = 1
			else:
				foregroundColor = gRGB(0xFFFFFF)
				haveColor = 0
			col = get_attr("shadowColor")
			if col:
				shadowColor = parseColor(col)
			else:
				shadowColor = gRGB(0)
			shadowOffset = parsePosition(get_attr("shadowOffset"), scale)
			face = eSubtitleWidget.__dict__[get_attr("name")]
			eSubtitleWidget.setFontStyle(face, font, haveColor, foregroundColor, shadowColor, shadowOffset)

	for windowstyle in skin.findall("windowstyle"):
		style = eWindowStyleSkinned()
		id = windowstyle.attrib.get("id")
		if id:
			id = int(id)
		else:
			id = 0
		#print "windowstyle:", id

		# defaults
		font = gFont("Regular", 20)
		offset = eSize(20, 5)

		for title in windowstyle.findall("title"):
			get_attr = title.attrib.get
			offset = parseSize(get_attr("offset"), ((1,1),(1,1)))
			font = parseFont(get_attr("font"), ((1,1),(1,1)))

		style.setTitleFont(font);
		style.setTitleOffset(offset)
		#print "  ", font, offset

		for borderset in windowstyle.findall("borderset"):
			bsName = str(borderset.attrib.get("name"))
			for pixmap in borderset.findall("pixmap"):
				get_attr = pixmap.attrib.get
				bpName = get_attr("pos")
				filename = get_attr("filename")
				if filename and bpName:
					png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix), desktop)
					style.setPixmap(eWindowStyleSkinned.__dict__[bsName], eWindowStyleSkinned.__dict__[bpName], png)
				#print "  borderset:", bpName, filename

		for color in windowstyle.findall("color"):
			get_attr = color.attrib.get
			colorType = get_attr("name")
			color = parseColor(get_attr("color"))
			try:
				style.setColor(eWindowStyleSkinned.__dict__["col" + colorType], color)
			except:
				raise SkinError("Unknown color %s" % (colorType))
				#pass

			#print "  color:", type, color

		x = eWindowStyleManager.getInstance()
		x.setStyle(id, style)

	for windowstylescrollbar in skin.findall("windowstylescrollbar"):
		style = eWindowStyleScrollbar()
		id = windowstylescrollbar.attrib.get("id")
		if id:
			id = int(id)
		else:
			id = 4
		for value in windowstylescrollbar.findall("value"):
			get_attr = value.attrib.get
			vType = get_attr("name")
			v = get_attr("value")
			if vType == "BackgroundPixmapTopHeight":
				style.setBackgroundPixmapTopHeight(int(v))
			elif vType == "BackgroundPixmapBottomHeight":
				style.setBackgroundPixmapBottomHeight(int(v))
			elif vType == "ValuePixmapTopHeight":
				style.setValuePixmapTopHeight(int(v))
			elif vType == "ValuePixmapBottomHeight":
				style.setValuePixmapBottomHeight(int(v))
			elif vType == "ScrollbarWidth":
				style.setScrollbarWidth(int(v))
			elif vType == "ScrollbarBorderWidth":
				style.setScrollbarBorderWidth(int(v))
		for pixmap in windowstylescrollbar.findall("pixmap"):
			get_attr = pixmap.attrib.get
			vType = get_attr("name")
			filename = get_attr("filename")
			if filename:
				if vType == "BackgroundPixmap":
					png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix), desktop)
					style.setBackgroundPixmap(png)
				elif vType == "ValuePixmap":
					png = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, filename, path_prefix=path_prefix), desktop)
					style.setValuePixmap(png)
		x = eWindowStyleManager.getInstance()
		x.setStyle(id, style)