Merge branch 'bug_723_infobarext_pvr'
authorFraxinas <andreas.frisch@multimedia-labs.de>
Wed, 16 Mar 2011 14:31:34 +0000 (15:31 +0100)
committerFraxinas <andreas.frisch@multimedia-labs.de>
Wed, 16 Mar 2011 14:31:34 +0000 (15:31 +0100)
1  2 
lib/python/Screens/InfoBarGenerics.py

index 0bb7fd37c3230b9868f8f819926a17225e2edf2d,b12d8ed3faffadfb99cea66b8a21639da6f52cf7..2e97b59d67b3e905526b68f173c282c37862359d
@@@ -1353,6 -1353,7 +1353,7 @@@ class InfoBarExtensions
                        answer[1][1]()
  
  from Tools.BoundFunction import boundFunction
+ import inspect
  
  # depends on InfoBarExtensions
  
@@@ -1364,9 -1365,13 +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,30 -1529,28 +1529,30 @@@ 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
 -                                      name = simulTimerList[1].name
 -                                      name_date = ' '.join((name, strftime('%c', localtime(simulTimerList[1].begin))))
 -                                      print "[TIMER] conflicts with", name_date
 -                                      recording.autoincrease = True   # start with max available length, then increment
 -                                      if recording.setAutoincreaseEnd():
 -                                              self.session.nav.RecordTimer.record(recording)
 -                                              self.recording.append(recording)
 -                                              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:
 +                      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
 +                              recording.autoincrease = True   # start with max available length, then increment
 +                              if recording.setAutoincreaseEnd():
 +                                      self.session.nav.RecordTimer.record(recording)
                                        self.recording.append(recording)
 +                                      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)
 +                      else:
 +                              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