Beispiel #1
0
 def __init__(self, session, server):
     Screen.__init__(self, session)
     self.session = session
     self.server = server
     self.filelistlabel = 'Filelist:' + self.server.getBasedir()
     self.playlistlabel = 'Playlist'
     self.defaultFilter = '(?i)\\.(avi|mpeg|mpg|divx|flac|ogg|xvid|mp3|mp4|mov|ts|vob|wmv|mkv|iso|bin|m3u|pls|dat|xspf)$'
     self.filelist = VlcFileList(self.getFilesAndDirsCB,
                                 server.getBasedir(), self.defaultFilter)
     self['filelist'] = self.filelist
     self['playlist'] = VlcPlayList(self.getPlaylistEntriesCB)
     self['listlabel'] = Label('')
     self['key_red'] = Button('Favorites')
     self['key_green'] = Button('Preview')
     self['key_yellow'] = Button('Refresh')
     self['key_blue'] = Button('Filter Off')
     self['currentdir'] = Label('Folder:')
     self['currentmedia'] = Label('')
     self['currentserver'] = Label('Server:')
     self['filterstatus'] = Label('Filter: On')
     self.curfavfolder = -1
     self.__event_tracker = ServiceEventTracker(
         screen=self,
         eventmap={
             iPlayableService.evEnd: self.StopPlayback,
             iPlayableService.evEOF: self.StopPlayback,
             iPlayableService.evStopped: self.StopPlayback
         })
     self['actions'] = ActionMap(
         [
             'WizardActions', 'InfobarActions', 'MovieSelectionActions',
             'MenuActions', 'ShortcutActions', 'MoviePlayerActions',
             'EPGSelectActions'
         ], {
             'back': self.Exit,
             'red': self.JumpToFavs,
             'green': self.showPreview,
             'yellow': self.update,
             'blue': self.keyFilter,
             'up': self.up,
             'down': self.down,
             'left': self.left,
             'right': self.right,
             'ok': self.ok,
             'menu': self.KeyMenu,
             'nextBouquet': self.NextFavFolder,
             'prevBouquet': self.PrevFavFolder,
             'showMovies': self.visibility,
             'leavePlayer': self.StopPlayback
         }, -1)
     self.currentList = None
     self.playlistIds = []
     self.isVisible = True
     self.switchToFileList()
     self.onClose.append(self.__onClose)
     self.onShown.append(self.__onShown)
     return
Beispiel #2
0
	def __init__(self, session, server):
		Screen.__init__(self, session)
		self.session = session
		self.server = server
		self.filelistlabel = "Filelist:" + self.server.getBasedir()
		self.playlistlabel = "Playlist"

		self.defaultFilter = "(?i)\.(avi|mpeg|mpg|divx|flac|ogg|xvid|mp3|mp4|mov|ts|vob|wmv|mkv|iso|bin|m3u|pls|dat|xspf)$"

		#self.filelist = VlcFileList(server, self.defaultFilter)
		self.filelist = VlcFileList(self.getFilesAndDirsCB, server.getBasedir(), self.defaultFilter)

		self["filelist"] = self.filelist
		self["playlist"] = VlcPlayList(self.getPlaylistEntriesCB)
		self["listlabel"] = Label("")
		self["key_red"] = Button("Favorites")
		self["key_green"] = Button("Preview")
		self["key_yellow"] = Button("Refresh")
		self["key_blue"] = Button("Filter Off")

		self["currentdir"] = Label("Folder:")
		self["currentmedia"] = Label("")

		self["currentserver"] = Label("Server:")
		self["filterstatus"] = Label("Filter: On")

		self.curfavfolder = -1

		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
			{
				#iPlayableService.evStart: self.doEofInternal,
				iPlayableService.evEnd: self.StopPlayback,
				iPlayableService.evEOF: self.StopPlayback,
				iPlayableService.evStopped: self.StopPlayback
			})

		self["actions"] = ActionMap(["WizardActions","InfobarActions", "MovieSelectionActions", "MenuActions", "ShortcutActions", "MoviePlayerActions", "EPGSelectActions"],
			{
			 "back": 	self.Exit,
			 "red": 	self.JumpToFavs,
			 "green":	self.showPreview,
			 "yellow": 	self.update,
			 "blue":	self.keyFilter,
			 "up": 		self.up,
			 "down": 	self.down,
			 "left": 	self.left,
			 "right": 	self.right,
			 "ok":		self.ok,
			 "menu": self.KeyMenu,
			 "nextBouquet": self.NextFavFolder,
			 "prevBouquet": self.PrevFavFolder,
			 "showMovies": self.visibility,
			 "leavePlayer": self.StopPlayback
			 }, -1)

		self.currentList = None
		self.playlistIds = []

		self.isVisible = True

		self.switchToFileList()

		self.onClose.append(self.__onClose)
		self.onShown.append(self.__onShown)
Beispiel #3
0
class MC_VLCMedialist(Screen):
	def __init__(self, session, server):
		Screen.__init__(self, session)
		self.session = session
		self.server = server
		self.filelistlabel = "Filelist:" + self.server.getBasedir()
		self.playlistlabel = "Playlist"

		self.defaultFilter = "(?i)\.(avi|mpeg|mpg|divx|flac|ogg|xvid|mp3|mp4|mov|ts|vob|wmv|mkv|iso|bin|m3u|pls|dat|xspf)$"

		#self.filelist = VlcFileList(server, self.defaultFilter)
		self.filelist = VlcFileList(self.getFilesAndDirsCB, server.getBasedir(), self.defaultFilter)

		self["filelist"] = self.filelist
		self["playlist"] = VlcPlayList(self.getPlaylistEntriesCB)
		self["listlabel"] = Label("")
		self["key_red"] = Button("Favorites")
		self["key_green"] = Button("Preview")
		self["key_yellow"] = Button("Refresh")
		self["key_blue"] = Button("Filter Off")

		self["currentdir"] = Label("Folder:")
		self["currentmedia"] = Label("")

		self["currentserver"] = Label("Server:")
		self["filterstatus"] = Label("Filter: On")

		self.curfavfolder = -1

		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
			{
				#iPlayableService.evStart: self.doEofInternal,
				iPlayableService.evEnd: self.StopPlayback,
				iPlayableService.evEOF: self.StopPlayback,
				iPlayableService.evStopped: self.StopPlayback
			})

		self["actions"] = ActionMap(["WizardActions","InfobarActions", "MovieSelectionActions", "MenuActions", "ShortcutActions", "MoviePlayerActions", "EPGSelectActions"],
			{
			 "back": 	self.Exit,
			 "red": 	self.JumpToFavs,
			 "green":	self.showPreview,
			 "yellow": 	self.update,
			 "blue":	self.keyFilter,
			 "up": 		self.up,
			 "down": 	self.down,
			 "left": 	self.left,
			 "right": 	self.right,
			 "ok":		self.ok,
			 "menu": self.KeyMenu,
			 "nextBouquet": self.NextFavFolder,
			 "prevBouquet": self.PrevFavFolder,
			 "showMovies": self.visibility,
			 "leavePlayer": self.StopPlayback
			 }, -1)

		self.currentList = None
		self.playlistIds = []

		self.isVisible = True

		self.switchToFileList()

		self.onClose.append(self.__onClose)
		self.onShown.append(self.__onShown)

	def __onClose(self):
		try:
			for id in self.playlistIds:
				self.server.delete(id)
		except Exception as e:
			pass

	def __onShown(self):
		self.setTitle("VLC Server: " + (self.server.getName() or self.server.getHost()))
		self["currentserver"].setText("Server: " + (self.server.getName() or self.server.getHost()))

	def update(self):
		try:
			self.updateFilelist()
			self.updatePlaylist()
			if self.currentList == self["playlist"]:
				self.switchToPlayList()
			else:
				self.switchToFileList()
		except Exception as e:
			self.session.open(
				MessageBox, _("Error updating file- and playlist from server %s:\n%s" % (
						self.server.getName(), e)
					), MessageBox.TYPE_ERROR)

	def updatePlaylist(self):
		self["playlist"].update()

	def updateFilelist(self):
		self["filelist"].update()

	def keyFilter(self):
		if self["filelist"].regex is None:
			self["filelist"].changeRegex(self.defaultFilter)
			self["filterstatus"].setText("Filter: On")
			self["key_blue"].setText("Filter Off")
		else:
			self["filelist"].changeRegex(None)
			self["filterstatus"].setText("Filter: Off")
			self["key_blue"].setText("Filter On")
		try:
			self.updateFilelist()
		except Exception as e:
			self.session.open(
				MessageBox, _("Error updating filelist from server %s:\n%s" % (
						self.server.getName(), e)
					), MessageBox.TYPE_ERROR)

	def KeyMenu(self):
		if self.filelist.getCurrent() is not None:
			# Folder Options
			if self.filelist.getCurrent()[0][1]:
				self.currentDirectory = self.filelist.getCurrent()[0][0]
				foldername = self.currentDirectory.split('/')
				foldername = foldername[-1]
				self.session.open(FolderOptions, self.currentDirectory, foldername)

	def keyDvd(self):
		self.play("dvdsimple://" + self.server.getDvdPath(), "DVD")

	def up(self):
		self.currentList.up()

	def down(self):
		self.currentList.down()

	def left(self):
		self.currentList.pageUp()

	def right(self):
		self.currentList.pageDown()

	def play(self, media, name):
		#dlg = self.session.open(VlcPlayer, self.server, self.currentList)
		#dlg.playfile(media, name)
		self.server.play(self.session, media, name, self.currentList)

	def ok(self):
		media, name = self.currentList.activate()
		if media is not None:
			medianame = media.split('/')
			medianame = medianame[-1]
			self["currentmedia"].setText(("%s") % (medianame))
			if media.lower().endswith(".m3u") or media.lower().endswith(".pls") or media.lower().endswith(".xspf"):
				try:
					id = self.server.loadPlaylist(media)
					if id is not None:
						self.playlistIds.append(id)
						self.updatePlaylist()
				except Exception as e:
					self.session.open(
						MessageBox, _("Error loading playlist %s into server %s:\n%s" % (
								media, self.server.getName(), e)
							), MessageBox.TYPE_ERROR)
			elif media.lower().endswith(".iso"):
				self.play("dvdsimple://" + media, "DVD")
			else:
				self.play(media, name)
		elif name is not None:
			self.setLabel(name)
			self["currentdir"].setText("Folder: " + name)

	def showPreview(self):
		DEFAULT_VIDEO_PID = 0x44
		DEFAULT_AUDIO_PID = 0x45
		ENIGMA_SERVICE_ID = 0x1002

		url = None

		if self.filelist.getCurrent()[0][1]:
			return
		else:
			self.filename = self.filelist.getCurrent()[0][0]
		try:
			url = self.server.playFile(self.filename, DEFAULT_VIDEO_PID, DEFAULT_AUDIO_PID)
			print ("[VLC] url: " + url)
		except Exception as e:
			self.session.open(MessageBox, _("Error with VLC server:\n%s" % e), MessageBox.TYPE_ERROR)

		if url is not None:
			#self.session.open(MessageBox, _("OPEN URL:\n%s" % url), MessageBox.TYPE_INFO)
			sref = eServiceReference(ENIGMA_SERVICE_ID, 0, url)
			print ("sref valid=", sref.valid())
			sref.setData(0, DEFAULT_VIDEO_PID)
			sref.setData(1, DEFAULT_AUDIO_PID)
			self.session.nav.stopService()
			self.session.nav.playService(sref)

			media, name = self.currentList.activate()
			if media is not None:
				medianame = media.split('/')
				medianame = medianame[-1]
				self["currentmedia"].setText(("%s") % (medianame))

	def getFilesAndDirsCB(self, currentDirectory, regex):
		try:
			return self.server.getFilesAndDirs(currentDirectory, regex)
		except ExpatError as e:
			self.session.open(
				MessageBox, _("Error loading playlist into server %s:\n%s" % (
						self.server.getName(), e)
					), MessageBox.TYPE_ERROR)
			raise ExpatError, e
		except Exception as e:
			self.session.open(
				MessageBox, _("Error loading filelist into server %s:\n%s" % (
						self.server.getName(), e)
					), MessageBox.TYPE_ERROR)
		return None

	def getPlaylistEntriesCB(self):
		try:
			return self.server.getPlaylistEntries()
		except ExpatError as e:
			self.session.open(
				MessageBox, _("Error loading playlist into server %s:\n%s" % (
						self.server.getName(), e)
					), MessageBox.TYPE_ERROR)
		except Exception as e:
			self.session.open(
				MessageBox, _("Error loading playlist into server %s:\n%s" % (
						self.server.getName(), e)
					), MessageBox.TYPE_ERROR)
		return None

	def setLabel(self, text):
		if self.currentList == self["filelist"]:
			self.filelistlabel = "Filelist:" + text
		else:
			self.playlistlabel = text
		self["listlabel"].setText(text)

	def switchLists(self):
		if self.currentList == self["filelist"]:
			self.switchToPlayList()
		else:
			self.switchToFileList()

	def switchToFileList(self):
		self["playlist"].hide()
		self["filelist"].show()
		self.currentList = self["filelist"]
		self["listlabel"].setText(self.filelistlabel)
		#self["key_yellow"].setText("show playlist")

	def switchToPlayList(self):
		self["filelist"].hide()
		self["playlist"].show()
		self.currentList = self["playlist"]
		self["listlabel"].setText(self.playlistlabel)
		#self["key_yellow"].setText("show filelist")

	def NextFavFolder(self):
		if self.curfavfolder + 1 < config.plugins.mc_vlc.foldercount.value:
			self.curfavfolder += 1
			self.favname = config.plugins.mc_vlc.folders[self.curfavfolder].name.value
			self.currDir = config.plugins.mc_vlc.folders[self.curfavfolder].basedir.value
			self["currentdir"].setText("Folder: " + self.currDir)
			self["currentmedia"].setText(("%s") % (self.favname))
			self.changeDir(self.currDir)
		else:
			return

	def PrevFavFolder(self):
		if self.curfavfolder <= 0:
			return
		else:
			self.curfavfolder -= 1
			self.favname = config.plugins.mc_vlc.folders[self.curfavfolder].name.value
			self.currDir = config.plugins.mc_vlc.folders[self.curfavfolder].basedir.value
			self["currentdir"].setText("Folder: " + self.currDir)
			self["currentmedia"].setText(("%s") % (self.favname))
			self.changeDir(self.currDir)

	def JumpToFolder(self, jumpto = None):
		if jumpto is None:
			return
		else:
			self.changeDir(jumpto)
			self.currDir = jumpto

	def JumpToFavs(self):
		self.session.openWithCallback(self.JumpToFolder, MC_VLCFavoriteFolders)

	def changeDir(self, dir):
		print ("[VLC] changeDir ", dir)
		try:
			self.currentList.changeDirectory(dir)
			self.updateFilelist()
		except Exception as e:
			self.session.open(MessageBox, _("Error switching directory:\n%s" % (e)), MessageBox.TYPE_ERROR)

	def visibility(self, force=1):
		if self.isVisible == True:
			self.isVisible = False
			self.hide()
		else:
			self.isVisible = True
			self.show()
			#self["list"].refresh()

	def StopPlayback(self):
		self.session.nav.stopService()
		self["currentmedia"].setText("")

		if self.isVisible == False:
			self.show()
			self.isVisible = True
		
	def Exit(self):
		if self.isVisible == False:
			self.visibility()
			return
			
		#if self.filelist.getCurrentDirectory() is None:
		#	config.plugins.mc_vlc.lastDir.value = ""
		#else:
		#	config.plugins.mc_vlc.lastDir.value = self.filelist.getCurrentDirectory()

		# Stop currently playing service
		self.session.nav.stopService()
		# Save and exit
		config.plugins.mc_vlc.save()
		self.close()
Beispiel #4
0
class MC_VLCMedialist(Screen):
    def __init__(self, session, server):
        Screen.__init__(self, session)
        self.session = session
        self.server = server
        self.filelistlabel = 'Filelist:' + self.server.getBasedir()
        self.playlistlabel = 'Playlist'
        self.defaultFilter = '(?i)\\.(avi|mpeg|mpg|divx|flac|ogg|xvid|mp3|mp4|mov|ts|vob|wmv|mkv|iso|bin|m3u|pls|dat|xspf)$'
        self.filelist = VlcFileList(self.getFilesAndDirsCB,
                                    server.getBasedir(), self.defaultFilter)
        self['filelist'] = self.filelist
        self['playlist'] = VlcPlayList(self.getPlaylistEntriesCB)
        self['listlabel'] = Label('')
        self['key_red'] = Button('Favorites')
        self['key_green'] = Button('Preview')
        self['key_yellow'] = Button('Refresh')
        self['key_blue'] = Button('Filter Off')
        self['currentdir'] = Label('Folder:')
        self['currentmedia'] = Label('')
        self['currentserver'] = Label('Server:')
        self['filterstatus'] = Label('Filter: On')
        self.curfavfolder = -1
        self.__event_tracker = ServiceEventTracker(
            screen=self,
            eventmap={
                iPlayableService.evEnd: self.StopPlayback,
                iPlayableService.evEOF: self.StopPlayback,
                iPlayableService.evStopped: self.StopPlayback
            })
        self['actions'] = ActionMap(
            [
                'WizardActions', 'InfobarActions', 'MovieSelectionActions',
                'MenuActions', 'ShortcutActions', 'MoviePlayerActions',
                'EPGSelectActions'
            ], {
                'back': self.Exit,
                'red': self.JumpToFavs,
                'green': self.showPreview,
                'yellow': self.update,
                'blue': self.keyFilter,
                'up': self.up,
                'down': self.down,
                'left': self.left,
                'right': self.right,
                'ok': self.ok,
                'menu': self.KeyMenu,
                'nextBouquet': self.NextFavFolder,
                'prevBouquet': self.PrevFavFolder,
                'showMovies': self.visibility,
                'leavePlayer': self.StopPlayback
            }, -1)
        self.currentList = None
        self.playlistIds = []
        self.isVisible = True
        self.switchToFileList()
        self.onClose.append(self.__onClose)
        self.onShown.append(self.__onShown)
        return

    def __onClose(self):
        try:
            for id in self.playlistIds:
                self.server.delete(id)

        except Exception as e:
            pass

    def __onShown(self):
        self.setTitle('VLC Server: ' +
                      (self.server.getName() or self.server.getHost()))
        self['currentserver'].setText(
            'Server: ' + (self.server.getName() or self.server.getHost()))

    def update(self):
        try:
            self.updateFilelist()
            self.updatePlaylist()
            if self.currentList == self['playlist']:
                self.switchToPlayList()
            else:
                self.switchToFileList()
        except Exception as e:
            self.session.open(
                MessageBox,
                _('Error updating file- and playlist from server %s:\n%s' %
                  (self.server.getName(), e)), MessageBox.TYPE_ERROR)

    def updatePlaylist(self):
        self['playlist'].update()

    def updateFilelist(self):
        self['filelist'].update()

    def keyFilter(self):
        if self['filelist'].regex is None:
            self['filelist'].changeRegex(self.defaultFilter)
            self['filterstatus'].setText('Filter: On')
            self['key_blue'].setText('Filter Off')
        else:
            self['filelist'].changeRegex(None)
            self['filterstatus'].setText('Filter: Off')
            self['key_blue'].setText('Filter On')
        try:
            self.updateFilelist()
        except Exception as e:
            self.session.open(
                MessageBox,
                _('Error updating filelist from server %s:\n%s' %
                  (self.server.getName(), e)), MessageBox.TYPE_ERROR)

        return

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

    def keyDvd(self):
        self.play('dvdsimple://' + self.server.getDvdPath(), 'DVD')

    def up(self):
        self.currentList.up()

    def down(self):
        self.currentList.down()

    def left(self):
        self.currentList.pageUp()

    def right(self):
        self.currentList.pageDown()

    def play(self, media, name):
        self.server.play(self.session, media, name, self.currentList)

    def ok(self):
        media, name = self.currentList.activate()
        if media is not None:
            medianame = media.split('/')
            medianame = medianame[-1]
            self['currentmedia'].setText('%s' % medianame)
            if media.lower().endswith('.m3u') or media.lower().endswith(
                    '.pls') or media.lower().endswith('.xspf'):
                try:
                    id = self.server.loadPlaylist(media)
                    if id is not None:
                        self.playlistIds.append(id)
                        self.updatePlaylist()
                except Exception as e:
                    self.session.open(
                        MessageBox,
                        _('Error loading playlist %s into server %s:\n%s' %
                          (media, self.server.getName(), e)),
                        MessageBox.TYPE_ERROR)

            elif media.lower().endswith('.iso'):
                self.play('dvdsimple://' + media, 'DVD')
            else:
                self.play(media, name)
        elif name is not None:
            self.setLabel(name)
            self['currentdir'].setText('Folder: ' + name)
        return

    def showPreview(self):
        DEFAULT_VIDEO_PID = 68
        DEFAULT_AUDIO_PID = 69
        ENIGMA_SERVICE_ID = 4098
        url = None
        if self.filelist.getCurrent()[0][1]:
            return
        else:
            self.filename = self.filelist.getCurrent()[0][0]
            try:
                url = self.server.playFile(self.filename, DEFAULT_VIDEO_PID,
                                           DEFAULT_AUDIO_PID)
                print '[VLC] url: ' + url
            except Exception as e:
                self.session.open(MessageBox,
                                  _('Error with VLC server:\n%s' % e),
                                  MessageBox.TYPE_ERROR)

            if url is not None:
                sref = eServiceReference(ENIGMA_SERVICE_ID, 0, url)
                print 'sref valid=', sref.valid()
                sref.setData(0, DEFAULT_VIDEO_PID)
                sref.setData(1, DEFAULT_AUDIO_PID)
                self.session.nav.stopService()
                self.session.nav.playService(sref)
                media, name = self.currentList.activate()
                if media is not None:
                    medianame = media.split('/')
                    medianame = medianame[-1]
                    self['currentmedia'].setText('%s' % medianame)
            return

    def getFilesAndDirsCB(self, currentDirectory, regex):
        try:
            return self.server.getFilesAndDirs(currentDirectory, regex)
        except ExpatError as e:
            self.session.open(
                MessageBox,
                _('Error loading playlist into server %s:\n%s' %
                  (self.server.getName(), e)), MessageBox.TYPE_ERROR)
            raise ExpatError, e
        except Exception as e:
            self.session.open(
                MessageBox,
                _('Error loading filelist into server %s:\n%s' %
                  (self.server.getName(), e)), MessageBox.TYPE_ERROR)

        return None

    def getPlaylistEntriesCB(self):
        try:
            return self.server.getPlaylistEntries()
        except ExpatError as e:
            self.session.open(
                MessageBox,
                _('Error loading playlist into server %s:\n%s' %
                  (self.server.getName(), e)), MessageBox.TYPE_ERROR)
        except Exception as e:
            self.session.open(
                MessageBox,
                _('Error loading playlist into server %s:\n%s' %
                  (self.server.getName(), e)), MessageBox.TYPE_ERROR)

        return None

    def setLabel(self, text):
        if self.currentList == self['filelist']:
            self.filelistlabel = 'Filelist:' + text
        else:
            self.playlistlabel = text
        self['listlabel'].setText(text)

    def switchLists(self):
        if self.currentList == self['filelist']:
            self.switchToPlayList()
        else:
            self.switchToFileList()

    def switchToFileList(self):
        self['playlist'].hide()
        self['filelist'].show()
        self.currentList = self['filelist']
        self['listlabel'].setText(self.filelistlabel)

    def switchToPlayList(self):
        self['filelist'].hide()
        self['playlist'].show()
        self.currentList = self['playlist']
        self['listlabel'].setText(self.playlistlabel)

    def NextFavFolder(self):
        if self.curfavfolder + 1 < config.plugins.mc_vlc.foldercount.value:
            self.curfavfolder += 1
            self.favname = config.plugins.mc_vlc.folders[
                self.curfavfolder].name.value
            self.currDir = config.plugins.mc_vlc.folders[
                self.curfavfolder].basedir.value
            self['currentdir'].setText('Folder: ' + self.currDir)
            self['currentmedia'].setText('%s' % self.favname)
            self.changeDir(self.currDir)
        else:
            return

    def PrevFavFolder(self):
        if self.curfavfolder <= 0:
            return
        self.curfavfolder -= 1
        self.favname = config.plugins.mc_vlc.folders[
            self.curfavfolder].name.value
        self.currDir = config.plugins.mc_vlc.folders[
            self.curfavfolder].basedir.value
        self['currentdir'].setText('Folder: ' + self.currDir)
        self['currentmedia'].setText('%s' % self.favname)
        self.changeDir(self.currDir)

    def JumpToFolder(self, jumpto=None):
        if jumpto is None:
            return
        else:
            self.changeDir(jumpto)
            self.currDir = jumpto
            return

    def JumpToFavs(self):
        self.session.openWithCallback(self.JumpToFolder, MC_VLCFavoriteFolders)

    def changeDir(self, dir):
        print '[VLC] changeDir ', dir
        try:
            self.currentList.changeDirectory(dir)
            self.updateFilelist()
        except Exception as e:
            self.session.open(MessageBox,
                              _('Error switching directory:\n%s' % e),
                              MessageBox.TYPE_ERROR)

    def visibility(self, force=1):
        if self.isVisible == True:
            self.isVisible = False
            self.hide()
        else:
            self.isVisible = True
            self.show()

    def StopPlayback(self):
        self.session.nav.stopService()
        self['currentmedia'].setText('')
        if self.isVisible == False:
            self.show()
            self.isVisible = True

    def Exit(self):
        if self.isVisible == False:
            self.visibility()
            return
        self.session.nav.stopService()
        config.plugins.mc_vlc.save()
        self.close()