Merge branch 'bug_723_infobarext_pvr'
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index dab1c0fa359cca91bb91cd82b8210526fb9894f6..2e97b59d67b3e905526b68f173c282c37862359d 100644 (file)
@@ -1353,6 +1353,7 @@ class InfoBarExtensions:
                        answer[1][1]()
 
 from Tools.BoundFunction import boundFunction
+import inspect
 
 # depends on InfoBarExtensions
 
@@ -1364,9 +1365,13 @@ class InfoBarPlugins:
                return name
 
        def getPluginList(self):
-               list = [((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None, p.name) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU)]
-               list.sort(key = lambda e: e[2]) # sort by name
-               return list
+               l = []
+               for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU):
+                 args = inspect.getargspec(p.__call__)[0]
+                 if len(args) == 1 or len(args) == 2 and isinstance(self, InfoBarChannelSelection):
+                         l.append(((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None, p.name))
+               l.sort(key = lambda e: e[2]) # sort by name
+               return l
 
        def runPlugin(self, plugin):
                if isinstance(self, InfoBarChannelSelection):
@@ -1524,15 +1529,17 @@ class InfoBarInstantRecord:
 
                recording = RecordTimerEntry(serviceref, begin, end, name, description, eventid, dirname = preferredInstantRecordPath())
                recording.dontSave = True
-               
+
                if event is None or limitEvent == False:
                        recording.autoincrease = True
-                       if recording.setAutoincreaseEnd():
-                               self.session.nav.RecordTimer.record(recording)
-                               self.recording.append(recording)
+                       recording.setAutoincreaseEnd()
+
+               simulTimerList = self.session.nav.RecordTimer.record(recording)
+
+               if simulTimerList is None:      # no conflict
+                       self.recording.append(recording)
                else:
-                       simulTimerList = self.session.nav.RecordTimer.record(recording)
-                       if simulTimerList is not None:  # conflict with other recording
+                       if len(simulTimerList) > 1: # with other recording
                                name = simulTimerList[1].name
                                name_date = ' '.join((name, strftime('%c', localtime(simulTimerList[1].begin))))
                                print "[TIMER] conflicts with", name_date
@@ -1543,9 +1550,9 @@ class InfoBarInstantRecord:
                                        self.session.open(MessageBox, _("Record time limited due to conflicting timer %s") % name_date, MessageBox.TYPE_INFO)
                                else:
                                        self.session.open(MessageBox, _("Couldn't record due to conflicting timer %s") % name, MessageBox.TYPE_INFO)
-                               recording.autoincrease = False
                        else:
-                               self.recording.append(recording)
+                               self.session.open(MessageBox, _("Couldn't record due to invalid service %s") % serviceref, MessageBox.TYPE_INFO)
+                       recording.autoincrease = False
 
        def isInstantRecordRunning(self):
                print "self.recording:", self.recording