diff --git a/gramps/src/EditPerson.py b/gramps/src/EditPerson.py
index 71256f50b..d7a2fc1eb 100644
--- a/gramps/src/EditPerson.py
+++ b/gramps/src/EditPerson.py
@@ -48,6 +48,7 @@ import Config
from RelLib import *
import RelImage
import Sources
+import ImageSelect
_ = intl.gettext
@@ -398,6 +399,35 @@ class EditPerson:
self.person.setAddressList(self.plist)
utils.modified()
+
+#-------------------------------------------------------------------------
+#
+# PersonImageSelect class
+#
+#-------------------------------------------------------------------------
+class PersonImageSelect(ImageSelect.ImageSelect):
+ #---------------------------------------------------------------------
+ #
+ # __init__ - Sub-class an ImageSelect window. The only differences
+ # between the various subclasses are the initializer arguments, and
+ # the type of object for which an image is being selected.
+ #
+ #---------------------------------------------------------------------
+ def __init__(self, epo):
+ ImageSelect.ImageSelect.__init__(self, epo.path, "i%s" % epo.person.getId())
+ self.epo = epo;
+
+ #---------------------------------------------------------------------
+ #
+ # savephoto - Override the savephoto method to store the selected
+ # photo in a person object
+ #
+ #---------------------------------------------------------------------
+ def savephoto(self, photo):
+ self.epo.person.addPhoto(photo)
+ self.epo.add_thumbnail(photo)
+
+
#-------------------------------------------------------------------------
#
#
@@ -1053,36 +1083,7 @@ def update_name(name,first,last,suffix,note,priv):
#
#-------------------------------------------------------------------------
def on_add_photo_clicked(obj):
-
- edit_person = obj.get_data(EDITPERSON)
- image_select = libglade.GladeXML(const.imageselFile,"imageSelect")
- edit_person.isel = image_select
- window = image_select.get_widget("imageSelect")
-
- image_select.signal_autoconnect({
- "on_savephoto_clicked" : on_savephoto_clicked,
- "on_name_changed" : on_name_changed,
- "destroy_passed_object" : utils.destroy_passed_object
- })
-
- edit_person.fname = image_select.get_widget("fname")
- edit_person.add_image = image_select.get_widget("image")
- edit_person.external = image_select.get_widget("private")
- window.editable_enters(image_select.get_widget("photoDescription"))
- window.set_data(EDITPERSON,edit_person)
- window.show()
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_name_changed(obj):
- edit_person = obj.get_data(EDITPERSON)
- file = edit_person.fname.get_text()
- if os.path.isfile(file):
- image = RelImage.scale_image(file,const.thumbScale)
- edit_person.add_image.load_imlib(image)
+ PersonImageSelect(obj.get_data(EDITPERSON))
#-------------------------------------------------------------------------
#
@@ -1197,44 +1198,6 @@ def save_person(obj):
epo.update_lists()
epo.callback(epo)
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_savephoto_clicked(obj):
- epo = obj.get_data(EDITPERSON)
- image_select = epo.isel
-
- filename = image_select.get_widget("photosel").get_full_path(0)
- description = image_select.get_widget("photoDescription").get_text()
-
- if os.path.exists(filename) == 0:
- return
-
- prefix = "i%s" % epo.person.getId()
- if epo.external.get_active() == 1:
- if os.path.isfile(filename):
- name = filename
- thumb = "%s%s.thumb.jpg" % (path,os.sep,os.path.basename(filename))
- RelImage.mk_thumb(filename,thumb,const.thumbScale)
- else:
- return
- else:
- name = RelImage.import_photo(filename,epo.path,prefix)
- if name == None:
- return
-
- photo = Photo()
- photo.setPath(name)
- photo.setDescription(description)
-
- epo.person.addPhoto(photo)
- epo.add_thumbnail(photo)
-
- utils.modified()
- utils.destroy_passed_object(obj)
-
#-------------------------------------------------------------------------
#
#
diff --git a/gramps/src/EditPlace.py b/gramps/src/EditPlace.py
index 4678e5671..3dfa43ef9 100644
--- a/gramps/src/EditPlace.py
+++ b/gramps/src/EditPlace.py
@@ -47,6 +47,7 @@ import utils
from RelLib import *
import RelImage
import Sources
+import ImageSelect
_ = intl.gettext
@@ -205,7 +206,7 @@ class EditPlace:
thumb = "%s%s.thumb%s%s" % (self.path,os.sep,os.sep,src)
else:
thumb = "%s%s.thumb%s%s.jpg" % (self.path,os.sep,os.sep,os.path.basename(src))
- RelImage.check_thumb(phto.getPath(),thumb,const.thumbScale)
+ RelImage.check_thumb(photo.getPath(),thumb,const.thumbScale)
self.photo_list.append(thumb,photo.getDescription())
#-------------------------------------------------------------------------
@@ -222,6 +223,35 @@ class EditPlace:
self.add_thumbnail(photo)
self.photo_list.thaw()
+
+#-------------------------------------------------------------------------
+#
+# PlaceImageSelect class
+#
+#-------------------------------------------------------------------------
+class PlaceImageSelect(ImageSelect.ImageSelect):
+ #---------------------------------------------------------------------
+ #
+ # __init__ - Sub-class an ImageSelect window. The only differences
+ # between the various subclasses are the initializer arguments, and
+ # the type of object for which an image is being selected.
+ #
+ #---------------------------------------------------------------------
+ def __init__(self, epo):
+ ImageSelect.ImageSelect.__init__(self, epo.path, "p%s" % epo.place.getId())
+ self.epo = epo;
+
+ #---------------------------------------------------------------------
+ #
+ # savephoto - Override the savephoto method to store the selected
+ # photo in a place object
+ #
+ #---------------------------------------------------------------------
+ def savephoto(self, photo):
+ self.epo.place.addPhoto(photo)
+ self.epo.add_thumbnail(photo)
+
+
def on_web_go_clicked(obj):
import gnome.url
@@ -326,60 +356,7 @@ def on_delete_photo_clicked(obj):
#
#-------------------------------------------------------------------------
def on_add_photo_clicked(obj):
-
- edit_place = obj.get_data(_PLACE)
- image_select = libglade.GladeXML(const.imageselFile,"imageSelect")
- edit_place.isel = image_select
-
- image_select.signal_autoconnect({
- "on_savephoto_clicked" : on_savephoto_clicked,
- "on_name_changed" : on_name_changed,
- "destroy_passed_object" : utils.destroy_passed_object
- })
-
- edit_place.fname = image_select.get_widget("fname")
- edit_place.add_image = image_select.get_widget("image")
- edit_place.external = image_select.get_widget("private")
- window = image_select.get_widget("imageSelect")
- window.editable_enters(image_select.get_widget("photoDescription"))
- window.set_data(_PLACE,edit_place)
- window.show()
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_savephoto_clicked(obj):
- edit_place_obj = obj.get_data(_PLACE)
- image_select = edit_place_obj.isel
-
- filename = image_select.get_widget("photosel").get_full_path(0)
- description = image_select.get_widget("photoDescription").get_text()
-
- if os.path.exists(filename) == 0:
- return
-
- prefix = "p%s" % edit_place_obj.place.getId()
- if edit_place_obj.external.get_active() == 1:
- if os.path.isfile(filename):
- name = filename
- else:
- return
- else:
- name = RelImage.import_photo(filename,edit_place_obj.path,prefix)
- if name == None:
- return
-
- photo = Photo()
- photo.setPath(name)
- photo.setDescription(description)
-
- edit_place_obj.place.addPhoto(photo)
- edit_place_obj.add_thumbnail(photo)
-
- utils.modified()
- utils.destroy_passed_object(obj)
+ PlaceImageSelect(obj.get_data(_PLACE))
#-------------------------------------------------------------------------
#
@@ -493,18 +470,6 @@ def on_apply_clicked(obj):
edit_window.load_images()
utils.modified()
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_name_changed(obj):
- edit_person = obj.get_data(_PLACE)
- file = edit_person.fname.get_text()
- if os.path.isfile(file):
- image = RelImage.scale_image(file,const.thumbScale)
- edit_person.add_image.load_imlib(image)
-
#-------------------------------------------------------------------------
#
#
diff --git a/gramps/src/EditSource.py b/gramps/src/EditSource.py
index f114d3cd7..0d00f71e4 100644
--- a/gramps/src/EditSource.py
+++ b/gramps/src/EditSource.py
@@ -45,6 +45,7 @@ import const
import utils
from RelLib import *
import RelImage
+import ImageSelect
_ = intl.gettext
@@ -132,6 +133,35 @@ class EditSource:
self.add_thumbnail(photo)
self.photo_list.thaw()
+
+#-------------------------------------------------------------------------
+#
+# SourceImageSelect class
+#
+#-------------------------------------------------------------------------
+class SourceImageSelect(ImageSelect.ImageSelect):
+ #---------------------------------------------------------------------
+ #
+ # __init__ - Sub-class an ImageSelect window. The only differences
+ # between the various subclasses are the initializer arguments, and
+ # the type of object for which an image is being selected.
+ #
+ #---------------------------------------------------------------------
+ def __init__(self, eso):
+ ImageSelect.ImageSelect.__init__(self, eso.path, "s%s" % eso.source.getId())
+ self.eso = eso;
+
+ #---------------------------------------------------------------------
+ #
+ # savephoto - Override the savephoto method to store the selected
+ # photo in a source object
+ #
+ #---------------------------------------------------------------------
+ def savephoto(self, photo):
+ self.eso.source.addPhoto(photo)
+ self.eso.add_thumbnail(photo)
+
+
#-----------------------------------------------------------------------------
#
#
@@ -202,60 +232,7 @@ def on_delete_photo_clicked(obj):
#
#-------------------------------------------------------------------------
def on_add_photo_clicked(obj):
-
- edit_source = obj.get_data(SOURCE)
- image_select = libglade.GladeXML(const.imageselFile,"imageSelect")
- edit_source.isel = image_select
-
- image_select.signal_autoconnect({
- "on_savephoto_clicked" : on_savephoto_clicked,
- "on_name_changed" : on_name_changed,
- "destroy_passed_object" : utils.destroy_passed_object
- })
-
- edit_source.fname = image_select.get_widget("fname")
- edit_source.add_image = image_select.get_widget("image")
- edit_source.external = image_select.get_widget("private")
- window = image_select.get_widget("imageSelect")
- window.editable_enters(image_select.get_widget("photoDescription"))
- window.set_data(SOURCE,edit_source)
- window.show()
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_savephoto_clicked(obj):
- eso = obj.get_data(SOURCE)
- image_select = eso.isel
-
- filename = image_select.get_widget("photosel").get_full_path(0)
- description = image_select.get_widget("photoDescription").get_text()
-
- if os.path.exists(filename) == 0:
- return
-
- prefix = "s%s" % eso.source.getId()
- if eso.external.get_active() == 1:
- if os.path.isfile(filename):
- name = filename
- else:
- return
- else:
- name = RelImage.import_photo(filename,eso.path,prefix)
- if name == None:
- return
-
- photo = Photo()
- photo.setPath(name)
- photo.setDescription(description)
-
- eso.source.addPhoto(photo)
- eso.add_thumbnail(photo)
-
- utils.modified()
- utils.destroy_passed_object(obj)
+ SourceImageSelect(obj.get_data(SOURCE))
#-------------------------------------------------------------------------
#
@@ -368,15 +345,3 @@ def on_apply_clicked(obj):
edit_window = obj.get_data("m")
edit_window.load_images()
utils.modified()
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_name_changed(obj):
- edit_person = obj.get_data(SOURCE)
- file = edit_person.fname.get_text()
- if os.path.isfile(file):
- image = RelImage.scale_image(file,const.thumbScale)
- edit_person.add_image.load_imlib(image)
diff --git a/gramps/src/Marriage.py b/gramps/src/Marriage.py
index 1e590d8c6..e9e2e1c9f 100644
--- a/gramps/src/Marriage.py
+++ b/gramps/src/Marriage.py
@@ -44,6 +44,7 @@ import Config
import utils
from RelLib import *
import RelImage
+import ImageSelect
#-------------------------------------------------------------------------
#
@@ -216,6 +217,35 @@ class Marriage:
def get_widget(self,name):
return self.top.get_widget(name)
+
+#-------------------------------------------------------------------------
+#
+# MarriageImageSelect class
+#
+#-------------------------------------------------------------------------
+class MarriageImageSelect(ImageSelect.ImageSelect):
+ #---------------------------------------------------------------------
+ #
+ # __init__ - Sub-class an ImageSelect window. The only differences
+ # between the various subclasses are the initializer arguments, and
+ # the type of object for which an image is being selected.
+ #
+ #---------------------------------------------------------------------
+ def __init__(self, efo):
+ ImageSelect.ImageSelect.__init__(self, efo.path, "f%s" % efo.family.getId())
+ self.efo = efo;
+
+ #---------------------------------------------------------------------
+ #
+ # savephoto - Override the savephoto method to store the selected
+ # photo in a family object
+ #
+ #---------------------------------------------------------------------
+ def savephoto(self, photo):
+ self.efo.family.addPhoto(photo)
+ self.efo.add_thumbnail(photo)
+
+
#-------------------------------------------------------------------------
#
#
@@ -545,79 +575,7 @@ def on_delete_photo_clicked(obj):
#
#-------------------------------------------------------------------------
def on_add_photo_clicked(obj):
-
- marriage_obj = obj.get_data(MARRIAGE)
- imageSelect = libglade.GladeXML(const.imageselFile,"imageSelect")
- marriage_obj.imageSelect = imageSelect
-
- imageSelect.signal_autoconnect({
- "on_savephoto_clicked" : on_savephoto_clicked,
- "on_name_changed" : on_name_changed,
- "destroy_passed_object" : utils.destroy_passed_object
- })
-
- marriage_obj.fname = image_select.get_widget("fname")
- marriage_obj.add_image = image_select.get_widget("image")
- marriage_obj.external = image_select.get_widget("private")
- window = imageSelect.get_widget("imageSelect")
- window.editable_enters(image_select.get_widget("photoDescription"))
- window.set_data(MARRIAGE,marriage_obj)
- window.show()
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_name_changed(obj):
- edit_person = obj.get_data(MARRIAGE_OBJ)
- file = edit_person.fname.get_text()
- if os.path.isfile(file):
- image = RelImage.scale_image(file,const.thumbScale)
- edit_person.add_image.load_imlib(image)
-
-#-------------------------------------------------------------------------
-#
-#
-#
-#-------------------------------------------------------------------------
-def on_savephoto_clicked(obj):
- marriage_obj = obj.get_data(MARRIAGE)
-
- photo_name_obj = marriage_obj.imageSelect.get_widget("photosel")
- description_obj = marriage_obj.imageSelect.get_widget("photoDescription")
- filename = photo_name_obj.get_full_path(0)
- description = description_obj.get_text()
-
- if os.path.exists(filename) == 0:
- return
-
- prefix = "f%s" % marriage_obj.family.getId()
- name = RelImage.import_photo(filename,marriage_obj.path,prefix)
- if name == None:
- return
-
- if marriage_obj.external.get_active() == 1:
- if os.path.isfile(filename):
- name = filename
- thumb = "%s%s.thumb.jpg" % (path,os.sep,os.path.basename(filename))
- RelImage.mk_thumb(filename,thumb,const.thumbScale)
- else:
- return
- else:
- name = RelImage.import_photo(filename,marriage_obj.path,prefix)
- if name == None:
- return
-
- photo = Photo()
- photo.setPath(name)
- photo.setDescription(description)
-
- marriage_obj.family.addPhoto(photo)
- marriage_obj.add_thumbnail(photo)
-
- utils.modified()
- utils.destroy_passed_object(obj)
+ MarriageImageSelect(obj.get_data(MARRIAGE))
#-------------------------------------------------------------------------
#
diff --git a/gramps/src/WriteXML.py b/gramps/src/WriteXML.py
index d7ab9c29b..8ef3e4d59 100644
--- a/gramps/src/WriteXML.py
+++ b/gramps/src/WriteXML.py
@@ -267,6 +267,46 @@ def dump_location(g,loc):
g.write('/>\n')
+def write_attribute_list(g, list):
+ for attr in list:
+ if attr.getSourceRef() or attr.getNote():
+ g.write(' \n' % conf_priv(attr))
+ write_line(g,"attr_type",attr.getType(),4)
+ write_line(g,"attr_value",attr.getValue(),4)
+ dump_source_ref(g,attr.getSourceRef(),4)
+ writeNote(g,"note",attr.getNote(),4)
+ g.write(' \n')
+ else:
+ g.write(' ' % attr.getType())
+ g.write(fix(attr.getValue()))
+ g.write('\n')
+
+
+def write_photo_list(g,list):
+ for photo in list:
+ path = photo.getPath()
+ l = len(fileroot)
+ if len(path) >= l:
+ if fileroot == path[0:l]:
+ path = path[l+1:]
+ g.write(' \n")
+
+
+def write_url_list(g, list):
+ for url in list:
+ g.write(' \n')
+
+
def write_place_obj(g,place):
title = place.get_title()
@@ -281,26 +321,8 @@ def write_place_obj(g,place):
dump_location(g,place.get_main_location())
for loc in place.get_alternate_locations():
dump_location(g,loc)
- for photo in place.getPhotoList():
- path = photo.getPath()
- l = len(fileroot)
- if len(path) >= l:
- if fileroot == path[0:l]:
- path = path[l+1:]
- g.write(" \n")
- for url in place.getUrlList():
- g.write(' \n')
+ write_photo_list(g,place.getPhotoList())
+ write_url_list(g, place.getUrlList())
if place.getNote() != "":
writeNote(g,"note",place.getNote(),3)
dump_source_ref(g,place.getSourceRef(),3)
@@ -314,6 +336,7 @@ def write_place_obj(g,place):
def exportData(database, filename, callback):
+ global fileroot
date = string.split(time.ctime(time.time()))
fileroot = os.path.dirname(filename)
owner = database.getResearcher()
@@ -393,19 +416,7 @@ def exportData(database, filename, callback):
for event in person.getEventList():
dump_event(g,event,3)
- for photo in person.getPhotoList():
- path = photo.getPath()
- l = len(fileroot)
- if len(path) >= l:
- if fileroot == path[0:l]:
- path = path[l+1:]
- g.write(' \n")
+ write_photo_list(g,person.getPhotoList())
if len(person.getAddressList()) > 0:
for address in person.getAddressList():
@@ -421,27 +432,8 @@ def exportData(database, filename, callback):
dump_source_ref(g,address.getSourceRef(),4)
g.write(' \n')
- if len(person.getAttributeList()) > 0:
- for attr in person.getAttributeList():
- if attr.getSourceRef() or attr.getNote():
- g.write(' \n' % conf_priv(attr))
- write_line(g,"attr_type",attr.getType(),4)
- write_line(g,"attr_value",attr.getValue(),4)
- dump_source_ref(g,attr.getSourceRef(),4)
- writeNote(g,"note",attr.getNote(),4)
- g.write(' \n')
- else:
- g.write(' ' % attr.getType())
- g.write(fix(attr.getValue()))
- g.write('\n')
-
- if len(person.getUrlList()) > 0:
- for url in person.getUrlList():
- g.write(' \n')
+ write_attribute_list(g,person.getAttributeList())
+ write_url_list(g,person.getUrlList())
write_ref(g,"childof",person.getMainFamily(),3)
for alt in person.getAltFamilyList():
@@ -482,31 +474,12 @@ def exportData(database, filename, callback):
for event in family.getEventList():
dump_event(g,event,3)
- for photo in family.getPhotoList():
- path = photo.getPath()
- l = len(fileroot)
- if len(path) >= l:
- if fileroot == path[0:l]:
- path = path[l+1:]
- g.write(" \n")
+ write_photo_list(g,family.getPhotoList())
if len(family.getChildList()) > 0:
for person in family.getChildList():
write_ref(g,"child",person,3)
- if len(family.getAttributeList()) > 0:
- for attr in family.getAttributeList():
- g.write(' \n')
- write_line(g,"attr_type",attr.getType(),4)
- write_line(g,"attr_value",attr.getValue(),4)
- dump_source_ref(g,attr.getSourceRef(),4)
- writeNote(g,"note",attr.getNote(),4)
- g.write(' \n')
+ write_attribute_list(g,family.getAttributeList())
writeNote(g,"note",family.getNote(),3)
g.write(" \n")
g.write(" \n")
@@ -521,19 +494,7 @@ def exportData(database, filename, callback):
write_line(g,"scallno",source.getCallNumber(),3)
if source.getNote() != "":
writeNote(g,"note",source.getNote(),3)
- for photo in source.getPhotoList():
- path = photo.getPath()
- l = len(fileroot)
- if len(path) >= l:
- if fileroot == path[0:l]:
- path = path[l+1:]
- g.write(" \n")
+ write_photo_list(g,source.getPhotoList())
g.write(" \n")
g.write(" \n")