diff --git a/ChangeLog b/ChangeLog index f70363a2d..d02c8613c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-11-16 Martin Hawlisch + Trying to fix unicode filename handling on Windows. Patch ported from 2.2. + * src/Utils.py: add get_unicode_path() + * src/ArgHandler.py: use Utils.get_unicode_path() + * src/AddMedia.py: use Utils.get_unicode_path() + * src/DbLoader.py: use Utils.get_unicode_path() + * src/Editors/_EditMedia.py: use Utils.get_unicode_path() + 2007-11-16 Jerome Rapinat * src/glade/gramps.glade: correct mnemonic_widget * src/glade/edit_person.glade: correct mnemonic_widget diff --git a/src/AddMedia.py b/src/AddMedia.py index 99a836a8c..c0a2aeec6 100644 --- a/src/AddMedia.py +++ b/src/AddMedia.py @@ -151,9 +151,8 @@ class AddMediaObject(ManagedWindow.ManagedWindow): msgstr2 = _("The filename supplied could not be found.") ErrorDialog(msgstr, msgstr2) return - - filename = unicode(self.file_text.get_filename(), - sys.getfilesystemencoding()) + + filename = Utils.get_unicode_path(self.file_text.get_filename()) full_file = filename if self.relpath.get_active(): @@ -197,7 +196,7 @@ class AddMediaObject(ManagedWindow.ManagedWindow): fname = self.file_text.get_filename() if not fname: return - filename = unicode(fname, sys.getfilesystemencoding()) + filename = Utils.get_unicode_path(fname) basename = os.path.basename(filename) (root, ext) = os.path.splitext(basename) old_title = unicode(self.description.get_text()) diff --git a/src/ArgHandler.py b/src/ArgHandler.py index 4ce605909..656ce1a53 100644 --- a/src/ArgHandler.py +++ b/src/ArgHandler.py @@ -770,8 +770,7 @@ class NewNativeDbPrompter: while (True): response = choose.run() if response == gtk.RESPONSE_OK: - filename = unicode(choose.get_filename(), - sys.getfilesystemencoding()) + filename = Utils.get_unicode_path(choose.get_filename()) if filename == None: continue if os.path.splitext(filename)[1] != ".grdb": diff --git a/src/DbLoader.py b/src/DbLoader.py index 68d63f96e..cf5d212c2 100644 --- a/src/DbLoader.py +++ b/src/DbLoader.py @@ -110,8 +110,7 @@ class DbLoader: choose.set_current_folder(get_default_dir()) response = choose.run() if response == gtk.RESPONSE_OK: - filename = unicode(choose.get_filename(), - sys.getfilesystemencoding()) + filename = Utils.get_unicode_path(choose.get_filename()) if self.check_errors(filename): return ('','') @@ -170,8 +169,7 @@ class DbLoader: response = choose.run() if response == gtk.RESPONSE_OK: - filename = unicode(choose.get_filename(), - sys.getfilesystemencoding()) + filename = Utils.get_unicode_path(choose.get_filename()) if self.check_errors(filename): return ('','') @@ -262,8 +260,7 @@ class DbLoader: choose.set_current_folder(default_dir) response = choose.run() if response == gtk.RESPONSE_OK: - filename = unicode(choose.get_filename(), - sys.getfilesystemencoding()) + filename = Utils.get_unicode_path(choose.get_filename()) if self.check_errors(filename): return False diff --git a/src/Editors/_EditMedia.py b/src/Editors/_EditMedia.py index 2b4f84dac..18883cfc2 100644 --- a/src/Editors/_EditMedia.py +++ b/src/Editors/_EditMedia.py @@ -46,6 +46,7 @@ import Config import gen.lib import Mime import ThumbNails +import Utils from _EditPrimary import EditPrimary from GrampsWidgets import * @@ -126,7 +127,7 @@ class EditMedia(EditPrimary): mtype = self.obj.get_mime_type() if mtype: - pb = ThumbNails.get_thumbnail_image(self.obj.get_path(),mtype) + pb = ThumbNails.get_thumbnail_image(Utils.find_file(self.obj.get_path()),mtype) pixmap.set_from_pixbuf(pb) ebox.connect('button-press-event', self.button_press_event) descr = Mime.get_description(mtype) @@ -214,8 +215,7 @@ class EditMedia(EditPrimary): status = f.run() if status == gtk.RESPONSE_OK: - self.file_path.set_text(unicode(f.get_filename(), - sys.getfilesystemencoding())) + self.file_path.set_text(Utils.get_unicode_path(f.get_filename())) f.destroy() def setup_filepath(self): @@ -223,7 +223,7 @@ class EditMedia(EditPrimary): self.file_path = self.glade.get_widget("path") if self.obj.get_mime_type(): - fname = self.obj.get_path() + fname = Utils.get_unicode_path(self.obj.get_path()) self.file_path.set_text(fname) self.select.connect('clicked', self.select_file) else: @@ -235,11 +235,11 @@ class EditMedia(EditPrimary): path = self.glade.get_widget('path').get_text() if path != self.obj.get_path(): - mime = Mime.get_type(os.path.abspath(path)) + mime = Mime.get_type(Utils.find_file(os.path.abspath(path))) self.obj.set_mime_type(mime) if self.obj.get_mime_type(): - self.obj.set_path(path) + self.obj.set_path(Utils.get_unicode_path(path)) trans = self.db.transaction_begin() self.db.commit_media_object(self.obj,trans) diff --git a/src/Utils.py b/src/Utils.py index 09b1eb1f4..b1bcc0289 100644 --- a/src/Utils.py +++ b/src/Utils.py @@ -327,6 +327,20 @@ def find_folder( filename): # not found return '' +def get_unicode_path(path): + """ + Return the Unicode version of a path string. + + @type path: str + @param path: The path to be converted to Unicode + @rtype: unicode + @return: The Unicode version of path. + """ + if os.sys.platform == "win32": + return unicode(path) + else: + return unicode(path,sys.getfilesystemencoding()) + #------------------------------------------------------------------------- # #