add a blinking point to the infobar
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Fri, 25 Nov 2005 05:51:44 +0000 (05:51 +0000)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Fri, 25 Nov 2005 05:51:44 +0000 (05:51 +0000)
the blinking point appears when doing an instant record
it is a hack up to now
the point looks ugly, because the transparency needs to be explored first

data/record.png [new file with mode: 0755]
data/skin.xml
lib/python/Components/BlinkingPoint.py [new file with mode: 0644]
lib/python/Components/Makefile.am
lib/python/Components/Pixmap.py [new file with mode: 0644]
lib/python/Screens/InfoBarGenerics.py

diff --git a/data/record.png b/data/record.png
new file mode 100755 (executable)
index 0000000..9190d49
Binary files /dev/null and b/data/record.png differ
index 66bcd20..b2ba569 100644 (file)
                        <widget name="theClock" position="10,60" size="280,50" />
                </screen>
                <screen name="InfoBar" flags="wfNoBorder" position="0,380" size="720,148" title="InfoBar">
                        <widget name="theClock" position="10,60" size="280,50" />
                </screen>
                <screen name="InfoBar" flags="wfNoBorder" position="0,380" size="720,148" title="InfoBar">
-                       <ePixmap position="0,0" size="720,148" pixmap="/usr/share/enigma2/info-bg.png" />
+                       <ePixmap position="0,0" zPosition="1" size="720,148" pixmap="/usr/share/enigma2/info-bg.png" />
                                                
                                                
+                       <widget name="BlinkingPoint" position="430,35" size="20,20" />
                        <widget name="ServiceName" position="69,25" size="427,26" valign="center" font="Arial;22" backgroundColor="#101258" />
                        <widget name="CurrentTime" position="575,10" size="90,30" backgroundColor="dark" font="Arial;19" />
                        <widget name="Event_Now_StartTime" position="210,68" size="60,22" font="Arial;20" backgroundColor="dark" />
                        <widget name="ServiceName" position="69,25" size="427,26" valign="center" font="Arial;22" backgroundColor="#101258" />
                        <widget name="CurrentTime" position="575,10" size="90,30" backgroundColor="dark" font="Arial;19" />
                        <widget name="Event_Now_StartTime" position="210,68" size="60,22" font="Arial;20" backgroundColor="dark" />
diff --git a/lib/python/Components/BlinkingPoint.py b/lib/python/Components/BlinkingPoint.py
new file mode 100644 (file)
index 0000000..b5a45db
--- /dev/null
@@ -0,0 +1,55 @@
+from HTMLComponent import *
+from GUIComponent import *
+
+from Pixmap import Pixmap
+
+from enigma import *
+
+import time
+
+class BlinkingPoint(GUIComponent, Pixmap):
+       SHOWN = 0
+       HIDDEN = 1
+       
+       def __init__(self):
+               Pixmap.__init__(self)
+               GUIComponent.__init__(self)
+               
+               self.state = self.SHOWN
+               self.blinking = False
+
+               self.timer = eTimer()
+               self.timer.timeout.get().append(self.blink)
+               
+       def createWidget(self, parent):
+               return self.getePixmap(parent, "/usr/share/enigma2/record.png")
+
+       def removeWidget(self, w):
+               pass
+       
+       def showPoint(self):
+               print "Show point"
+               self.state = self.SHOWN
+               self.instance.show()
+
+       def hidePoint(self):
+               print "Hide point"
+               self.state = self.HIDDEN
+               self.instance.hide()
+               
+       def blink(self):
+               if self.blinking == True:
+                       if (self.state == self.SHOWN):
+                               self.hidePoint()
+                       elif (self.state == self.HIDDEN):
+                               self.showPoint()
+                       
+       def startBlinking(self):
+               self.blinking = True
+               self.timer.start(500)
+               
+       def stopBlinking(self):
+               self.blinking = False
+               if (self.state == self.SHOWN):
+                       self.hidePoint()
+               self.timer.stop()
\ No newline at end of file
index c2787d9..31eb61c 100644 (file)
@@ -9,4 +9,5 @@ install_PYTHON = \
        GUIComponent.py MenuList.py TextInput.py __init__.py MovieList.py                               \
        InputDevice.py ServicePosition.py SetupDevices.py Harddisk.py                                           \
        AVSwitch.py Network.py RFmod.py DiskInfo.py NimManager.py Lcd.py                                \
        GUIComponent.py MenuList.py TextInput.py __init__.py MovieList.py                               \
        InputDevice.py ServicePosition.py SetupDevices.py Harddisk.py                                           \
        AVSwitch.py Network.py RFmod.py DiskInfo.py NimManager.py Lcd.py                                \
-       EpgList.py ScrollLabel.py Timezones.py Language.py HelpMenuList.py
+       EpgList.py ScrollLabel.py Timezones.py Language.py HelpMenuList.py \
+       BlinkingPoint.py Pixmap.py
diff --git a/lib/python/Components/Pixmap.py b/lib/python/Components/Pixmap.py
new file mode 100644 (file)
index 0000000..c97c0ab
--- /dev/null
@@ -0,0 +1,25 @@
+import skin
+
+from enigma import *
+
+class Pixmap:
+       """Pixmap can be used for components which use a pixmap"""
+       
+       def __init__(self):
+               self.instance = None
+       
+       def GUIcreate(self, parent):
+               self.instance = self.createWidget(parent)
+               #self.instance.setText(self.message)
+       
+       def GUIdelete(self):
+               self.removeWidget(self.instance)
+               self.instance = None
+       
+       def getePixmap(self, parent, filename):
+               pixmap = ePixmap(parent)
+               pixmap.setPixmapFromFile(filename)
+               return pixmap
+       
+       def removeWidget(self, instance):
+               pass
index 18ae105..6c15c70 100644 (file)
@@ -6,6 +6,7 @@ from Components.config import configfile, configsequencearg
 from Components.config import config, configElement, ConfigSubsection, configSequence
 from ChannelSelection import ChannelSelection
 
 from Components.config import config, configElement, ConfigSubsection, configSequence
 from ChannelSelection import ChannelSelection
 
+from Components.BlinkingPoint import BlinkingPoint
 from Components.ServiceName import ServiceName
 from Components.EventInfo import EventInfo
 
 from Components.ServiceName import ServiceName
 from Components.EventInfo import EventInfo
 
@@ -386,15 +387,19 @@ class InfoBarInstantRecord:
        """Instant Record - handles the instantRecord action in order to 
        start/stop instant records"""
        def __init__(self):
        """Instant Record - handles the instantRecord action in order to 
        start/stop instant records"""
        def __init__(self):
-               self["InstnantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord",
+               self["InstantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord",
                        {
                                "instantRecord": (self.instantRecord, "Instant Record..."),
                        })
                self.recording = None
                        {
                                "instantRecord": (self.instantRecord, "Instant Record..."),
                        })
                self.recording = None
+               
+               self["BlinkingPoint"] = BlinkingPoint()
+               self.onShown.append(self["BlinkingPoint"].hidePoint)
 
        def stopCurrentRecording(self): 
                self.session.nav.RecordTimer.removeEntry(self.recording)
                self.recording = None
 
        def stopCurrentRecording(self): 
                self.session.nav.RecordTimer.removeEntry(self.recording)
                self.recording = None
+               self["BlinkingPoint"].stopBlinking()
        
        def startInstantRecording(self):
                serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
        
        def startInstantRecording(self):
                serviceref = self.session.nav.getCurrentlyPlayingServiceReference()
@@ -412,6 +417,8 @@ class InfoBarInstantRecord:
                # fix me, description. 
                self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
                self.recording.dontSave = True
                # fix me, description. 
                self.recording = self.session.nav.recordWithTimer(time.time(), time.time() + 3600, serviceref, epg, "instant record")
                self.recording.dontSave = True
+               
+               self["BlinkingPoint"].startBlinking()
 
        def recordQuestionCallback(self, answer):
                if answer == False:
 
        def recordQuestionCallback(self, answer):
                if answer == False: