aboutsummaryrefslogtreecommitdiff
path: root/lib/python
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-07-22 21:50:17 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-07-22 21:50:17 +0000
commit1f3de605b9be5751d14c39f785adc5d4af2fced7 (patch)
tree47472e85d1a03f1ee0729da28930e3a0c80a6632 /lib/python
parent02f8f9a6d959adf568c0ea16a2d3f4e09bcc2ba8 (diff)
downloadenigma2-1f3de605b9be5751d14c39f785adc5d4af2fced7.tar.gz
enigma2-1f3de605b9be5751d14c39f785adc5d4af2fced7.zip
- add mark in channellist
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/Components/ServiceList.py13
-rw-r--r--lib/python/Screens/ChannelSelection.py89
-rw-r--r--lib/python/Screens/InfoBar.py4
-rw-r--r--lib/python/Screens/Menu.py80
4 files changed, 150 insertions, 36 deletions
diff --git a/lib/python/Components/ServiceList.py b/lib/python/Components/ServiceList.py
index 1aa3d487..5725871d 100644
--- a/lib/python/Components/ServiceList.py
+++ b/lib/python/Components/ServiceList.py
@@ -32,6 +32,9 @@ class ServiceList(HTMLComponent, GUIComponent):
# mark stuff
def clearMarked(self):
self.l.clearMarked()
+
+ def clearMarks(self):
+ self.l.initMarked()
def isMarked(self, ref):
return self.l.isMarked(ref)
@@ -42,3 +45,13 @@ class ServiceList(HTMLComponent, GUIComponent):
def removeMarked(self, ref):
self.l.removeMarked(ref)
+ def getMarked(self):
+ i = self.l
+ i.markedQueryStart()
+ ref = eServiceReference()
+ marked = [ ]
+ while i.markedQueryNext(ref) == 0:
+ marked.append(ref)
+ ref = eServiceReference()
+
+ return marked
diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py
index 289d2e5b..465d3de3 100644
--- a/lib/python/Screens/ChannelSelection.py
+++ b/lib/python/Screens/ChannelSelection.py
@@ -5,17 +5,63 @@ from Components.ActionMap import ActionMap
from enigma import eServiceReference
+from Screens.Menu import FixedMenu
+
+import xml.dom.minidom
+
+class ChannelContextMenu(FixedMenu):
+ def __init__(self, session, csel):
+ self.csel = csel
+
+ menu = [("back", self.close)]
+
+ if csel.movemode:
+ menu.append(("disable move mode", self.moveMode))
+ else:
+ menu.append(("enable move mode", self.moveMode))
+
+ if csel.bouquet_mark_edit:
+ menu.append(("end bouquet edit", self.bouquetMarkEnd))
+ menu.append(("abort bouquet edit", self.bouquetMarkAbort))
+ else:
+ menu.append(("edit bouquet...", self.bouquetMarkStart))
+
+ FixedMenu.__init__(self, session, "Channel Selection", menu)
+ self.skinName = "Menu"
+
+ def moveMode(self):
+ self.csel.setMoveMode(self.csel.movemode)
+ self.close()
+
+ def bouquetMarkStart(self):
+ self.csel.startMarkedEdit()
+ self.close()
+
+ def bouquetMarkEnd(self):
+ self.csel.endMarkedEdit(abort=False)
+ self.close()
+
+ def bouquetMarkAbort(self):
+ self.csel.endMarkedEdit(abort=True)
+ self.close()
+
class ChannelSelection(Screen):
def __init__(self, session):
Screen.__init__(self, session)
-
+
+ self.movemode = False
+ self.bouquet_mark_edit = False
+
+ ## FIXME
+ self.__marked = [ ]
+
self["key_red"] = Button("red")
self["key_green"] = Button("green")
self["key_yellow"] = Button("yellow")
self["key_blue"] = Button("blue")
self["list"] = ServiceList()
- self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(provider=="ARD") && (type == 1)"""))
+ self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(type == 1)"""))
#self["okbutton"] = Button("ok", [self.channelSelected])
@@ -31,17 +77,46 @@ class ChannelSelection(Screen):
{
"cancel": self.close,
"ok": self.channelSelected,
- "mark": self.doMark
+ "mark": self.doMark,
+ "contextMenu": self.doContext
})
self["actions"].csel = self
+ # marked edit mode
+
+ def startMarkedEdit(self):
+ self.bouquet_mark_edit = True
+ self.clearMarks()
+
+ # TODO
+ marked = self.__marked
+
+ l = self["list"]
+ for x in marked:
+ print "mark: " + str(x)
+ l.addMarked(x)
+
+ def endMarkedEdit(self, abort):
+ self.bouquet_mark_edit = True
+ new_marked = self["list"].getMarked()
+ self.__marked = new_marked
+ self.clearMarks()
+ self.bouquet_mark_edit = False
+
+ def clearMarks(self):
+ self["list"].clearMarks()
+
def doMark(self):
+ if not self.bouquet_mark_edit:
+ return
+
ref = self["list"].getCurrent()
if self["list"].isMarked(ref):
self["list"].removeMarked(ref)
else:
self["list"].addMarked(ref)
-
+
+ # ...
def channelSelected(self):
self.session.nav.playService(self["list"].getCurrent())
self.close()
@@ -56,3 +131,9 @@ class ChannelSelection(Screen):
def moveDown(self):
self["list"].moveDown()
+ def doContext(self):
+ self.session.open(ChannelContextMenu, self)
+
+ def setMoveMode(self, mode):
+ self.movemode = mode
+
diff --git a/lib/python/Screens/InfoBar.py b/lib/python/Screens/InfoBar.py
index ee09e577..f89eba0f 100644
--- a/lib/python/Screens/InfoBar.py
+++ b/lib/python/Screens/InfoBar.py
@@ -13,7 +13,7 @@ from enigma import *
import time
# hack alert!
-from Menu import *
+from Menu import MainMenu, mdom
class InfoBar(Screen):
def __init__(self, session):
@@ -51,7 +51,7 @@ class InfoBar(Screen):
print "loading mainmenu XML..."
menu = mdom.childNodes[0]
assert menu.tagName == "menu", "root element in menu must be 'menu'!"
- self.session.open(Menu, menu, menu.childNodes)
+ self.session.open(MainMenu, menu, menu.childNodes)
def switchChannelUp(self):
self.servicelist.moveUp()
diff --git a/lib/python/Screens/Menu.py b/lib/python/Screens/Menu.py
index 3b54577e..503990b6 100644
--- a/lib/python/Screens/Menu.py
+++ b/lib/python/Screens/Menu.py
@@ -122,37 +122,7 @@ class configOSD(Screen):
self["sld_gamma"] = ProgressBar()
self["sld_gamma"].setValue(50)
-
-
-
class Menu(Screen):
- #add file load functions for the xml-file
- #remove old code (i.e. goScan / goClock...)
-
- def openDialog(self, dialog):
- self.session.open(dialog)
-
- def goSetup(self):
- self.session.open(configTest)
-
- def setModeTV(self):
- print "set Mode to TV"
- pass
-
- def setModeRadio(self):
- print "set Mode to Radio"
- pass
-
- def setModeFile(self):
- print "set Mode to File"
- pass
-
- def goScan(self):
- self.session.open(ServiceScan)
-
- def goClock(self):
- self.session.open(clockDisplay, Clock())
-
def okbuttonClick(self):
print "okbuttonClick"
selection = self["menu"].getCurrent()
@@ -206,3 +176,53 @@ class Menu(Screen):
a = getValbyAttr(parent, "text")
self["title"] = Header(a)
+class FixedMenu(Screen):
+ def okbuttonClick(self):
+ selection = self["menu"].getCurrent()
+ selection[1]()
+
+ def __init__(self, session, title, list):
+ Screen.__init__(self, session)
+
+ self["menu"] = MenuList(list)
+
+ self["actions"] = ActionMap(["OkCancelActions"],
+ {
+ "ok": self.okbuttonClick,
+ "cancel": self.close
+ })
+
+ self["title"] = Header(title)
+
+
+class MainMenu(Menu):
+ #add file load functions for the xml-file
+ #remove old code (i.e. goScan / goClock...)
+
+ def __init__(self, *x):
+ Menu.__init__(self, *x)
+ self.skinName = "Menu"
+
+ def openDialog(self, dialog):
+ self.session.open(dialog)
+
+ def goSetup(self):
+ self.session.open(configTest)
+
+ def setModeTV(self):
+ print "set Mode to TV"
+ pass
+
+ def setModeRadio(self):
+ print "set Mode to Radio"
+ pass
+
+ def setModeFile(self):
+ print "set Mode to File"
+ pass
+
+ def goScan(self):
+ self.session.open(ServiceScan)
+
+ def goClock(self):
+ self.session.open(clockDisplay, Clock())