use Source/Render/Converter stuff for:
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index 2d44d3dfcbbd4c7eab28d43f3608119c7be5c297..06892a784882f967abb499e1c502f29696156250 100644 (file)
@@ -11,7 +11,6 @@ from Components.PluginComponent import plugins
 from Components.ServiceEventTracker import ServiceEventTracker
 from Components.Sources.Source import ObsoleteSource
 from Components.Sources.Boolean import Boolean
 from Components.ServiceEventTracker import ServiceEventTracker
 from Components.Sources.Source import ObsoleteSource
 from Components.Sources.Boolean import Boolean
-from Components.Sources.Clock import Clock
 from Components.config import config, ConfigBoolean, ConfigClock
 from EpgSelection import EPGSelection
 from Plugins.Plugin import PluginDescriptor
 from Components.config import config, ConfigBoolean, ConfigClock
 from EpgSelection import EPGSelection
 from Plugins.Plugin import PluginDescriptor
@@ -47,7 +46,6 @@ from Menu import MainMenu, mdom
 class InfoBarDish:
        def __init__(self):
                self.dishDialog = self.session.instantiateDialog(Dish)
 class InfoBarDish:
        def __init__(self):
                self.dishDialog = self.session.instantiateDialog(Dish)
-               self.onLayoutFinish.append(self.dishDialog.show)
 
 class InfoBarShowHide:
        """ InfoBar show/hide control, accepts toggleShow and hide actions, might start
 
 class InfoBarShowHide:
        """ InfoBar show/hide control, accepts toggleShow and hide actions, might start
@@ -156,7 +154,7 @@ class NumberZap(Screen):
 
                self["number"] = Label(self.field)
 
 
                self["number"] = Label(self.field)
 
-               self["actions"] = NumberActionMap( [ "SetupActions" ], 
+               self["actions"] = NumberActionMap( [ "SetupActions" ],
                        {
                                "cancel": self.quit,
                                "ok": self.keyOK,
                        {
                                "cancel": self.quit,
                                "ok": self.keyOK,
@@ -201,7 +199,8 @@ class InfoBarNumberZap:
                        else:
                                self.servicelist.recallPrevService()
                else:
                        else:
                                self.servicelist.recallPrevService()
                else:
-                       self.session.openWithCallback(self.numberEntered, NumberZap, number)
+                       if self.has_key("TimeshiftActions") and not self.timeshift_enabled:
+                               self.session.openWithCallback(self.numberEntered, NumberZap, number)
 
        def numberEntered(self, retval):
 #              print self.servicelist
 
        def numberEntered(self, retval):
 #              print self.servicelist
@@ -249,7 +248,7 @@ class InfoBarNumberZap:
 config.misc.initialchannelselection = ConfigBoolean(default = True)
 
 class InfoBarChannelSelection:
 config.misc.initialchannelselection = ConfigBoolean(default = True)
 
 class InfoBarChannelSelection:
-       """ ChannelSelection - handles the channelSelection dialog and the initial 
+       """ ChannelSelection - handles the channelSelection dialog and the initial
        channelChange actions which open the channelSelection dialog """
        def __init__(self):
                #instantiate forever
        channelChange actions which open the channelSelection dialog """
        def __init__(self):
                #instantiate forever
@@ -341,7 +340,7 @@ class InfoBarChannelSelection:
 class InfoBarMenu:
        """ Handles a menu action, to open the (main) menu """
        def __init__(self):
 class InfoBarMenu:
        """ Handles a menu action, to open the (main) menu """
        def __init__(self):
-               self["MenuActions"] = HelpableActionMap(self, "InfobarMenuActions", 
+               self["MenuActions"] = HelpableActionMap(self, "InfobarMenuActions",
                        {
                                "mainMenu": (self.mainMenu, _("Enter main menu...")),
                        })
                        {
                                "mainMenu": (self.mainMenu, _("Enter main menu...")),
                        })
@@ -402,7 +401,7 @@ class InfoBarEPG:
                self.dlg_stack = [ ]
                self.bouquetSel = None
                self.eventView = None
                self.dlg_stack = [ ]
                self.bouquetSel = None
                self.eventView = None
-               self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions", 
+               self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
                        {
                                "showEventInfo": (self.openEventView, _("show EPG...")),
                                "showSingleServiceEPG": (self.openSingleServiceEPG, _("show single service EPG...")),
                        {
                                "showEventInfo": (self.openEventView, _("show EPG...")),
                                "showSingleServiceEPG": (self.openSingleServiceEPG, _("show single service EPG...")),
@@ -483,7 +482,7 @@ class InfoBarEPG:
                                self.dlg_stack.append(self.bouquetSel)
                        else:
                                self.bouquetSel = self.session.open(BouquetSelector, bouquets, self.openBouquetEPG, enableWrapAround=True)
                                self.dlg_stack.append(self.bouquetSel)
                        else:
                                self.bouquetSel = self.session.open(BouquetSelector, bouquets, self.openBouquetEPG, enableWrapAround=True)
-               elif cnt == 1: 
+               elif cnt == 1:
                        self.openBouquetEPG(bouquets[0][1], withCallback)
 
        def openSingleServiceEPG(self):
                        self.openBouquetEPG(bouquets[0][1], withCallback)
 
        def openSingleServiceEPG(self):
@@ -656,7 +655,7 @@ class InfoBarSeek:
                                else:
                                        return HelpableActionMap.action(self, contexts, action)
 
                                else:
                                        return HelpableActionMap.action(self, contexts, action)
 
-               self["SeekActions"] = InfoBarSeekActionMap(self, actionmap, 
+               self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,
                        {
                                "playpauseService": self.playpauseService,
                                "pauseService": (self.pauseService, _("pause")),
                        {
                                "playpauseService": self.playpauseService,
                                "pauseService": (self.pauseService, _("pause")),
@@ -666,7 +665,7 @@ class InfoBarSeek:
                                "seekFwdManual": (self.seekFwdManual, _("skip forward (enter time)")),
                                "seekBack": (self.seekBack, _("skip backward")),
                                "seekBackManual": (self.seekBackManual, _("skip backward (enter time)")),
                                "seekFwdManual": (self.seekFwdManual, _("skip forward (enter time)")),
                                "seekBack": (self.seekBack, _("skip backward")),
                                "seekBackManual": (self.seekBackManual, _("skip backward (enter time)")),
-                               
+
                                "seekFwdDef": (self.seekFwdDef, _("skip forward (self defined)")),
                                "seekBackDef": (self.seekBackDef, _("skip backward (self defined)"))
                        }, prio=-1)
                                "seekFwdDef": (self.seekFwdDef, _("skip forward (self defined)")),
                                "seekBackDef": (self.seekBackDef, _("skip backward (self defined)"))
                        }, prio=-1)
@@ -675,7 +674,7 @@ class InfoBarSeek:
                self["SeekActions"].setEnabled(False)
 
                self.seekstate = self.SEEK_STATE_PLAY
                self["SeekActions"].setEnabled(False)
 
                self.seekstate = self.SEEK_STATE_PLAY
-               
+
                self.seek_flag = True
 
                self.onPlayStateChanged = [ ]
                self.seek_flag = True
 
                self.onPlayStateChanged = [ ]
@@ -853,7 +852,7 @@ class InfoBarSeek:
                seekable = self.getSeek()
                if seekable is not None:
                        seekable.seekRelative(1, seconds * 90000)
                seekable = self.getSeek()
                if seekable is not None:
                        seekable.seekRelative(1, seconds * 90000)
-               
+
        def seekBackDef(self):
                self.seek_flag = False
                seconds = config.usage.self_defined_seek.value
        def seekBackDef(self):
                self.seek_flag = False
                seconds = config.usage.self_defined_seek.value
@@ -861,7 +860,7 @@ class InfoBarSeek:
                seekable = self.getSeek()
                if seekable is not None:
                        seekable.seekRelative(1, 0 - seconds * 90000)
                seekable = self.getSeek()
                if seekable is not None:
                        seekable.seekRelative(1, 0 - seconds * 90000)
-               
+
        def seekFwdManual(self):
                self.session.openWithCallback(self.fwdSeekTo, MinuteInput)
 
        def seekFwdManual(self):
                self.session.openWithCallback(self.fwdSeekTo, MinuteInput)
 
@@ -964,11 +963,11 @@ class InfoBarTimeshiftState(InfoBarPVRState):
 
 class InfoBarShowMovies:
 
 
 class InfoBarShowMovies:
 
-       # i don't really like this class. 
+       # i don't really like this class.
        # it calls a not further specified "movie list" on up/down/movieList,
        # so this is not more than an action map
        def __init__(self):
        # it calls a not further specified "movie list" on up/down/movieList,
        # so this is not more than an action map
        def __init__(self):
-               self["MovieListActions"] = HelpableActionMap(self, "InfobarMovieListActions", 
+               self["MovieListActions"] = HelpableActionMap(self, "InfobarMovieListActions",
                        {
                                "movieList": (self.showMovies, _("movie list")),
                                "up": (self.showMovies, _("movie list")),
                        {
                                "movieList": (self.showMovies, _("movie list")),
                                "up": (self.showMovies, _("movie list")),
@@ -1005,7 +1004,7 @@ class InfoBarShowMovies:
 
 class InfoBarTimeshift:
        def __init__(self):
 
 class InfoBarTimeshift:
        def __init__(self):
-               self["TimeshiftActions"] = HelpableActionMap(self, "InfobarTimeshiftActions", 
+               self["TimeshiftActions"] = HelpableActionMap(self, "InfobarTimeshiftActions",
                        {
                                "timeshiftStart": (self.startTimeshift, _("start timeshift")),  # the "yellow key"
                                "timeshiftStop": (self.stopTimeshift, _("stop timeshift"))      # currently undefined :), probably 'TV'
                        {
                                "timeshiftStart": (self.startTimeshift, _("start timeshift")),  # the "yellow key"
                                "timeshiftStop": (self.stopTimeshift, _("stop timeshift"))      # currently undefined :), probably 'TV'
@@ -1308,7 +1307,7 @@ class InfoBarPiP:
 from RecordTimer import parseEvent
 
 class InfoBarInstantRecord:
 from RecordTimer import parseEvent
 
 class InfoBarInstantRecord:
-       """Instant Record - handles the instantRecord action in order to 
+       """Instant Record - handles the instantRecord action in order to
        start/stop instant records"""
        def __init__(self):
                self["InstantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord",
        start/stop instant records"""
        def __init__(self):
                self["InstantRecordActions"] = HelpableActionMap(self, "InfobarInstantRecord",
@@ -1316,9 +1315,10 @@ class InfoBarInstantRecord:
                                "instantRecord": (self.instantRecord, _("Instant Record...")),
                        })
                self.recording = []
                                "instantRecord": (self.instantRecord, _("Instant Record...")),
                        })
                self.recording = []
+#### DEPRECATED CODE ####
                self["BlinkingPoint"] = BlinkingPixmapConditional()
                self["BlinkingPoint"] = BlinkingPixmapConditional()
-               self["BlinkingPoint"].hide()
                self["BlinkingPoint"].setConnect(self.session.nav.RecordTimer.isRecording)
                self["BlinkingPoint"].setConnect(self.session.nav.RecordTimer.isRecording)
+#########################
 
        def stopCurrentRecording(self, entry = -1):
                if entry is not None and entry != -1:
 
        def stopCurrentRecording(self, entry = -1):
                if entry is not None and entry != -1:
@@ -1364,7 +1364,9 @@ class InfoBarInstantRecord:
                recording.dontSave = True
                self.recording.append(recording)
 
                recording.dontSave = True
                self.recording.append(recording)
 
-               #self["BlinkingPoint"].setConnect(lambda: self.recording.isRunning())
+#### DEPRECATED CODE ####
+               self["BlinkingPoint"].setConnect(lambda: self.recording.isRunning())
+#########################
 
        def isInstantRecordRunning(self):
                print "self.recording:", self.recording
 
        def isInstantRecordRunning(self):
                print "self.recording:", self.recording
@@ -1467,7 +1469,7 @@ from Tools.ISO639 import LanguageCodes
 
 class InfoBarAudioSelection:
        def __init__(self):
 
 class InfoBarAudioSelection:
        def __init__(self):
-               self["AudioSelectionAction"] = HelpableActionMap(self, "InfobarAudioSelectionActions", 
+               self["AudioSelectionAction"] = HelpableActionMap(self, "InfobarAudioSelectionActions",
                        {
                                "audioSelection": (self.audioSelection, _("Audio Options...")),
                        })
                        {
                                "audioSelection": (self.audioSelection, _("Audio Options...")),
                        })
@@ -1654,20 +1656,23 @@ class InfoBarSubserviceSelection:
 
 class InfoBarAdditionalInfo:
        def __init__(self):
 
 class InfoBarAdditionalInfo:
        def __init__(self):
-               self["NimA"] = Pixmap()
-               self["NimB"] = Pixmap()
-               self["NimA_Active"] = Pixmap()
-               self["NimB_Active"] = Pixmap()
 
                self["RecordingPossible"] = Boolean(fixed=harddiskmanager.HDDCount() > 0)
                self["TimeshiftPossible"] = self["RecordingPossible"]
                self["ExtensionsAvailable"] = Boolean(fixed=1)
 
 
                self["RecordingPossible"] = Boolean(fixed=harddiskmanager.HDDCount() > 0)
                self["TimeshiftPossible"] = self["RecordingPossible"]
                self["ExtensionsAvailable"] = Boolean(fixed=1)
 
-               self.session.nav.event.append(self.gotServiceEvent) # we like to get service events
+######### DEPRECATED CODE ##########
+               self["NimA"] = Pixmap()
+               self["NimB"] = Pixmap()
+               self["NimA_Active"] = Pixmap()
+               self["NimB_Active"] = Pixmap()
+
                res_mgr = eDVBResourceManager.getInstance()
                if res_mgr:
                        res_mgr.frontendUseMaskChanged.get().append(self.tunerUseMaskChanged)
 
                res_mgr = eDVBResourceManager.getInstance()
                if res_mgr:
                        res_mgr.frontendUseMaskChanged.get().append(self.tunerUseMaskChanged)
 
+               self.session.nav.event.append(self.gotServiceEvent) # we like to get service events
+
        def tunerUseMaskChanged(self, mask):
                if mask&1:
                        self["NimA_Active"].show()
        def tunerUseMaskChanged(self, mask):
                if mask&1:
                        self["NimA_Active"].show()
@@ -1695,6 +1700,7 @@ class InfoBarAdditionalInfo:
                service = self.session.nav.getCurrentService()
                if ev == iPlayableService.evUpdatedInfo or ev == iPlayableService.evEnd:
                        self.checkTunerState(service)
                service = self.session.nav.getCurrentService()
                if ev == iPlayableService.evUpdatedInfo or ev == iPlayableService.evEnd:
                        self.checkTunerState(service)
+####################################
 
 class InfoBarNotifications:
        def __init__(self):
 
 class InfoBarNotifications:
        def __init__(self):
@@ -1757,12 +1763,12 @@ class InfoBarCueSheetSupport:
        ENABLE_RESUME_SUPPORT = False
 
        def __init__(self, actionmap = "InfobarCueSheetActions"):
        ENABLE_RESUME_SUPPORT = False
 
        def __init__(self, actionmap = "InfobarCueSheetActions"):
-               self["CueSheetActions"] = HelpableActionMap(self, actionmap, 
+               self["CueSheetActions"] = HelpableActionMap(self, actionmap,
                        {
                                "jumpPreviousMark": (self.jumpPreviousMark, _("jump to previous marked position")),
                                "jumpNextMark": (self.jumpNextMark, _("jump to next marked position")),
                                "toggleMark": (self.toggleMark, _("toggle a cut mark at the current position"))
                        {
                                "jumpPreviousMark": (self.jumpPreviousMark, _("jump to previous marked position")),
                                "jumpNextMark": (self.jumpNextMark, _("jump to next marked position")),
                                "toggleMark": (self.toggleMark, _("toggle a cut mark at the current position"))
-                       }, prio=1) 
+                       }, prio=1)
 
                self.cut_list = [ ]
                self.is_closing = False
 
                self.cut_list = [ ]
                self.is_closing = False
@@ -1794,7 +1800,7 @@ class InfoBarCueSheetSupport:
                        if seekable is not None:
                                seekable.seekTo(self.resume_point)
                self.hideAfterResume()
                        if seekable is not None:
                                seekable.seekTo(self.resume_point)
                self.hideAfterResume()
-       
+
        def hideAfterResume(self):
                if isinstance(self, InfoBarShowHide):
                        self.hide()
        def hideAfterResume(self):
                if isinstance(self, InfoBarShowHide):
                        self.hide()
@@ -1906,14 +1912,22 @@ class InfoBarCueSheetSupport:
 class InfoBarSummary(Screen):
        skin = """
        <screen position="0,0" size="132,64">
 class InfoBarSummary(Screen):
        skin = """
        <screen position="0,0" size="132,64">
-               <widget source="global.CurrentTime" render="Label" position="56,46" size="82,18" font="Regular;16" >
+               <widget source="global.CurrentTime" render="Label" position="62,46" size="82,18" font="Regular;16" >
                        <convert type="ClockToText">WithSeconds</convert>
                </widget>
                <widget source="session.CurrentService" render="Label" position="6,4" size="120,42" font="Regular;18" >
                        <convert type="ServiceName">Name</convert>
                </widget>
                        <convert type="ClockToText">WithSeconds</convert>
                </widget>
                <widget source="session.CurrentService" render="Label" position="6,4" size="120,42" font="Regular;18" >
                        <convert type="ServiceName">Name</convert>
                </widget>
+               <widget source="session.Event_Now" render="Progress" position="6,46" size="46,18" borderWidth="1" >
+                       <convert type="EventTime">Progress</convert>
+               </widget>
        </screen>"""
 
        </screen>"""
 
+# for picon:  (path="piconlcd" will use LCD picons)
+#              <widget source="session.CurrentService" render="Picon" position="6,0" size="120,64" path="piconlcd" >
+#                      <convert type="ServiceName">Reference</convert>
+#              </widget>
+
        def __init__(self, session, parent):
                Screen.__init__(self, session)
 
        def __init__(self, session, parent):
                Screen.__init__(self, session)
 
@@ -1927,13 +1941,13 @@ class InfoBarSummarySupport:
 class InfoBarMoviePlayerSummary(Screen):
        skin = """
        <screen position="0,0" size="132,64">
 class InfoBarMoviePlayerSummary(Screen):
        skin = """
        <screen position="0,0" size="132,64">
-               <widget source="global.CurrentTime" render="Label" position="56,46" size="82,18" font="Regular;16" >
+               <widget source="global.CurrentTime" render="Label" position="62,46" size="64,18" font="Regular;16" halign="right" >
                        <convert type="ClockToText">WithSeconds</convert>
                </widget>
                <widget source="session.CurrentService" render="Label" position="6,4" size="120,42" font="Regular;18" >
                        <convert type="ServiceName">Name</convert>
                </widget>
                        <convert type="ClockToText">WithSeconds</convert>
                </widget>
                <widget source="session.CurrentService" render="Label" position="6,4" size="120,42" font="Regular;18" >
                        <convert type="ServiceName">Name</convert>
                </widget>
-               <widget source="session.CurrentService" render="Progress" position="0,46" size="56,18" >
+               <widget source="session.CurrentService" render="Progress" position="6,46" size="56,18" borderWidth="1" >
                        <convert type="ServicePosition">Position</convert>
                </widget>
        </screen>"""
                        <convert type="ServicePosition">Position</convert>
                </widget>
        </screen>"""