add new box depending rc visualization
[enigma2.git] / lib / python / Screens / Rc.py
diff --git a/lib/python/Screens/Rc.py b/lib/python/Screens/Rc.py
new file mode 100644 (file)
index 0000000..49ee1d7
--- /dev/null
@@ -0,0 +1,88 @@
+from Components.Pixmap import MovingPixmap, MultiPixmap
+from Tools.Directories import resolveFilename, SCOPE_SKIN
+from xml.etree.ElementTree import ElementTree
+from Components.config import config, ConfigInteger
+
+config.misc.rcused = ConfigInteger(default = 1)
+
+class Rc:
+       def __init__(self):
+               self["rc"] = MultiPixmap()
+               self["arrowdown"] = MovingPixmap()
+               self["arrowdown2"] = MovingPixmap()
+               self["arrowup"] = MovingPixmap()
+               self["arrowup2"] = MovingPixmap()
+               
+               self.rcheight = 500
+               self.rcheighthalf = 250
+               
+               self.selectpics = []
+               self.selectpics.append((self.rcheighthalf, ["arrowdown", "arrowdown2"], (-18,-70)))
+               self.selectpics.append((self.rcheight, ["arrowup", "arrowup2"], (-18,0)))
+               
+               self.readPositions()
+               self.clearSelectedKeys()
+               self.onShown.append(self.initRc)
+
+       def initRc(self):
+               self["rc"].setPixmapNum(config.misc.rcused.value)
+               
+                               
+       def readPositions(self):
+               tree = ElementTree(file = resolveFilename(SCOPE_SKIN, "rcpositions.xml"))
+               rcs = tree.getroot()
+               self.rcs = {}
+               for rc in rcs:
+                       id = int(rc.attrib["id"])
+                       self.rcs[id] = {}
+                       print "id:", id
+                       for key in rc:
+                               name = key.attrib["name"]
+                               pos = key.attrib["pos"].split(",")
+                               print "name:", name
+                               print "pos:", pos
+                               self.rcs[id][name] = (int(pos[0]), int(pos[1]))
+               
+       def getSelectPic(self, pos):
+               for selectPic in self.selectpics:
+                       if pos[1] <= selectPic[0]:
+                               print "pos[1]:", pos[1]
+                               print "selectPic[0]:", selectPic[0]
+                               return (selectPic[1], selectPic[2])
+               return None
+       
+       def hideRc(self):
+               self["rc"].hide()
+               self.hideSelectPics()
+               
+       def showRc(self):
+               self["rc"].show()
+
+       def selectKey(self, key):
+               rc = self.rcs[config.misc.rcused.value]
+               if rc.has_key(key):
+                       rcpos = self["rc"].getPosition()
+                       pos = rc[key]
+                       selectPics = self.getSelectPic(pos)
+                       selectPic = None
+                       for x in selectPics[0]:
+                               if x not in self.selectedKeys:
+                                       selectPic = x
+                                       break
+                       if selectPic is not None:
+                               print "selectPic:", selectPic
+                               self[selectPic].show()
+                               self[selectPic].moveTo(rcpos[0] + pos[0] + selectPics[1][0], rcpos[1] + pos[1] + selectPics[1][1], 1)
+                               self[selectPic].startMoving()
+                               self.selectedKeys.append(selectPic)
+       
+       def clearSelectedKeys(self):
+               self.showRc()
+               self.selectedKeys = []
+               self.hideSelectPics()
+               
+       def hideSelectPics(self):
+               for selectPic in self.selectpics:
+                       for pic in selectPic[1]:
+                               self[pic].hide()
+       
\ No newline at end of file