ignore show requests when no instance available yet
[enigma2.git] / mytest.py
index 2b032e6c2244ff10169862e491d0be2516779f11..93c42142f84ac562f13592720a14c7a86ff557e4 100644 (file)
--- a/mytest.py
+++ b/mytest.py
@@ -1,6 +1,6 @@
-from Tools import RedirectOutput
+from Tools import RedirectOutput, RedirectTime
 from enigma import runMainloop, eDVBDB, eTimer, quitMainloop, eDVBVolumecontrol, \
-       getDesktop, ePythonConfigQuery, eAVSwitch, eWindow
+       getDesktop, ePythonConfigQuery, eAVSwitch, eWindow, eServiceEvent
 from tools import *
 
 from Components.Language import language
@@ -155,11 +155,11 @@ class Session:
                if callback is not None:
                        callback(*retval)
 
-       def execBegin(self, first=True):
+       def execBegin(self, first=True, do_show = True):
                assert not self.in_exec 
                self.in_exec = True
                c = self.current_dialog
-               
+
                # when this is an execbegin after a execend of a "higher" dialog,
                # popSummary already did the right thing.
                if first:
@@ -172,7 +172,7 @@ class Session:
                c.execBegin()
 
                # when execBegin opened a new dialog, don't bother showing the old one.
-               if c == self.current_dialog:
+               if c == self.current_dialog and do_show:
                        c.show()
                
        def execEnd(self, last=True):
@@ -246,13 +246,13 @@ class Session:
         
        def pushCurrent(self):
                if self.current_dialog is not None:
-                       self.dialog_stack.append(self.current_dialog)
+                       self.dialog_stack.append((self.current_dialog, self.current_dialog.shown))
                        self.execEnd(last=False)
-       
+
        def popCurrent(self):
                if len(self.dialog_stack):
-                       self.current_dialog = self.dialog_stack.pop()
-                       self.execBegin(first=False)
+                       (self.current_dialog, do_show) = self.dialog_stack.pop()
+                       self.execBegin(first=False, do_show=do_show)
                else:
                        self.current_dialog = None
 
@@ -387,7 +387,7 @@ class VolumeControl:
                                self.muteDialog.hide()
                                self.volumeDialog.setValue(vol)
 
-from Screens.Standby import Standby
+import Screens.Standby
 
 class PowerKey:
        """ PowerKey stuff - handles the powerkey press and powerkey release actions"""
@@ -398,7 +398,7 @@ class PowerKey:
                self.powerKeyTimer.timeout.get().append(self.powertimer)
                globalActionMap.actions["powerdown"]=self.powerdown
                globalActionMap.actions["powerup"]=self.powerup
-               self.standbyblocked = 0
+               self.standbyblocked = 1
 #              self["PowerKeyActions"] = HelpableActionMap(self, "PowerKeyActions",
                        #{
                                #"powerdown": self.powerdown,
@@ -409,7 +409,8 @@ class PowerKey:
 
        def powertimer(self):   
                print "PowerOff - Now!"
-               self.quit()
+               if not Screens.Standby.inTryQuitMainloop:
+                       self.session.open(Screens.Standby.TryQuitMainloop, 1)
        
        def powerdown(self):
                self.standbyblocked = 0
@@ -422,12 +423,8 @@ class PowerKey:
                        self.standby()
 
        def standby(self):
-               if self.session.current_dialog and self.session.current_dialog.ALLOW_SUSPEND:
-                       self.session.open(Standby, self)
-
-       def quit(self):
-               # halt
-               quitMainloop(1)
+               if not Screens.Standby.inStandby and self.session.current_dialog and self.session.current_dialog.ALLOW_SUSPEND:
+                       self.session.open(Screens.Standby.Standby)
 
 from Screens.Scart import Scart
 
@@ -454,6 +451,8 @@ class AutoScartControl:
                        else:
                                self.scartDialog.switchToTV()
 
+from enigma import eDVBCIInterfaces
+
 def runScreenTest():
        plugins.readPluginList(resolveFilename(SCOPE_PLUGINS))
 
@@ -470,6 +469,12 @@ def runScreenTest():
 
        ePythonConfigQuery.setQueryFunc(configfile.getResolvedKey)
 
+#      eDVBCIInterfaces.getInstance().setDescrambleRules(0 # Slot Number
+#              ,(      ["1:0:1:24:4:85:C00000:0:0:0:"], #service_list
+#                      ["PREMIERE"], #provider_list,
+#                      [] #caid_list
+#              ));
+
        def runNextScreen(session, screensToRun, *result):
                if result:
                        quitMainloop(*result)
@@ -489,20 +494,28 @@ def runScreenTest():
 
        # we need session.scart to access it from within menu.xml
        session.scart = AutoScartControl(session)
-       
+
        runReactor()
        
        configfile.save()
 
        from time import time
        from Tools.DreamboxHardware import setFPWakeuptime
+       #get next record timer start time
        nextRecordingTime = session.nav.RecordTimer.getNextRecordingTime()
-       if nextRecordingTime != -1:
-               if (nextRecordingTime - time() < 330): # no time to switch box back on
-                       setFPWakeuptime(time() + 30) # so switch back on in 30 seconds
+       #get next zap timer start time
+       nextZapTime = session.nav.RecordTimer.getNextZapTime()
+       #get currentTime
+       nowTime = time()
+       if nextZapTime != -1 and nextRecordingTime != -1:
+               startTime = nextZapTime < nextRecordingTime and nextZapTime or nextRecordingTime
+       else:
+               startTime = nextZapTime != -1 and nextZapTime or nextRecordingTime
+       if startTime != -1:
+               if (startTime - nowTime < 330): # no time to switch box back on
+                       setFPWakeuptime(nowTime + 30) # so switch back on in 30 seconds
                else:
-                       setFPWakeuptime(nextRecordingTime - (300))
-       
+                       setFPWakeuptime(startTime - 300)
        session.nav.stopService()
        session.nav.shutdown()