summaryrefslogtreecommitdiff
path: root/quickbutton
diff options
context:
space:
mode:
authorDr.Best <dr_best@users.schwerkraft.elitedvb.net>2009-05-17 21:50:32 (GMT)
committerDr.Best <dr_best@users.schwerkraft.elitedvb.net>2009-05-17 21:50:32 (GMT)
commit4c9639f5525a87251b14439be1d720d2b46bbdd9 (patch)
tree07666a95e608710db1e8122966b40fe2ff0fc743 /quickbutton
parent65b2daadfa887678bc2775c2544b5e4097f1fa53 (diff)
New plugin: Quickbutton - assign long key-press (red/green/yellow/blue) to plugins or E2 functions
Diffstat (limited to 'quickbutton')
-rw-r--r--quickbutton/CONTROL/control10
-rwxr-xr-xquickbutton/Makefile.am1
-rwxr-xr-xquickbutton/src/Makefile.am5
-rw-r--r--quickbutton/src/__init__.py0
-rw-r--r--quickbutton/src/keymap.xml8
-rw-r--r--quickbutton/src/maintainer.info2
-rw-r--r--quickbutton/src/plugin.py181
7 files changed, 207 insertions, 0 deletions
diff --git a/quickbutton/CONTROL/control b/quickbutton/CONTROL/control
new file mode 100644
index 0000000..113b18f
--- /dev/null
+++ b/quickbutton/CONTROL/control
@@ -0,0 +1,10 @@
+Package: enigma2-plugin-extensions-quickbutton
+Version: 1.0
+Description: Quickbutton - assign long key-press (red/green/yellow/blue) to plugins or E2 functions
+Architecture: mipsel
+Section: extra
+Priority: optional
+Maintainer: Dr. Best <dr.best@dreambox-tools.info>
+Homepage: http://www.dreambox-tools.info
+Depends: enigma2(>2.6git20090518)
+Source: http://enigma2-plugins.schwerkraft.elitedvb.net/
diff --git a/quickbutton/Makefile.am b/quickbutton/Makefile.am
new file mode 100755
index 0000000..af437a6
--- /dev/null
+++ b/quickbutton/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = src
diff --git a/quickbutton/src/Makefile.am b/quickbutton/src/Makefile.am
new file mode 100755
index 0000000..d9efe20
--- /dev/null
+++ b/quickbutton/src/Makefile.am
@@ -0,0 +1,5 @@
+installdir = /usr/lib/enigma2/python/Plugins/Extensions/Quickbutton
+
+install_PYTHON = *.py
+
+install_DATA = keymap.xml maintainer.info
diff --git a/quickbutton/src/__init__.py b/quickbutton/src/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/quickbutton/src/__init__.py
diff --git a/quickbutton/src/keymap.xml b/quickbutton/src/keymap.xml
new file mode 100644
index 0000000..3217def
--- /dev/null
+++ b/quickbutton/src/keymap.xml
@@ -0,0 +1,8 @@
+<keymap>
+<map context="QuickbuttonActions">
+ <key id="KEY_GREEN" mapto="green_l" flags="l" />
+ <key id="KEY_YELLOW" mapto="yellow_l" flags="l" />
+ <key id="KEY_RED" mapto="red_l" flags="l" />
+ <key id="KEY_BLUE" mapto="blue_l" flags="l" />
+</map>
+</keymap>
diff --git a/quickbutton/src/maintainer.info b/quickbutton/src/maintainer.info
new file mode 100644
index 0000000..f7598a6
--- /dev/null
+++ b/quickbutton/src/maintainer.info
@@ -0,0 +1,2 @@
+dr.best@dreambox-tools.info
+Quickbutton
diff --git a/quickbutton/src/plugin.py b/quickbutton/src/plugin.py
new file mode 100644
index 0000000..138c8e4
--- /dev/null
+++ b/quickbutton/src/plugin.py
@@ -0,0 +1,181 @@
+
+# Quickbutton
+#
+# $Id$
+#
+# Coded by Dr.Best (c) 2009
+# Support: www.dreambox-tools.info
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+
+from Screens.Screen import Screen
+from Screens.ChannelSelection import ChannelSelection
+from Plugins.Plugin import PluginDescriptor
+from Components.ActionMap import ActionMap
+from Components.PluginComponent import plugins
+from Plugins.Plugin import PluginDescriptor
+from Components.ConfigList import ConfigList, ConfigListScreen
+from Components.config import ConfigSubsection, ConfigText, configfile, ConfigSelection, getConfigListEntry
+from Components.config import config
+from Components.Button import Button
+from Screens.MessageBox import MessageBox
+
+
+config.plugins.Quickbutton = ConfigSubsection()
+config.plugins.Quickbutton.red = ConfigText(default = "", visible_width = 50, fixed_size = False)
+config.plugins.Quickbutton.green = ConfigText(default = "", visible_width = 50, fixed_size = False)
+config.plugins.Quickbutton.yellow = ConfigText(default = "", visible_width = 50, fixed_size = False)
+config.plugins.Quickbutton.blue = ConfigText(default = "", visible_width = 50, fixed_size = False)
+
+EPGListTitle = _("EPG List")
+
+def autostart(reason, **kwargs):
+ if "session" in kwargs:
+ session = kwargs["session"]
+ Quickbutton(session)
+
+def setup(session,**kwargs):
+ session.open(QuickbuttonSetup)
+
+def Plugins(**kwargs):
+
+ list = [PluginDescriptor(where = PluginDescriptor.WHERE_SESSIONSTART, fnc = autostart)]
+ list.append(PluginDescriptor(name="Setup Quickbutton", description=_("setup for Quickbutton"), where = [PluginDescriptor.WHERE_PLUGINMENU], fnc=setup))
+ return list
+
+class QuickbuttonSetup(ConfigListScreen, Screen):
+ skin = """
+ <screen position="100,100" size="550,400" title="Quickbutton Setup" >
+ <widget name="config" position="20,10" size="510,330" scrollbarMode="showOnDemand" />
+ <widget name="key_red" position="0,350" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+ <widget name="key_green" position="140,350" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
+ <ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,350" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+ <ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,350" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
+ </screen>"""
+
+ def __init__(self, session, args = None):
+ Screen.__init__(self, session)
+ self["key_red"] = Button(_("Cancel"))
+ self["key_green"] = Button(_("OK"))
+ self.entryguilist = []
+ red_selectedindex = "0"
+ if config.plugins.Quickbutton.red.value == EPGListTitle:
+ red_selectedindex = "1"
+ green_selectedindex = "0"
+ if config.plugins.Quickbutton.green.value == EPGListTitle:
+ green_selectedindex = "1"
+ yellow_selectedindex = "0"
+ if config.plugins.Quickbutton.yellow.value == EPGListTitle:
+ yellow_selectedindex = "1"
+ blue_selectedindex = "0"
+ if config.plugins.Quickbutton.blue.value == EPGListTitle:
+ blue_selectedindex = "1"
+ # feste Vorgaben...koennte man noch erweitern, da hole ich mir sinnvolle Vorschlaege aus Foren noch ein...
+ self.entryguilist.append(("0",_("Nothing")))
+ self.entryguilist.append(("1",EPGListTitle))
+ # Vorgaben aus EXTENSIONSMENU
+ index = 2
+ for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU):
+ self.entryguilist.append((str(index),str(p.name)))
+ if config.plugins.Quickbutton.red.value == str(p.name):
+ red_selectedindex = str(index)
+ if config.plugins.Quickbutton.green.value == str(p.name):
+ green_selectedindex = str(index)
+ if config.plugins.Quickbutton.yellow.value == str(p.name):
+ yellow_selectedindex = str(index)
+ if config.plugins.Quickbutton.blue.value == str(p.name):
+ blue_selectedindex = str(index)
+ index = index + 1
+
+ self.redchoice = ConfigSelection(default = red_selectedindex, choices = self.entryguilist)
+ self.greenchoice = ConfigSelection(default = green_selectedindex, choices = self.entryguilist)
+ self.yellowchoice = ConfigSelection(default = yellow_selectedindex, choices = self.entryguilist)
+ self.bluechoice = ConfigSelection(default = blue_selectedindex, choices = self.entryguilist)
+
+ cfglist = [
+ getConfigListEntry(_("assigned to long red"), self.redchoice),
+ getConfigListEntry(_("assigned to long green"), self.greenchoice),
+ getConfigListEntry(_("assigned to long yellow"), self.yellowchoice),
+ getConfigListEntry(_("assigned to long blue"), self.bluechoice)
+
+ ]
+ ConfigListScreen.__init__(self, cfglist, session)
+ self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
+ {
+ "green": self.keySave,
+ "cancel": self.keyClose,
+ "ok": self.keySave,
+ }, -2)
+
+ def keySave(self):
+ config.plugins.Quickbutton.red.value = self.entryguilist[int(self.redchoice.value)][1]
+ config.plugins.Quickbutton.green.value = self.entryguilist[int(self.greenchoice.value)][1]
+ config.plugins.Quickbutton.yellow.value = self.entryguilist[int(self.yellowchoice.value)][1]
+ config.plugins.Quickbutton.blue.value = self.entryguilist[int(self.bluechoice.value)][1]
+ config.plugins.Quickbutton.save()
+ configfile.save()
+ self.close()
+
+ def keyClose(self):
+ self.close()
+
+class Quickbutton(object):
+ def __init__(self, session):
+ self.session = session
+ QuickbuttonActionMap = ActionMap(["QuickbuttonActions"])
+ QuickbuttonActionMap.execBegin()
+ QuickbuttonActionMap.actions["green_l"] = self.greenlong
+ QuickbuttonActionMap.actions["yellow_l"] = self.yellowlong
+ QuickbuttonActionMap.actions["red_l"] = self.redlong
+ QuickbuttonActionMap.actions["blue_l"] = self.bluelong
+
+ def greenlong(self):
+ self.getPlugin(str(config.plugins.Quickbutton.green.value))
+
+ def yellowlong(self):
+ self.getPlugin(str(config.plugins.Quickbutton.yellow.value))
+
+ def redlong(self):
+ self.getPlugin(str(config.plugins.Quickbutton.red.value))
+
+ def bluelong(self):
+ self.getPlugin(str(config.plugins.Quickbutton.blue.value))
+
+ def getPlugin(self, pname):
+ msgText = _("Unknown Error")
+ error = True
+ if pname != "":
+ if pname == EPGListTitle:
+ print "[Quickbutton] EPG List"
+ from Screens.EpgSelection import EPGSelection
+ self.session.open(EPGSelection, self.session.nav.getCurrentlyPlayingServiceReference())
+ error = False
+ else:
+ ca = None
+ for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU):
+ if pname == str(p.name):
+ print "[Quickbutton] %s"%p.name
+ ca = p
+ if ca is not None:
+ try:
+ servicelist = self.session.instantiateDialog(ChannelSelection)
+ ca(session = self.session, servicelist = servicelist)
+ error = False
+ except Exception, e:
+ msgText = _("Error!\nError Text: %s"%e)
+ else:
+ msgText = _("Plugin not found!")
+ else:
+ msgText = _("No plugin assigned!")
+ if error:
+ self.session.open(MessageBox,msgText, MessageBox.TYPE_INFO)
+