diff options
author | willmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f> | 2010-12-16 20:27:04 +0000 |
---|---|---|
committer | willmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f> | 2010-12-16 20:27:04 +0000 |
commit | e69d89291b5e9f649010c54da49fabba2d3f286b (patch) | |
tree | cbd76cfe81f15e8436b427b9488199b734fd42cd /fs/browsewin.py | |
parent | a143bd9a96c53c7bbdfc3728d33cbf5f75e3c933 (diff) | |
download | pyfilesystem-git-e69d89291b5e9f649010c54da49fabba2d3f286b.tar.gz |
Command improvements
Diffstat (limited to 'fs/browsewin.py')
-rw-r--r-- | fs/browsewin.py | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/fs/browsewin.py b/fs/browsewin.py index 1e1754f..60760c2 100644 --- a/fs/browsewin.py +++ b/fs/browsewin.py @@ -14,12 +14,13 @@ Requires wxPython. import wx import wx.gizmos -import base as fs +from fs.path import isdotfile, pathsplit +from fs.errors import FSError class InfoFrame(wx.Frame): - def __init__(self, path, desc, info): - wx.Frame.__init__(self, None, -1, style=wx.DEFAULT_FRAME_STYLE, size=(500, 500)) + def __init__(self, parent, path, desc, info): + wx.Frame.__init__(self, parent, -1, style=wx.DEFAULT_FRAME_STYLE, size=(500, 500)) self.SetTitle("FS Object info - %s (%s)" % (path, desc)) @@ -34,19 +35,22 @@ class InfoFrame(wx.Frame): self.list_ctrl.SetColumnWidth(0, 190) self.list_ctrl.SetColumnWidth(1, 300) - for key in keys: - self.list_ctrl.Append((key, str(info.get(key)))) + for key in sorted(keys, key=lambda k:k.lower()): + self.list_ctrl.Append((key, unicode(info.get(key)))) + + self.Center() class BrowseFrame(wx.Frame): - def __init__(self, fs): + def __init__(self, fs, hide_dotfiles=False): wx.Frame.__init__(self, None, size=(1000, 600)) self.fs = fs - self.SetTitle("FS Browser - "+str(fs)) + self.hide_dotfiles = hide_dotfiles + self.SetTitle("FS Browser - " + unicode(fs)) self.tree = wx.gizmos.TreeListCtrl(self, -1, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) @@ -98,7 +102,19 @@ class BrowseFrame(wx.Frame): if item_data['expanded']: return - paths = [(self.fs.isdir(p), p) for p in self.fs.listdir(path, absolute=True)] + try: + paths = ( [(True, p) for p in self.fs.listdir(path, absolute=True, dirs_only=True)] + + [(False, p) for p in self.fs.listdir(path, absolute=True, files_only=True)] ) + except FSError, e: + msg = "Failed to get directory listing for %s\n\nThe following error was reported:\n\n%s" % (path, e) + wx.MessageDialog(self, msg, "Error listing directory", wx.OK).ShowModal() + paths = [] + + + #paths = [(self.fs.isdir(p), p) for p in self.fs.listdir(path, absolute=True)] + + if self.hide_dotfiles: + paths = [p for p in paths if not isdotfile(p[1])] if not paths: #self.tree.SetItemHasChildren(item_id, False) @@ -109,7 +125,7 @@ class BrowseFrame(wx.Frame): for is_dir, new_path in paths: - name = fs.pathsplit(new_path)[-1] + name = pathsplit(new_path)[-1] new_item = self.tree.AppendItem(item_id, name, data=wx.TreeItemData({'path':new_path, 'expanded':False})) @@ -157,20 +173,22 @@ class BrowseFrame(wx.Frame): path = item_data["path"] info = self.fs.getinfo(path) - info_frame = InfoFrame(path, self.fs.desc(path), info) + info_frame = InfoFrame(self, path, self.fs.desc(path), info) info_frame.Show() + info_frame.CenterOnParent() -def browse(fs): +def browse(fs, hide_dotfiles=False): """Displays a window containing a tree control that displays an FS object. Double-click a file/folder to display extra info. :param fs: A filesystem object + :param hide_fotfiles: If True, files and folders that begin with a dot will be hidden """ app = wx.PySimpleApp() - frame = BrowseFrame(fs) + frame = BrowseFrame(fs, hide_dotfiles=True) frame.Show() app.MainLoop() |