summaryrefslogtreecommitdiff
path: root/fs/browsewin.py
diff options
context:
space:
mode:
authorwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2010-12-16 20:27:04 +0000
committerwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2010-12-16 20:27:04 +0000
commitb3a9c67cad59b3a90b6ddf91b7aaccba52328745 (patch)
treecbd76cfe81f15e8436b427b9488199b734fd42cd /fs/browsewin.py
parent46340fbf6a98d6ccbabcebf1d184d1bb0e5c08d1 (diff)
downloadpyfilesystem-b3a9c67cad59b3a90b6ddf91b7aaccba52328745.tar.gz
Command improvements
git-svn-id: http://pyfilesystem.googlecode.com/svn/trunk@554 67cdc799-7952-0410-af00-57a81ceafa0f
Diffstat (limited to 'fs/browsewin.py')
-rw-r--r--fs/browsewin.py42
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()