diff --git a/plugin.video.alfa/channels/minimenu.py b/plugin.video.alfa/channels/minimenu.py new file mode 100755 index 00000000..1cdd3af9 --- /dev/null +++ b/plugin.video.alfa/channels/minimenu.py @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- +#------------------------------------------------------------ +# XBMC Plugin +#------------------------------------------------------------ + +import xbmcgui +import xbmc + +from platformcode import config +from core import filetools + +main = None + + +MAIN_MENU = { + "news" : {"label" : "Novedades", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_news.png"), "order": 0}, + "channels" : {"label" : "Canales", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_channels.png"), "order": 1}, + "search" : {"label" : "Buscador", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_search.png"), "order": 2}, + "favorites" : {"label" : "Favoritos", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_favorites.png"), "order": 3}, + "videolibrary" : {"label" : "Videoteca", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_videolibrary.png"), "order": 4}, + "downloads" : {"label" : "Descargas", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_downloads.png"), "order": 5}, + "settings" : {"label" : "Configuración", "icon" : filetools.join(config.get_runtime_path(),"resources","media","general","default","thumb_setting_0.png"), "order": 6}, + } + + + +class Main(xbmcgui.WindowXMLDialog): + + def __init__( self, *args, **kwargs ): + self.items = [] + self.open = kwargs.get("open") + + def onInit(self): + self.setCoordinateResolution(2) + + + if self.open: + for menuentry in 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"])) + self.items.append(item) + + self.items.sort(key=lambda it:int(it.getProperty("order"))) + self.getControl(32500).addItems(self.items) + self.setFocusId(32500) + self.open = False + + def onClick(self,controlId): + if controlId == 32500: + identifier = self.getControl(32500).getSelectedItem().getProperty("identifier") + if identifier == "news": + self.close() + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJuZXdzIg0KfQ==")') + elif identifier == "channels": + self.close() + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAiZ2V0Y2hhbm5lbHR5cGVzIiwgDQogICAgImNoYW5uZWwiOiAiY2hhbm5lbHNlbGVjdG9yIg0KfQ==")') + elif identifier == "search": + self.close() + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJzZWFyY2giDQp9")') + elif identifier == "favorites": + self.close() + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJmYXZvcml0ZXMiDQp9")') + elif identifier == "videolibrary": + self.close() + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJ2aWRlb2xpYnJhcnkiDQp9")') + elif identifier == "downloads": + self.close() + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJkb3dubG9hZHMiDQp9")') + elif identifier == "settings": + self.close() + xbmc.executebuiltin('ActivateWindow(10025, "plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAibWFpbmxpc3QiLCANCiAgICAiY2hhbm5lbCI6ICJzZXR0aW5nIg0KfQ==")') + + + + def onAction(self,action): + #exit + global main + if action.getId() == 92 or action.getId() == 10: + main.close() + del main + if action.getId() == 117: + config.open_settings() + + +def start(item): + global main + main = Main('script-shortcut-menu.xml',config.get_runtime_path(),open=True) + main.doModal() + + diff --git a/plugin.video.alfa/platformcode/editor_keymap.py b/plugin.video.alfa/platformcode/editor_keymap.py new file mode 100755 index 00000000..4c59b4d4 --- /dev/null +++ b/plugin.video.alfa/platformcode/editor_keymap.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + +import xbmcgui +import xbmcaddon +from platformcode import config +from core import filetools +from threading import Timer + +class KeyListener(xbmcgui.WindowXMLDialog): + TIMEOUT = 10 + + def __new__(cls): + gui_api = tuple(map(int, xbmcaddon.Addon('xbmc.gui').getAddonInfo('version').split('.'))) + file_name = "DialogNotification.xml" if gui_api >= (5, 11, 0) else "DialogKaiToast.xml" + return super(KeyListener, cls).__new__(cls, file_name, "") + + def __init__(self): + self.key = None + + def onInit(self): + try: + self.getControl(401).addLabel("Presiona la tecla a usar para abrir la ventana") + self.getControl(402).addLabel("Tienes %s segundos" % self.TIMEOUT) + except AttributeError: + self.getControl(401).setLabel("Presiona la tecla a usar para abrir la ventana") + self.getControl(402).setLabel("Tienes %s segundos" % self.TIMEOUT) + + self.getControl(400).setImage(filetools.join(config.get_runtime_path(),"resources","images","matchcenter","matchcenter.png")) + + def onAction(self, action): + code = action.getButtonCode() + self.key = None if code == 0 else str(code) + self.close() + + @staticmethod + def record_key(): + dialog = KeyListener() + timeout = Timer(KeyListener.TIMEOUT, dialog.close) + timeout.start() + dialog.doModal() + timeout.cancel() + key = dialog.key + del dialog + return key + + +def start(): + tecla_guardada = config.get_setting("keymap_edit", "editor_keymap") + nuevakey = KeyListener().record_key() + if nuevakey and tecla_guardada != nuevakey: + from core import filetools + from platformcode import platformtools + import xbmc + file_xml = "special://profile/keymaps/alfa.xml" + data = '' % nuevakey + 'runplugin(plugin://' \ + 'plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAic3RhcnQiLCANCiAgICAiY2hhbm5lbCI6ICJtaW5pbWVudSIsIA0KICAgICJpbmZvTGFiZWxzIjoge30NCn0=)' + filetools.write(xbmc.translatePath(file_xml), data) + platformtools.dialog_notification("Tecla guardada", "Reinicia Kodi para que se apliquen los cambios") + + from core import scrapertools + config.set_setting("keymap_edit", nuevakey, "editor_keymap") + 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)' % nuevakey) + elif "key" in value_xml: + data = data.replace(value_xml, 'Change key/button to open the window (Saved: %s)' % nuevakey) + else: + data = data.replace(value_xml, 'Cambiamento di chiave/pulsante per aprire la finestra (Salvato: %s)' % nuevakey) + filetools.write(file_idioma, data) + + return diff --git a/plugin.video.alfa/platformcode/launcher.py b/plugin.video.alfa/platformcode/launcher.py index 763a44e4..89f5a4ee 100755 --- a/plugin.video.alfa/platformcode/launcher.py +++ b/plugin.video.alfa/platformcode/launcher.py @@ -42,6 +42,9 @@ def run(item=None): logger.info(item.tostring()) try: + if item.action == "editor_keymap": + from platformcode import editor_keymap + return editor_keymap.start() # If item has no action, stops here if item.action == "": diff --git a/plugin.video.alfa/resources/language/English/strings.xml b/plugin.video.alfa/resources/language/English/strings.xml index 784ad0af..829ffb51 100755 --- a/plugin.video.alfa/resources/language/English/strings.xml +++ b/plugin.video.alfa/resources/language/English/strings.xml @@ -265,4 +265,5 @@ Cambios aplicados Buscar Actualizar canales: + Add key to open Shortcut diff --git a/plugin.video.alfa/resources/language/Spanish/strings.xml b/plugin.video.alfa/resources/language/Spanish/strings.xml index 6d28556e..17383985 100755 --- a/plugin.video.alfa/resources/language/Spanish/strings.xml +++ b/plugin.video.alfa/resources/language/Spanish/strings.xml @@ -262,5 +262,5 @@ Cambios aplicados Buscar Actualizar canales: - + Añadir tecla para el menu Shortcut diff --git a/plugin.video.alfa/resources/settings.xml b/plugin.video.alfa/resources/settings.xml old mode 100644 new mode 100755 index b5bbd959..cdf00232 --- a/plugin.video.alfa/resources/settings.xml +++ b/plugin.video.alfa/resources/settings.xml @@ -49,5 +49,8 @@ - + + + + diff --git a/plugin.video.alfa/resources/skins/Default/720p/script-shortcut-menu.xml b/plugin.video.alfa/resources/skins/Default/720p/script-shortcut-menu.xml new file mode 100755 index 00000000..21cceb48 --- /dev/null +++ b/plugin.video.alfa/resources/skins/Default/720p/script-shortcut-menu.xml @@ -0,0 +1,229 @@ + + + 0.52 + + 147 + 180 + + 32500 + + + + + + + + + + + 0 + 0 + 969 + 283 + Shorcut/dialog-bg-solid.png + + + 0 + 0 + 969 + 70 + Shorcut/white70.png + + + 70 + -30 + 0 + 969 + 70 + font20_title + + left + center + black + + + -1920 + -1080 + 5760 + 3240 + - + - + Action(close) + + + button overlay to avoid closing in dialog area + 0 + 0 + 969 + 283 + - + - + noop + + + 969 + 11 + 48 + 48 + 48 + 48 + - + - + + Conditional + Shorcut/close.png + Shorcut/logo.png + Shorcut/close.png + Shorcut/logo.png + Action(close) + 32500 + 32500 + + + + + -21 + 50 + 1011 + 253 + Shorcut/dialogbutton-nofo.png + + + -139 + 55 + 980 + 220 + 32501 + 61 + horizontal + 200 + 61 + Conditional + Conditional + + 2 + + 5 + 10 + 347 + 260 + Shorcut/button-nofo.png + + + 30 + 149 + 306 + 75 + Shorcut/black.png + + + 95 + 23 + 160 + 130 + $INFO[ListItem.Property(thumb)] + keep + center + + + 329 + 24 + 50 + 50 + keep + $INFO[ListItem.Overlay] + + + 25 + 146 + 300 + 74 + + text_shadow + font12 + center + center + + + + + 0.10 + + + + + + + 2 + + 340 + 245 + Shorcut/button-nofo.png + Unfocus + Focus + + + 340 + 237 + Shorcut/button-fo.png + Unfocus + + + 5 + 24 + 50 + 50 + keep + $INFO[ListItem.Overlay] + + + 23 + 149 + 298 + 75 + Shorcut/black.png + + + 95 + 23 + 160 + 130 + $INFO[ListItem.Property(thumb)] + keep + center + + + 25 + 146 + 300 + 74 + font12 + + center + center + + + + + + -122 + 280 + 972 + 15 + Shorcut/white.png + Shorcut/white.png + Shorcut/white.png + - + - + false + horizontal + 32500 + 32500 + 32500 + 32500 + Conditional + + + + + diff --git a/plugin.video.alfa/resources/skins/Default/media/Shorcut/button-fo.png b/plugin.video.alfa/resources/skins/Default/media/Shorcut/button-fo.png new file mode 100755 index 00000000..a161d6ef Binary files /dev/null and b/plugin.video.alfa/resources/skins/Default/media/Shorcut/button-fo.png differ diff --git a/plugin.video.alfa/resources/skins/Default/media/Shorcut/close.png b/plugin.video.alfa/resources/skins/Default/media/Shorcut/close.png new file mode 100755 index 00000000..0a144666 Binary files /dev/null and b/plugin.video.alfa/resources/skins/Default/media/Shorcut/close.png differ diff --git a/plugin.video.alfa/resources/skins/Default/media/Shorcut/dialog-bg-solid-white.png b/plugin.video.alfa/resources/skins/Default/media/Shorcut/dialog-bg-solid-white.png new file mode 100755 index 00000000..225aae63 Binary files /dev/null and b/plugin.video.alfa/resources/skins/Default/media/Shorcut/dialog-bg-solid-white.png differ diff --git a/plugin.video.alfa/resources/skins/Default/media/Shorcut/dialog-bg-solid.png b/plugin.video.alfa/resources/skins/Default/media/Shorcut/dialog-bg-solid.png new file mode 100755 index 00000000..e8c13ebd Binary files /dev/null and b/plugin.video.alfa/resources/skins/Default/media/Shorcut/dialog-bg-solid.png differ diff --git a/plugin.video.alfa/resources/skins/Default/media/Shorcut/logo.png b/plugin.video.alfa/resources/skins/Default/media/Shorcut/logo.png new file mode 100755 index 00000000..d8a680fe Binary files /dev/null and b/plugin.video.alfa/resources/skins/Default/media/Shorcut/logo.png differ diff --git a/plugin.video.alfa/resources/skins/Default/media/Shorcut/white.png b/plugin.video.alfa/resources/skins/Default/media/Shorcut/white.png new file mode 100755 index 00000000..528c66f6 Binary files /dev/null and b/plugin.video.alfa/resources/skins/Default/media/Shorcut/white.png differ diff --git a/plugin.video.alfa/resources/skins/Default/media/Shorcut/white70.png b/plugin.video.alfa/resources/skins/Default/media/Shorcut/white70.png new file mode 100755 index 00000000..d428a73a Binary files /dev/null and b/plugin.video.alfa/resources/skins/Default/media/Shorcut/white70.png differ