add configText for entering text in the configList (numbers only at the moment)
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Fri, 11 Nov 2005 23:16:40 +0000 (23:16 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Fri, 11 Nov 2005 23:16:40 +0000 (23:16 +0000)
data/skin.xml
lib/python/Components/config.py
lib/python/Screens/TimerEntry.py

index 6716acf327fa9ff7aac650336e75380ab0b55898..6e62b1c51dd2ebf60e489a2f3adf9a9c46b20fb2 100644 (file)
@@ -83,8 +83,8 @@
                        <widget name="footer" position="20,250" size="360,25" font="Arial;23"/>
                        <!--<widget name="introduction" position="20,360" size="280,30" font="Arial;23" />-->
                </screen>
-               <screen name="TimerEntry" position="390,100" size="250,400" title="Timer entry">
-                       <widget name="config" position="5,10" size="240,350" />
+               <screen name="TimerEntry" position="100,100" size="500,400" title="Timer entry">
+                       <widget name="config" position="5,10" size="480,350" />
                        <widget name="introduction" position="20,360" size="250,30" font="Arial;23" />
                </screen>
                <screen name="NetworkSetup" position="140,125" size="460,280" title="Network Setup">
                        <widget name="config" position="10,30" size="420,220" />
                </screen>
 <!--           <screen name="TimerEditList" position="160,100" size="420,430" title="Timer Editor">-->
-               <screen name="TimerEditList" position="70,100" size="300,400" title="Timer Editor">
-                       <widget name="timerlist" position="10,30" size="280,300" />
+               <screen name="TimerEditList" position="70,100" size="500,400" title="Timer Editor">
+                       <widget name="timerlist" position="10,30" size="480,300" />
                </screen>
                <screen name="clockDisplay" position="300,100" size="300,300">
                        <widget name="okbutton" position="10,10" size="280,40" />
index b5a767a23c13b9635e3a81720a8bc8dfbef4b2a0..75dee0ce9119f29810634abd9419f15595859074 100644 (file)
@@ -265,6 +265,53 @@ class configSequence:
                        # (this code is heavily ink optimized!)
                return ("mtext"[1-selected:], value, [mPos])
 
+class configText:
+       # used as first parameter
+       # is the text of a fixed size or is the user able to extend the length of the text
+       extendableSize = 1
+       fixedSize = 2
+
+       def __init__(self, parent):
+               self.parent = parent
+               self.markedPos = 0
+               self.mode = self.parent.vals[0]
+
+       def checkValues(self):
+               if (self.markedPos < 0):
+                       self.markedPos = 0
+               if (self.markedPos >= len(self.parent.value)):
+                       self.markedPos = len(self.parent.value) - 1
+                       
+       def cancel(self):
+               self.parent.reload()
+
+       def save(self):
+               self.parent.save()
+
+       def handleKey(self, key):
+               #this will no change anything on the value itself
+               #so we can handle it here in gui element
+               if key == config.key["prevElement"]:
+                       self.markedPos -= 1
+               if key == config.key["nextElement"]:
+                       self.markedPos += 1
+                       if (self.mode == self.extendableSize):
+                               if (self.markedPos >= len(self.parent.value)):
+                                       self.parent.value = self.parent.value.ljust(len(self.parent.value) + 1)
+                       
+               
+               if key >= config.key["0"] and key <= config.key["9"]:
+                       number = 9 - config.key["9"] + key
+
+                       self.parent.value = self.parent.value[0:self.markedPos] + str(number) + self.parent.value[self.markedPos + 1:]
+               
+               self.checkValues()                      
+               
+               self.parent.change()    
+
+       def __call__(self, selected):                   #needed by configlist
+               return ("mtext"[1-selected:], str(self.parent.value), [self.markedPos])
+               
 class configValue:
        def __init__(self, obj):
                self.obj = obj
@@ -342,11 +389,13 @@ class configElement:
 
        def datafromFile(self, control, data):
                if control == ConfigSlider:
-                       return int(data);
+                       return int(data)
                elif control == configSelection:
-                       return int(data);
+                       return int(data)
                elif control == configDateTime:
-                       return int(data);
+                       return int(data)
+               elif control == configText:
+                       return str(data)
                elif control == configSequence:
                        list = [ ]
                        part = data.split(self.vals[0])
@@ -360,11 +409,14 @@ class configElement:
 
        def datatoFile(self, control, data):
                if control == ConfigSlider:
-                       return str(data);
+                       return str(data)
                elif control == configSelection:
-                       return str(data);
+                       return str(data)
                elif control == configDateTime:
-                       return str(data);
+                       return str(data)
+               elif control == configText:
+                       return str(data.strip())
+
                elif control == configSequence:
                        value = ((len(data) * ("%d" + self.vals[0]))[0:-1]) % tuple(data)
 #                      just in case you don't understand the above, here an equivalent:
index c61e9ab3ba1e11ed0d8e4b88430f67facc62e43a..000e8c28b148e80ee02355950cfe8807d41fb706 100644 (file)
@@ -40,6 +40,7 @@ class TimerEntry(Screen):
             config.timerentry = ConfigSubsection()
 
             config.timerentry.type = configElement_nonSave("config.timerentry.type", configSelection, 0, ("once", "repeated"))
+            config.timerentry.description = configElement_nonSave("config.timerentry.description", configText, timer.description, (configText.extendableSize,))
             config.timerentry.startdate = configElement_nonSave("config.timerentry.startdate", configDateTime, timer.begin, ("%d.%B %Y", 86400))
             config.timerentry.starttime = configElement_nonSave("config.timerentry.starttime", configSequence, [int(strftime("%H", localtime(timer.begin))), int(strftime("%M", localtime(timer.begin)))], configsequencearg.get("CLOCK"))
             #config.timerentry.starttime = configElement_nonSave("config.timerentry.starttime", configDateTime, timer.begin, ("%H:%M", 60))
@@ -50,6 +51,7 @@ class TimerEntry(Screen):
 
     def createSetup(self):
         self.list = []
+        self.list.append(getConfigListEntry("Description", config.timerentry.description))
         self.list.append(getConfigListEntry("TimerType", config.timerentry.type))
         
         if (config.timerentry.type.value == 0):