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 9a9d9fb72f5bff1a4d74f96cc49ccdface97bf44..659660e82c56a0b351033828226d7dc7898f2b1b 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 6cd310be72d70a9f516ec401cdb6b27283dd0169..1156e139943ce2092e36abf12658a170a4ddf44d 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 fd7ca8efdca072e04cd7168f89aa6a6643b629fd..4c3a17201a41f02fc774ca91f3c01214908250d5 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 06348579f77f46424c8c1ab2ab35a6c2c18a1935..8d38ed62fde70f83236c966111470537cfb659ae 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 db4fb7e31cbfac8cf2ee405791aa35110d5c9b89..11aa57f23587fb539cbd4be9eb11831ef1636637 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"
@@ -55,6 +55,10 @@ msgstr ""
 msgid "%H:%M"
 msgstr ""
 
 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"
 #, python-format
 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"
 
@@ -4541,6 +4552,14 @@ msgstr "umgeschaltet"
 #~ msgid "Step "
 #~ msgstr "Schritt "
 
 #~ msgid "Step "
 #~ 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 "
 #~ msgid ""
 #~ "The installation of the default settings is finished. Your can now "
 #~ "continue configuring your Dreambox by pressing the OK button on the "