diff options
Diffstat (limited to 'filelisting.py')
-rwxr-xr-x | filelisting.py | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/filelisting.py b/filelisting.py deleted file mode 100755 index f0a1aa0..0000000 --- a/filelisting.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python - -import os, stat, time -import pygtk -pygtk.require('2.0') -import gtk - -folderxpm = [ - "17 16 7 1", - " c #000000", - ". c #808000", - "X c yellow", - "o c #808080", - "O c #c0c0c0", - "+ c white", - "@ c None", - "@@@@@@@@@@@@@@@@@", - "@@@@@@@@@@@@@@@@@", - "@@+XXXX.@@@@@@@@@", - "@+OOOOOO.@@@@@@@@", - "@+OXOXOXOXOXOXO. ", - "@+XOXOXOXOXOXOX. ", - "@+OXOXOXOXOXOXO. ", - "@+XOXOXOXOXOXOX. ", - "@+OXOXOXOXOXOXO. ", - "@+XOXOXOXOXOXOX. ", - "@+OXOXOXOXOXOXO. ", - "@+XOXOXOXOXOXOX. ", - "@+OOOOOOOOOOOOO. ", - "@ ", - "@@@@@@@@@@@@@@@@@", - "@@@@@@@@@@@@@@@@@" - ] -folderpb = gtk.gdk.pixbuf_new_from_xpm_data(folderxpm) - -filexpm = [ - "12 12 3 1", - " c #000000", - ". c #ffff04", - "X c #b2c0dc", - "X XXX", - "X ...... XXX", - "X ...... X", - "X . ... X", - "X ........ X", - "X . .... X", - "X ........ X", - "X . .. X", - "X ........ X", - "X . .. X", - "X ........ X", - "X X" - ] -filepb = gtk.gdk.pixbuf_new_from_xpm_data(filexpm) - -class FileListingCellDataExample: - column_names = ['Name', 'Size', 'Mode', 'Last Changed'] - - def delete_event(self, widget, event, data=None): - gtk.main_quit() - return False - - def __init__(self, dname = None): - cell_data_funcs = (None, self.file_size, self.file_mode, - self.file_last_changed) - - # Create a new window - self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) - - self.window.set_size_request(400, 300) - - self.window.connect("delete_event", self.delete_event) - - listmodel = self.make_list(dname) - - # create the TreeView - self.treeview = gtk.TreeView() - - # create the TreeViewColumns to display the data - self.tvcolumn = [None] * len(self.column_names) - cellpb = gtk.CellRendererPixbuf() - self.tvcolumn[0] = gtk.TreeViewColumn(self.column_names[0], cellpb) - self.tvcolumn[0].set_cell_data_func(cellpb, self.file_pixbuf) - cell = gtk.CellRendererText() - self.tvcolumn[0].pack_start(cell, False) - self.tvcolumn[0].set_cell_data_func(cell, self.file_name) - self.treeview.append_column(self.tvcolumn[0]) - for n in range(1, len(self.column_names)): - cell = gtk.CellRendererText() - self.tvcolumn[n] = gtk.TreeViewColumn(self.column_names[n], cell) - if n == 1: - cell.set_property('xalign', 1.0) - self.tvcolumn[n].set_cell_data_func(cell, cell_data_funcs[n]) - self.treeview.append_column(self.tvcolumn[n]) - - self.treeview.connect('row-activated', self.open_file) - self.scrolledwindow = gtk.ScrolledWindow() - self.scrolledwindow.add(self.treeview) - self.window.add(self.scrolledwindow) - self.treeview.set_model(listmodel) - - self.window.show_all() - return - - def make_list(self, dname=None): - if not dname: - self.dirname = os.path.expanduser('~') - else: - self.dirname = os.path.abspath(dname) - self.window.set_title(self.dirname) - files = [f for f in os.listdir(self.dirname) if f[0] <> '.'] - files.sort() - files = ['..'] + files - listmodel = gtk.ListStore(object) - for f in files: - listmodel.append([f]) - return listmodel - - def open_file(self, treeview, path, column): - model = treeview.get_model() - iter = model.get_iter(path) - filename = os.path.join(self.dirname, model.get_value(iter, 0)) - filestat = os.stat(filename) - if stat.S_ISDIR(filestat.st_mode): - new_model = self.make_list(filename) - treeview.set_model(new_model) - return - - def file_pixbuf(self, column, cell, model, iter): - filename = os.path.join(self.dirname, model.get_value(iter, 0)) - filestat = os.stat(filename) - if stat.S_ISDIR(filestat.st_mode): - pb = folderpb - else: - pb = filepb - cell.set_property('pixbuf', pb) - return - - def file_name(self, column, cell, model, iter): - cell.set_property('text', model.get_value(iter, 0)) - return - - def file_size(self, column, cell, model, iter): - filename = os.path.join(self.dirname, model.get_value(iter, 0)) - filestat = os.stat(filename) - cell.set_property('text', filestat.st_size) - return - - def file_mode(self, column, cell, model, iter): - filename = os.path.join(self.dirname, model.get_value(iter, 0)) - filestat = os.stat(filename) - cell.set_property('text', oct(stat.S_IMODE(filestat.st_mode))) - return - - - def file_last_changed(self, column, cell, model, iter): - filename = os.path.join(self.dirname, model.get_value(iter, 0)) - filestat = os.stat(filename) - cell.set_property('text', time.ctime(filestat.st_mtime)) - return - -def main(): - gtk.main() - -if __name__ == "__main__": - flcdexample = FileListingCellDataExample() - main() - |