import glimmer import string import sys import os sys.argv=[] sys.argv.append("null") from gtk import * import _gtk import _gnome import _gnomeui from gnome.ui import * import gnome.config def populate_dir_listing(path): import dircache import string filelist.set_column_title(0, path) filelist.clear() dirlisting = dircache.listdir(path) dirlisting = dirlisting[:] dircache.annotate(path, dirlisting) dotfiles = [] dotfiles = [".", ""] filelist.append(dotfiles) dotfiles = ["..", ""] filelist.append(dotfiles) num = 0 dlen = len(dirlisting) filelist.freeze() while num < dlen: if string.count(dirlisting[num], "/") > 0: if showdots.active: dname = [] dname.append(dirlisting[num]) dname.append("") filelist.append(dname) else: if dirlisting[num][0] != '.': dname = [] dname.append(dirlisting[num]) dname.append("") filelist.append(dname) num = num + 1 num = 0 while num < dlen: if string.count(dirlisting[num], "/") <= 0: if showdots.active: dname = [] dname.append(dirlisting[num]) dname.append("") filelist.append(dname) else: if dirlisting[num][0] != '.': dname = [] dname.append(dirlisting[num]) dname.append("") filelist.append(dname) num = num + 1 del dircache del string filelist.thaw() def select_row_callback(clist, row, col, event, data): import glimmer import string dir = filelist.get_column_title(0) text = filelist.get_text(row, 0) if string.count(text, "/") > 0: dir = dir + text populate_dir_listing(dir) elif text == ".": dir = dir populate_dir_listing(dir) elif text == "..": i = string.rfind(dir, "/") if i > 1: dir = dir[0:i] i = string.rfind(dir, "/") if i > 1: dir = dir[0:i+1] else: dir = "/" else: dir = "/" populate_dir_listing(dir) else: filename = dir + text glimmer.open_file(filename) del glimmer del string def toggle_file_selector(obj, checkmenuitem, fbox): if checkmenuitem.active: glimmer.add_paned_object(fbox._o, "FileSelector", 0) glimmer.unref_paned_object("FileSelector"); else: glimmer.ref_paned_object("FileSelector"); glimmer.remove_paned_object("FileSelector") def close_file_selector(button, citem, fbox): citem.destroy() glimmer.remove_paned_object("FileSelector") def popup_options(button, popupmenu): popupmenu.popup(None, None, None, 1, 0) def set_show_hidden_files(obj, checkmenuitem, flist): gnome.config.set_bool("/glimmer/FileSelector/show_hidden", checkmenuitem.active) gnome.config.sync() flist.select_row(0, 0) showhidden = gnome.config.get_bool("/glimmer/FileSelector/show_hidden=true") currentdir = os.path.abspath(".") filebox = GtkVBox(FALSE, 0) filebox.show() titleframe = GtkFrame() filebox.pack_start(titleframe, FALSE, FALSE, 2) titleframe.show() buttonbox = GtkHBox(FALSE, 0) titleframe.add(buttonbox) buttonbox.show() optionsbutton = GtkButton() optionsbutton.set_relief(RELIEF_NONE) buttonbox.pack_start(optionsbutton, FALSE, FALSE, 2) optionsbutton.show() optionsbuttonbox = GtkHBox(FALSE, 0) optionsbutton.add(optionsbuttonbox) optionsbuttonbox.pack_start(GtkLabel("File Selector "), FALSE, FALSE, 0) optionsbuttonbox.pack_start(GtkArrow(ARROW_DOWN), FALSE, FALSE, 0) optionsbuttonbox.show_all() optionmenu = GtkMenu() optionmenu.show() args = (optionmenu, ) _gtk.gtk_signal_connect(optionsbutton._o, "clicked", popup_options, args) showdots = GtkCheckMenuItem("Show Hidden Files") optionmenu.append(showdots) showdots.set_active(showhidden) showdots.show() closebutton = GtkButton() closebutton.set_relief(RELIEF_NONE) closebutton.add(GnomeStock("Close")) closebutton.set_usize(22, 22) buttonbox.pack_end(closebutton, FALSE, FALSE, 2) closebutton.show_all() filewindow = GtkScrolledWindow() filebox.pack_start(filewindow, TRUE, TRUE, 2) filewindow.set_usize(130, 500) filewindow.show() filelist = GtkCList(1) filewindow.add(filelist) filelist.show() filelist.column_titles_show(1) filelist.set_column_title(0, currentdir) glimmer.add_paned_object(filebox._o, "FileSelector", 0) populate_dir_listing(currentdir) checkitem = GtkCheckMenuItem("File Selector") checkitem.set_active(TRUE) checkitem.show() glimmer.add_widget_to_menu("_View/Status Bar", checkitem._o) args = (showdots, filelist, ) _gtk.gtk_signal_connect(showdots._o, "toggled", set_show_hidden_files, args) args = (checkitem, filebox, ) _gtk.gtk_signal_connect(checkitem._o, "toggled", toggle_file_selector, args) args = (checkitem, filebox, ) _gtk.gtk_signal_connect(closebutton._o, "clicked", close_file_selector, args) args = (None, ) _gtk.gtk_signal_connect(filelist._o, "select_row", select_row_callback, args)