From 9db4b5a47686981facc54c3eeab1113a814a961f Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 27 Feb 2006 03:10:17 +0000 Subject: [PATCH] add add/removeMark, disable cutlist on play, selected just inserted marks --- .../Extensions/CutListEditor/plugin.py | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/lib/python/Plugins/Extensions/CutListEditor/plugin.py b/lib/python/Plugins/Extensions/CutListEditor/plugin.py index d3573743..0ffc7008 100644 --- a/lib/python/Plugins/Extensions/CutListEditor/plugin.py +++ b/lib/python/Plugins/Extensions/CutListEditor/plugin.py @@ -71,6 +71,10 @@ class CutList(GUIComponent): def setList(self, list): self.list = list self.l.setList(self.list) + + def setSelection(self, index): + if self.instance is not None: + self.instance.moveSelectionTo(index) class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport): skin = """ @@ -86,6 +90,13 @@ class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport): InfoBarCueSheetSupport.__init__(self) session.nav.playService(service) + service = session.nav.getCurrentService() + cue = service and service.cueSheet() + if cue is not None: + # disable cutlists. we want to freely browse around in the movie + print "cut lists disabled!" + cue.setCutListEnable(0) + self.downloadCuesheet() self["Timeline"] = ServicePositionGauge(self.session.nav) @@ -97,6 +108,8 @@ class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport): "setIn": (self.setIn, _("Make this mark an 'in' point")), "setOut": (self.setOut, _("Make this mark an 'out' point")), "setMark": (self.setMark, _("Make this mark just a mark")), + "addMark": (self.__addMark, _("Add a mark")), + "removeMark": (self.__removeMark, _("Remove a mark")), "leave": (self.exit, _("Exit editor")) }) @@ -107,6 +120,9 @@ class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport): { iPlayableService.evCuesheetChanged: self.refillList }) + + # to track new entries we save the last version of the cutlist + self.last_cuts = [ ] def showTutorial(self): if not self.tutorial_seen: @@ -141,6 +157,15 @@ You can then assign them to be either 'in' or 'out' positions by selecting them self.setType(m, 2) self.uploadCuesheet() + def __addMark(self): + self.toggleMark(onlyadd=True, tolerance=90000) # do not allow two marks in <1s + + def __removeMark(self): + m = self["Cutlist"].getCurrent() + m = m and m[0] + if m is not None: + self.removeMark(m) + def exit(self): self.close() @@ -165,7 +190,16 @@ You can then assign them to be either 'in' or 'out' positions by selecting them def refillList(self): print "cue sheet changed, refilling" self.downloadCuesheet() - self["Cutlist"].setList(self.getCutlist()) + + # get the first changed entry, and select it + new_list = self.getCutlist() + self["Cutlist"].setList(new_list) + + for i in range(min(len(new_list), len(self.last_cuts))): + if new_list[i] != self.last_cuts[i]: + self["Cutlist"].setSelection(i) + break + self.last_cuts = new_list def main(session, service): session.open(CutListEditor, service) -- 2.30.2