ask user to reboot dreambox after software update
[enigma2.git] / mytest.py
index e953d8f309e33d7aab114df4de9f4b652a4b6c49..15f3b7dbfb487bfb5a2a6667fe88e17ba0232564 100644 (file)
--- a/mytest.py
+++ b/mytest.py
@@ -19,19 +19,27 @@ import time
 
 import ServiceReference
 
+from Components.ParentalControl import InitParentalControl
+InitParentalControl()
+
 from Navigation import Navigation
 
 from skin import readSkin, applyAllAttributes
 
-from Components.config import configfile
-from Tools.Directories import InitFallbackFiles, resolveFilename, SCOPE_PLUGINS
+from Tools.Directories import InitFallbackFiles, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE
+from Components.config import config, ConfigText, configfile, ConfigSubsection, ConfigInteger
 InitFallbackFiles()
 eDVBDB.getInstance().reloadBouquets()
 
+config.misc.radiopic = ConfigText(default = resolveFilename(SCOPE_SKIN_IMAGE)+"radio.mvi")
+
 try:
        import e2reactor
        e2reactor.install()
        
+       import twisted.python.runtime
+       twisted.python.runtime.platform.supportsThreads = lambda: False
+       
        from twisted.internet import reactor
        
        def runReactor():
@@ -147,32 +155,36 @@ class Session:
                if callback is not None:
                        callback(*retval)
 
-       def execBegin(self):
+       def execBegin(self, first=True):
                assert not self.in_exec 
                self.in_exec = True
                c = self.current_dialog
                
-               self.pushSummary()
-
-               summary = c.createSummary() or SimpleSummary
-               self.summary = self.instantiateSummaryDialog(summary, c)
-               self.summary.show()
+               # when this is an execbegin after a execend of a "higher" dialog,
+               # popSummary already did the right thing.
+               if first:
+                       self.pushSummary()
+                       summary = c.createSummary() or SimpleSummary
+                       self.summary = self.instantiateSummaryDialog(summary, c)
+                       self.summary.show()
+                       c.addSummary(self.summary)
 
-               c.addSummary(self.summary)
                c.execBegin()
 
                # when execBegin opened a new dialog, don't bother showing the old one.
                if c == self.current_dialog:
                        c.show()
                
-       def execEnd(self):
+       def execEnd(self, last=True):
                assert self.in_exec
                self.in_exec = False
 
                self.current_dialog.execEnd()
                self.current_dialog.hide()
-               self.current_dialog.removeSummary(self.summary)
-               self.popSummary()
+               
+               if last:
+                       self.current_dialog.removeSummary(self.summary)
+                       self.popSummary()
        
        def create(self, screen, arguments, **kwargs):
                # creates an instance of 'screen' (which is a class)
@@ -187,6 +199,10 @@ class Session:
        def instantiateDialog(self, screen, *arguments, **kwargs):
                return self.doInstantiateDialog(screen, arguments, kwargs, self.desktop)
        
+       def deleteDialog(self, screen):
+               screen.hide()
+               screen.doClose()
+       
        def instantiateSummaryDialog(self, screen, *arguments, **kwargs):
                return self.doInstantiateDialog(screen, arguments, kwargs, self.summary_desktop)
        
@@ -231,12 +247,12 @@ class Session:
        def pushCurrent(self):
                if self.current_dialog is not None:
                        self.dialog_stack.append(self.current_dialog)
-                       self.execEnd()
+                       self.execEnd(last=False)
        
        def popCurrent(self):
                if len(self.dialog_stack):
                        self.current_dialog = self.dialog_stack.pop()
-                       self.execBegin()
+                       self.execBegin(first=False)
                else:
                        self.current_dialog = None
 
@@ -250,6 +266,7 @@ class Session:
        def openWithCallback(self, callback, screen, *arguments, **kwargs):
                dlg = self.open(screen, *arguments, **kwargs)
                dlg.callback = callback
+               return dlg
 
        def open(self, screen, *arguments, **kwargs):
                if len(self.dialog_stack) and not self.in_exec:
@@ -263,9 +280,6 @@ class Session:
                self.execBegin()
                return dlg
 
-       def keyEvent(self, code):
-               print "code " + str(code)
-
        def close(self, screen, *retval):
                if not self.in_exec:
                        print "close after exec!"
@@ -278,7 +292,7 @@ class Session:
                # after close of the top dialog, the underlying will
                # gain focus again (for a short time), thus triggering
                # the onExec, which opens the dialog again, closing the loop.
-               assert screen == self.current_dialog
+               assert screen == self.current_dialog
                
                self.current_dialog.returnValue = retval
                self.delay_timer.start(0, 1)
@@ -300,7 +314,6 @@ class Session:
 from Screens.Volume import Volume
 from Screens.Mute import Mute
 from GlobalActions import globalActionMap
-from Components.config import ConfigSubsection, configSequence, configElement, configsequencearg
 
 #TODO .. move this to a own .py file
 class VolumeControl:
@@ -313,7 +326,7 @@ class VolumeControl:
                globalActionMap.actions["volumeMute"]=self.volMute
 
                config.audio = ConfigSubsection()
-               config.audio.volume = configElement("config.audio.volume", configSequence, [100], configsequencearg.get("INTEGER", (0, 100)))
+               config.audio.volume = ConfigInteger(default = 100, limits = (0, 100))
 
                self.volumeDialog = session.instantiateDialog(Volume)
                self.muteDialog = session.instantiateDialog(Mute)
@@ -321,7 +334,8 @@ class VolumeControl:
                self.hideVolTimer = eTimer()
                self.hideVolTimer.timeout.get().append(self.volHide)
 
-               vol = config.audio.volume.value[0]
+               vol = config.audio.volume.value
+               print "volume is", vol
                self.volumeDialog.setValue(vol)
                eDVBVolumecontrol.getInstance().setVolume(vol, vol)
 
@@ -394,7 +408,8 @@ class PowerKey:
                        self.standby()
 
        def standby(self):
-               self.session.open(Standby, self)
+               if self.session.current_dialog and self.session.current_dialog.ALLOW_SUSPEND:
+                       self.session.open(Standby, self)
 
        def quit(self):
                # halt
@@ -414,6 +429,8 @@ def runScreenTest():
        
        screensToRun.append(Screens.InfoBar.InfoBar)
 
+       ePythonConfigQuery.setQueryFunc(configfile.getResolvedKey)
+
        def runNextScreen(session, screensToRun, *result):
                if result:
                        quitMainloop(*result)
@@ -428,8 +445,6 @@ def runScreenTest():
        
        runNextScreen(session, screensToRun)
        
-       CONNECT(keyPressedSignal(), session.keyEvent)
-       
        vol = VolumeControl(session)
        power = PowerKey(session)
        
@@ -446,6 +461,7 @@ def runScreenTest():
                else:
                        setFPWakeuptime(nextRecordingTime - (300))
        
+       session.nav.stopService()
        session.nav.shutdown()
        
        return 0
@@ -481,11 +497,17 @@ Components.RFmod.InitRFmod()
 
 import Components.NimManager
 
+import Screens.Ci
+Screens.Ci.InitCiConfig()
+
 # first, setup a screen
 try:
        runScreenTest()
 
        plugins.shutdown()
+       
+       from Components.ParentalControl import parentalControl
+       parentalControl.save()
 except:
        print 'EXCEPTION IN PYTHON STARTUP CODE:'
        print '-'*60