fileBrowser module can filter files by extensions
This commit is contained in:
parent
06773f64cd
commit
20389df437
@ -1,4 +1,4 @@
|
|||||||
#holds basic GUI structures for use in curses (treeview, listbox, checkbox, ETC)
|
#holds basic GUI structures for use in curses (Dialog, button, editBox, readline, listbox and fileBrowser)
|
||||||
# Taken and modified from http://bmcginty.us/clifox.git
|
# Taken and modified from http://bmcginty.us/clifox.git
|
||||||
import curses, time, os, os.path, string, sys
|
import curses, time, os, os.path, string, sys
|
||||||
from curses import ascii
|
from curses import ascii
|
||||||
@ -653,13 +653,15 @@ class question(Listbox):
|
|||||||
|
|
||||||
class fileBrowser(Listbox):
|
class fileBrowser(Listbox):
|
||||||
|
|
||||||
def __init__(self, dir="./", select_type="file", action="", *args, **kwargs):
|
def __init__(self, dir="./", select_type="file", action="", prev_items=[], extensions=None, *args, **kwargs):
|
||||||
self.select_type = select_type
|
self.select_type = select_type
|
||||||
self.selected_action = action
|
self.selected_action = action
|
||||||
if dir:
|
if dir:
|
||||||
self.dir = dir if dir else os.environ.get("HOME","/")
|
self.dir = dir if dir else os.environ.get("HOME","/")
|
||||||
|
self.prev_items = prev_items
|
||||||
|
self.extensions = extensions
|
||||||
items = self.make_list()
|
items = self.make_list()
|
||||||
super(fileBrowser, self).__init__(items=items, title="File browser", *args, **kwargs)
|
super(fileBrowser, self).__init__(items=items, *args, **kwargs)
|
||||||
|
|
||||||
def make_list(self):
|
def make_list(self):
|
||||||
self.pos = 0
|
self.pos = 0
|
||||||
@ -667,10 +669,16 @@ class fileBrowser(Listbox):
|
|||||||
folders = []
|
folders = []
|
||||||
os.chdir(self.dir)
|
os.chdir(self.dir)
|
||||||
self.back_directory = os.path.abspath("..")
|
self.back_directory = os.path.abspath("..")
|
||||||
|
for i in self.prev_items:
|
||||||
|
folders.append((i, i))
|
||||||
for i in sorted(os.listdir(self.dir)):
|
for i in sorted(os.listdir(self.dir)):
|
||||||
if os.path.isdir(i):
|
if os.path.isdir(i):
|
||||||
folders.append((os.path.abspath(i), i))
|
folders.append((os.path.abspath(i), i))
|
||||||
else:
|
else:
|
||||||
|
if self.extensions != None:
|
||||||
|
ext = i.split(".")[-1]
|
||||||
|
if ext not in self.extensions:
|
||||||
|
continue
|
||||||
files.append((os.path.abspath(i), i))
|
files.append((os.path.abspath(i), i))
|
||||||
folders.extend(files)
|
folders.extend(files)
|
||||||
return folders
|
return folders
|
||||||
@ -714,7 +722,11 @@ class fileBrowser(Listbox):
|
|||||||
else:
|
else:
|
||||||
self.pos += 1
|
self.pos += 1
|
||||||
elif c in (10, 261, curses.KEY_RIGHT): # newline or right arrow
|
elif c in (10, 261, curses.KEY_RIGHT): # newline or right arrow
|
||||||
if os.path.isfile(self.getDir()) and self.select_type == "file":
|
if self.getDir() in self.prev_items:
|
||||||
|
self.done = 1
|
||||||
|
self.dir = self.getDir()
|
||||||
|
return 1
|
||||||
|
elif os.path.isfile(self.getDir()) and self.select_type == "file":
|
||||||
self.done = 1
|
self.done = 1
|
||||||
self.dir = self.getDir()
|
self.dir = self.getDir()
|
||||||
self.setStatus(self.dir)
|
self.setStatus(self.dir)
|
||||||
|
Loading…
Reference in New Issue
Block a user