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