X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/994dad35e90a0023acd62c6b434b5728c0f15d1e..58e983040ccc2e6a0bda18430342142f7932fd26:/lib/python/Plugins/Extensions/CutListEditor/plugin.py diff --git a/lib/python/Plugins/Extensions/CutListEditor/plugin.py b/lib/python/Plugins/Extensions/CutListEditor/plugin.py index 78b2bacb..c80bff18 100644 --- a/lib/python/Plugins/Extensions/CutListEditor/plugin.py +++ b/lib/python/Plugins/Extensions/CutListEditor/plugin.py @@ -5,13 +5,14 @@ from Screens.MessageBox import MessageBox from Components.ServicePosition import ServicePositionGauge from Components.ActionMap import HelpableActionMap from Components.MultiContent import MultiContentEntryText -from Components.ServiceEventTracker import ServiceEventTracker +from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase from Components.VideoWindow import VideoWindow -from Screens.InfoBarGenerics import InfoBarSeek, InfoBarCueSheetSupport, InfoBarServiceName +from Screens.InfoBarGenerics import InfoBarSeek, InfoBarCueSheetSupport from Components.GUIComponent import GUIComponent from enigma import eListboxPythonMultiContent, eListbox, gFont, iPlayableService, RT_HALIGN_RIGHT from Screens.FixedMenu import FixedMenu from Screens.HelpMenu import HelpableScreen +from ServiceReference import ServiceReference import bisect def CutListEntry(where, what): @@ -42,6 +43,7 @@ class CutListContextMenu(FixedMenu): RET_DELETEMARK = 4 RET_REMOVEBEFORE = 5 RET_REMOVEAFTER = 6 + RET_GRABFRAME = 7 SHOW_STARTCUT = 0 SHOW_ENDCUT = 1 @@ -75,6 +77,7 @@ class CutListContextMenu(FixedMenu): else: menu.append((_("remove this mark"), self.removeMark)) + menu.append((("grab this frame as bitmap"), self.grabFrame)) FixedMenu.__init__(self, session, _("Cut"), menu) self.skinName = "Menu" @@ -99,6 +102,8 @@ class CutListContextMenu(FixedMenu): def removeAfter(self): self.close(self.RET_REMOVEAFTER) + def grabFrame(self): + self.close(self.RET_GRABFRAME) class CutList(GUIComponent): def __init__(self, list): @@ -144,33 +149,34 @@ class CutList(GUIComponent): if self.instance is not None: self.instance.moveSelectionTo(index) -class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport, InfoBarServiceName, HelpableScreen): +class CutListEditor(Screen, InfoBarBase, InfoBarSeek, InfoBarCueSheetSupport, HelpableScreen): skin = """ - - - + + + + Format:%A %B %d, %H:%M + + + + + Name + + + Position,Detailed + + + + + + + """ - - - - Name - - - - PositionDetailed - - - - - """ def __init__(self, session, service): self.skin = CutListEditor.skin Screen.__init__(self, session) InfoBarSeek.__init__(self, actionmap = "CutlistSeekActions") InfoBarCueSheetSupport.__init__(self) - InfoBarServiceName.__init__(self) + InfoBarBase.__init__(self, steal_current_service = True) HelpableScreen.__init__(self) self.old_service = session.nav.getCurrentlyPlayingServiceReference() session.nav.playService(service) @@ -212,17 +218,15 @@ class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport, InfoBarServiceN # to track new entries we save the last version of the cutlist self.last_cuts = [ ] self.cut_start = None + self.onClose.append(self.__onClose) + + def __onClose(self): + self.session.nav.playService(self.old_service) def showTutorial(self): if not self.tutorial_seen: self.tutorial_seen = True - self.session.open(MessageBox, - """Welcome to the Cutlist editor. - -Seek to the start of the stuff you want to cut away. Press OK, select 'start cut'. - -Then seek to the end, press OK, select 'end cut'. That's it. - """, MessageBox.TYPE_INFO) + self.session.open(MessageBox,_("Welcome to the Cutlist editor.\n\nSeek to the start of the stuff you want to cut away. Press OK, select 'start cut'.\n\nThen seek to the end, press OK, select 'end cut'. That's it."), MessageBox.TYPE_INFO) def checkSkipShowHideLock(self): pass @@ -257,7 +261,6 @@ Then seek to the end, press OK, select 'end cut'. That's it. self.removeMark(m) def exit(self): - self.session.nav.playService(self.old_service) self.close() def getCutlist(self): @@ -392,6 +395,8 @@ Then seek to the end, press OK, select 'end cut'. That's it. # add 'out' point bisect.insort(self.cut_list, (self.context_position, 1)) self.uploadCuesheet() + elif result == CutListContextMenu.RET_GRABFRAME: + self.grabFrame() # we modify the "play" behavior a bit: # if we press pause while being in slowmotion, we will pause (and not play) @@ -401,6 +406,14 @@ Then seek to the end, press OK, select 'end cut'. That's it. else: self.pauseService() + def grabFrame(self): + path = self.session.nav.getCurrentlyPlayingServiceReference().getPath() + from Components.Console import Console + grabConsole = Console() + cmd = 'grab -vblpr%d "%s"' % (180, path.rsplit('.',1)[0] + ".png") + grabConsole.ePopen(cmd) + self.playpauseService() + def main(session, service, **kwargs): session.open(CutListEditor, service)