check for running jobs before shutting down/rebooting
authorAndreas Frisch <andreas.frisch@multimedia-labs.de>
Wed, 15 Oct 2008 10:30:24 +0000 (10:30 +0000)
committerAndreas Frisch <andreas.frisch@multimedia-labs.de>
Wed, 15 Oct 2008 10:30:24 +0000 (10:30 +0000)
lib/python/Components/Task.py
lib/python/Screens/InfoBarGenerics.py
lib/python/Screens/Standby.py
lib/python/Screens/TaskView.py
po/de.po

index 9a9d9fb..659660e 100644 (file)
@@ -37,6 +37,9 @@ class Job(object):
 
        progress = property(getProgress)
 
+       def getStatustext(self):
+               return { self.NOT_STARTED: _("Waiting"), self.IN_PROGRESS: _("In Progress"), self.FINISHED: _("Finished"), self.FAILED: _("Failed") }[self.status]
+
        def task_progress_changed_CB(self):
                self.state_changed()
 
index 6cd310b..1156e13 100644 (file)
@@ -1286,8 +1286,7 @@ class InfoBarJobman:
                return list
 
        def getJobName(self, job):
-               statustext = {job.NOT_STARTED: _("Waiting"), job.IN_PROGRESS: _("In Progress"), job.FINISHED: _("Finished"), job.FAILED: _("Failed")}[job.status]
-               return "%s: %s (%d%%)" % (statustext, job.name, int(100*job.progress/float(job.end)))
+               return "%s: %s (%d%%)" % (job.getStatustext(), job.name, int(100*job.progress/float(job.end)))
 
        def showJobView(self, job):
                from Screens.TaskView import JobView
index fd7ca8e..4c3a172 100644 (file)
@@ -89,6 +89,7 @@ class StandbySummary(Screen):
 from enigma import quitMainloop, iRecordableService
 from Screens.MessageBox import MessageBox
 from time import time
+from Components.Task import job_manager
 
 inTryQuitMainloop = False
 
@@ -96,19 +97,29 @@ class TryQuitMainloop(MessageBox):
        def __init__(self, session, retvalue=1, timeout=-1, default_yes = True):
                self.retval=retvalue
                recordings = len(session.nav.getRecordings())
+               jobs = len(job_manager.getPendingJobs())
                self.connected = False
+               reason = ""
                next_rec_time = -1
                if not recordings:
-                       next_rec_time = session.nav.RecordTimer.getNextRecordingTime()
+                       next_rec_time = session.nav.RecordTimer.getNextRecordingTime()  
                if recordings or (next_rec_time > 0 and (next_rec_time - time()) < 360):
+                       reason = _("Recording(s) are in progress or coming up in few seconds!") + '\n'
+               if jobs:
+                       if jobs == 1:
+                               job = job_manager.getPendingJobs()[0]
+                               reason += "%s: %s (%d%%)\n" % (job.getStatustext(), job.name, int(100*job.progress/float(job.end)))
+                       else:
+                               reason += (_("%d jobs are running in the background!") % jobs) + '\n'
+               if reason:
                        if retvalue == 1:
-                               MessageBox.__init__(self, session, _("Recording(s) are in progress or coming up in few seconds... really shutdown now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes)
+                               MessageBox.__init__(self, session, reason+_("Really shutdown now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes)
                        elif retvalue == 2:
-                               MessageBox.__init__(self, session, _("Recording(s) are in progress or coming up in few seconds... really reboot now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes)
+                               MessageBox.__init__(self, session, reason+_("Really reboot now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes)
                        elif retvalue == 4:
                                pass
                        else:
-                               MessageBox.__init__(self, session, _("Recording(s) are in progress or coming up in few seconds... really restart now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes)
+                               MessageBox.__init__(self, session, reason+_("Really restart now?"), type = MessageBox.TYPE_YESNO, timeout = timeout, default = default_yes)
                        self.skinName = "MessageBox"
                        session.nav.record_event.append(self.getRecordEvent)
                        self.connected = True
index 0634857..8d38ed6 100644 (file)
@@ -13,6 +13,7 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                from Components.ActionMap import ActionMap
                Screen.__init__(self, session, parent)
                InfoBarNotifications.__init__(self)
+               ConfigListScreen.__init__(self, [])
                self.parent = parent
                self.job = job
                self.job.taskview = self
@@ -30,18 +31,15 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                self.onShow.append(self.windowShow)
                self.onHide.append(self.windowHide)
 
-               self["actions"] = ActionMap(["OkCancelActions"], 
-                       {
-                               "ok": self.ok,
-                               "cancel": self.ok
-                       })
-               self["ColorActions"] = ActionMap(["ColorActions"],
-                       {
-                               "red": self.abort,
-                               "green": self.ok,
-                               "blue": self.background,
-                       })
-               ConfigListScreen.__init__(self, [])
+               self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
+               {
+                   "green": self.ok,
+                   "red": self.abort,
+                   "blue": self.background,
+                   "cancel": self.ok,
+                   "ok": self.ok,
+               }, -2)
+
                self.afterevents = [ "nothing", "standby", "deepstandby", "close" ]
                self.settings = ConfigSubsection()
                self.settings.afterEvent = ConfigSelection(choices = [("nothing", _("do nothing")), ("close", _("Close")), ("standby", _("go to standby")), ("deepstandby", _("go to deep standby"))], default = self.afterevents[afterEvent])
@@ -71,7 +69,7 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                self["job_progress"].range = j.end
                self["job_progress"].value = j.progress
                #print "JobView::state_changed:", j.end, j.progress
-               self["job_status"].text = {j.NOT_STARTED: _("Waiting"), j.IN_PROGRESS: _("In Progress"), j.FINISHED: _("Finished"), j.FAILED: _("Failed")}[j.status]
+               self["job_status"].text = j.getStatustext()
                if j.status == j.IN_PROGRESS:
                        self["job_task"].text = j.tasks[j.current_task].name
                else:
@@ -100,6 +98,7 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                        self.job.cancel()
 
        def performAfterEvent(self):
+               self["config"].hide()
                if self.settings.afterEvent.getValue() == "nothing":
                        return
                elif self.settings.afterEvent.getValue() == "close":
index db4fb7e..11aa57f 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: tuxbox-enigma 0.0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-10-13 22:55+0200\n"
-"PO-Revision-Date: 2008-09-18 12:57+0100\n"
+"POT-Creation-Date: 2008-10-15 12:23+0200\n"
+"PO-Revision-Date: 2008-10-15 12:10+0100\n"
 "Last-Translator: Andreas Frisch <andreas.frisch@multimedia-labs.de>\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
@@ -56,6 +56,10 @@ msgid "%H:%M"
 msgstr ""
 
 #, python-format
+msgid "%d jobs are running in the background!"
+msgstr "Es laufen noch %d Jobs im Hintergrund!"
+
+#, python-format
 msgid "%d min"
 msgstr "%d min"
 
@@ -299,9 +303,6 @@ msgstr ""
 msgid "AGC:"
 msgstr "AGC:"
 
-msgid "Abort"
-msgstr ""
-
 msgid "About"
 msgstr "Über"
 
@@ -2252,6 +2253,15 @@ msgstr "Diesen Timer wirklich löschen?"
 msgid "Really exit the subservices quickzap?"
 msgstr "Den Subservices-Schnellumschalter wirklich beenden?"
 
+msgid "Really reboot now?"
+msgstr "Wollen Sie trotzdem neu booten?"
+
+msgid "Really restart now?"
+msgstr "Wollen Sie trotzdem neu starten?"
+
+msgid "Really shutdown now?"
+msgstr "Wollen Sie trotzdem ausschalten?"
+
 msgid "Reboot"
 msgstr ""
 
@@ -2267,26 +2277,8 @@ msgstr "Aufgenommene Dateien..."
 msgid "Recording"
 msgstr "Aufnahmen"
 
-msgid ""
-"Recording(s) are in progress or coming up in few seconds... really reboot "
-"now?"
-msgstr ""
-"Zurzeit sind Aufnahmen aktiv oder starten gleich...\n"
-"Wollen Sie trotzdem neu starten?"
-
-msgid ""
-"Recording(s) are in progress or coming up in few seconds... really restart "
-"now?"
-msgstr ""
-"Zurzeit sind Aufnahmen aktiv oder starten gleich...\n"
-"Wollen Sie trotzdem neu starten?"
-
-msgid ""
-"Recording(s) are in progress or coming up in few seconds... really shutdown "
-"now?"
-msgstr ""
-"Zurzeit sind Aufnahmen aktiv oder starten gleich...\n"
-"Wollen Sie trotzdem ausschalten?"
+msgid "Recording(s) are in progress or coming up in few seconds!"
+msgstr "Zur Zeit sind Aufnahmen aktiv oder starten gleich!"
 
 msgid "Recordings always have priority"
 msgstr "Aufnahmen haben immer Vorrang"
@@ -2895,10 +2887,8 @@ msgstr ""
 
 msgid ""
 "Thank you for using the wizard. Your box is now ready to use.\n"
-"Please press OK to start using your Dreambox."
+"Please press OK to start using you Dreambox."
 msgstr ""
-"Der Assistent ist hiermit beendet. Ihre Dreambox kann nun benutzt werden.\n"
-"Bitte drücken Sie OK, um den Assistenten zu verlassen."
 
 msgid ""
 "The .NFI Image flasher USB stick is now ready to use. Please download an ."
@@ -4522,6 +4512,27 @@ msgstr "umgeschaltet"
 #~ "Schließen Sie Ihren USB-Stick an, bevor Sie OK drücken.\n"
 #~ "\n"
 
+#~ msgid ""
+#~ "Recording(s) are in progress or coming up in few seconds... really reboot "
+#~ "now?"
+#~ msgstr ""
+#~ "Zurzeit sind Aufnahmen aktiv oder starten gleich...\n"
+#~ "Wollen Sie trotzdem neu starten?"
+
+#~ msgid ""
+#~ "Recording(s) are in progress or coming up in few seconds... really "
+#~ "restart now?"
+#~ msgstr ""
+#~ "Zurzeit sind Aufnahmen aktiv oder starten gleich...\n"
+#~ "Wollen Sie trotzdem neu starten?"
+
+#~ msgid ""
+#~ "Recording(s) are in progress or coming up in few seconds... really "
+#~ "shutdown now?"
+#~ msgstr ""
+#~ "Zurzeit sind Aufnahmen aktiv oder starten gleich...\n"
+#~ "Wollen Sie trotzdem ausschalten?"
+
 #~ msgid "Reset configuration"
 #~ msgstr "Konfig. zurücksetzen"
 
@@ -4542,6 +4553,14 @@ msgstr "umgeschaltet"
 #~ msgstr "Schritt "
 
 #~ msgid ""
+#~ "Thank you for using the wizard. Your box is now ready to use.\n"
+#~ "Please press OK to start using your Dreambox."
+#~ msgstr ""
+#~ "Der Assistent ist hiermit beendet. Ihre Dreambox kann nun benutzt "
+#~ "werden.\n"
+#~ "Bitte drücken Sie OK, um den Assistenten zu verlassen."
+
+#~ msgid ""
 #~ "The installation of the default settings is finished. Your can now "
 #~ "continue configuring your Dreambox by pressing the OK button on the "
 #~ "remote control."