remove no more exist isTop argument
[enigma2.git] / lib / python / Plugins / Extensions / CutListEditor / plugin.py
index 024c88898a7408780e10c1b0542b14e8afef8fa5..7ebc42b5176ddb50a278e77b1b5d828ec2a9e60f 100644 (file)
@@ -4,14 +4,14 @@ from Screens.Screen import Screen
 from Screens.MessageBox import MessageBox
 from Components.ServicePosition import ServicePositionGauge
 from Components.ActionMap import HelpableActionMap
-from Components.MenuList import MenuList
 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
 import bisect
 
 def CutListEntry(where, what):
@@ -121,6 +121,10 @@ class CutList(GUIComponent):
                instance.setItemHeight(30)
                instance.selectionChanged.get().append(self.selectionChanged)
 
+       def preWidgetRemove(self, instance):
+               instance.setContent(None)
+               instance.selectionChanged.get().remove(self.selectionChanged)
+
        def selectionChanged(self):
                for x in self.onSelectionChanged:
                        x()
@@ -140,33 +144,35 @@ class CutList(GUIComponent):
                if self.instance is not None:
                        self.instance.moveSelectionTo(index)
 
-class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport, InfoBarServiceName):
+class CutListEditor(Screen, InfoBarBase, InfoBarSeek, InfoBarCueSheetSupport, HelpableScreen):
        skin = """
-               <screen position="0,0" size="720,576" flags="wfNoBorder" backgroundColor="#444444">
-                       <eLabel position="360,0" size="360,313" backgroundColor="#ffffff" />
-                       <widget name="Video" position="370,10" size="340,268" backgroundColor="transparent" zPosition="1" />
-
-                       <eLabel position="50,80" size="300,24" text="Name:" font="Regular;20" foregroundColor="#cccccc" transparent="1" />
-
-                       <widget source="CurrentService" render="Label" position="50,110" size="300,60" font="Regular;22" >
-                               <convert type="ServiceName">Name</convert>
-                       </widget>
-
-                       <widget source="CurrentService" render="Label" position="370,278" size="340,25" 
-                               backgroundColor="#000000" foregroundColor="#ffffff" font="Regular;19" zPosition="1" >
-                               <convert type="ServicePosition">PositionDetailed</convert>
-                       </widget>
+       <screen position="0,0" size="720,576" title="Cutlist editor" flags="wfNoBorder">
+               <eLabel text="Cutlist editor" position="65,60" size="300,25" font="Regular;20" />
+               <widget source="global.CurrentTime" render="Label" position="268,60" size="394,20" font="Regular;20" halign="right">
+                       <convert type="ClockToText">Format:%A %B %d, %H:%M</convert>
+               </widget>
+               <eLabel position="268,98" size="394,304" backgroundColor="#505555" />
+               <widget name="Video" position="270,100" zPosition="1" size="390,300" backgroundColor="transparent" />
+               <widget source="session.CurrentService" render="Label" position="135,405" size="450,50" font="Regular;22" halign="center" valign="center">
+                       <convert type="ServiceName">Name</convert>
+               </widget>
+               <widget source="session.CurrentService" render="Label" position="50,450" zPosition="1" size="620,25" font="Regular;20" halign="center" valign="center">
+                       <convert type="ServicePosition">Position,Detailed</convert>
+               </widget>
+               <eLabel position="62,98" size="179,274" backgroundColor="#505555" />
+               <eLabel position="64,100" size="175,270" backgroundColor="#000000" />
+               <widget name="Cutlist" position="64,100" zPosition="1" size="175,270" scrollbarMode="showOnDemand" transparent="1" />
+               <widget name="Timeline" position="50,485" size="615,20" backgroundColor="#505555" pointer="skin_default/position_arrow.png:3,5" foregroundColor="black" />
+               <ePixmap pixmap="skin_default/icons/mp_buttons.png" position="305,515" size="109,13" alphatest="on" />
+       </screen>"""
 
-                       <widget name="Timeline" position="50,500" size="620,40" transparent="1"
-                               pointer="/usr/share/enigma2/position_pointer.png:3,5" foregroundColor="#225b7395" />
-                       <widget name="Cutlist" position="50,325" size="620,175" scrollbarMode="showOnDemand" transparent="1" />
-               </screen>"""
        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)
 
@@ -193,7 +199,7 @@ class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport, InfoBarServiceN
                                "addMark": (self.__addMark, _("Add a mark")),
                                "removeMark": (self.__removeMark, _("Remove a mark")),
                                "leave": (self.exit, _("Exit editor")),
-                               "showMenu": self.showMenu,
+                               "showMenu": (self.showMenu, _("menu")),
                        }, prio=-4)
 
                self.tutorial_seen = False
@@ -212,7 +218,7 @@ class CutListEditor(Screen, InfoBarSeek, InfoBarCueSheetSupport, InfoBarServiceN
                if not self.tutorial_seen:
                        self.tutorial_seen = True
                        self.session.open(MessageBox, 
-                               """Welcome to the Cutlist editor. It's still a bit strange to use, but anyway:
+                               """Welcome to the Cutlist editor. 
 
 Seek to the start of the stuff you want to cut away. Press OK, select 'start cut'.
 
@@ -388,10 +394,10 @@ Then seek to the end, press OK, select 'end cut'. That's it.
                        bisect.insort(self.cut_list, (self.context_position, 1))
                        self.uploadCuesheet()
 
-       # we modify the "play" behaviour a bit:
+       # we modify the "play" behavior a bit:
        # if we press pause while being in slowmotion, we will pause (and not play)
        def playpauseService(self):
-               if self.seekstate not in [self.SEEK_STATE_PLAY, self.SEEK_STATE_SM_HALF, self.SEEK_STATE_SM_QUARTER, self.SEEK_STATE_SM_EIGHTH]:
+               if self.seekstate != self.SEEK_STATE_PLAY and not self.isStateSlowMotion(self.seekstate):
                        self.unPauseService()
                else:
                        self.pauseService()