* src/plugins/MediaManager.py: conversion functions of path

* src/Utils.py: general methods to convert abs to rel
	* src/Editors/AddMedia.py: show existing descr and select file if pos
	* src/Editors/_EditPerson.py: view photo needs db for media path
	* src/Editors/_EditMedia.py: better path/mime handling
	* src/DataViews/MediaView.py: use full path to view
	Start of issue #1208

2008-02-11 Benny Malengier <benny.malengier@gramps-project.org>


svn: r10017
This commit is contained in:
Benny Malengier
2008-02-11 22:27:24 +00:00
parent c11f6d6a1b
commit a1897e68d9
7 changed files with 132 additions and 74 deletions

View File

@@ -107,9 +107,20 @@ class AddMediaObject(ManagedWindow.ManagedWindow):
self.image = self.glade.get_widget("image")
self.file_text = self.glade.get_widget("fname")
if not(self.last_directory and os.path.isdir(self.last_directory)):
self.last_directory = const.HOME_DIR
print 'test', self.last_directory
self.file_text.set_current_folder(self.last_directory)
self.last_directory = const.USER_HOME
#if existing path, use dir of path
if not self.obj.get_path() == "":
fullname = Utils.media_path_full(self.dbase, self.obj.get_path())
dir = os.path.dirname(fullname)
if os.path.isdir(dir):
self.last_directory = dir
self.file_text.select_filename(fullname)
else:
self.file_text.set_current_folder(self.last_directory)
else:
self.file_text.set_current_folder(self.last_directory)
if not self.obj.get_description() == "":
self.description.set_text(self.obj.get_description())
self.relpath = self.glade.get_widget('relpath')
self.relpath.set_active(self.relative_path)
@@ -151,10 +162,7 @@ class AddMediaObject(ManagedWindow.ManagedWindow):
filename = Utils.get_unicode_path(self.file_text.get_filename())
full_file = filename
pname = self.dbase.get_save_path()
if not os.path.isdir(pname):
pname = os.path.dirname(pname)
pname = Utils.media_path(self.dbase)
if self.relpath.get_active():
filename = Utils.relative_path(filename, pname)

View File

@@ -128,22 +128,40 @@ class EditMedia(EditPrimary):
ebox.connect('button-press-event', self.button_press_event)
self.mimetext = self.glade.get_widget("type")
self.draw_preview()
self.setup_filepath()
self.determine_mime()
self.draw_preview()
def determine_mime(self):
descr = Mime.get_description(self.obj.get_mime_type())
if descr:
self.mimetext.set_text(descr)
path = self.file_path.get_text()
path_full = Utils.media_path_full(self.db, path)
if path != self.obj.get_path() and path_full != self.obj.get_path():
#redetermine mime
mime = Mime.get_type(Utils.find_file(path_full))
self.obj.set_mime_type(mime)
descr = Mime.get_description(mime)
if descr:
self.mimetext.set_text(descr)
else:
self.mimetext.set_text(_('Unknown'))
#if mime type not set, is note
if not self.obj.get_mime_type():
self.mimetext.set_text(_('Note'))
def draw_preview(self):
mtype = self.obj.get_mime_type()
if mtype:
pb = ThumbNails.get_thumbnail_image(
Utils.find_file(self.obj.get_path()), mtype)
pb = ThumbNails.get_thumbnail_image(Utils.find_file(
Utils.media_path_full(self.db, self.obj.get_path())),
mtype)
self.pixmap.set_from_pixbuf(pb)
descr = Mime.get_description(mtype)
if descr:
self.mimetext.set_text(descr)
else:
pb = Mime.find_mime_type_pixbuf('text/plain')
self.pixmap.set_from_pixbuf(pb)
self.mimetext.set_text(_('Note'))
def setup_filepath(self):
self.select = self.glade.get_widget('file_select')
@@ -192,9 +210,13 @@ class EditMedia(EditPrimary):
mime_type = ref_obj.get_mime_type()
app = Mime.get_application(mime_type)
if app:
Utils.launch(app[0], ref_obj.get_path())
Utils.launch(app[0], Utils.media_path_full(self.dbstate.db,
ref_obj.get_path()))
def select_file(self, val):
self.determine_mime()
path = self.file_path.get_text()
self.obj.set_path(Utils.get_unicode_path(path))
AddMediaObject(self.dbstate, self.uistate, self.track, self.obj,
self._update_addmedia)
@@ -208,10 +230,12 @@ class EditMedia(EditPrimary):
obj.update()
fname = self.obj.get_path()
self.file_path.set_text(fname)
self.determine_mime()
self.draw_preview()
def save(self, *obj):
self.ok_button.set_sensitive(False)
if self.object_is_empty():
ErrorDialog(_("Cannot save media object"),
_("No data exists for this media object. Please "
@@ -233,11 +257,8 @@ class EditMedia(EditPrimary):
self.ok_button.set_sensitive(True)
return
path = self.glade.get_widget('path').get_text()
if path != self.obj.get_path():
mime = Mime.get_type(Utils.find_file(os.path.abspath(path)))
self.obj.set_mime_type(mime)
path = self.file_path.get_text()
self.determine_mime()
self.obj.set_path(Utils.get_unicode_path(path))

View File

@@ -486,7 +486,8 @@ class EditPerson(EditPrimary):
if media_list:
photo = media_list[0]
object_handle = photo.get_reference_handle()
Utils.view_photo(self.db.get_object_from_handle(object_handle))
Utils.view_photo(self.db.get_object_from_handle(object_handle),
self.db)
def _popup_change_description(self, obj):
"""