Example #1
0
class FileBrowser(Screen):
	title = _("File Browser")
	select = _("Select")

	skin = """
		<screen name="FileBrowser_Generic" position="center,center" size="600,600"  title="%s" >
			<widget name="green" position="10,5" size="200,40" pixmap="Default-HD/buttons/green.png" alphatest="on"/>
			<widget name="key_green" position="10,5" size="200,40" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" shadowColor="black" shadowOffset="-2,-2"/>

			<widget name="filelist" position="10,55" size="580,435" scrollbarMode="showOnDemand"/>
			<widget name="status" position="0,545" size="600,20" font="Regular;18" halign="left" foregroundColors="white,white,white" backgroundColors="background,#00DD00,#DD0000"/>
		</screen>""" % (title)

	def __init__(self, session, showDirectories=True, showFiles=True, showMountpoints=True, matchingPattern=None, useServiceRef=False, inhibitDirs=False, inhibitMounts=False, isTop=False, enableWrapAround=False, additionalExtensions=None, closeOnSelection=False):
		Screen.__init__(self, session)
		self.skinName = "FileBrowser_Generic"

		defaultDir = None  # TODO Fix / Config value
		self._closeOnSelection = closeOnSelection
		self._filelist = FileList(defaultDir, showDirectories=showDirectories, showFiles=showFiles, showMountpoints=showMountpoints, matchingPattern=matchingPattern, useServiceRef=useServiceRef, inhibitDirs=inhibitDirs, inhibitMounts=inhibitMounts, isTop=isTop, enableWrapAround=enableWrapAround, additionalExtensions=additionalExtensions)

		self["filelist"] = self._filelist
		self["status"] = MultiColorLabel("")

		self["key_green"] = Button(_("Add"))
		self["green"] = Pixmap()

		self["actions"] = ActionMap(["ListboxActions", "OkCancelActions", "ColorActions"],
		{
			"ok" : self.ok,
			"cancel" : self.close,
			"moveUp" : self.moveUp,
			"moveDown" : self.moveDown,
			"pageUp" : self.pageUp,
			"pageDown" : self.pageDown,
			"green" : self.selectCurrent,
		});
		self.onShown.append(self._onShown)

	def _onShown(self):
		self.summaries.setText(self.title, 1)
		self._onSelectionChanged()
		self._filelist.onSelectionChanged.append(self._onSelectionChanged)

	def _onSelectionChanged(self):
		# Update LCD Stuff
		curDir = self._filelist.getCurrentDirectory()
		if curDir != None:
			self.summaries.setText(curDir , 2)
		else:
			self.summaries.setText("" , 2)

		text = None
		if self._filelist.canDescent():
			text = self._filelist.getFilename()
			if text != None:
				text = "./%s" % (text.split('/')[-2])
				self.summaries.setText(text, 3)
			else:
				self.summaries.setText("", 3)

	def createSummary(self):
		return Simple4LineLCDScreen

	def ok(self):
		if self._filelist.canDescent():
			self._filelist.descent()
		else:
			self.selectCurrent()

	def moveUp(self):
		self._filelist.up()

	def moveDown(self):
		self._filelist.down()

	def pageUp(self):
		self._filelist.pageUp()

	def pageDown(self):
		self._filelist.pageDown()

	def selectCurrent(self):
		if self._filelist.canDescent():
			dir = os_path.dirname(self._filelist.getFilename()) + "/"
			if self.selectDirectory(dir):
				self.setStatus(dir)
			else:
				self.setStatus(dir, True)
		else:
			file = self._filelist.getFilename()
			if self.selectFile(self._filelist.getServiceRef()):
				self.setStatus(file)
			else:
				self.setStatus(file, True)

	def setStatus(self, file, error=False):
		if error:
			self["status"].setText(_("ERROR: Cannot add '%s'") % file)
			self["status"].setForegroundColorNum(2)
			self["status"].setBackgroundColorNum(2)
		else:
			self["status"].setText(_("Added '%s'") % file)
			self["status"].setForegroundColorNum(1)
			self["status"].setBackgroundColorNum(1)

	def selectDirectory(self, dir):
		return self.selectFile(dir)

	def selectFile(self, file):
		if file:
			if self._closeOnSelection:
				self.close(file)
				return True

		return False
Example #2
0
class FileBrowser(Screen):
    title = _("File Browser")
    select = _("Select")

    skin = """
		<screen name="FileBrowser_Generic" position="center,120" size="820,520"  title="%s" >
			<widget name="green" position="10,5" size="200,40" pixmap="skin_default/buttons/green.png" alphatest="on"/>
			<widget name="key_green" position="10,5" size="200,40" zPosition="1" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" shadowColor="black" shadowOffset="-2,-2"/>
			<eLabel position="10,50" size="800,1" backgroundColor="grey" />
			<widget name="filelist" position="10,60" size="800,420" scrollbarMode="showOnDemand"/>
			<widget name="status" position="10,490" size="800,20" font="Regular;18" halign="left" foregroundColors="white,white,white" backgroundColors="background,#00DD00,#DD0000"/>
		</screen>""" % (title)

    def __init__(self,
                 session,
                 showDirectories=True,
                 showFiles=True,
                 showMountpoints=True,
                 matchingPattern=None,
                 useServiceRef=False,
                 inhibitDirs=False,
                 inhibitMounts=False,
                 isTop=False,
                 enableWrapAround=False,
                 additionalExtensions=None,
                 closeOnSelection=False):
        Screen.__init__(self, session)
        self.skinName = "FileBrowser_Generic"

        defaultDir = None  # TODO Fix / Config value
        self._closeOnSelection = closeOnSelection
        self._filelist = FileList(defaultDir,
                                  showDirectories=showDirectories,
                                  showFiles=showFiles,
                                  showMountpoints=showMountpoints,
                                  matchingPattern=matchingPattern,
                                  useServiceRef=useServiceRef,
                                  inhibitDirs=inhibitDirs,
                                  inhibitMounts=inhibitMounts,
                                  isTop=isTop,
                                  enableWrapAround=enableWrapAround,
                                  additionalExtensions=additionalExtensions)

        self["filelist"] = self._filelist
        self["status"] = MultiColorLabel("")

        self["key_green"] = Button(_("Add"))
        self["green"] = Pixmap()

        self["actions"] = ActionMap(
            ["ListboxActions", "OkCancelActions", "ColorActions"], {
                "ok": self.ok,
                "cancel": self.close,
                "moveUp": self.moveUp,
                "moveDown": self.moveDown,
                "pageUp": self.pageUp,
                "pageDown": self.pageDown,
                "green": self.selectCurrent,
            })
        self.onShown.append(self._onShown)

    def _onShown(self):
        self.summaries.setText(self.title, 1)
        self._onSelectionChanged()
        self._filelist.onSelectionChanged.append(self._onSelectionChanged)

    def _onSelectionChanged(self):
        # Update LCD Stuff
        curDir = self._filelist.getCurrentDirectory()
        if curDir != None:
            self.summaries.setText(curDir, 2)
        else:
            self.summaries.setText("", 2)

        text = None
        if self._filelist.canDescent():
            text = self._filelist.getFilename()
            if text != None:
                text = "./%s" % (text.split('/')[-2])
                self.summaries.setText(text, 3)
            else:
                self.summaries.setText("", 3)

    def createSummary(self):
        return Simple4LineLCDScreen

    def ok(self):
        if self._filelist.canDescent():
            self._filelist.descent()
        else:
            self.selectCurrent()

    def moveUp(self):
        self._filelist.up()

    def moveDown(self):
        self._filelist.down()

    def pageUp(self):
        self._filelist.pageUp()

    def pageDown(self):
        self._filelist.pageDown()

    def selectCurrent(self):
        if self._filelist.canDescent():
            dir = os_path.dirname(self._filelist.getFilename()) + "/"
            if self.selectDirectory(dir):
                self.setStatus(dir)
            else:
                self.setStatus(dir, True)
        else:
            file = self._filelist.getFilename()
            if self.selectFile(self._filelist.getServiceRef()):
                self.setStatus(file)
            else:
                self.setStatus(file, True)

    def setStatus(self, file, error=False):
        if error:
            self["status"].setText(_("ERROR: Cannot add '%s'") % file)
            self["status"].setForegroundColorNum(2)
            self["status"].setBackgroundColorNum(2)
        else:
            self["status"].setText(_("Added '%s'") % file)
            self["status"].setForegroundColorNum(1)
            self["status"].setBackgroundColorNum(1)

    def selectDirectory(self, dir):
        return self.selectFile(dir)

    def selectFile(self, file):
        if file:
            if self._closeOnSelection:
                self.close(file)
                return True

        return False