fix dvd hotplug: stop assuming dvd for every other medium. in case of multiple ISO...
[enigma2.git] / lib / python / Components / Sources / List.py
index e141da59fcb9a3a1ab1bfa0088c04219c537dd1b..89e1e71c123be81e681ccb1bb65622511c394f10 100644 (file)
@@ -1,5 +1,4 @@
 from Source import Source
-from Tools.Event import Event
 from Components.Element import cached
 
 class List(Source, object):
@@ -17,6 +16,7 @@ to generate HTML."""
                self.item_height = item_height
                self.fonts = fonts
                self.disable_callbacks = False
+               self.enableWrapAround = enableWrapAround
 
        def setList(self, list):
                self.__list = list
@@ -27,6 +27,9 @@ to generate HTML."""
        def entry_changed(self, index):
                if not self.disable_callbacks:
                        self.downstream_elements.entry_changed(self, index)
+                       
+       def count(self):
+               return len(self.__list)
 
        def selectionChanged(self, index):
                if self.disable_callbacks:
@@ -44,17 +47,32 @@ to generate HTML."""
        def setIndex(self, index):
                if self.master is not None:
                        self.master.index = index
+                       self.selectionChanged(index)
 
        @cached
        def getIndex(self):
                if self.master is not None:
                        return self.master.index
                else:
-                       return -1
+                       return None
 
        setCurrentIndex = setIndex
 
        index = property(getIndex, setIndex)
+       
+       def selectNext(self):
+               if self.getIndex() + 1 >= self.count():
+                       if self.enableWrapAround:
+                               self.index = 0
+               else:
+                       self.index += 1
+
+       def selectPrevious(self):
+               if self.getIndex() - 1 < 0:
+                       if self.enableWrapAround:
+                               self.index = self.count() - 1
+               else:
+                       self.index -= 1
 
        def updateList(self, list):
                """Changes the list without changing the selection or emitting changed Events"""