From ea59f17e8952b991f1691ed132d4e37d557f8b69 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Sat, 20 Oct 2001 20:42:38 +0000 Subject: [PATCH] Delete media objects added, revision control shows who the committer is. svn: r503 --- gramps/src/ImageSelect.py | 92 +++++++++++++++++++++++++++++++++++- gramps/src/Marriage.py | 32 +------------ gramps/src/VersionControl.py | 8 ++-- gramps/src/gramps.glade | 21 ++++++-- gramps/src/gramps_main.py | 57 +++++++++++++++++++--- gramps/src/imagesel.glade | 77 ++++++++++++++++++++++++++++++ gramps/src/utils.py | 11 +++++ 7 files changed, 252 insertions(+), 46 deletions(-) diff --git a/gramps/src/ImageSelect.py b/gramps/src/ImageSelect.py index 2017534a8..4ecb235f2 100644 --- a/gramps/src/ImageSelect.py +++ b/gramps/src/ImageSelect.py @@ -511,11 +511,13 @@ class LocalMediaProperties: class GlobalMediaProperties: - def __init__(self,object,path): + def __init__(self,db,object): self.object = object self.alist = self.object.getAttributeList()[:] self.lists_changed = 0 - + self.db = db + + path = self.db.getSavePath() fname = self.object.getPath() self.change_dialog = libglade.GladeXML(const.imageselFile,"change_global") window = self.change_dialog.get_widget("change_global") @@ -544,6 +546,7 @@ class GlobalMediaProperties: "on_apply_clicked" : self.on_apply_clicked, "on_attr_list_select_row" : self.on_attr_list_select_row, "on_add_attr_clicked": self.on_add_attr_clicked, + "on_notebook_switch_page": self.on_notebook_switch_page, "on_delete_attr_clicked" : self.on_delete_attr_clicked, "on_update_attr_clicked" : self.on_update_attr_clicked, }) @@ -551,7 +554,30 @@ class GlobalMediaProperties: def redraw_attr_list(self): utils.redraw_list(self.alist,self.attr_list,disp_attr) + + def display_refs(self): + ref = self.change_dialog.get_widget("refinfo") + for p in self.db.getPersonMap().values(): + for o in p.getPhotoList(): + if o.getReference() == self.object: + ref.append([_("Person"),p.getId(),Config.nameof(p)]) + for p in self.db.getFamilyMap().values(): + for o in p.getPhotoList(): + if o.getReference() == self.object: + ref.append([_("Family"),p.getId(),utils.family_name(p)]) + for p in self.db.getSourceMap().values(): + for o in p.getPhotoList(): + if o.getReference() == self.object: + ref.append([_("Source"),p.getId(),p.getTitle()]) + for p in self.db.getPlaceMap().values(): + for o in p.getPhotoList(): + if o.getReference() == self.object: + ref.append([_("Place"),p.getId(),p.get_title()]) + def on_notebook_switch_page(self,obj,junk,page): + if page == 3: + self.display_refs() + def on_apply_clicked(self, obj): text = self.change_dialog.get_widget("notes").get_chars(0,-1) desc = self.change_dialog.get_widget("description").get_text() @@ -598,3 +624,65 @@ class GlobalMediaProperties: def disp_attr(attr): detail = utils.get_detail_flags(attr) return [const.display_pattr(attr.getType()),attr.getValue(),detail] + + +class DeleteMediaQuery: + + def __init__(self,media,db,update): + self.db = db + self.media = media + self.update = update + + def query_response(self,ans): + if ans == 1: + return + del self.db.getObjectMap()[self.media.getId()] + utils.modified() + + for p in self.db.getPersonMap().values(): + nl = [] + change = 0 + for photo in p.getPhotoList(): + if photo.getReference() != self.media: + nl.append(photo) + else: + change = 1 + if change: + p.setPhotoList(nl) + + for p in self.db.getFamilyMap().values(): + nl = [] + change = 0 + for photo in p.getPhotoList(): + if photo.getReference() != self.media: + nl.append(photo) + else: + change = 1 + if change: + p.setPhotoList(nl) + + for p in self.db.getSourceMap().values(): + nl = [] + change = 0 + for photo in p.getPhotoList(): + if photo.getReference() != self.media: + nl.append(photo) + else: + change = 1 + if change: + p.setPhotoList(nl) + + for p in self.db.getPlaceMap().values(): + nl = [] + change = 0 + for photo in p.getPhotoList(): + if photo.getReference() != self.media: + nl.append(photo) + else: + change = 1 + if change: + p.setPhotoList(nl) + + self.update(0) + + diff --git a/gramps/src/Marriage.py b/gramps/src/Marriage.py index c5bd52e64..4f0738ca9 100644 --- a/gramps/src/Marriage.py +++ b/gramps/src/Marriage.py @@ -43,13 +43,6 @@ import utils from RelLib import * import ImageSelect -#------------------------------------------------------------------------- -# -# Constants -# -#------------------------------------------------------------------------- -MARRIAGE = "m" - #------------------------------------------------------------------------- # # Marriage class @@ -130,11 +123,6 @@ class Marriage: self.gid.set_text(family.getId()) self.gid.set_editable(Config.id_edit) - # stored object data - top_window.set_data(MARRIAGE,self) - self.event_list.set_data(MARRIAGE,self) - self.attr_list.set_data(MARRIAGE,self) - # set notes data self.notes_field.set_point(0) self.notes_field.insert_defaults(family.getNote()) @@ -244,15 +232,7 @@ class Marriage: def on_add_clicked(self,obj): import EventEdit - father = self.family.getFather() - mother = self.family.getMother() - if father and mother: - name = _("%s and %s") % (father.getPrimaryName().getName(), - mother.getPrimaryName().getName()) - elif father: - name = father.getPrimaryName().getName() - else: - name = mother.getPrimaryName().getName() + name = utils.family_name(self.family) EventEdit.EventEditor(self,name,const.marriageEvents,const.save_pevent,None,None,0) def on_update_clicked(self,obj): @@ -261,15 +241,7 @@ class Marriage: return event = obj.get_row_data(obj.selection[0]) - father = self.family.getFather() - mother = self.family.getMother() - if father and mother: - name = _("%s and %s") % (father.getPrimaryName().getName(), - mother.getPrimaryName().getName()) - elif father: - name = father.getPrimaryName().getName() - else: - name = mother.getPrimaryName().getName() + name = utils.family_name(self.family) EventEdit.EventEditor(self,name,const.marriageEvents,const.save_pevent,event,None,0) def on_delete_clicked(self,obj): diff --git a/gramps/src/VersionControl.py b/gramps/src/VersionControl.py index c23886f11..6af69e4ed 100644 --- a/gramps/src/VersionControl.py +++ b/gramps/src/VersionControl.py @@ -37,7 +37,7 @@ except: _gzip_ok = 0 _revision_re = re.compile("revision\s+([\d\.]+)") -_date_re = re.compile("date:\s+([^;]+);") +_date_re = re.compile("date:\s+([^;]+);\s+author:\s([^;]+);") _sep = '-' * 10 _end = "=" * 10 @@ -77,10 +77,9 @@ class RevisionSelect: self.revlist = dialog.get_widget("revlist") l = self.vc.revision_list() - l.reverse() index = 0 for f in l: - self.revlist.append([f[0],f[1],f[2]]) + self.revlist.append([f[0],f[1],f[3],f[2]]) self.revlist.set_row_data(index,f[0]) index = index + 1 @@ -166,7 +165,7 @@ class RcsVersionControl(VersionControl): if slog: if line[0:10] == _sep or line[0:10] == _end: slog = 0 - rlist.append(v,d,string.join(l,'\n')) + rlist.append((v,d,string.join(l,'\n'),o)) else: l.append(line) continue @@ -177,6 +176,7 @@ class RcsVersionControl(VersionControl): g = _date_re.match(line) if g: d = g.group(1) + o = g.group(2) slog = 1 l = [] diff --git a/gramps/src/gramps.glade b/gramps/src/gramps.glade index 76259d689..64f53ef8b 100644 --- a/gramps/src/gramps.glade +++ b/gramps/src/gramps.glade @@ -3130,12 +3130,12 @@ GtkButton button144 - False True True clicked on_delete_media_clicked + media_list Sun, 14 Oct 2001 21:50:57 GMT @@ -7130,11 +7130,11 @@ Unknown GtkCList revlist - 500 + 600 200 True - 3 - 77,128,80 + 4 + 53,128,69,80 GTK_SELECTION_SINGLE True GTK_SHADOW_IN @@ -7165,6 +7165,19 @@ Unknown 0 + + GtkLabel + CList:title + label251a + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + GtkLabel CList:title diff --git a/gramps/src/gramps_main.py b/gramps/src/gramps_main.py index 6b55aa27d..30701ae15 100755 --- a/gramps/src/gramps_main.py +++ b/gramps/src/gramps_main.py @@ -169,8 +169,9 @@ def on_exit_activate(obj): def save_query(value): """Catch the reponse to the save on exit question""" if value == 0: - on_save_activate(None) - mainquit(gtop) + on_save_activate_quit() + else: + mainquit(gtop) #------------------------------------------------------------------------- # @@ -528,8 +529,6 @@ def on_delete_place_clicked(obj): # # #------------------------------------------------------------------------- - - def on_delete_source_clicked(obj): import EditSource @@ -540,10 +539,10 @@ def on_delete_source_clicked(obj): source = obj.get_row_data(index) - ans = EditSource.DelSrcQuery(source,database,update_display) if is_source_used(source): msg = _("This source is currently being used. Delete anyway?") + ans = EditSource.DelSrcQuery(source,database,update_display) GnomeQuestionDialog(msg,ans.query_response) else: map = database.getSourceMap() @@ -1238,6 +1237,16 @@ def on_save_activate(obj): else: save_file(database.getSavePath(),_("No Comment Provided")) +def on_save_activate_quit(): + """Saves the file, first prompting for a comment if revision control needs it""" + if not database.getSavePath(): + on_save_as_activate(obj) + else: + if Config.usevc and Config.vc_comment: + display_comment_box(database.getSavePath()) + else: + save_file(database.getSavePath(),_("No Comment Provided")) + def display_comment_box(filename): """Displays a dialog box, prompting for a revison control comment""" import VersionControl @@ -2083,7 +2092,42 @@ def on_edit_media_clicked(obj): if len(media_list.selection) <= 0: return object = media_list.get_row_data(media_list.selection[0]) - ImageSelect.GlobalMediaProperties(object,database.getSavePath()) + ImageSelect.GlobalMediaProperties(database,object) + +def on_delete_media_clicked(obj): + if len(media_list.selection) <= 0: + return + else: + index = media_list.selection[0] + mobj = media_list.get_row_data(index) + if is_media_object_used(mobj): + import ImageSelect + ans = ImageSelect.DeleteMediaQuery(mobj,database,update_display) + msg = _("This media object is currently being used. Delete anyway?") + GnomeQuestionDialog(msg,ans.query_response) + else: + map = database.getObjectMap() + del map[mobj.getId()] + utils.modified() + update_display(0) + +def is_media_object_used(mobj): + for p in database.getFamilyMap().values(): + for o in p.getPhotoList(): + if o.getReference() == mobj: + return 1 + for p in database.getPersonMap().values(): + for o in p.getPhotoList(): + if o.getReference() == mobj: + return 1 + for p in database.getSourceMap().values(): + for o in p.getPhotoList(): + if o.getReference() == mobj: + return 1 + for p in database.getPlaceMap().values(): + for o in p.getPhotoList(): + if o.getReference() == mobj: + return 1 #------------------------------------------------------------------------- # @@ -2574,6 +2618,7 @@ def main(arg): "on_delete_person_clicked" : on_delete_person_clicked, "on_delete_place_clicked" : on_delete_place_clicked, "on_delete_source_clicked" : on_delete_source_clicked, + "on_delete_media_clicked" : on_delete_media_clicked, "on_delete_sp_clicked" : on_delete_sp_clicked, "on_edit_active_person" : load_active_person, "on_edit_bookmarks_activate" : on_edit_bookmarks_activate, diff --git a/gramps/src/imagesel.glade b/gramps/src/imagesel.glade index 8a4da166b..b2da115b1 100644 --- a/gramps/src/imagesel.glade +++ b/gramps/src/imagesel.glade @@ -1354,6 +1354,11 @@ GtkNotebook notebook2 True + + switch_page + on_notebook_switch_page + Sat, 20 Oct 2001 16:10:32 GMT + True True GTK_POS_TOP @@ -2168,6 +2173,78 @@ 0 0 + + + GtkScrolledWindow + scrolledwindow5 + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_UPDATE_CONTINUOUS + GTK_UPDATE_CONTINUOUS + + + GtkCList + refinfo + True + 3 + 80,80,80 + GTK_SELECTION_SINGLE + True + GTK_SHADOW_IN + + + GtkLabel + CList:title + label178 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkLabel + CList:title + label179 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkLabel + CList:title + label180 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + + + GtkLabel + Notebook:tab + label174 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + diff --git a/gramps/src/utils.py b/gramps/src/utils.py index e56b47ccd..6e59c1e22 100644 --- a/gramps/src/utils.py +++ b/gramps/src/utils.py @@ -75,6 +75,17 @@ def phonebook_name(person): else: return "" +def family_name(family): + father = family.getFather() + mother = family.getMother() + if father and mother: + name = _("%s and %s") % (father.getPrimaryName().getName(),mother.getPrimaryName().getName()) + elif father: + name = father.getPrimaryName().getName() + else: + name = mother.getPrimaryName().getName() + return name + #------------------------------------------------------------------------- # # Short hand function to return either the person's name, or an empty