* src/Editors/_EditMediaRef.py:

* src/DisplayTabs/_GalleryTab.py:
	Finish changes caused by Addmedia not touching database anymore, #1610

2008-01-16 Benny Malengier <benny.malengier@gramps-project.org>


svn: r9841
This commit is contained in:
Benny Malengier 2008-01-16 12:28:56 +00:00
parent c14943bf80
commit 4569eba392
3 changed files with 67 additions and 48 deletions

View File

@ -1,3 +1,8 @@
2008-01-16 Benny Malengier <benny.malengier@gramps-project.org>
* src/Editors/_EditMediaRef.py:
* src/DisplayTabs/_GalleryTab.py:
Finish changes caused by Addmedia not touching database anymore, #1610
2008-01-16 Benny Malengier <benny.malengier@gramps-project.org>
* configure.in: don't make help makefile
* src/FilterEditor/_ShowResults.py: shorten text, bug 1609

View File

@ -240,21 +240,13 @@ class GalleryTab(ButtonTab):
return None
def add_button_clicked(self, obj):
import AddMedia
am = AddMedia.AddMediaObject(self.dbstate, self.uistate, self.track)
am.run()
src = am.object
if src:
sref = gen.lib.MediaRef()
try:
from Editors import EditMediaRef
EditMediaRef(self.dbstate, self.uistate, self.track,
src, sref, self.add_callback)
except Errors.WindowActiveError:
pass
try:
from Editors import EditMediaRef
EditMediaRef(self.dbstate, self.uistate, self.track,
gen.lib.MediaObject(), gen.lib.MediaRef(),
self.add_callback)
except Errors.WindowActiveError:
pass
def add_callback(self, media_ref, media):
media_ref.ref = media.handle
@ -276,7 +268,6 @@ class GalleryTab(ButtonTab):
sref = gen.lib.MediaRef()
try:
from Editors import EditMediaRef
EditMediaRef(self.dbstate, self.uistate, self.track,
src, sref, self.add_callback)
except Errors.WindowActiveError:
@ -291,10 +282,10 @@ class GalleryTab(ButtonTab):
def edit_button_clicked(self, obj):
ref = self.get_selected()
if ref:
obj = self.dbstate.db.get_object_from_handle(ref.get_reference_handle())
obj = self.dbstate.db.get_object_from_handle(
ref.get_reference_handle())
try:
from Editors import EditMediaRef
EditMediaRef(self.dbstate, self.uistate, self.track,
obj, ref, None)
except Errors.WindowActiveError:

View File

@ -49,6 +49,7 @@ from DisplayTabs import \
SourceEmbedList,AttrEmbedList,MediaBackRefList,NoteTab
from GrampsWidgets import *
from _EditReference import RefTab, EditReference
from AddMedia import AddMediaObject
#-------------------------------------------------------------------------
#
@ -61,9 +62,12 @@ class EditMediaRef(EditReference):
HEIGHT_KEY = Config.MEDIA_REF_HEIGHT
def __init__(self, state, uistate, track, media, media_ref, update):
EditReference.__init__(self, state, uistate, track, media,
media_ref, update)
if not self.source.get_handle():
#show the addmedia dialog immediately, with track of parent.
AddMediaObject(state, self.uistate, self.track, self.source,
self._update_addmedia)
def _local_init(self):
@ -88,18 +92,33 @@ class EditMediaRef(EditReference):
self.primtab = RefTab(self.dbstate, self.uistate, self.track,
_('General'), tblref)
def draw_preview(self):
"""
Draw the two preview images. This method can be called on eg change of
the path.
"""
self.mtype = self.source.get_mime_type()
self.pix = ThumbNails.get_thumbnail_image(self.source.get_path(),
self.mtype)
self.pixmap.set_from_pixbuf(self.pix)
self.subpix = ThumbNails.get_thumbnail_image(self.source.get_path(),
self.mtype,
self.rectangle)
self.subpixmap.set_from_pixbuf(self.subpix)
mt = Mime.get_description(self.mtype)
if mt:
self.top.get_widget("type").set_text(mt)
else:
self.top.get_widget("type").set_text("")
def _setup_fields(self):
mtype = self.source.get_mime_type()
self.mtype = mtype
self.pix = ThumbNails.get_thumbnail_image(self.source.get_path(),mtype)
self.pixmap = self.top.get_widget("pixmap")
ebox = self.top.get_widget('eventbox')
ebox.connect('button-press-event', self.button_press_event)
self.pixmap.set_from_pixbuf(self.pix)
self.pixmap = self.top.get_widget("pixmap")
coord = self.source_ref.get_rectangle()
#upgrade path: set invalid (from eg old db) to none
if coord is not None and ((coord[0] == None and coord[1] == None
@ -109,14 +128,10 @@ class EditMediaRef(EditReference):
coord[0] == coord[2] and coord[1] == coord[3]
)):
coord = None
self.rectangle = coord
self.subpixmap = self.top.get_widget("subpixmap")
self.subpix = ThumbNails.get_thumbnail_image(self.source.get_path(),
mtype,
coord)
self.subpixmap.set_from_pixbuf(self.subpix)
self.draw_preview()
if coord and type(coord) == tuple:
self.top.get_widget("corner1_x").set_value(coord[0])
@ -187,12 +202,6 @@ class EditMediaRef(EditReference):
self.source.get_path,
self.db.readonly)
mt = Mime.get_description(mtype)
if mt:
self.top.get_widget("type").set_text(mt)
else:
self.top.get_widget("type").set_text("")
def set_corner1_x(self, value):
"""
Callback for the signal handling of the spinbutton for the first
@ -367,6 +376,16 @@ class EditMediaRef(EditReference):
if event.button==1 and event.type == gtk.gdk._2BUTTON_PRESS:
self.view_media(obj)
def _update_addmedia(self, obj):
"""
Called when the add media dialog has been called.
This allows us to update the main form in response to
any changes: Redraw relevant fields: description, mimetype and path
"""
for obj in (self.descr_window, self.path_obj):
obj.update()
self.draw_preview()
def view_media(self, obj):
mime_type = self.source.get_mime_type()
app = Mime.get_application(mime_type)
@ -432,14 +451,24 @@ class EditMediaRef(EditReference):
self._setup_notebook_tabs( notebook_ref)
def save(self,*obj):
#first save primary object
trans = self.db.transaction_begin()
if self.source.handle:
self.db.commit_media_object(self.source, trans)
self.db.transaction_commit(trans, _("Edit Media Object (%s)"
) % self.source.get_description())
else:
self.db.add_object(self.source, trans)
self.db.transaction_commit(trans,_("Add Media Object (%s)"
) % self.source.get_description())
#save reference object in memory
coord = (
self.top.get_widget("corner1_x").get_value_as_int(),
self.top.get_widget("corner1_y").get_value_as_int(),
self.top.get_widget("corner2_x").get_value_as_int(),
self.top.get_widget("corner2_y").get_value_as_int(),
)
#do not set unset or invalid coord
if (coord[0] == None and coord[1] == None
and coord[2] == None and coord[3] == None) or (
@ -448,16 +477,10 @@ class EditMediaRef(EditReference):
coord[0] == coord[2] and coord[1] == coord[3]
):
coord = None
self.source_ref.set_rectangle(coord)
orig = self.db.get_object_from_handle(self.source.handle)
if cmp(orig.serialize(),self.source.serialize()):
trans = self.db.transaction_begin()
self.db.commit_media_object(self.source,trans)
self.db.transaction_commit(trans,_("Edit Media Object"))
#call callback if given
if self.update:
self.update(self.source_ref,self.source)
self.close()