Beispiel #1
0
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        self["key_red"] = Button(_("Favorites"))
        self["key_yellow"] = Button("")
        self["key_blue"] = Button(_("Settings"))
        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.showiframe = Showiframe()
        self.mvion = False
        self.curfavfolder = -1
        os.system("touch /tmp/bmcmovie")
        self["actions"] = HelpableActionMap(
            self,
            "MC_VideoPlayerActions",
            {
                "ok": (self.KeyOk, "Play selected file"),
                "cancel": (self.Exit, "Exit Video Player"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "info": (self.showFileInfo, "Show File Info"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet":
                (self.PrevFavFolder, "Previous Favorite Folder"),
                #				"red": (self.FavoriteFolders, "Favorite Folders"),
                "blue": (self.KeySettings, "Settings"),
            },
            -2)

        currDir = config.plugins.mc_vp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"
        self["currentfolder"].setText(str(currDir))
        sort = config.plugins.mc_vp_sortmode.enabled.value
        self.filelist = []
        self["filelist"] = []
        inhibitDirs = [
            "/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib", "/proc",
            "/ram", "/root", "/sbin", "/sys", "/tmp", "/usr", "/var"
        ]
        self.filelist = FileList(
            currDir,
            useServiceRef=True,
            showDirectories=True,
            showFiles=True,
            matchingPattern=
            "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)",
            additionalExtensions=None,
            sort=sort)
        self["filelist"] = self.filelist
        self["filelist"].show()
 def __init__(self, session):
     global currDir
     Screen.__init__(self, session)
     HelpableScreen.__init__(self)
     self['key_red'] = Button(_('Delete Movie'))
     self['key_yellow'] = Button('')
     self['key_blue'] = Button(_('Settings'))
     self['currentfolder'] = Label('')
     self['currentfavname'] = Label('')
     self.showiframe = Showiframe()
     self.mvion = False
     self.curfavfolder = -1
     os.system('touch /tmp/bmcmovie')
     self['actions'] = HelpableActionMap(self, 'MC_VideoPlayerActions', {'ok': (self.KeyOk, 'Play selected file'),
      'cancel': (self.Exit, 'Exit Video Player'),
      'left': (self.leftUp, 'List Top'),
      'right': (self.rightDown, 'List Bottom'),
      'up': (self.up, 'List up'),
      'down': (self.down, 'List down'),
      'menu': (self.KeyMenu, 'File / Folder Options'),
      'info': (self.showFileInfo, 'Show File Info'),
      'nextBouquet': (self.NextFavFolder, 'Next Favorite Folder'),
      'prevBouquet': (self.PrevFavFolder, 'Previous Favorite Folder'),
      'red': (self.SelDelete, 'Delete Movie'),
      'blue': (self.KeySettings, 'Settings')}, -2)
     currDir = config.plugins.mc_vp.lastDir.value
     if not pathExists(currDir):
         currDir = '/'
     self['currentfolder'].setText(str(currDir))
     sort = config.plugins.mc_vp_sortmode.enabled.value
     self.filelist = []
     self['filelist'] = []
     inhibitDirs = ['/bin',
      '/boot',
      '/dev',
      '/dev.static',
      '/etc',
      '/lib',
      '/proc',
      '/ram',
      '/root',
      '/sbin',
      '/sys',
      '/tmp',
      '/usr',
      '/var']
     self.filelist = FileList(currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern='(?i)^.*\\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)', additionalExtensions=None, sort=sort)
     self['filelist'] = self.filelist
     self['filelist'].show()
     return
	def addDirtoPls(self, directory, recursive = True):
		print "copyDirectory", directory
		if directory == '/':
			print "refusing to operate on /"
			return
		filelist = FileList(directory, useServiceRef = True, showMountpoints = False, isTop = True)

		for x in filelist.getFileList():
			if x[0][1] == True: #isDir
				if recursive:
					if x[0][0] != directory:
						self.copyDirectory(x[0][0])
			elif filelist.getServiceRef() and filelist.getServiceRef().type == 4097:
				self.playlist.addFile(x[0][0])
		self.playlist.updateList()
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)

		self["key_red"] = Button("Favorites")
		self["key_green"] = Button("Slide Show")
		self["key_yellow"] = Button("Thumb View")
		self["key_blue"] = Button(_("Settings"))

		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.curfavfolder = -1

		self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", 
			{
				"ok": (self.KeyOk, "Show Picture"),
				"cancel": (self.Exit, "Exit Picture Viewer"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.StartExif, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
				"red": (self.FavoriteFolders, "Favorite Folders"),
				"green": (self.startslideshow, "Start Slideshow"),
				"yellow": (self.StartThumb, "Thumb View"),
				"blue": (self.Settings, "Settings"),
			}, -2)
		
		self.aspect = getAspect()
		currDir = config.plugins.mc_pp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"

		self["currentfolder"].setText(str(currDir))

		self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
		
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)
		self.ThumbTimer.start(500, True)

		self.picload = ePicLoad()
class Selectmusic(Screen):	
	def __init__(self, session):
		Screen.__init__(self, session)
		self["actions"] = HelpableActionMap(self, "MC_AudioPlayerActions",
			{
				"ok": (self.KeyOk, "Play selected file"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
			}, -2)
		self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
			{
				"cancel": self.close
			}, -2)

		currDir = config.plugins.mc_ap.lastDir.value
		if not pathExists(currDir):
			currDir = "/"
		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib" , "/proc", "/ram", "/root" , "/sbin", "/sys", "/tmp", "/usr", "/var"]		
		self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(m3u|mp2|mp3|wav|wave|wma|m4a|ogg|ra|flac)", inhibitDirs = inhibitDirs)
		self["filelist"] = self.filelist
		self["currentfolder"] = Label()
		self["currentfolder"].setText(str(currDir))
	def up(self):
		self["filelist"].up()
	def down(self):
		self["filelist"].down()
	def leftUp(self):
		self["filelist"].pageUp()	
	def rightDown(self):
		self["filelist"].pageDown()
	def KeyOk(self):
		self.filename = self.filelist.getFilename()
		self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
		if self.filelist.getFilename() is not None:
			if self.filelist.canDescent():
				self.filelist.descent()
			else:
				config.plugins.mc_pp.music.value = self.filename
				config.plugins.mc_pp.save()
				self.close()
		else:
			if self.filelist.canDescent():
				self.filelist.descent()
			else:
				config.plugins.mc_pp.music.value = self.filename
				config.plugins.mc_pp.save()
				self.close()
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)

        self["key_red"] = Button("Favorites")
        self["key_green"] = Button("Slide Show")
        self["key_yellow"] = Button("Thumb View")
        self["key_blue"] = Button(_("Settings"))

        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.curfavfolder = -1

        self["actions"] = HelpableActionMap(
            self,
            "MC_PictureViewerActions",
            {
                "ok": (self.KeyOk, "Show Picture"),
                "cancel": (self.Exit, "Exit Picture Viewer"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "info": (self.StartExif, "Show File Info"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
                "red": (self.FavoriteFolders, "Favorite Folders"),
                "green": (self.startslideshow, "Start Slideshow"),
                "yellow": (self.StartThumb, "Thumb View"),
                "blue": (self.Settings, "Settings"),
            },
            -2,
        )

        self.aspect = getAspect()
        currDir = config.plugins.mc_pp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"

        self["currentfolder"].setText(str(currDir))

        self.filelist = FileList(currDir, matchingPattern="(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
        self["filelist"] = self.filelist
        self["thumbnail"] = Pixmap()

        self.ThumbTimer = eTimer()
        self.ThumbTimer.callback.append(self.showThumb)
        self.ThumbTimer.start(500, True)

        self.picload = ePicLoad()
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		
		self["key_red"] = Button(_("Exit"))
		self["key_green"] = Button(_("Info"))
		self["key_yellow"] = Button(_("IMDb"))
		self["key_blue"] = Button(_("Menu"))
		self["currentfolder"] = Label("")
		
		#Check if AzBox because of using MRUA
		if os.path.exists("/proc/player"):
			self.azbox = True
		else:
			self.azbox = False
		
		#Check if we have a saved last dir
		currDir = config.plugins.mc_vp.lastDir.value
		if not pathExists(currDir):
			currDir = None
		
		self["currentfolder"].setText(str(currDir))
		
		self.filelist = FileList(currDir, showMountpoints = True, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|divx|m2ts|wmv|flv|mov)")
		self["filelist"] = self.filelist
		self["filelist"].onSelectionChanged.append(self.selectionChanged)
		
		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions", 
			{
				"ok": (self.KeyOk, _("Play selected file")),
				"cancel": (self.Exit, _("Exit Video Player")),
				"left": (self.leftUp, _("List Top")),
				"right": (self.rightDown, _("List Bottom")),
				"up": (self.up, _("List up")),
				"down": (self.down, _("List down")),
				"menu": (self.showMenu, _("File / Folder Options")),
				"info": (self.showFileInfo, _("Show File Info")),
				#"red": (self.Exit, _("Exit Videos")),
				"yellow": (self.startIMDb, ("Start IMDb")),
				"home": (self.Exit, _("Exit Videos")),
			}, -2)
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		self["key_red"] = Button(_("Delete Movie"))
		self["key_yellow"] = Button("")
		self["key_blue"] = Button(_("Settings"))
		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.showiframe = Showiframe()
		self.mvion = False
		self.curfavfolder = -1
		os.system("touch /tmp/bmcmovie")
		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions", 
			{
				"ok": (self.KeyOk, "Play selected file"),
				"cancel": (self.Exit, "Exit Video Player"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.showFileInfo, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
				"red": (self.SelDelete, "Delete Movie"),
				"blue": (self.KeySettings, "Settings"),
			}, -2)
                global currDir
		currDir = config.plugins.mc_vp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"
		self["currentfolder"].setText(str(currDir))
		sort = config.plugins.mc_vp_sortmode.enabled.value
		self.filelist = []
		self["filelist"] = []
		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib" , "/proc", "/ram", "/root" , "/sbin", "/sys", "/tmp", "/usr", "/var"]
		self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)", additionalExtensions = None, sort = sort)
		self["filelist"] = self.filelist
		self["filelist"].show()
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		self["key_green"] = Button("Slide Show")
		self["key_yellow"] = Button("Thumb View")
		self["currentfolder"] = Label("")
		self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", 
			{
				"ok": (self.KeyOk, "Show Picture"),
				"cancel": (self.Exit, "Exit Picture Viewer"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"info": (self.StartExif, "Show File Info"),
				"green": (self.startslideshow, "Start Slideshow"),
				"yellow": (self.StartThumb, "Thumb View"),
				"blue": (self.Settings, "Settings"),
			}, -2)

		self.aspect = getAspect()
		currDir = config.plugins.mc_pp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"

		self["currentfolder"].setText(str(currDir))
		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib" , "/proc", "/ram", "/root" , "/sbin", "/sys", "/tmp", "/usr", "/var"]
		self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)", inhibitDirs = inhibitDirs)
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
		
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)
		self.ThumbTimer.start(500, True)

		self.picload = ePicLoad()
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		
		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
		self.session.nav.stopService()
		
		# Show Background MVI
		os.system("/usr/bin/showiframe /usr/share/enigma2/black.mvi &")
		
		self["key_red"] = Button(_(" "))
		self["key_green"] = Button(_("Slide Show"))
		self["key_yellow"] = Button(_("Thumb View"))
		self["key_blue"] = Button(_("Settings"))

		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.curfavfolder = -1

		self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", 
			{
				"ok": (self.KeyOk, _("Show Picture")),
				"cancel": (self.Exit, _("Directory Up")),
				"left": (self.leftUp, _("List Top")),
				"right": (self.rightDown, _("List Bottom")),
				"up": (self.up, _("List up")),
				"down": (self.down, _("List down")),
				"menu": (self.KeyMenu, _("File / Folder Options")),
				"info": (self.StartExif, _("Show File Info")),
				#"red": (self.Exit, _("Exit Pictures")),
				"green": (self.startslideshow, _("Start Slideshow")),
				"yellow": (self.StartThumb, _("Thumb View")),
				"blue": (self.Settings, _("Settings")),
			}, -2)
		
		currDir = config.plugins.mc_pp.lastDir.value
		if not pathExists(currDir):
			currDir = None

		self["currentfolder"].setText(str(currDir))

		self.filelist = FileList(currDir, showMountpoints = True, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
		self["filelist"] = self.filelist
		self["filelist"].onSelectionChanged.append(self.selectionChanged)
		self["thumbnail"] = Pixmap()
		self["datelabel"] = StaticText("")
		self["cameralabel"] = StaticText("")
		self["sizelabel"] = StaticText("")
		self["date"] = StaticText("")
		self["camera"] = StaticText("")
		self["size"] = StaticText("")
		list = []
		self["fileinfo"] = List(list, enableWrapAround = False)
		
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)

		self.picload = ePicLoad()
		self.picload.PictureData.get().append(self.showPic)
		
		self.onLayoutFinish.append(self.setConf)
class MC_VideoPlayer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		
		self["key_red"] = Button(_("Exit"))
		self["key_green"] = Button(_("Info"))
		self["key_yellow"] = Button(_("IMDb"))
		self["key_blue"] = Button(_("Menu"))
		self["currentfolder"] = Label("")
		
		#Check if AzBox because of using MRUA
		if os.path.exists("/proc/player"):
			self.azbox = True
		else:
			self.azbox = False
		
		#Check if we have a saved last dir
		currDir = config.plugins.mc_vp.lastDir.value
		if not pathExists(currDir):
			currDir = None
		
		self["currentfolder"].setText(str(currDir))
		
		self.filelist = FileList(currDir, showMountpoints = True, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|divx|m2ts|wmv|flv|mov)")
		self["filelist"] = self.filelist
		self["filelist"].onSelectionChanged.append(self.selectionChanged)
		
		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions", 
			{
				"ok": (self.KeyOk, _("Play selected file")),
				"cancel": (self.Exit, _("Exit Video Player")),
				"left": (self.leftUp, _("List Top")),
				"right": (self.rightDown, _("List Bottom")),
				"up": (self.up, _("List up")),
				"down": (self.down, _("List down")),
				"menu": (self.showMenu, _("File / Folder Options")),
				"info": (self.showFileInfo, _("Show File Info")),
				#"red": (self.Exit, _("Exit Videos")),
				"yellow": (self.startIMDb, ("Start IMDb")),
				"home": (self.Exit, _("Exit Videos")),
			}, -2)

	def selectionChanged(self):
		pass

	def up(self):
		self["filelist"].up()

	def down(self):
		self["filelist"].down()

	def leftUp(self):
		self["filelist"].pageUp()

	def rightDown(self):
		self["filelist"].pageDown()

	def showFileInfo(self):
		if self["filelist"].canDescent():
			return
		else:
			self.session.open(MC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef())

	def KeyExit(self):
		self.filelist.gotoParent()

	def KeyOk(self):
		self.isDVD = False
		self.isIso = False
		self.isFile = False
		self.pathname = ""
		
		filename = self["filelist"].getFilename()
		if filename is not None: 
			if filename.lower().endswith("iso") or filename.lower().endswith("img"):
				os.system("mkdir /tmp/discmount")
				os.system("umount -f /tmp/discmount")
				os.system("losetup -d /dev/loop0")
				os.system("losetup /dev/loop0 \"" + str(filename) + "\"")
				os.system("mount -t udf /dev/loop0 /tmp/discmount")
				self.pathname = "/tmp/discmount/"
				self.isIso = True
			
			elif self.filelist.canDescent():
				self.filelist.descent()
				self["filelist"].refresh()
				self.pathname = self["filelist"].getCurrentDirectory() or ""
			
			else:
				self.isFile = True
		
		elif self.filelist.canDescent():
				self.filelist.descent()
				self["filelist"].refresh()
		
		if self.pathname != "":
			dvdFilelist = [ ]
			dvdDevice = None
			if fileExists(self.pathname+"VIDEO_TS.IFO"):
				dvdFilelist.append(str(self.pathname[0:-1]))
				self.isDVD = True
			elif fileExists(self.pathname+"VIDEO_TS/VIDEO_TS.IFO"):
				dvdFilelist.append(str(self.pathname+"VIDEO_TS"))
				self.isDVD = True
			elif self.isIso:
				self["filelist"].setIsoDir(filename, self["filelist"].getCurrentDirectory())
				self.JumpToFolder("/tmp/discmount/")
				self["filelist"].up()
		
		if self.isDVD:
			self.filelist.gotoParent()
			if self.azbox == True:
				from AZ_DVDPlayer import AZDVDPlayer
				self.session.open(AZDVDPlayer, dvd_device = dvdDevice, dvd_filelist = dvdFilelist)
			else:
				print "Play dvd normal"
				from Screens import DVD
				self.session.open(DVD.DVDPlayer, dvd_filelist=dvdFilelist)

		elif self.isFile:
			if self.azbox == True:
				from AZ_MRUAPlayer import MRUAPlayer
				self.session.open(MRUAPlayer, ref=self["filelist"].getFilename())
			else:
				from MC_MoviePlayer import MC_MoviePlayer
				self.session.open(MC_MoviePlayer, self["filelist"].getServiceRef())

	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self["filelist"].changeDir(jumpto)
			self["currentfolder"].setText(("%s") % (jumpto))

	def KeySettings(self):
		self.session.open(VideoPlayerSettings)

	def Exit(self):
		try:
			config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
		except:
			config.plugins.mc_vp.lastDir.value = 'mountpoint'
		config.plugins.mc_vp.save()
		configfile.save()
		self.close()

	def showMenu(self):
		menu = []
		menu.append((_("Check IMDB"), "imdblookup"))
		if self.filelist.canDescent():
			x = self.filelist.getName()
			if x == "..":
				return
			menu.append((_("delete directory"), "deletedir"))
		else:
			menu.append((_("delete file"), "deletefile"))
		self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)

	def menuCallback(self, choice):
		if choice is None:
			return
		if choice[1] == "deletedir":
			self.deleteDir()
		elif choice[1] == "deletefile":
			self.deleteFile()
		elif choice[1] == "imdblookup":
			try:
				from MC_Imdb import IMDB
				name = self["filelist"].getName()
				self.session.open(IMDB, name.partition('(')[0])
			except ImportError:
				self.session.open(MessageBox, _("Cannot load IMDB, please check if python-html is installed"), MessageBox.TYPE_INFO, timeout = 5)

	def deleteDir(self):
		self.session.openWithCallback(self.deleteDirConfirmed, MessageBox, _("Do you really want to delete this directory and it's content ?"))

	def deleteDirConfirmed(self, confirmed):
		if confirmed:
			import shutil
			deldir = self.filelist.getSelection()[0]
			shutil.rmtree(deldir)
			self["filelist"].refresh()

	def deleteFile(self):
		self.session.openWithCallback(self.deleteFileConfirmed, MessageBox, _("Do you really want to delete this file ?"))

	def deleteFileConfirmed(self, confirmed):
		if confirmed:
			delfile = self["filelist"].getFilename()
			os.remove(delfile)
			self["filelist"].refresh()

	def startIMDb(self):
		from MC_Imdb import IMDB
		name = self["filelist"].getName()
		self.session.open(IMDB, name.partition('(')[0])
class MC_PictureViewer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		self["key_green"] = Button("Slide Show")
		self["key_yellow"] = Button("Thumb View")
		self["currentfolder"] = Label("")
		self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", 
			{
				"ok": (self.KeyOk, "Show Picture"),
				"cancel": (self.Exit, "Exit Picture Viewer"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"info": (self.StartExif, "Show File Info"),
				"green": (self.startslideshow, "Start Slideshow"),
				"yellow": (self.StartThumb, "Thumb View"),
				"blue": (self.Settings, "Settings"),
			}, -2)

		self.aspect = getAspect()
		currDir = config.plugins.mc_pp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"

		self["currentfolder"].setText(str(currDir))
		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib" , "/proc", "/ram", "/root" , "/sbin", "/sys", "/tmp", "/usr", "/var"]
		self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)", inhibitDirs = inhibitDirs)
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
		
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)
		self.ThumbTimer.start(500, True)

		self.picload = ePicLoad()
		#self.picload.PictureData.get().append(self.showPic)
		
	def startslideshow(self):
		self.session.openWithCallback(self.returnVal , MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True)

	def up(self):
		self["filelist"].up()
		self.ThumbTimer.start(500, True)

	def down(self):
		self["filelist"].down()
		self.ThumbTimer.start(500, True)
		
	def leftUp(self):
		self["filelist"].pageUp()
		self.ThumbTimer.start(500, True)
		
	def rightDown(self):
		self["filelist"].pageDown()
		self.ThumbTimer.start(500, True)
	def showPic(self, picInfo=""):
		ptr = self.picload.getData()
		if ptr != None:
			self["thumbnail"].instance.setPixmap(ptr.__deref__())
			self["thumbnail"].show()
			
	def showThumb(self):
		return
		if not self.filelist.canDescent():
			if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1:
				ptr = self.picload.getData()
			else:
				ptr = None
			
			#ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.mc_pp.resize.value), 0, 0, cachefile)
			if ptr != None:
				self["thumbnail"].instance.setPixmap(ptr.__deref__())
				self["thumbnail"].show()
		else:
			self["thumbnail"].hide()

	def KeyOk(self):
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False)
	def StartThumb(self):
		self.session.openWithCallback(self.returnVal, MC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory())

	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self["filelist"].changeDir(jumpto)
			self["currentfolder"].setText(("%s") % (jumpto))
	def returnVal(self, val=0):
		if val > 0:
			for x in self.filelist.getFileList():
				if x[0][1] == True:
					val += 1
			self.filelist.moveToIndex(val)

	def StartExif(self):
		if not self.filelist.canDescent():
			#self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
			#self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex()))
			self.session.open(MessageBox, "Oh no, bugged in this version :(", MessageBox.TYPE_ERROR)

	def Settings(self):
		self.session.open(MC_PicSetup)
	
	def Exit(self):
		if self.filelist.getCurrentDirectory() is None:
			config.plugins.mc_pp.lastDir.value = "/"
		else:
			config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory()

		config.plugins.mc_pp.save()
		self.close()
class MC_PictureViewer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)

		self["key_red"] = Button("Favorites")
		self["key_green"] = Button("Slide Show")
		self["key_yellow"] = Button("Thumb View")
		self["key_blue"] = Button(_("Settings"))

		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.curfavfolder = -1

		self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", 
			{
				"ok": (self.KeyOk, "Show Picture"),
				"cancel": (self.Exit, "Exit Picture Viewer"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.StartExif, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
				"red": (self.FavoriteFolders, "Favorite Folders"),
				"green": (self.startslideshow, "Start Slideshow"),
				"yellow": (self.StartThumb, "Thumb View"),
				"blue": (self.Settings, "Settings"),
			}, -2)
		
		self.aspect = getAspect()
		currDir = config.plugins.mc_pp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"

		self["currentfolder"].setText(str(currDir))

		self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
		
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)
		self.ThumbTimer.start(500, True)

		self.picload = ePicLoad()
		#self.picload.PictureData.get().append(self.showPic)
		
	def startslideshow(self):
		self.session.openWithCallback(self.returnVal , MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True)

	def up(self):
		self["filelist"].up()
		self.ThumbTimer.start(500, True)

	def down(self):
		self["filelist"].down()
		self.ThumbTimer.start(500, True)
		
	def leftUp(self):
		self["filelist"].pageUp()
		self.ThumbTimer.start(500, True)
		
	def rightDown(self):
		self["filelist"].pageDown()
		self.ThumbTimer.start(500, True)

	def NextFavFolder(self):
		if self.curfavfolder + 1 < config.plugins.mc_favorites.foldercount.value:
			self.curfavfolder += 1
			self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if os.path.exists(self.folder) == True:
				self["filelist"].changeDir(self.folder)
		else:
			return
			
	def PrevFavFolder(self):
		if self.curfavfolder <= 0:
			return
		else:
			self.curfavfolder -= 1
			self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value
			self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value
			self["currentfolder"].setText(("%s") % (self.folder))
			self["currentfavname"].setText(("%s") % (self.favname))
			if os.path.exists(self.folder) == True:
				self["filelist"].changeDir(self.folder)

	def showPic(self, picInfo=""):
		ptr = self.picload.getData()
		if ptr != None:
			self["thumbnail"].instance.setPixmap(ptr.__deref__())
			self["thumbnail"].show()
			
	def showThumb(self):
		return
		if not self.filelist.canDescent():
			if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1:
				ptr = self.picload.getData()
			else:
				ptr = None
			
			#ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.mc_pp.resize.value), 0, 0, cachefile)
			if ptr != None:
				self["thumbnail"].instance.setPixmap(ptr.__deref__())
				self["thumbnail"].show()
		else:
			self["thumbnail"].hide()

	def KeyOk(self):
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False)

	def KeyMenu(self):
		self.ThumbTimer.stop()
		if self["filelist"].canDescent():
			if self.filelist.getCurrent()[0][1]:
				self.currentDirectory = self.filelist.getCurrent()[0][0]
				if self.currentDirectory is not None:
					foldername = self.currentDirectory.split('/')
					foldername = foldername[-2]
					self.session.open(MC_FolderOptions,self.currentDirectory, foldername)
	
	def StartThumb(self):
		self.session.openWithCallback(self.returnVal, MC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory())

	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self["filelist"].changeDir(jumpto)
			self["currentfolder"].setText(("%s") % (jumpto))
	
	def FavoriteFolders(self):
		self.session.openWithCallback(self.JumpToFolder, MC_FavoriteFolders)

	def returnVal(self, val=0):
		if val > 0:
			for x in self.filelist.getFileList():
				if x[0][1] == True:
					val += 1
			self.filelist.moveToIndex(val)

	def StartExif(self):
		if not self.filelist.canDescent():
			#self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
			#self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex()))
			self.session.open(MessageBox, "Oh no, bugged in this version :(", MessageBox.TYPE_ERROR)

	def Settings(self):
		self.session.open(MC_PicSetup)
	
	def Exit(self):
		if self.filelist.getCurrentDirectory() is None:
			config.plugins.mc_pp.lastDir.value = "/"
		else:
			config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory()

		config.plugins.mc_pp.save()
		self.close()
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		
		self.isVisible = True

		self.coverArtFileName = ""
		
		self["key_red"] = Button(_(" "))
		self["key_green"] = Button(_(" "))
		self["key_yellow"] = Button(_("Add to Playlist"))
		self["key_blue"] = Button(_("Go to Playlist"))
		
		self["fileinfo"] = Label()
		self["coverArt"] = MediaPixmap()
		
		self["currentfolder"] = Label()

		self["play"] = Pixmap()
		self["stop"] = Pixmap()

		self["curplayingtitle"] = Label()
		
		self.PlaySingle = 0
		
		MC_AudioPlayer.STATE = "NONE"
		
		self.playlist = PlayList()
		self["playlist"] = self.playlist
		MC_AudioPlayer.playlistplay = 0
		MC_AudioPlayer.currPlaying = -1
		
		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
			{
				iPlayableService.evStopped: self.doEOF,
				iPlayableService.evEOF: self.doEOF,
				iPlayableService.evUpdatedInfo: self.__evUpdatedInfo,
				iPlayableService.evUser+11: self.__evDecodeError,
				iPlayableService.evUser+12: self.__evPluginError,
				iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt
			})
			
		self["actions"] = HelpableActionMap(self, "MC_AudioPlayerActions", 
			{
				"ok": (self.KeyOK, _("Play selected file")),
				"cancel": (self.Exit, _("Exit Audio Player")),
				"left": (self.leftUp, _("List Top")),
				"right": (self.rightDown, _("List Bottom")),
				"up": (self.up, _("List up")),
				"down": (self.down, _("List down")),
				"menu": (self.showMenu, _("File / Folder Options")),
				"video": (self.visibility, _("Show / Hide Player")),
				"info": (self.showFileInfo, _("Show File Info")),
				"stop": (self.StopPlayback, _("Stop Playback")),
				#"red": (self.Exit, _("Exit Music")),
				#"green": (self.KeyPlayAll, _("Play All")),
				"yellow": (self.addFiletoPls, _("Add file to playlist")),
				"blue": (self.Playlists, _("Playlists")),
				"next": (self.KeyNext, _("Next song")),
				"previous": (self.KeyPrevious, _("Previous song")),
				"playpause": (self.PlayPause, _("Play / Pause")),
				"stop": (self.StopPlayback, _("Stop")),
				"seekFwd": (self.seekFwd, _("skip forward")),
				"seekBwd": (self.seekBwd, _("skip backward")),
			}, -2)

		self.playlistparsers = {}
		self.addPlaylistParser(PlaylistIOM3U, "m3u")
		self.addPlaylistParser(PlaylistIOPLS, "pls")
		self.addPlaylistParser(PlaylistIOInternal, "e2pls")
		
		currDir = config.plugins.mc_ap.lastDir.value
		if not pathExists(currDir):
			currDir = None

		self["currentfolder"].setText(str(currDir))
		
		self.filelist = FileList(currDir, showMountpoints = True, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(mp3|ogg|wav|wave|flac|m4a|m3u|pls|e2pls)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
Beispiel #15
0
class MC_VideoPlayer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		self["key_red"] = Button(_("Favorites"))
		self["key_yellow"] = Button("")
		self["key_blue"] = Button(_("Settings"))
		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.showiframe = Showiframe()
		self.mvion = False
		self.curfavfolder = -1
		os.system("touch /tmp/bmcmovie")
		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions",
			{
				"ok": (self.KeyOk, "Play selected file"),
				"cancel": (self.Exit, "Exit Video Player"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.showFileInfo, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
#				"red": (self.FavoriteFolders, "Favorite Folders"),
				"blue": (self.KeySettings, "Settings"),
			}, -2)

		currDir = config.plugins.mc_vp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"
		self["currentfolder"].setText(str(currDir))
		sort = config.plugins.mc_vp_sortmode.enabled.value
		self.filelist = []
		self["filelist"] = []
		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib", "/proc", "/ram", "/root", "/sbin", "/sys", "/tmp", "/usr", "/var"]
		self.filelist = FileList(currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern="(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)", additionalExtensions=None, sort=sort)
		self["filelist"] = self.filelist
		self["filelist"].show()

	def up(self):
		self["filelist"].up()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			self.cover()

	def down(self):
		self["filelist"].down()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			self.cover()

	def leftUp(self):
		self["filelist"].pageUp()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			if self.mvion == True:
				self.showiframe.finishStillPicture()
			self.cover()

	def rightDown(self):
		self["filelist"].pageDown()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			if self.mvion == True:
				self.showiframe.finishStillPicture()
		else:
			self.cover()

	def NextFavFolder(self):
		return

	def PrevFavFolder(self):
		return

	def showFileInfo(self):
		if self["filelist"].canDescent():
			return
		else:
			self.session.open(MC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename(), self["filelist"].getFilename(), self["filelist"].getServiceRef())

	def KeyOk(self):
		self.filename = self.filelist.getFilename()
		print(self.filename)
		try:
			if self.filename.endswith('.img') or self.filename.endswith('.iso') or self.filename.endswith('VIDEO_TS/') and config.plugins.mc_vp.dvd.value == "dvd":
				self.showiframe.finishStillPicture()
				from Screens import DVD
				if self.filename.endswith('VIDEO_TS/'):
					path = os.path.split(self.filename.rstrip('/'))[0]
				else:
					path = self.filename
				self.session.open(DVD.DVDPlayer, dvd_filelist=[path])
				return
		except Exception as e:
			print("DVD Player error:", e)
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.showiframe.finishStillPicture()
			self.session.open(MoviePlayer, self["filelist"].getServiceRef(), slist=None, lastservice=None)

	def cover(self):
		filename = self["filelist"].getName()
		short = shortname(filename)
		newshort = short.lower()
		newshort = newshort.replace(" ", "")
		movienameserie = re.sub("e[0-9]{2}", "", newshort.lower())
		covername = "/hdd/bmcover/" + str(movienameserie) + "/backcover.mvi"
		if fileExists(covername):
			self.showiframe.showStillpicture(covername)
			self.mvion = True
		else:
			if self.mvion == True:
				self.showiframe.showStillpicture("/usr/share/enigma2/black.mvi")
				self.mvion = False

	def KeyMenu(self):
#		if self["filelist"].canDescent():
#			if self.filelist.getCurrent()[0][1]:
#				self.currentDirectory = self.filelist.getCurrent()[0][0]
#				if self.currentDirectory is not None:
#					foldername = self.currentDirectory.split('/')
#					foldername = foldername[-2]
#					self.session.open(MC_FolderOptions,self.currentDirectory, foldername)
		return

	def updd(self):
		sort = config.plugins.mc_vp_sortmode.enabled.value
		self.filelist.refresh(sort)

	def KeySettings(self):
		self.session.openWithCallback(self.updd, VideoPlayerSettings)

	def Exit(self):
		if self.filelist.getCurrentDirectory() is None:
			config.plugins.mc_vp.lastDir.value = "/"
		else:
			config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
		config.plugins.mc_vp.save()
		try:
			os.remove("/tmp/bmcmovie")
		except:
			pass
		self.showiframe.finishStillPicture()
		self.close()
class MC_PictureViewer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		
		self.oldService = self.session.nav.getCurrentlyPlayingServiceReference()
		self.session.nav.stopService()
		
		# Show Background MVI
		os.system("/usr/bin/showiframe /usr/share/enigma2/black.mvi &")
		
		self["key_red"] = Button(_(" "))
		self["key_green"] = Button(_("Slide Show"))
		self["key_yellow"] = Button(_("Thumb View"))
		self["key_blue"] = Button(_("Settings"))

		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.curfavfolder = -1

		self["actions"] = HelpableActionMap(self, "MC_PictureViewerActions", 
			{
				"ok": (self.KeyOk, _("Show Picture")),
				"cancel": (self.Exit, _("Directory Up")),
				"left": (self.leftUp, _("List Top")),
				"right": (self.rightDown, _("List Bottom")),
				"up": (self.up, _("List up")),
				"down": (self.down, _("List down")),
				"menu": (self.KeyMenu, _("File / Folder Options")),
				"info": (self.StartExif, _("Show File Info")),
				#"red": (self.Exit, _("Exit Pictures")),
				"green": (self.startslideshow, _("Start Slideshow")),
				"yellow": (self.StartThumb, _("Thumb View")),
				"blue": (self.Settings, _("Settings")),
			}, -2)
		
		currDir = config.plugins.mc_pp.lastDir.value
		if not pathExists(currDir):
			currDir = None

		self["currentfolder"].setText(str(currDir))

		self.filelist = FileList(currDir, showMountpoints = True, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
		self["filelist"] = self.filelist
		self["filelist"].onSelectionChanged.append(self.selectionChanged)
		self["thumbnail"] = Pixmap()
		self["datelabel"] = StaticText("")
		self["cameralabel"] = StaticText("")
		self["sizelabel"] = StaticText("")
		self["date"] = StaticText("")
		self["camera"] = StaticText("")
		self["size"] = StaticText("")
		list = []
		self["fileinfo"] = List(list, enableWrapAround = False)
		
		self.ThumbTimer = eTimer()
		self.ThumbTimer.callback.append(self.showThumb)

		self.picload = ePicLoad()
		self.picload.PictureData.get().append(self.showPic)
		
		self.onLayoutFinish.append(self.setConf)
		
		
	def startslideshow(self):
		self.session.openWithCallback(self.returnVal , MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), True)

	def up(self):
		self["filelist"].up()

	def down(self):
		self["filelist"].down()
		
	def leftUp(self):
		self["filelist"].pageUp()
		
	def rightDown(self):
		self["filelist"].pageDown()

	def showPic(self, picInfo=""):
		ptr = self.picload.getData()
		if ptr != None:
			self["thumbnail"].instance.setPixmap(ptr.__deref__())
			self["thumbnail"].show()
		exiflist = self.picload.getInfo(self.filelist.getCurrentDirectory() + self.filelist.getFilename())
		self["datelabel"].setText("Date/Time:")
		self["cameralabel"].setText("Camera:")
		self["sizelabel"].setText("Width/Heigth:")
		try:
			self["date"].setText(exiflist[4])
		except:
			pass
		try:
			self["camera"].setText(exiflist[3])
		except:
			pass
		try:
			self["size"].setText(exiflist[5])
		except:
			pass
			
	def showThumb(self):
		if not self.filelist.canDescent():
			if self.filelist.getCurrentDirectory() and self.filelist.getFilename():
				if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1:
					self.ThumbTimer.start(500, True)

	def selectionChanged(self):
		if not self.filelist.canDescent():
			self.ThumbTimer.start(500, True)
		else:
			self["thumbnail"].hide()
			self["datelabel"].setText("")
			self["cameralabel"].setText("")
			self["sizelabel"].setText("")
			self["date"].setText("")
			self["camera"].setText("")
			self["size"].setText("")
					
	def KeyOk(self):
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.session.openWithCallback(self.returnVal, MC_PicView, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory(), False)

	def KeyExit(self):
		self.filelist.gotoParent()

	def KeyMenu(self):
		self.ThumbTimer.stop()
		if self["filelist"].canDescent():
			if self.filelist.getCurrent()[0][1]:
				self.currentDirectory = self.filelist.getCurrent()[0][0]
				if self.currentDirectory is not None:
					foldername = self.currentDirectory.split('/')
					foldername = foldername[-2]
					self.session.open(MC_FolderOptions,self.currentDirectory, foldername)
	
	def StartThumb(self):
		self.session.openWithCallback(self.returnVal, MC_PicThumbViewer, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory())

	def returnVal(self, val=0, home=False):
		if home:
			self.Exit()
		else:
			if val > 0:
				for x in self.filelist.getFileList():
					if x[0][1] == True:
						val += 1
				self.filelist.moveToIndex(val)

	def StartExif(self):
		if not self.filelist.canDescent():
			self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getCurrentDirectory() + self.filelist.getFilename()))

	def Settings(self):
		self.session.open(MC_PicSetup)
	
	def setConf(self):
		sc = getScale()
		self.picload.setPara((self["thumbnail"].instance.size().width(), self["thumbnail"].instance.size().height(), sc[0], sc[1], config.plugins.mc_pp.cache.value, int(config.plugins.mc_pp.resize.value), "#00000000"))
	
	def Exit(self):
		try:
			config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory()
		except:
			config.plugins.mc_pp.lastDir.value = 'mountpoint'
		config.plugins.mc_pp.save()
		configfile.save()
		self.session.nav.playService(self.oldService)
		self.close()
class MC_VideoPlayer(Screen, HelpableScreen):

    def __init__(self, session):
        global currDir
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        self['key_red'] = Button(_('Delete Movie'))
        self['key_yellow'] = Button('')
        self['key_blue'] = Button(_('Settings'))
        self['currentfolder'] = Label('')
        self['currentfavname'] = Label('')
        self.showiframe = Showiframe()
        self.mvion = False
        self.curfavfolder = -1
        os.system('touch /tmp/bmcmovie')
        self['actions'] = HelpableActionMap(self, 'MC_VideoPlayerActions', {'ok': (self.KeyOk, 'Play selected file'),
         'cancel': (self.Exit, 'Exit Video Player'),
         'left': (self.leftUp, 'List Top'),
         'right': (self.rightDown, 'List Bottom'),
         'up': (self.up, 'List up'),
         'down': (self.down, 'List down'),
         'menu': (self.KeyMenu, 'File / Folder Options'),
         'info': (self.showFileInfo, 'Show File Info'),
         'nextBouquet': (self.NextFavFolder, 'Next Favorite Folder'),
         'prevBouquet': (self.PrevFavFolder, 'Previous Favorite Folder'),
         'red': (self.SelDelete, 'Delete Movie'),
         'blue': (self.KeySettings, 'Settings')}, -2)
        currDir = config.plugins.mc_vp.lastDir.value
        if not pathExists(currDir):
            currDir = '/'
        self['currentfolder'].setText(str(currDir))
        sort = config.plugins.mc_vp_sortmode.enabled.value
        self.filelist = []
        self['filelist'] = []
        inhibitDirs = ['/bin',
         '/boot',
         '/dev',
         '/dev.static',
         '/etc',
         '/lib',
         '/proc',
         '/ram',
         '/root',
         '/sbin',
         '/sys',
         '/tmp',
         '/usr',
         '/var']
        self.filelist = FileList(currDir, useServiceRef=True, showDirectories=True, showFiles=True, matchingPattern='(?i)^.*\\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)', additionalExtensions=None, sort=sort)
        self['filelist'] = self.filelist
        self['filelist'].show()
        return

    def up(self):
        self['filelist'].up()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            return
        self.cover()

    def down(self):
        self['filelist'].down()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            return
        self.cover()

    def leftUp(self):
        self['filelist'].pageUp()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            return
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        self.cover()

    def rightDown(self):
        self['filelist'].pageDown()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self['filelist'].canDescent():
            if self.mvion == True:
                self.showiframe.finishStillPicture()
        else:
            self.cover()

    def NextFavFolder(self):
        pass

    def SelDelete(self):
        self.filename = self.filelist.getFilename()
        path = self.filename
        self.session.openWithCallback(self.selremove, MessageBox, _('Do you really want to delete\n%s ?') % path, MessageBox.TYPE_YESNO)

    def selremove(self, ret):
        if ret is True:
            self.filename = self.filelist.getFilename()
            if self.filename.endswith('.ts'):
                path = self.filename.replace('.ts', '')
                for fdelete in glob(path + '.*'):
                    os.remove(fdelete)

            elif self.filename.endswith('.vob'):
                path = self.filename.replace('.vob', '')
                print 'path:', path
                for fdelete in glob(path + '.*'):
                    print 'fdelete:', fdelete
                    os.remove(fdelete)

            else:
                path = self.filename
                os.remove(path)
            self.updd()

    def PrevFavFolder(self):
        pass

    def showFileInfo(self):
        if self['filelist'].canDescent():
            return
        self.session.open(MC_VideoInfoView, self['filelist'].getCurrentDirectory() + self['filelist'].getFilename(), self['filelist'].getFilename(), self['filelist'].getServiceRef())

    def KeyOk(self):
        self.filename = self.filelist.getFilename()
        print self.filename
        try:
            if self.filename.endswith('.img') or self.filename.endswith('.iso') or self.filename.endswith('VIDEO_TS/') and config.plugins.mc_vp.dvd.value == 'dvd':
                self.showiframe.finishStillPicture()
                from Screens import DVD
                if self.filename.endswith('VIDEO_TS/'):
                    path = os.path.split(self.filename.rstrip('/'))[0]
                else:
                    path = self.filename
                self.session.open(DVD.DVDPlayer, dvd_filelist=[path])
                return
        except Exception as e:
            print 'DVD Player error:', e

        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            self.showiframe.finishStillPicture()
            self.session.open(MoviePlayer, self['filelist'].getServiceRef(), slist=None, lastservice=None)
        return

    def cover(self):
        filename = self['filelist'].getName()
        short = shortname(filename)
        newshort = short.lower()
        newshort = newshort.replace(' ', '')
        movienameserie = re.sub('e[0-9]{2}', '', newshort.lower())
        covername = '/hdd/bmcover/' + str(movienameserie) + '/backcover.mvi'
        if fileExists(covername):
            self.showiframe.showStillpicture(covername)
            self.mvion = True
        elif self.mvion == True:
            self.showiframe.showStillpicture('/usr/share/enigma2/black.mvi')
            self.mvion = False

    def KeyMenu(self):
        pass

    def updd(self):
        sort = config.plugins.mc_vp_sortmode.enabled.value
        self.filelist.refresh(sort)

    def KeySettings(self):
        self.session.openWithCallback(self.updd, VideoPlayerSettings)

    def Exit(self):
        if self.filelist.getCurrentDirectory() is None:
            config.plugins.mc_vp.lastDir.value = '/'
        else:
            config.plugins.mc_vp.lastDir.value = self.filelist.getCurrentDirectory()
        config.plugins.mc_vp.save()
        try:
            os.remove('/tmp/bmcmovie')
        except:
            pass

        self.showiframe.finishStillPicture()
        self.close()
        return
class MC_VideoPlayer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		self["key_red"] = Button(_("Delete Movie"))
		self["key_yellow"] = Button("")
		self["key_blue"] = Button(_("Settings"))
		self["currentfolder"] = Label("")
		self["currentfavname"] = Label("")
		self.showiframe = Showiframe()
		self.mvion = False
		self.curfavfolder = -1
		os.system("touch /tmp/bmcmovie")
		self["actions"] = HelpableActionMap(self, "MC_VideoPlayerActions", 
			{
				"ok": (self.KeyOk, "Play selected file"),
				"cancel": (self.Exit, "Exit Video Player"),
				"left": (self.leftUp, "List Top"),
				"right": (self.rightDown, "List Bottom"),
				"up": (self.up, "List up"),
				"down": (self.down, "List down"),
				"menu": (self.KeyMenu, "File / Folder Options"),
				"info": (self.showFileInfo, "Show File Info"),
				"nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
				"prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
				"red": (self.SelDelete, "Delete Movie"),
				"blue": (self.KeySettings, "Settings"),
			}, -2)
                global currDir
		currDir = config.plugins.mc_vp.lastDir.value
		if not pathExists(currDir):
			currDir = "/"
		self["currentfolder"].setText(str(currDir))
		sort = config.plugins.mc_vp_sortmode.enabled.value
		self.filelist = []
		self["filelist"] = []
		inhibitDirs = ["/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib" , "/proc", "/ram", "/root" , "/sbin", "/sys", "/tmp", "/usr", "/var"]
		self.filelist = FileList(currDir, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)", additionalExtensions = None, sort = sort)
		self["filelist"] = self.filelist
		self["filelist"].show()
	def up(self):
		self["filelist"].up()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			self.cover()
	def down(self):
		self["filelist"].down()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			self.cover()
	def leftUp(self):
		self["filelist"].pageUp()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			return
		else:
			if self.mvion == True:
				self.showiframe.finishStillPicture()
			self.cover()
	def rightDown(self):
		self["filelist"].pageDown()
		if self.mvion == True:
			self.showiframe.finishStillPicture()
		if self["filelist"].canDescent():
			if self.mvion == True:
				self.showiframe.finishStillPicture()
		else:
			self.cover()
	def NextFavFolder(self):
		return
		
	def SelDelete(self):
		self.filename = self.filelist.getFilename()
		path = self.filename
		self.session.openWithCallback(self.selremove, MessageBox, _("Do you really want to delete\n%s ?") % path, MessageBox.TYPE_YESNO)

	def selremove(self, ret):
		if ret is True:
		        self.filename = self.filelist.getFilename()
		        if self.filename.endswith('.ts'):
		                path = self.filename.replace('.ts', "")
		                for fdelete in glob(path + ".*"):
		                        os.remove (fdelete)
		        elif self.filename.endswith('.vob'):
		                path = self.filename.replace('.vob', "")
		                print "path:", path
		                for fdelete in glob(path + ".*"):
		                        print "fdelete:", fdelete
		                        os.remove (fdelete)	                        
		        else:
                                path = self.filename
			        os.remove(path)
                        self.updd()
                        
		else:
			pass
		
	def PrevFavFolder(self):
		return
	def showFileInfo(self):
		if self["filelist"].canDescent():
			return
		else:
			self.session.open(MC_VideoInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef())
	def KeyOk(self):
		self.filename = self.filelist.getFilename()
		print self.filename
		try:
			if self.filename.endswith('.img') or self.filename.endswith('.iso') or self.filename.endswith('VIDEO_TS/') and config.plugins.mc_vp.dvd.value == "dvd":
				self.showiframe.finishStillPicture()
				from Screens import DVD
				if self.filename.endswith('VIDEO_TS/'):
					path = os.path.split(self.filename.rstrip('/'))[0]
				else:
					path = self.filename
				self.session.open(DVD.DVDPlayer, dvd_filelist=[path])
				return
		except Exception, e:
			print "DVD Player error:", e
		if self.filelist.canDescent():
			self.filelist.descent()
		else:
			self.showiframe.finishStillPicture()
			self.session.open(MoviePlayer, self["filelist"].getServiceRef(), slist = None, lastservice = None)
class MC_PictureViewer(Screen, HelpableScreen):
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)

        self["key_red"] = Button("Favorites")
        self["key_green"] = Button("Slide Show")
        self["key_yellow"] = Button("Thumb View")
        self["key_blue"] = Button(_("Settings"))

        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.curfavfolder = -1

        self["actions"] = HelpableActionMap(
            self,
            "MC_PictureViewerActions",
            {
                "ok": (self.KeyOk, "Show Picture"),
                "cancel": (self.Exit, "Exit Picture Viewer"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "info": (self.StartExif, "Show File Info"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet": (self.PrevFavFolder, "Previous Favorite Folder"),
                "red": (self.FavoriteFolders, "Favorite Folders"),
                "green": (self.startslideshow, "Start Slideshow"),
                "yellow": (self.StartThumb, "Thumb View"),
                "blue": (self.Settings, "Settings"),
            },
            -2,
        )

        self.aspect = getAspect()
        currDir = config.plugins.mc_pp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"

        self["currentfolder"].setText(str(currDir))

        self.filelist = FileList(currDir, matchingPattern="(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
        self["filelist"] = self.filelist
        self["thumbnail"] = Pixmap()

        self.ThumbTimer = eTimer()
        self.ThumbTimer.callback.append(self.showThumb)
        self.ThumbTimer.start(500, True)

        self.picload = ePicLoad()
        # self.picload.PictureData.get().append(self.showPic)

    def startslideshow(self):
        self.session.openWithCallback(
            self.returnVal,
            MC_PicView,
            self.filelist.getFileList(),
            self.filelist.getSelectionIndex(),
            self.filelist.getCurrentDirectory(),
            True,
        )

    def up(self):
        self["filelist"].up()
        self.ThumbTimer.start(500, True)

    def down(self):
        self["filelist"].down()
        self.ThumbTimer.start(500, True)

    def leftUp(self):
        self["filelist"].pageUp()
        self.ThumbTimer.start(500, True)

    def rightDown(self):
        self["filelist"].pageDown()
        self.ThumbTimer.start(500, True)

    def NextFavFolder(self):
        if self.curfavfolder + 1 < config.plugins.mc_favorites.foldercount.value:
            self.curfavfolder += 1
            self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value
            self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if os.path.exists(self.folder) == True:
                self["filelist"].changeDir(self.folder)
        else:
            return

    def PrevFavFolder(self):
        if self.curfavfolder <= 0:
            return
        else:
            self.curfavfolder -= 1
            self.favname = config.plugins.mc_favorites.folders[self.curfavfolder].name.value
            self.folder = config.plugins.mc_favorites.folders[self.curfavfolder].basedir.value
            self["currentfolder"].setText(("%s") % (self.folder))
            self["currentfavname"].setText(("%s") % (self.favname))
            if os.path.exists(self.folder) == True:
                self["filelist"].changeDir(self.folder)

    def showPic(self, picInfo=""):
        ptr = self.picload.getData()
        if ptr != None:
            self["thumbnail"].instance.setPixmap(ptr.__deref__())
            self["thumbnail"].show()

    def showThumb(self):
        return
        if not self.filelist.canDescent():
            if self.picload.getThumbnail(self.filelist.getCurrentDirectory() + self.filelist.getFilename()) == 1:
                ptr = self.picload.getData()
            else:
                ptr = None

                # ptr = loadPic(self.filelist.getCurrentDirectory() + self.filelist.getFilename(), 180, 160, self.aspect, int(config.plugins.mc_pp.resize.value), 0, 0, cachefile)
            if ptr != None:
                self["thumbnail"].instance.setPixmap(ptr.__deref__())
                self["thumbnail"].show()
        else:
            self["thumbnail"].hide()

    def KeyOk(self):
        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            self.session.openWithCallback(
                self.returnVal,
                MC_PicView,
                self.filelist.getFileList(),
                self.filelist.getSelectionIndex(),
                self.filelist.getCurrentDirectory(),
                False,
            )

    def KeyMenu(self):
        self.ThumbTimer.stop()
        if self["filelist"].canDescent():
            if self.filelist.getCurrent()[0][1]:
                self.currentDirectory = self.filelist.getCurrent()[0][0]
                if self.currentDirectory is not None:
                    foldername = self.currentDirectory.split("/")
                    foldername = foldername[-2]
                    self.session.open(MC_FolderOptions, self.currentDirectory, foldername)

    def StartThumb(self):
        self.session.openWithCallback(
            self.returnVal,
            MC_PicThumbViewer,
            self.filelist.getFileList(),
            self.filelist.getSelectionIndex(),
            self.filelist.getCurrentDirectory(),
        )

    def JumpToFolder(self, jumpto=None):
        if jumpto is None:
            return
        else:
            self["filelist"].changeDir(jumpto)
            self["currentfolder"].setText(("%s") % (jumpto))

    def FavoriteFolders(self):
        self.session.openWithCallback(self.JumpToFolder, MC_FavoriteFolders)

    def returnVal(self, val=0):
        if val > 0:
            for x in self.filelist.getFileList():
                if x[0][1] == True:
                    val += 1
            self.filelist.moveToIndex(val)

    def StartExif(self):
        if not self.filelist.canDescent():
            # self.session.open(Pic_Exif, self.filelist.getCurrentDirectory() + self.filelist.getFilename(), self.filelist.getFilename())
            # self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getSelectionIndex()))
            self.session.open(MessageBox, "Oh no, bugged in this version :(", MessageBox.TYPE_ERROR)

    def Settings(self):
        self.session.open(MC_PicSetup)

    def Exit(self):
        if self.filelist.getCurrentDirectory() is None:
            config.plugins.mc_pp.lastDir.value = "/"
        else:
            config.plugins.mc_pp.lastDir.value = self.filelist.getCurrentDirectory()

        config.plugins.mc_pp.save()
        self.close()
Beispiel #20
0
class MC_VideoPlayer(Screen, HelpableScreen):
    def __init__(self, session):
        Screen.__init__(self, session)
        HelpableScreen.__init__(self)
        self["key_red"] = Button(_("Delete Movie"))
        self["key_yellow"] = Button("")
        self["key_blue"] = Button(_("Settings"))
        self["currentfolder"] = Label("")
        self["currentfavname"] = Label("")
        self.showiframe = Showiframe()
        self.mvion = False
        self.curfavfolder = -1
        os.system("touch /tmp/bmcmovie")
        self["actions"] = HelpableActionMap(
            self, "MC_VideoPlayerActions", {
                "ok": (self.KeyOk, "Play selected file"),
                "cancel": (self.Exit, "Exit Video Player"),
                "left": (self.leftUp, "List Top"),
                "right": (self.rightDown, "List Bottom"),
                "up": (self.up, "List up"),
                "down": (self.down, "List down"),
                "menu": (self.KeyMenu, "File / Folder Options"),
                "info": (self.showFileInfo, "Show File Info"),
                "nextBouquet": (self.NextFavFolder, "Next Favorite Folder"),
                "prevBouquet":
                (self.PrevFavFolder, "Previous Favorite Folder"),
                "red": (self.SelDelete, "Delete Movie"),
                "blue": (self.KeySettings, "Settings"),
            }, -2)
        global currDir
        currDir = config.plugins.mc_vp.lastDir.value
        if not pathExists(currDir):
            currDir = "/"
        self["currentfolder"].setText(str(currDir))
        sort = config.plugins.mc_vp_sortmode.enabled.value
        self.filelist = []
        self["filelist"] = []
        inhibitDirs = [
            "/bin", "/boot", "/dev", "/dev.static", "/etc", "/lib", "/proc",
            "/ram", "/root", "/sbin", "/sys", "/tmp", "/usr", "/var"
        ]
        self.filelist = FileList(
            currDir,
            useServiceRef=True,
            showDirectories=True,
            showFiles=True,
            matchingPattern=
            "(?i)^.*\.(ts|vob|mpg|mpeg|avi|mkv|dat|iso|img|mp4|wmv|flv|divx|mov|ogm|m2ts)",
            additionalExtensions=None,
            sort=sort)
        self["filelist"] = self.filelist
        self["filelist"].show()

    def up(self):
        self["filelist"].up()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self["filelist"].canDescent():
            return
        else:
            self.cover()

    def down(self):
        self["filelist"].down()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self["filelist"].canDescent():
            return
        else:
            self.cover()

    def leftUp(self):
        self["filelist"].pageUp()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self["filelist"].canDescent():
            return
        else:
            if self.mvion == True:
                self.showiframe.finishStillPicture()
            self.cover()

    def rightDown(self):
        self["filelist"].pageDown()
        if self.mvion == True:
            self.showiframe.finishStillPicture()
        if self["filelist"].canDescent():
            if self.mvion == True:
                self.showiframe.finishStillPicture()
        else:
            self.cover()

    def NextFavFolder(self):
        return

    def SelDelete(self):
        self.filename = self.filelist.getFilename()
        path = self.filename
        self.session.openWithCallback(
            self.selremove, MessageBox,
            _("Do you really want to delete\n%s ?") % path,
            MessageBox.TYPE_YESNO)

    def selremove(self, ret):
        if ret is True:
            self.filename = self.filelist.getFilename()
            if self.filename.endswith('.ts'):
                path = self.filename.replace('.ts', "")
                for fdelete in glob(path + ".*"):
                    os.remove(fdelete)
            elif self.filename.endswith('.vob'):
                path = self.filename.replace('.vob', "")
                print "path:", path
                for fdelete in glob(path + ".*"):
                    print "fdelete:", fdelete
                    os.remove(fdelete)
            else:
                path = self.filename
                os.remove(path)
            self.updd()

        else:
            pass

    def PrevFavFolder(self):
        return

    def showFileInfo(self):
        if self["filelist"].canDescent():
            return
        else:
            self.session.open(
                MC_VideoInfoView, self["filelist"].getCurrentDirectory() +
                self["filelist"].getFilename(), self["filelist"].getFilename(),
                self["filelist"].getServiceRef())

    def KeyOk(self):
        self.filename = self.filelist.getFilename()
        print self.filename
        try:
            if self.filename.endswith('.img') or self.filename.endswith(
                    '.iso'
            ) or self.filename.endswith(
                    'VIDEO_TS/') and config.plugins.mc_vp.dvd.value == "dvd":
                self.showiframe.finishStillPicture()
                from Screens import DVD
                if self.filename.endswith('VIDEO_TS/'):
                    path = os.path.split(self.filename.rstrip('/'))[0]
                else:
                    path = self.filename
                self.session.open(DVD.DVDPlayer, dvd_filelist=[path])
                return
        except Exception, e:
            print "DVD Player error:", e
        if self.filelist.canDescent():
            self.filelist.descent()
        else:
            self.showiframe.finishStillPicture()
            self.session.open(MoviePlayer,
                              self["filelist"].getServiceRef(),
                              slist=None,
                              lastservice=None)
class MC_AudioPlayer(Screen, HelpableScreen):
	def __init__(self, session):
		Screen.__init__(self, session)
		HelpableScreen.__init__(self)
		
		self.isVisible = True

		self.coverArtFileName = ""
		
		self["key_red"] = Button(_(" "))
		self["key_green"] = Button(_(" "))
		self["key_yellow"] = Button(_("Add to Playlist"))
		self["key_blue"] = Button(_("Go to Playlist"))
		
		self["fileinfo"] = Label()
		self["coverArt"] = MediaPixmap()
		
		self["currentfolder"] = Label()

		self["play"] = Pixmap()
		self["stop"] = Pixmap()

		self["curplayingtitle"] = Label()
		
		self.PlaySingle = 0
		
		MC_AudioPlayer.STATE = "NONE"
		
		self.playlist = PlayList()
		self["playlist"] = self.playlist
		MC_AudioPlayer.playlistplay = 0
		MC_AudioPlayer.currPlaying = -1
		
		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
			{
				iPlayableService.evStopped: self.doEOF,
				iPlayableService.evEOF: self.doEOF,
				iPlayableService.evUpdatedInfo: self.__evUpdatedInfo,
				iPlayableService.evUser+11: self.__evDecodeError,
				iPlayableService.evUser+12: self.__evPluginError,
				iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt
			})
			
		self["actions"] = HelpableActionMap(self, "MC_AudioPlayerActions", 
			{
				"ok": (self.KeyOK, _("Play selected file")),
				"cancel": (self.Exit, _("Exit Audio Player")),
				"left": (self.leftUp, _("List Top")),
				"right": (self.rightDown, _("List Bottom")),
				"up": (self.up, _("List up")),
				"down": (self.down, _("List down")),
				"menu": (self.showMenu, _("File / Folder Options")),
				"video": (self.visibility, _("Show / Hide Player")),
				"info": (self.showFileInfo, _("Show File Info")),
				"stop": (self.StopPlayback, _("Stop Playback")),
				#"red": (self.Exit, _("Exit Music")),
				#"green": (self.KeyPlayAll, _("Play All")),
				"yellow": (self.addFiletoPls, _("Add file to playlist")),
				"blue": (self.Playlists, _("Playlists")),
				"next": (self.KeyNext, _("Next song")),
				"previous": (self.KeyPrevious, _("Previous song")),
				"playpause": (self.PlayPause, _("Play / Pause")),
				"stop": (self.StopPlayback, _("Stop")),
				"seekFwd": (self.seekFwd, _("skip forward")),
				"seekBwd": (self.seekBwd, _("skip backward")),
			}, -2)

		self.playlistparsers = {}
		self.addPlaylistParser(PlaylistIOM3U, "m3u")
		self.addPlaylistParser(PlaylistIOPLS, "pls")
		self.addPlaylistParser(PlaylistIOInternal, "e2pls")
		
		currDir = config.plugins.mc_ap.lastDir.value
		if not pathExists(currDir):
			currDir = None

		self["currentfolder"].setText(str(currDir))
		
		self.filelist = FileList(currDir, showMountpoints = True, useServiceRef = True, showDirectories = True, showFiles = True, matchingPattern = "(?i)^.*\.(mp3|ogg|wav|wave|flac|m4a|m3u|pls|e2pls)", additionalExtensions = "4098:m3u 4098:e2pls 4098:pls")
		self["filelist"] = self.filelist
		self["thumbnail"] = Pixmap()
		
	def up(self):
		self["filelist"].up()

	def down(self):
		self["filelist"].down()
		
	def leftUp(self):
		self["filelist"].pageUp()
		
	def rightDown(self):
		self["filelist"].pageDown()

	def KeyOK(self):
		if self["filelist"].canDescent():
			self.filelist.descent()
			self["currentfolder"].setText(str(self.filelist.getCurrentDirectory()))
		else:
			if self.filelist.getServiceRef().type == 4098: # playlist
				ServiceRef = self.filelist.getServiceRef()
				extension = ServiceRef.getPath()[ServiceRef.getPath().rfind('.') + 1:]
				if self.playlistparsers.has_key(extension):
					self.playlist.clear()
					playlist = self.playlistparsers[extension]()
					list = playlist.open(ServiceRef.getPath())
					for x in list:
						self.playlist.addFile(x.ref)
				self.playlist.updateList()
				MC_AudioPlayer.currPlaying = 0
				self.PlayServicepls()
			else:
				self.PlaySingle = 0
				self.PlayService()

	def PlayPause(self):
		if MC_AudioPlayer.STATE == "PLAY":
			service = self.session.nav.getCurrentService()
			pausable = service.pause()
			pausable.pause()
			MC_AudioPlayer.STATE = "PAUSED"
		elif MC_AudioPlayer.STATE == "PAUSED" or MC_AudioPlayer.STATE == "SEEKBWD" or MC_AudioPlayer.STATE == "SEEKFWD":
			service = self.session.nav.getCurrentService()
			pausable = service.pause()
			pausable.unpause()
			MC_AudioPlayer.STATE = "PLAY"
		else:
			self.KeyOK()
			
	def seekFwd(self):
		if MC_AudioPlayer.STATE == "PLAY" or MC_AudioPlayer.STATE == "SEEKBWD":
			service = self.session.nav.getCurrentService()
			pausable = service.pause()
			pausable.setFastForward(4)
			MC_AudioPlayer.STATE = "SEEKFWD"

	def seekBwd(self):
		if MC_AudioPlayer.STATE == "PLAY" or MC_AudioPlayer.STATE == "SEEKFWD":
			service = self.session.nav.getCurrentService()
			pausable = service.pause()
			pausable.setFastForward(-4)
			MC_AudioPlayer.STATE = "SEEKBWD"

	def KeyNext(self):
		if MC_AudioPlayer.STATE != "NONE":
			if MC_AudioPlayer.playlistplay == 1:
				next = self.playlist.getCurrentIndex() + 1
				if next < len(self.playlist):
					MC_AudioPlayer.currPlaying = MC_AudioPlayer.currPlaying + 1
				else:
					MC_AudioPlayer.currPlaying = 0
				self.PlayServicepls()
			
			else:
				print "Play Next File ..."
				self.down()
				self.PlayService()
		
	def KeyPrevious(self):
		if MC_AudioPlayer.STATE != "NONE":
			if MC_AudioPlayer.playlistplay == 1:
				next = self.playlist.getCurrentIndex() - 1
				if next != -1:
					MC_AudioPlayer.currPlaying = MC_AudioPlayer.currPlaying - 1
				else:
					MC_AudioPlayer.currPlaying = 0
				self.PlayServicepls()
			
			else:
				print "Play previous File ..."
				self.up()
				self.PlayService()

	def KeyPlayAll(self):
		if not self["filelist"].canDescent():
			self.PlaySingle = 0
			self.PlayService()

	def KeyExit(self):
		self.filelist.gotoParent()

	def KeyYellow(self):
		print "yellow"
			
	def visibility(self, force=1):
		if self.isVisible == True:
			self.isVisible = False
			self.hide()
		else:
			self.isVisible = True
			self.show()
	
	def Playlists(self):
		self.session.openWithCallback(self.updateFileInfo, MC_AudioPlaylist)
		
	def PlayService(self):
		playlistplay = 0
		self.session.nav.playService(self["filelist"].getServiceRef())
		MC_AudioPlayer.STATE = "PLAY"
		self.updateFileInfo()
		
		path = self["filelist"].getCurrentDirectory() + self["filelist"].getFilename()
		self["coverArt"].updateCoverArt(path)

	def PlayServicepls(self):
		MC_AudioPlayer.playlistplay = 1
		
		x = self.playlist.getCurrentIndex()
		print "x is %s" % (x)
		x = len(self.playlist)
		print "x is %s" % (x)
		ref = self.playlist.getServiceRefList()[self.playlist.getCurrentIndex()]
		self.session.nav.playService(ref)
		MC_AudioPlayer.STATE = "PLAY"
		self.updateFileInfo()
		
		#path = self["filelist"].getCurrentDirectory() + self["filelist"].getFilename()
		#self["coverArt"].updateCoverArt(path)

	def StopPlayback(self):
		if self.isVisible == False:
			self.show()
			self.isVisible = True
		
		if self.session.nav.getCurrentService() is None:
			return
		else:
			self.session.nav.stopService()
			MC_AudioPlayer.STATE = "NONE"

	def showFileInfo(self):
		if self["filelist"].canDescent():
			return
		else:
			self.session.open(MC_AudioInfoView, self["filelist"].getCurrentDirectory() + self["filelist"].getFilename() , self["filelist"].getFilename(), self["filelist"].getServiceRef())			

	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self["filelist"].changeDir(jumpto)
			self["currentfolder"].setText(("%s") % (jumpto))

	def updateFileInfo(self):
		currPlay = self.session.nav.getCurrentService()
		if currPlay is not None:
			sTitle = currPlay.info().getInfoString(iServiceInformation.sTagTitle)
			sArtist = currPlay.info().getInfoString(iServiceInformation.sTagArtist)
			sAlbum = currPlay.info().getInfoString(iServiceInformation.sTagAlbum)
			sGenre = currPlay.info().getInfoString(iServiceInformation.sTagGenre)
			sComment = currPlay.info().getInfoString(iServiceInformation.sTagComment)
			sYear = currPlay.info().getInfoString(iServiceInformation.sTagDate)
			
			if sTitle == "":
				sTitle = currPlay.info().getName().split('/')[-1]
					
			self["fileinfo"].setText(_("Title:") + " " + sTitle + "\n" + _("Artist:") + " " +  sArtist + "\n" + _("Album:") + " " + sAlbum + "\n" + _("Genre:") + " " + sGenre + "\n" + _("Comment:") + " " + sComment)
			self["curplayingtitle"].setText(_("Now Playing:") + " " + sArtist + " - " + sTitle)

	def addFiletoPls(self):
		if self.filelist.getServiceRef().type == 4098: # playlist
			ServiceRef = self.filelist.getServiceRef()
			extension = ServiceRef.getPath()[ServiceRef.getPath().rfind('.') + 1:]
			if self.playlistparsers.has_key(extension):
				playlist = self.playlistparsers[extension]()
				list = playlist.open(ServiceRef.getPath())
				for x in list:
					self.playlist.addFile(x.ref)
				self.playlist.updateList()
		else:
			self.playlist.addFile(self.filelist.getServiceRef())
			self.playlist.updateList()

	def addDirtoPls(self, directory, recursive = True):
		print "copyDirectory", directory
		if directory == '/':
			print "refusing to operate on /"
			return
		filelist = FileList(directory, useServiceRef = True, showMountpoints = False, isTop = True)

		for x in filelist.getFileList():
			if x[0][1] == True: #isDir
				if recursive:
					if x[0][0] != directory:
						self.copyDirectory(x[0][0])
			elif filelist.getServiceRef() and filelist.getServiceRef().type == 4097:
				self.playlist.addFile(x[0][0])
		self.playlist.updateList()

	def deleteFile(self):
		self.service = self.filelist.getServiceRef()
		if self.service.type != 4098 and self.session.nav.getCurrentlyPlayingServiceReference() is not None:
			if self.service == self.session.nav.getCurrentlyPlayingServiceReference():
				self.StopPlayback()
		
		self.session.openWithCallback(self.deleteFileConfirmed, MessageBox, _("Do you really want to delete this file ?"))

	def deleteFileConfirmed(self, confirmed):
		if confirmed:
			delfile = self["filelist"].getFilename()
			os.remove(delfile)
	
	def deleteDir(self):
		self.session.openWithCallback(self.deleteDirConfirmed, MessageBox, _("Do you really want to delete this directory and it's content ?"))
		
	def deleteDirConfirmed(self, confirmed):
		if confirmed:
			import shutil
			deldir = self.filelist.getSelection()[0]
			shutil.rmtree(deldir)
	
	def addPlaylistParser(self, parser, extension):
		self.playlistparsers[extension] = parser

	def Exit(self):
		if self.isVisible == False:
			self.visibility()
			return
		
		try:
			config.plugins.mc_ap.lastDir.value = self.filelist.getCurrentDirectory()
		except:
			config.plugins.mc_ap.lastDir.value = 'mountpoint'
		config.plugins.mc_ap.save()
		configfile.save()
		
		del self["coverArt"].picload
		self.session.nav.stopService()
		MC_AudioPlayer.STATE = "NONE"
		self.close()

	def showMenu(self):
		menu = []
		if self.filelist.canDescent():
			x = self.filelist.getName()
			if x == "..":
				return
			menu.append((_("add directory to playlist"), "copydir"))
			menu.append((_("delete directory"), "deletedir"))
		else:
			menu.append((_("add file to playlist"), "copyfile"))
			menu.append((_("add file to playlist and play"), "copyandplay"))
			menu.append((_("add all files in directory to playlist"), "copyfiles"))
			menu.append((_("delete file"), "deletefile"))
		self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)

	def menuCallback(self, choice):
		if choice is None:
			return

		if choice[1] == "copydir":
			self.addDirtoPls(self.filelist.getSelection()[0])
		elif choice[1] == "deletedir":
			self.deleteDir()
		elif choice[1] == "copyfile":
			self.addFiletoPls()
		elif choice[1] == "copyandplay":
			self.addFiletoPls()
			MC_AudioPlayer.currPlaying = len(self.playlist) - 1
			print "curplay is %s" % (MC_AudioPlayer.currPlaying)
			self.PlayServicepls()
		elif choice[1] == "copyfiles":
			self.addDirtoPls(os_path.dirname(self.filelist.getSelection()[0].getPath()) + "/", recursive = False)
		elif choice[1] == "deletefile":
			self.deleteFile()
		
	def doEOF(self):
		print "MediaCenter: EOF Event AUDIO..."
		if MC_AudioPlayer.playlistplay == 1:
			next = self.playlist.getCurrentIndex() + 1
			if next < len(self.playlist):
				MC_AudioPlayer.currPlaying = MC_AudioPlayer.currPlaying + 1
				self.PlayServicepls()
		
		elif self.PlaySingle == 0:
			print "Play Next File ..."
			self.down()
			if not self["filelist"].canDescent():
				self.PlayService()
			else:
				self.StopPlayback()
		else:
			print "Stop Playback ..."
			self.StopPlayback()

	def __evUpdatedInfo(self):
		self.updateFileInfo()

	def __evDecodeError(self):
		currPlay = self.session.nav.getCurrentService()
		sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
		print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
		self.session.open(MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MessageBox.TYPE_INFO,timeout = 20 )

	def __evPluginError(self):
		currPlay = self.session.nav.getCurrentService()
		message = currPlay.info().getInfoString(iServiceInformation.sUser+12)
		print "[__evPluginError]" , message
		self.session.open(MessageBox, message, type = MessageBox.TYPE_INFO,timeout = 20 )