diff --git a/src/EditPerson.py b/src/EditPerson.py index 0536346d5..484f6010a 100644 --- a/src/EditPerson.py +++ b/src/EditPerson.py @@ -103,7 +103,6 @@ class EditPerson: self.web_list = self.get_widget("web_list") self.web_url = self.get_widget("url_addr") self.web_description = self.get_widget("url_des") - self.web_browse = self.get_widget("browse") self.address_label = self.get_widget("address_label") self.address_list = self.get_widget("address_list") self.address_start = self.get_widget("address_start") @@ -658,7 +657,7 @@ def on_web_list_select_row(obj,row,b,c): epo = obj.get_data(EDITPERSON) url = obj.get_row_data(row) - epo.web_url.set_text(":%s " % url.get_path()) + epo.web_url.set_text(": %s " % url.get_path()) epo.web_description.set_text(": %s" % url.get_description()) #------------------------------------------------------------------------- @@ -1644,7 +1643,7 @@ def on_ok_clicked(obj): def on_browse_clicked(obj): import gnome.url - path = obj.get() + path = obj.get()[2:] if path != "": gnome.url.show(path) diff --git a/src/EditPlace.py b/src/EditPlace.py index ea1b551d4..98219ed29 100644 --- a/src/EditPlace.py +++ b/src/EditPlace.py @@ -80,6 +80,12 @@ class EditPlace: self.latitude = self.top_window.get_widget("latitude") self.note = self.top_window.get_widget("place_note") + self.web_list = self.top_window.get_widget("web_list") + self.web_url = self.top_window.get_widget("url_addr") + self.web_description = self.top_window.get_widget("url_des") + self.ulist = place.getUrlList()[:] + self.urls_changed = 0 + self.title.set_text(place.get_title()) mloc = place.get_main_location() self.city.set_text(mloc.get_city()) @@ -101,7 +107,12 @@ class EditPlace: "on_photolist_button_press_event" : on_photolist_button_press_event, "on_switch_page" : on_switch_page, "on_addphoto_clicked" : on_add_photo_clicked, + "on_browse_clicked": on_browse_clicked, "on_deletephoto_clicked" : on_delete_photo_clicked, + "on_add_url_clicked" : on_add_url_clicked, + "on_delete_url_clicked" : on_delete_url_clicked, + "on_update_url_clicked" : on_update_url_clicked, + "on_web_list_select_row" : on_web_list_select_row, "on_apply_clicked" : on_place_apply_clicked }) @@ -112,6 +123,45 @@ class EditPlace: self.top_window.get_widget("add_photo").set_sensitive(0) self.top_window.get_widget("delete_photo").set_sensitive(0) + self.web_list.set_data(PLACE,self) + self.web_list.set_data(INDEX,-1) + self.redraw_url_list() + + #------------------------------------------------------------------------- + # + # + # + #------------------------------------------------------------------------- + def update_urls(self): + self.place.setUrlList(self.ulist) + + #--------------------------------------------------------------------- + # + # redraw_url_list - redraws the altername name list for the person + # + #--------------------------------------------------------------------- + def redraw_url_list(self): + self.web_list.freeze() + self.web_list.clear() + + self.web_index = 0 + for url in self.ulist: + self.web_list.append([url.get_path(),url.get_description()]) + self.web_list.set_row_data(self.web_index,url) + self.web_index = self.web_index + 1 + + current_row = self.web_list.get_data(INDEX) + + if self.web_index > 0: + if current_row <= 0: + current_row = 0 + elif self.web_index <= current_row: + current_row = current_row - 1 + self.web_list.select_row(current_row,0) + self.web_list.moveto(current_row,0) + self.web_list.set_data(INDEX,current_row) + self.web_list.thaw() + #------------------------------------------------------------------------- # # add_thumbnail - Scale the image and add it to the IconList. @@ -192,6 +242,10 @@ def on_place_apply_clicked(obj): edit.place.setNote(note) utils.modified() + edit.update_urls() + if edit.urls_changed: + utils.modified() + utils.destroy_passed_object(edit.top) edit.callback(edit.place) @@ -437,3 +491,193 @@ def on_name_changed(obj): if os.path.isfile(file): image = RelImage.scale_image(file,const.thumbScale) edit_person.add_image.load_imlib(image) + +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def on_update_url_clicked(obj): + row = obj.get_data(INDEX) + if row < 0: + return + + UrlEditor(obj.get_data(PLACE),obj.get_row_data(row)) + +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def on_delete_url_clicked(obj): + row = obj.get_data(INDEX) + if row < 0: + return + + epo = obj.get_data(PLACE) + del epo.ulist[row] + + if row > len(epo.ulist)-1: + obj.set_data(INDEX,row-1) + + epo.redraw_url_list() + utils.modified() + +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def on_add_url_clicked(obj): + epo = obj.get_data(PLACE) + UrlEditor(obj.get_data(PLACE),None) + +#------------------------------------------------------------------------- +# +# UrlEditor class +# +#------------------------------------------------------------------------- +class UrlEditor: + + def __init__(self,parent,url): + self.parent = parent + self.url = url + self.top = libglade.GladeXML(const.editPersonFile, "url_edit") + self.window = self.top.get_widget("url_edit") + self.des = self.top.get_widget("url_des") + self.addr = self.top.get_widget("url_addr") + self.priv = self.top.get_widget("priv") + + if parent.place: + name = _("Internet Address Editor for %s") % parent.place.get_title() + else: + name = _("Internet Address Editor") + + self.top.get_widget("urlTitle").set_text(name) + + if url != None: + self.des.set_text(url.get_description()) + self.addr.set_text(url.get_path()) + self.priv.set_active(url.getPrivacy()) + + self.window.set_data("o",self) + self.top.signal_autoconnect({ + "destroy_passed_object" : utils.destroy_passed_object, + "on_url_edit_ok_clicked" : on_url_edit_ok_clicked + }) + +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def on_url_edit_ok_clicked(obj): + ee = obj.get_data("o") + url = ee.url + + des = ee.des.get_text() + addr = ee.addr.get_text() + priv = ee.priv.get_active() + + if url == None: + url = Url() + ee.parent.ulist.append(url) + + if update_url(url,des,addr,priv): + ee.parent.urls_changed = 1 + + ee.parent.redraw_url_list() + utils.destroy_passed_object(obj) + + +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def get_detail_flags(obj): + detail = "" + if Config.show_detail: + if obj.getNote() != "": + detail = "N" + if obj.getSourceRef().getBase(): + detail = detail + "S" + if obj.getPrivacy(): + detail = detail + "P" + return detail + +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def get_detail_text(obj): + if obj.getNote() != "": + details = "%s" % _("Note") + else: + details = "" + if obj.getSourceRef().getBase() != None: + if details == "": + details = _("Source") + else: + details = "%s, %s" % (details,_("Source")) + if obj.getPrivacy() == 1: + if details == "": + details = _("Private") + else: + details = "%s, %s" % (details,_("Private")) + return details + +#------------------------------------------------------------------------- +# +# on_name_list_select_row - sets the row object attached to the passed +# object, and then updates the display with the data corresponding to +# the row. +# +#------------------------------------------------------------------------- +def on_web_list_select_row(obj,row,b,c): + obj.set_data(INDEX,row) + + epo = obj.get_data(PLACE) + url = obj.get_row_data(row) + + epo.web_url.set_text(": %s " % url.get_path()) + epo.web_description.set_text(": %s" % url.get_description()) + +#------------------------------------------------------------------------- +# +# update_attrib +# +# Updates the specified event with the specified date. Compares against +# the previous value, so the that modified flag is not set if nothing has +# actually changed. +# +#------------------------------------------------------------------------- +def update_url(url,des,addr,priv): + changed = 0 + + if url.get_path() != addr: + url.set_path(addr) + changed = 1 + + if url.get_description() != des: + url.set_description(des) + changed = 1 + + if url.getPrivacy() != priv: + url.setPrivacy(priv) + changed = 1 + + return changed + +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +def on_browse_clicked(obj): + import gnome.url + + path = obj.get()[2:] + if path != "": + gnome.url.show(path) diff --git a/src/WriteXML.py b/src/WriteXML.py index 8d46894c1..ce6d78864 100644 --- a/src/WriteXML.py +++ b/src/WriteXML.py @@ -476,14 +476,16 @@ def exportData(database, filename, callback): proplist = photo.getPropertyList() if proplist: for key in proplist.keys(): - g.write(' %s="%s"' % (key,proplist[key])) + g.write(' %s="%s"' % (key,fix(proplist[key]))) g.write("/>\n") if len(place.getUrlList()) > 0: for url in place.getUrlList(): - g.write(' \n') if place.getNote() != "": writeNote(g,"note",place.getNote(),3) dump_source_ref(g,event.getSourceRef(),3) diff --git a/src/gramps.glade b/src/gramps.glade index 598056d2c..e4528fcd9 100644 --- a/src/gramps.glade +++ b/src/gramps.glade @@ -1023,7 +1023,7 @@ on_edit_active_person Fri, 01 Dec 2000 04:16:55 GMT - + GTK_RELIEF_NORMAL @@ -1400,7 +1400,7 @@ on_edit_sp_clicked Thu, 12 Jul 2001 23:05:41 GMT - + GTK_RELIEF_NORMAL @@ -1687,7 +1687,7 @@ on_choose_parents_clicked Thu, 12 Jul 2001 23:24:52 GMT - + GTK_RELIEF_NORMAL @@ -2785,7 +2785,7 @@ source_list Tue, 29 May 2001 21:15:39 GMT - + GTK_RELIEF_NORMAL @@ -2974,7 +2974,7 @@ place_list Sat, 18 Aug 2001 15:39:59 GMT - + GTK_RELIEF_NORMAL @@ -3078,7 +3078,6 @@ GtkWindow spouseDialog - 250 Gramps - Choose Spouse GTK_WINDOW_DIALOG GTK_WIN_POS_CENTER @@ -3199,8 +3198,8 @@ GtkCList spouseList - 350 - 400 + 400 + 450 True select_row diff --git a/src/gramps_main.py b/src/gramps_main.py index f97d54f36..c31034821 100755 --- a/src/gramps_main.py +++ b/src/gramps_main.py @@ -1413,7 +1413,7 @@ def on_editperson_clicked(obj): # #------------------------------------------------------------------------- def on_rel_type_changed(obj): - + nameList = database.getPersonMap().values() nameList.sort(sort.by_last_name) spouse_list = obj.get_data("d") diff --git a/src/places.glade b/src/places.glade index 9051ec698..d08103751 100644 --- a/src/places.glade +++ b/src/places.glade @@ -831,7 +831,7 @@ GtkLabel - label257 + url_des GTK_JUSTIFY_LEFT False @@ -877,7 +877,7 @@ GtkLabel - label258 + url_addr GTK_JUSTIFY_LEFT False diff --git a/src/sort.py b/src/sort.py index ba9bcd1b4..94b85dafe 100644 --- a/src/sort.py +++ b/src/sort.py @@ -138,7 +138,7 @@ def by_last_name(first, second) : name2 = second.getPrimaryName() fsn = string.upper(name1.getSurname()) - ssn = string.upper(name1.getSurname()) + ssn = string.upper(name2.getSurname()) if first == second : ffn = string.upper(name1.getFirstName())