From 64e44eef78c26d1d6d5a1662ad1d105fb96e9061 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Tue, 6 Dec 2005 18:35:55 +0000 Subject: [PATCH] factorize the conditionalPixmap --- lib/python/Components/BlinkingPixmap.py | 6 +- lib/python/Components/ConditionalWidget.py | 67 ++++++++++++++++++++++ lib/python/Components/Makefile.am | 2 +- lib/python/Components/Pixmap.py | 65 ++------------------- lib/python/Screens/InfoBarGenerics.py | 2 +- 5 files changed, 78 insertions(+), 64 deletions(-) create mode 100644 lib/python/Components/ConditionalWidget.py diff --git a/lib/python/Components/BlinkingPixmap.py b/lib/python/Components/BlinkingPixmap.py index b19bdc5d..c1b4262f 100644 --- a/lib/python/Components/BlinkingPixmap.py +++ b/lib/python/Components/BlinkingPixmap.py @@ -21,9 +21,9 @@ class BlinkingPixmap(Pixmap): def blink(self): if self.blinking == True: if (self.state == self.SHOWN): - self.hidePixmap() + self.hideWidget() elif (self.state == self.HIDDEN): - self.showPixmap() + self.showWidget() def startBlinking(self): self.blinking = True @@ -32,7 +32,7 @@ class BlinkingPixmap(Pixmap): def stopBlinking(self): self.blinking = False if (self.state == self.SHOWN): - self.hidePixmap() + self.hideWidget() self.timer.stop() class BlinkingPixmapConditional(BlinkingPixmap, PixmapConditional): diff --git a/lib/python/Components/ConditionalWidget.py b/lib/python/Components/ConditionalWidget.py new file mode 100644 index 00000000..5ff77980 --- /dev/null +++ b/lib/python/Components/ConditionalWidget.py @@ -0,0 +1,67 @@ +import skin +from GUIComponent import * + +from enigma import * + +class Widget(GUIComponent): + + SHOWN = 0 + HIDDEN = 1 + + def __init__(self): + GUIComponent.__init__(self) + self.instance = None + self.state = self.SHOWN + + def GUIcreate(self, parent): + self.instance = self.createWidget(parent) + + def GUIdelete(self): + self.removeWidget(self.instance) + self.instance = None + + def removeWidget(self, w): + pass + + def showWidget(self): + self.state = self.SHOWN + self.instance.show() + + def hideWidget(self): + self.state = self.HIDDEN + self.instance.hide() + + def removeWidget(self, instance): + pass + +class ConditionalWidget(Widget): + def __init__(self, withTimer = True): + Widget.__init__(self) + + self.setConnect(None) + + if (withTimer): + self.conditionCheckTimer = eTimer() + self.conditionCheckTimer.timeout.get().append(self.update) + self.conditionCheckTimer.start(1000) + + def setConnect(self, conditionalFunction): + self.conditionalFunction = conditionalFunction + + def activateCondition(self, condition): + if (condition): + if (self.state == self.HIDDEN): + self.showWidget() + else: + if (self.state == self.SHOWN): + self.hideWidget() + + def update(self): + if (self.conditionalFunction != None): + try: + self.conditionalFunction() # check, if the conditionalfunction is still valid + except: + self.conditionalFunction = None + self.activateCondition(False) + + self.activateCondition(self.conditionalFunction()) diff --git a/lib/python/Components/Makefile.am b/lib/python/Components/Makefile.am index ebad6d0d..6e0e94ba 100644 --- a/lib/python/Components/Makefile.am +++ b/lib/python/Components/Makefile.am @@ -10,4 +10,4 @@ install_PYTHON = \ 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 \ - BlinkingPixmap.py Pixmap.py + BlinkingPixmap.py Pixmap.py ConditionalWidget.py diff --git a/lib/python/Components/Pixmap.py b/lib/python/Components/Pixmap.py index 8f59880b..79026118 100644 --- a/lib/python/Components/Pixmap.py +++ b/lib/python/Components/Pixmap.py @@ -1,26 +1,11 @@ -import skin -from GUIComponent import * +from ConditionalWidget import * from enigma import * -class Pixmap(GUIComponent): - """Pixmap can be used for components which diplay a pixmap""" - - SHOWN = 0 - HIDDEN = 1 - +class Pixmap(Widget): def __init__(self): - GUIComponent.__init__(self) - self.instance = None - self.state = self.SHOWN - - def GUIcreate(self, parent): - self.instance = self.createWidget(parent) - - def GUIdelete(self): - self.removeWidget(self.instance) - self.instance = None - + Widget.__init__(self) + def getePixmap(self, parent): #pixmap = ePixmap(parent) #pixmap.setPixmapFromFile(self.filename) @@ -31,46 +16,8 @@ class Pixmap(GUIComponent): def removeWidget(self, w): pass - - def showPixmap(self): - self.state = self.SHOWN - self.instance.show() - - def hidePixmap(self): - self.state = self.HIDDEN - self.instance.hide() - - def removeWidget(self, instance): - pass -class PixmapConditional(Pixmap): +class PixmapConditional(ConditionalWidget, Pixmap): def __init__(self, withTimer = True): - Pixmap.__init__(self) - - self.setConnect(None) - - if (withTimer): - self.conditionCheckTimer = eTimer() - self.conditionCheckTimer.timeout.get().append(self.update) - self.conditionCheckTimer.start(1000) - - def setConnect(self, conditionalFunction): - self.conditionalFunction = conditionalFunction - - def activateCondition(self, condition): - if (condition): - if (self.state == self.HIDDEN): - self.showPixmap() - else: - if (self.state == self.SHOWN): - self.hidePixmap() + ConditionalWidget.__init__(self) - def update(self): - if (self.conditionalFunction != None): - try: - self.conditionalFunction() # check, if the conditionalfunction is still valid - except: - self.conditionalFunction = None - self.activateCondition(False) - - self.activateCondition(self.conditionalFunction()) diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index f27cf40c..43f4222a 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -443,7 +443,7 @@ class InfoBarInstantRecord: self.recording = None self["BlinkingPoint"] = BlinkingPixmapConditional() - self.onShown.append(self["BlinkingPoint"].hidePixmap) + self.onShown.append(self["BlinkingPoint"].hideWidget) self["BlinkingPoint"].setConnect(self.session.nav.RecordTimer.isRecording) def stopCurrentRecording(self): -- 2.30.2