diff --git a/platformcode/keymaptools.py b/platformcode/keymaptools.py index 6655c3dc..246f579a 100644 --- a/platformcode/keymaptools.py +++ b/platformcode/keymaptools.py @@ -1,18 +1,14 @@ # -*- coding: utf-8 -*- from builtins import map -#from builtins import str -import sys +import sys, xbmc, xbmcaddon, xbmcgui, base64, json PY3 = False if sys.version_info[0] >= 3: PY3 = True; unicode = str; unichr = chr; long = int from threading import Timer -import xbmc -import xbmcaddon -import xbmcgui - from channelselector import get_thumb from platformcode import config, logger +import channelselector class KeyListener(xbmcgui.WindowXMLDialog): @@ -66,23 +62,11 @@ def set_key(): from platformcode import platformtools import xbmc file_xml = "special://profile/keymaps/kod.xml" - data = '' % new_key + 'runplugin(plugin://' \ - 'plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAia2V5bWFwIiwNCiAgICAib3BlbiI6IHRydWUNCn0=)' + data = '' % new_key + 'runplugin(plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAia2V5bWFwIiwNCiAgICAib3BlbiI6IHRydWUNCn0=)' filetools.write(xbmc.translatePath(file_xml), data) platformtools.dialog_notification(config.get_localized_string(70700),config.get_localized_string(70702)) config.set_setting("shortcut_key", new_key) - # file_idioma = filetools.join(config.get_runtime_path(), 'resources', 'language', 'Spanish', 'strings.xml') - # data = filetools.read(file_idioma) - # value_xml = scrapertools.find_single_match(data, '([^<]+)<') - # if "tecla" in value_xml: - # data = data.replace(value_xml, 'Cambiar tecla/botón para abrir la ventana (Guardada: %s)' % new_key) - # elif "key" in value_xml: - # data = data.replace(value_xml, 'Change key/button to open the window (Saved: %s)' % new_key) - # else: - # data = data.replace(value_xml, - # 'Cambiamento di chiave/pulsante per aprire la finestra (Salvato: %s)' % new_key) - # filetools.write(file_idioma, data) return @@ -97,18 +81,7 @@ def delete_key(): config.set_setting("shortcut_key", '') - -MAIN_MENU = { - "news": {"label": config.get_localized_string(30130), "icon": get_thumb("news.png"), "order": 0}, - "channels": {"label": config.get_localized_string(30118), "icon": get_thumb("channels.png"), "order": 1}, - "search": {"label": config.get_localized_string(70082), "icon": get_thumb("search.png"), "order": 2}, - "videolibrary": {"label": config.get_localized_string(30131), "icon": get_thumb("videolibrary.png"), "order": 3}, - "kodfavorites": {"label": config.get_localized_string(70527), "icon": get_thumb("mylink.png"), "order": 4}, - "favorites": {"label": config.get_localized_string(30102), "icon": get_thumb("favorites.png"), "order": 5}, - "downloads": {"label": config.get_localized_string(60332), "icon": get_thumb("downloads.png"), "order": 6}, - "settings": {"label": config.get_localized_string(60333), "icon": get_thumb("setting_0.png"), "order": 7} -} - +MAIN_MENU = channelselector.getmainlist() class Main(xbmcgui.WindowXMLDialog): def __init__(self, *args, **kwargs): @@ -119,50 +92,27 @@ class Main(xbmcgui.WindowXMLDialog): if config.get_platform(True)['num_version'] < 18: self.setCoordinateResolution(2) - for menuentry in list(MAIN_MENU.keys()): - item = xbmcgui.ListItem(MAIN_MENU[menuentry]["label"]) - item.setProperty("thumb", str(MAIN_MENU[menuentry]["icon"])) - item.setProperty("identifier", str(menuentry)) - item.setProperty("order", str(MAIN_MENU[menuentry]["order"])) + for menuentry in MAIN_MENU: + item = xbmcgui.ListItem(menuentry.title) + item.setProperty("thumb", menuentry.thumbnail) + action = {"channel" : menuentry.channel, "action" : menuentry.action} + item.setProperty("action", base64.b64encode(json.dumps(action).encode())) self.items.append(item) - self.items.sort(key=lambda it: it.getProperty("order")) self.getControl(32500).addItems(self.items) self.setFocusId(32500) def onClick(self, control_id): if control_id == 32500: - identifier = self.getControl(32500).getSelectedItem().getProperty("identifier") - if identifier == "news": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJuZXdzIg0KfQ==")') - elif identifier == "channels": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAiZ2V0Y2hhbm5lbHR5cGVzIiwgDQogICAgImNoYW5uZWwiOiAiY2hhbm5lbHNlbGVjdG9yIg0KfQ==")') - elif identifier == "search": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJzZWFyY2giDQp9")') - elif identifier == "videolibrary": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJ2aWRlb2xpYnJhcnkiDQp9")') - elif identifier == "favorites": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJmYXZvcml0ZXMiDQp9")') - elif identifier == "kodfavorites": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJrb2RmYXZvcml0ZXMiDQp9")') - elif identifier == "downloads": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJkb3dubG9hZHMiDQp9")') - elif identifier == "settings": - xbmc.executebuiltin('Dialog.Close(all,true)') - xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJzZXR0aW5nIg0KfQ==")') + action = self.getControl(32500).getSelectedItem().getProperty("action") + xbmc.executebuiltin('Dialog.Close(all,true)') + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.kod/?' + action + '")') + def onAction(self, action): # exit if action.getId() in [xbmcgui.ACTION_PREVIOUS_MENU, xbmcgui.ACTION_NAV_BACK]: - # main.close() xbmc.executebuiltin('Dialog.Close(all,true)') if action.getId() == xbmcgui.ACTION_CONTEXT_MENU: