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)
 
 
        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()
 
        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):
                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
 
        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 enigma import quitMainloop, iRecordableService
 from Screens.MessageBox import MessageBox
 from time import time
+from Components.Task import job_manager
 
 inTryQuitMainloop = False
 
 
 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())
        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
                self.connected = False
+               reason = ""
                next_rec_time = -1
                if not recordings:
                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):
                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:
                        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:
                        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:
                        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
                        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)
                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
                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.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])
                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_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:
                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.job.cancel()
 
        def performAfterEvent(self):
+               self["config"].hide()
                if self.settings.afterEvent.getValue() == "nothing":
                        return
                elif self.settings.afterEvent.getValue() == "close":
                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"
 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"
 "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
 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"
 
 msgid "%d min"
 msgstr "%d min"
 
@@ -299,9 +303,6 @@ msgstr ""
 msgid "AGC:"
 msgstr "AGC:"
 
 msgid "AGC:"
 msgstr "AGC:"
 
-msgid "Abort"
-msgstr ""
-
 msgid "About"
 msgstr "Über"
 
 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 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 ""
 
 msgid "Reboot"
 msgstr ""
 
@@ -2267,26 +2277,8 @@ msgstr "Aufgenommene Dateien..."
 msgid "Recording"
 msgstr "Aufnahmen"
 
 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"
 
 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"
 
 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 ""
 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 ."
 
 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"
 
 #~ "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"
 
 #~ msgid "Reset configuration"
 #~ msgstr "Konfig. zurücksetzen"
 
@@ -4542,6 +4553,14 @@ msgstr "umgeschaltet"
 #~ msgstr "Schritt "
 
 #~ msgid ""
 #~ 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."
 #~ "The installation of the default settings is finished. Your can now "
 #~ "continue configuring your Dreambox by pressing the OK button on the "
 #~ "remote control."