diff --git a/src/ReportBase/_FileEntry.py b/src/ReportBase/_FileEntry.py index e7f5688cd..7bbb25a4d 100644 --- a/src/ReportBase/_FileEntry.py +++ b/src/ReportBase/_FileEntry.py @@ -2,6 +2,7 @@ # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2001-2006 Donald N. Allingham +# Copyright (C) 2009 Brian G. Matherly # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,74 +22,80 @@ # $Id:_FileEntry.py 9912 2008-01-22 09:17:46Z acraphae $ import os -import sys import gtk import Utils class FileEntry(gtk.HBox): - def __init__(self,defname,title): + """ A widget that allows the user to select a file from the file system """ + def __init__(self, defname, title): gtk.HBox.__init__(self) self.title = title self.dir = False + self.__base_path = "" + self.__file_name = "" self.entry = gtk.Entry() self.entry.set_text(defname) self.set_filename(defname) self.set_spacing(6) self.set_homogeneous(False) self.button = gtk.Button() - im = gtk.Image() - im.set_from_stock(gtk.STOCK_OPEN,gtk.ICON_SIZE_BUTTON) - self.button.add(im) - self.button.connect('clicked',self.select_file) - self.pack_start(self.entry,True,True) - self.pack_end(self.button,False,False) + image = gtk.Image() + image.set_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_BUTTON) + self.button.add(image) + self.button.connect('clicked', self.__select_file) + self.pack_start(self.entry, True, True) + self.pack_end(self.button, False, False) - def select_file(self, obj): + def __select_file(self, obj): + """ Call back function to handle the open button press """ if self.dir: my_action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER else: my_action = gtk.FILE_CHOOSER_ACTION_SAVE - f = gtk.FileChooserDialog(self.title, - action=my_action, - buttons=(gtk.STOCK_CANCEL, - gtk.RESPONSE_CANCEL, - gtk.STOCK_OPEN, - gtk.RESPONSE_OK)) + dialog = gtk.FileChooserDialog(self.title, + action=my_action, + buttons=(gtk.STOCK_CANCEL, + gtk.RESPONSE_CANCEL, + gtk.STOCK_OPEN, + gtk.RESPONSE_OK)) name = os.path.basename(self.entry.get_text()) if self.dir: if os.path.isdir(name): - f.set_current_name(name) + dialog.set_current_name(name) elif os.path.isdir(os.path.basename(name)): - f.set_current_name(os.path.basename(name)) + dialog.set_current_name(os.path.basename(name)) else: - f.set_current_name(name) - f.set_current_folder(self.spath) - f.present() - status = f.run() + dialog.set_current_name(name) + dialog.set_current_folder(self.__base_path) + dialog.present() + status = dialog.run() if status == gtk.RESPONSE_OK: - self.set_filename(Utils.get_unicode_path(f.get_filename())) - f.destroy() + self.set_filename(Utils.get_unicode_path(dialog.get_filename())) + dialog.destroy() - def set_filename(self,path): + def set_filename(self, path): + """ Set the currently selected dialog. """ if not path: return if os.path.dirname(path): - self.spath = os.path.dirname(path) - self.defname = os.path.basename(path) - + self.__base_path = os.path.dirname(path) + self.__file_name = os.path.basename(path) else: - self.spath = os.getcwd() - self.defname = path - self.entry.set_text(os.path.join(self.spath,self.defname)) + self.__base_path = os.getcwd() + self.__file_name = path + self.entry.set_text(os.path.join(self.__base_path, self.__file_name)) - def gtk_entry(self): - return self.entry - - def get_full_path(self,val): + def get_full_path(self, val): + """ Get the full path of the currently selected file. """ return self.entry.get_text() def set_directory_entry(self, opt): + """ + Configure the FileEntry to either select a directory or a file. + Set it to True to select a directory. + Set it to False to select a file. + """ self.dir = opt diff --git a/src/ReportBase/_ReportDialog.py b/src/ReportBase/_ReportDialog.py index 62b99ae26..0974f3449 100644 --- a/src/ReportBase/_ReportDialog.py +++ b/src/ReportBase/_ReportDialog.py @@ -447,7 +447,6 @@ class ReportDialog(ManagedWindow.ManagedWindow): self.target_fileentry = FileEntry(hid, _("Save As")) spath = self.get_default_directory() self.target_fileentry.set_filename(spath) - self.target_fileentry.gtk_entry().set_position(len(spath)) # need any labels at top: label = gtk.Label("<b>%s</b>" % _('Document Options')) label.set_use_markup(1)