Files
jellycon/resources/lib/MenuLoad.py
2014-09-28 10:30:07 +10:00

116 lines
4.4 KiB
Python

#################################################################################################
# menu item loader thread
# this loads the favourites.xml and sets the windows props for the menus to auto display in skins
#################################################################################################
import xbmc
import xbmcgui
import xbmcaddon
import xml.etree.ElementTree as xml
import os
import threading
class LoadMenuOptionsThread(threading.Thread):
logLevel = 0
addonSettings = None
getString = None
def __init__(self, *args):
addonSettings = xbmcaddon.Addon(id='plugin.video.xbmb3c')
self.addonSettings = xbmcaddon.Addon(id='plugin.video.xbmb3c')
level = addonSettings.getSetting('logLevel')
self.logLevel = 0
self.getString = self.addonSettings.getLocalizedString
if(level != None):
self.logLevel = int(level)
xbmc.log("XBMB3C LoadMenuOptionsThread -> Log Level:" + str(self.logLevel))
threading.Thread.__init__(self, *args)
def logMsg(self, msg, level = 1):
if(self.logLevel >= level):
xbmc.log("XBMB3C LoadMenuOptionsThread -> " + msg)
def run(self):
try:
self.run_internal()
except Exception, e:
xbmcgui.Dialog().ok(self.getString(30205), str(e))
raise
def run_internal(self):
self.logMsg("LoadMenuOptionsThread Started")
lastFavPath = ""
favourites_file = os.path.join(xbmc.translatePath('special://profile'), "favourites.xml")
self.loadMenuOptions(favourites_file)
lastFavPath = favourites_file
try:
lastModLast = os.stat(favourites_file).st_mtime
except:
lastModLast = 0;
while (xbmc.abortRequested == False):
favourites_file = os.path.join(xbmc.translatePath('special://profile'), "favourites.xml")
try:
lastMod = os.stat(favourites_file).st_mtime
except:
lastMod = 0;
if(lastFavPath != favourites_file or lastModLast != lastMod):
self.loadMenuOptions(favourites_file)
lastFavPath = favourites_file
lastModLast = lastMod
xbmc.sleep(3000)
self.logMsg("LoadMenuOptionsThread Exited")
def loadMenuOptions(self, pathTofavourites):
self.logMsg("LoadMenuOptionsThread -> Loading menu items from : " + pathTofavourites)
WINDOW = xbmcgui.Window( 10000 )
menuItem = 0
try:
tree = xml.parse(pathTofavourites)
rootElement = tree.getroot()
except Exception, e:
self.logMsg("LoadMenuOptionsThread -> Error Parsing favourites.xml : " + str(e), level=0)
for x in range(0, 10):
WINDOW.setProperty("xbmb3c_menuitem_name_" + str(x), "")
WINDOW.setProperty("xbmb3c_menuitem_action_" + str(x), "")
WINDOW.setProperty("xbmb3c_menuitem_collection_" + str(x), "")
return
for child in rootElement.findall('favourite'):
name = child.get('name')
action = child.text
if(len(name) > 1 and name[0:1] != '-'):
WINDOW.setProperty("xbmb3c_menuitem_name_" + str(menuItem), name)
WINDOW.setProperty("xbmb3c_menuitem_action_" + str(menuItem), action)
WINDOW.setProperty("xbmb3c_menuitem_collection_" + str(menuItem), name)
self.logMsg("xbmb3c_menuitem_name_" + str(menuItem) + " : " + name)
self.logMsg("xbmb3c_menuitem_action_" + str(menuItem) + " : " + action)
self.logMsg("xbmb3c_menuitem_collection_" + str(menuItem) + " : " + name)
menuItem = menuItem + 1
for x in range(menuItem, menuItem+10):
WINDOW.setProperty("xbmb3c_menuitem_name_" + str(x), "")
WINDOW.setProperty("xbmb3c_menuitem_action_" + str(x), "")
self.logMsg("xbmb3c_menuitem_name_" + str(x) + " : ")
self.logMsg("xbmb3c_menuitem_action_" + str(x) + " : ")
self.logMsg("xbmb3c_menuitem_collection_" + str(x) + " : ")