* src/DisplayTabs.py: add SourceRefModel, NameEmbedList,

AddrEmbedList
* src/EditPerson.py: Use new EmbedLists
* src/ViewManager.py: set max value on set_fraction
* src/edit_person.glade: remove old lists
* src/GrampsDb/_ReadGedcom.py: fix types


svn: r5850
This commit is contained in:
Don Allingham 2006-01-29 04:30:16 +00:00
parent 698ba24d11
commit dfcdcab183
7 changed files with 286 additions and 3266 deletions

View File

@ -1,5 +1,10 @@
2006-01-28 Don Allingham <don@gramps-project.org> 2006-01-28 Don Allingham <don@gramps-project.org>
* src/DisplayTabs.py: add SourceRefModel * src/DisplayTabs.py: add SourceRefModel, NameEmbedList,
AddrEmbedList
* src/EditPerson.py: Use new EmbedLists
* src/ViewManager.py: set max value on set_fraction
* src/edit_person.glade: remove old lists
* src/GrampsDb/_ReadGedcom.py: fix types
* src/EditFamily.py: fix variable names * src/EditFamily.py: fix variable names
* src/GrampsDb/_GrampsBSDDB.py: qualify strxfrm * src/GrampsDb/_GrampsBSDDB.py: qualify strxfrm

View File

@ -328,7 +328,7 @@ class EmbeddedList(ButtonTab):
Returns True if the get_data returns a length greater than Returns True if the get_data returns a length greater than
0. Typically, get_data returns the list of associated data. 0. Typically, get_data returns the list of associated data.
""" """
return len(self.get_data()) > 0 return len(self.get_data()) == 0
def get_data(self): def get_data(self):
""" """
@ -549,6 +549,110 @@ class DataEmbedList(EmbeddedList):
if ref: if ref:
print ref print ref
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class AttrEmbedList(EmbeddedList):
_HANDLE_COL = -1
_column_names = [
(_('Type'),0),
(_('Value'),1),
]
def __init__(self,dbstate,uistate,track,data):
self.data = data
EmbeddedList.__init__(self, dbstate, uistate, track,
_('Attributes'), AttrModel)
def get_data(self):
return self.data
def column_order(self):
return ((1,0),(1,1))
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class WebEmbedList(EmbeddedList):
_HANDLE_COL = -1
_column_names = [
(_('Type'),0),
(_('Path'),1),
(_('Description'),2),
]
def __init__(self,dbstate,uistate,track,data):
self.data = data
EmbeddedList.__init__(self, dbstate, uistate, track,
_('Internet'), WebModel)
def get_data(self):
return self.data
def column_order(self):
return ((1,0),(1,1),(1,2))
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class NameEmbedList(EmbeddedList):
_HANDLE_COL = -1
_column_names = [
(_('Name'),0),
(_('Type'),1),
]
def __init__(self,dbstate,uistate,track,data):
self.data = data
EmbeddedList.__init__(self, dbstate, uistate, track,
_('Names'), NameModel)
def get_data(self):
return self.data
def column_order(self):
return ((1,0),(1,1))
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class AddrEmbedList(EmbeddedList):
_HANDLE_COL = -1
_column_names = [
(_('Date'),0),
(_('Street'),1),
(_('State'),2),
(_('City'),3),
(_('Country'),4),
]
def __init__(self,dbstate,uistate,track,data):
self.data = data
EmbeddedList.__init__(self, dbstate, uistate, track,
_('Addresses'), AddressModel)
def get_data(self):
return self.data
def column_order(self):
return ((1,0),(1,1),(1,2),(1,3),(1,4))
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# NoteTab # NoteTab
@ -570,15 +674,45 @@ class NoteTab(GrampsTab):
return len(buf.get_text(buf.get_start_iter(),buf.get_end_iter())) == 0 return len(buf.get_text(buf.get_start_iter(),buf.get_end_iter())) == 0
def build_interface(self): def build_interface(self):
vbox = gtk.VBox()
self.text = gtk.TextView() self.text = gtk.TextView()
self.flowed = gtk.RadioButton(None,_('Flowed'))
self.format = gtk.RadioButton(self.flowed,_('Formatted'))
if self.note_obj and self.note_obj.get_format():
self.format.set_active(True)
self.text.set_wrap_mode(gtk.WRAP_NONE)
else:
self.flowed.set_active(True)
self.text.set_wrap_mode(gtk.WRAP_WORD)
self.flowed.connect('toggled',self.flow_changed)
scroll = gtk.ScrolledWindow() scroll = gtk.ScrolledWindow()
scroll.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC) scroll.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
scroll.add_with_viewport(self.text) scroll.add_with_viewport(self.text)
self.pack_start(scroll,True)
vbox.pack_start(scroll,True)
vbox.set_spacing(6)
hbox = gtk.HBox()
hbox.set_spacing(6)
hbox.pack_start(self.flowed,False)
hbox.pack_start(self.format,False)
vbox.pack_start(hbox,False)
self.pack_start(vbox,True)
if self.note_obj: if self.note_obj:
self.text.get_buffer().insert_at_cursor(self.note_obj.get()) self.text.get_buffer().insert_at_cursor(self.note_obj.get())
self.rebuild() self.rebuild()
def flow_changed(self,obj):
if obj.get_active():
self.text.set_wrap_mode(gtk.WRAP_WORD)
else:
self.text.set_wrap_mode(gtk.WRAP_NONE)
def rebuild(self): def rebuild(self):
self._set_label() self._set_label()
@ -843,11 +977,14 @@ class EventRefModel(gtk.ListStore):
]) ])
def column_type(self,event): def column_type(self,event):
t = event.get_type() t,v = event.get_type()
if t[0] == RelLib.Event.CUSTOM: if t == RelLib.Event.CUSTOM:
return t[1] return v
else: else:
return Utils.family_events[t[0]] if Utils.personal_events.has_key(t):
return Utils.personal_events[t]
else:
return Utils.family_events[t]
def column_date(self,event_ref): def column_date(self,event_ref):
event = self.db.get_event_from_handle(event_ref.ref) event = self.db.get_event_from_handle(event_ref.ref)
@ -879,11 +1016,72 @@ class AttrModel(gtk.ListStore):
]) ])
def type_name(self, attr): def type_name(self, attr):
t = attr.get_type() t,v = attr.get_type()
if t[0] == RelLib.Attribute.CUSTOM: if t == RelLib.Attribute.CUSTOM:
return t[1] return v
elif Utils.personal_attributes.has_key(t):
return Utils.personal_attributes[t]
else: else:
return Utils.personal_attributes[t[0]] return Utils.family_attributes[t]
#-------------------------------------------------------------------------
#
# NameModel
#
#-------------------------------------------------------------------------
class NameModel(gtk.ListStore):
def __init__(self,obj_list,db):
gtk.ListStore.__init__(self,str,str)
self.db = db
for obj in obj_list:
self.append(row=[
NameDisplay.display_name(obj),
type_name(obj),
])
def type_name(self, obj):
t,v = obj.get_type()
if t == RelLib.Name.CUSTOM:
return v
else:
return Utils.name_types[t]
#-------------------------------------------------------------------------
#
# AddressModel
#
#-------------------------------------------------------------------------
class AddressModel(gtk.ListStore):
def __init__(self,obj_list,db):
gtk.ListStore.__init__(self,str,str,str,str,str)
self.db = db
for obj in obj_list:
self.append(row=[
DateHandler.get_date(obj),
obj.street,
obj.city,
obj.state,
obj.country,
])
#-------------------------------------------------------------------------
#
# AddressModel
#
#-------------------------------------------------------------------------
class WebModel(gtk.ListStore):
def __init__(self,obj_list,db):
gtk.ListStore.__init__(self,str,str,str)
self.db = db
for obj in obj_list:
self.append(row=[
obj.type,
obj.path,
obj.desc,
])
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -914,7 +1112,7 @@ class SourceRefModel(gtk.ListStore):
for sref in sref_list: for sref in sref_list:
src = self.db.get_source_from_handle(sref.ref) src = self.db.get_source_from_handle(sref.ref)
self.append(row=[ self.append(row=[
sref.ref, src.gramps_id,
src.title, src.title,
src.author, src.author,
sref.page sref.page
@ -978,22 +1176,3 @@ class SourceBackRefModel(gtk.ListStore):
yield True yield True
yield False yield False
#-------------------------------------------------------------------------
#
# FamilyAttrModel
#
#-------------------------------------------------------------------------
class FamilyAttrModel(AttrModel):
def __init__(self,attr_list,db):
AttrModel.__init__(self,attr_list,db)
def type_name(self, attr):
t = attr.get_type()
if t[0] == RelLib.Attribute.CUSTOM:
return t[1]
else:
return Utils.family_attributes[t[0]]

View File

@ -64,31 +64,6 @@ from DisplayTabs import *
from GrampsWidgets import * from GrampsWidgets import *
from ObjectSelector import PersonSelector,PersonFilterSpec from ObjectSelector import PersonSelector,PersonFilterSpec
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class AttrEmbedList(EmbeddedList):
_HANDLE_COL = -1
_column_names = [
(_('Type'),0),
(_('Value'),1),
]
def __init__(self,dbstate,uistate,track,data):
self.data = data
EmbeddedList.__init__(self, dbstate, uistate, track,
_('Attributes'), FamilyAttrModel)
def get_data(self):
return self.data
def column_order(self):
return ((1,0),(1,1))
class ChildEmbedList(EmbeddedList): class ChildEmbedList(EmbeddedList):
_HANDLE_COL = 10 _HANDLE_COL = 10

View File

@ -65,6 +65,7 @@ import NoteEdit
import Spell import Spell
import DisplayState import DisplayState
import GrampsDisplay import GrampsDisplay
from DisplayTabs import *
from WindowUtils import GladeIf from WindowUtils import GladeIf
from QuestionDialog import WarningDialog, ErrorDialog, SaveDialog, QuestionDialog2 from QuestionDialog import WarningDialog, ErrorDialog, SaveDialog, QuestionDialog2
@ -112,7 +113,7 @@ class EditPerson(DisplayState.ManagedWindow):
if self.already_exist: if self.already_exist:
return return
self.state = state self.dbstate = state
self.uistate = uistate self.uistate = uistate
self.retval = const.UPDATE_PERSON self.retval = const.UPDATE_PERSON
@ -120,10 +121,10 @@ class EditPerson(DisplayState.ManagedWindow):
# done to ensure that the person object is not stale, as it could # done to ensure that the person object is not stale, as it could
# have been changed by something external (merge, tool, etc). # have been changed by something external (merge, tool, etc).
if self.orig_handle: if self.orig_handle:
person = self.state.db.get_person_from_handle(self.orig_handle) person = self.dbstate.db.get_person_from_handle(self.orig_handle)
self.person = person self.person = person
self.orig_surname = self.person.get_primary_name().get_group_name() self.orig_surname = self.person.get_primary_name().get_group_name()
self.db = self.state.db self.db = self.dbstate.db
self.callback = callback self.callback = callback
self.path = self.db.get_save_path() self.path = self.db.get_save_path()
self.not_loaded = True self.not_loaded = True
@ -147,8 +148,6 @@ class EditPerson(DisplayState.ManagedWindow):
self.gladeif = GladeIf(self.top) self.gladeif = GladeIf(self.top)
self.window.set_title("%s - GRAMPS" % _('Edit Person')) self.window.set_title("%s - GRAMPS" % _('Edit Person'))
self.build_gallery(self.top.get_widget('iconbox'))
self.marker = self.top.get_widget('marker') self.marker = self.top.get_widget('marker')
self.marker.set_sensitive(mod) self.marker.set_sensitive(mod)
if person: if person:
@ -166,69 +165,10 @@ class EditPerson(DisplayState.ManagedWindow):
self.gender.set_sensitive(mod) self.gender.set_sensitive(mod)
self.private = self.top.get_widget('private') self.private = self.top.get_widget('private')
self.private.set_sensitive(mod) self.private.set_sensitive(mod)
name_delete_btn = self.top.get_widget('aka_del')
name_add_btn = self.top.get_widget('aka_add')
name_edit_btn = self.top.get_widget('aka_edit')
web_delete_btn = self.top.get_widget('url_del')
web_edit_btn = self.top.get_widget('url_edit')
web_add_btn = self.top.get_widget('url_add')
event_delete_btn = self.top.get_widget('event_del')
event_add_btn = self.top.get_widget('event_add')
event_sel_btn = self.top.get_widget('event_sel')
event_edit_btn = self.top.get_widget('event_edit')
attr_add_btn = self.top.get_widget('attr_add')
attr_delete_btn = self.top.get_widget('attr_del')
attr_edit_btn = self.top.get_widget('attr_edit')
addr_add_btn = self.top.get_widget('addr_add')
addr_delete_btn = self.top.get_widget('addr_del')
addr_edit_btn = self.top.get_widget('addr_edit')
self.notes_field = self.top.get_widget("personNotes")
self.notes_field.set_editable(mod)
self.spell_notes = Spell.Spell(self.notes_field)
self.flowed = self.top.get_widget("flowed")
self.flowed.set_sensitive(mod)
self.preform = self.top.get_widget("preform")
self.preform.set_sensitive(mod)
self.event_name_field = self.top.get_widget("eventName")
self.event_place_field = self.top.get_widget("eventPlace")
self.event_cause_field = self.top.get_widget("eventCause")
self.event_date_field = self.top.get_widget("eventDate")
self.event_descr_field = self.top.get_widget("eventDescription")
self.event_src_field = self.top.get_widget("event_srcinfo")
self.event_conf_field = self.top.get_widget("event_conf")
self.attr_conf_field = self.top.get_widget("attr_conf")
self.addr_conf_field = self.top.get_widget("addr_conf")
self.name_conf_field = self.top.get_widget("name_conf")
self.attr_src_field = self.top.get_widget("attr_srcinfo")
self.name_src_field = self.top.get_widget("name_srcinfo")
self.addr_src_field = self.top.get_widget("addr_srcinfo")
self.attr_list = self.top.get_widget("attr_list")
self.attr_type = self.top.get_widget("attr_type")
self.attr_value = self.top.get_widget("attr_value")
self.web_list = self.top.get_widget("web_list")
self.web_url = self.top.get_widget("web_url")
self.web_go = self.top.get_widget("web_go")
self.web_description = self.top.get_widget("url_des")
self.addr_list = self.top.get_widget("address_list")
self.addr_start = self.top.get_widget("address_start")
self.addr_street = self.top.get_widget("street")
self.addr_city = self.top.get_widget("city")
self.addr_state = self.top.get_widget("state")
self.addr_country = self.top.get_widget("country")
self.addr_postal = self.top.get_widget("postal")
self.addr_phone = self.top.get_widget("phone")
self.event_list = self.top.get_widget("eventList")
self.edit_person = self.top.get_widget("edit_person")
self.name_list = self.top.get_widget("nameList")
self.alt_given_field = self.top.get_widget("alt_given")
self.alt_last_field = self.top.get_widget("alt_last")
self.alt_title_field = self.top.get_widget("alt_title")
self.alt_suffix_field = self.top.get_widget("alt_suffix")
self.alt_prefix_field = self.top.get_widget("alt_prefix")
self.name_type_field = self.top.get_widget("name_type")
self.ntype_field = self.top.get_widget("ntype") self.ntype_field = self.top.get_widget("ntype")
self.ntype_field.set_sensitive(mod) self.ntype_field.set_sensitive(mod)
self.vbox = self.top.get_widget('vbox')
self.suffix = self.top.get_widget("suffix") self.suffix = self.top.get_widget("suffix")
self.suffix.set_editable(mod) self.suffix.set_editable(mod)
self.prefix = self.top.get_widget("prefix") self.prefix = self.top.get_widget("prefix")
@ -241,26 +181,9 @@ class EditPerson(DisplayState.ManagedWindow):
self.title.set_editable(mod) self.title.set_editable(mod)
self.surname = self.top.get_widget("surname") self.surname = self.top.get_widget("surname")
self.surname.set_editable(mod) self.surname.set_editable(mod)
self.addr_note = self.top.get_widget("addr_note")
self.addr_source = self.top.get_widget("addr_source")
self.attr_note = self.top.get_widget("attr_note")
self.attr_source = self.top.get_widget("attr_source")
self.name_note = self.top.get_widget("name_note")
self.name_source = self.top.get_widget("name_source")
self.gid = self.top.get_widget("gid") self.gid = self.top.get_widget("gid")
self.gid.set_editable(mod) self.gid.set_editable(mod)
self.slist = self.top.get_widget("slist")
self.general_label = self.top.get_widget("general_label")
self.names_label = self.top.get_widget("names_label")
self.events_label = self.top.get_widget("events_label")
self.attr_label = self.top.get_widget("attr_label")
self.addr_label = self.top.get_widget("addr_label")
self.notes_label = self.top.get_widget("notes_label")
self.sources_label = self.top.get_widget("sources_label")
self.inet_label = self.top.get_widget("inet_label")
self.gallery_label = self.top.get_widget("gallery_label")
self.lds_tab = self.top.get_widget("lds_tab")
self.person_photo = self.top.get_widget("personPix") self.person_photo = self.top.get_widget("personPix")
self.eventbox = self.top.get_widget("eventbox1") self.eventbox = self.top.get_widget("eventbox1")
self.prefix_label = self.top.get_widget('prefix_label') self.prefix_label = self.top.get_widget('prefix_label')
@ -286,32 +209,6 @@ class EditPerson(DisplayState.ManagedWindow):
else: else:
self.srcreflist = [] self.srcreflist = []
if self.srcreflist:
Utils.bold_label(self.sources_label)
if self.person.get_media_list():
Utils.bold_label(self.gallery_label)
# event display
self.event_box = ListBox.EventListBox( state, uistate, self.track,
self.person, self.event_list, self.events_label,
[event_add_btn,event_edit_btn,event_delete_btn,event_sel_btn])
self.attr_box = ListBox.AttrListBox( state, uistate, self.track,
self.person, self.attr_list, self.attr_label,
[attr_add_btn, attr_edit_btn, attr_delete_btn])
self.addr_box = ListBox.AddressListBox( state, uistate, self.track,
self.person, self.addr_list, self.addr_label,
[addr_add_btn, addr_edit_btn, addr_delete_btn])
self.name_box = ListBox.NameListBox(state, uistate, self.track,
self.person, self.name_list, self.names_label,
[name_add_btn, name_edit_btn, name_delete_btn])
self.url_box = ListBox.UrlListBox( state, uistate, self.track,
self.person, self.web_list, self.inet_label,
[web_add_btn, web_edit_btn, web_delete_btn])
self.place_list = self.pdmap.keys() self.place_list = self.pdmap.keys()
self.place_list.sort() self.place_list.sort()
@ -322,23 +219,23 @@ class EditPerson(DisplayState.ManagedWindow):
self.gid.set_text(gid) self.gid.set_text(gid)
self.gid.set_editable(True) self.gid.set_editable(True)
self.lds_baptism = RelLib.LdsOrd(self.person.get_lds_baptism()) # self.lds_baptism = RelLib.LdsOrd(self.person.get_lds_baptism())
self.lds_endowment = RelLib.LdsOrd(self.person.get_lds_endowment()) # self.lds_endowment = RelLib.LdsOrd(self.person.get_lds_endowment())
self.lds_sealing = RelLib.LdsOrd(self.person.get_lds_sealing()) # self.lds_sealing = RelLib.LdsOrd(self.person.get_lds_sealing())
if GrampsKeys.get_uselds() \ # if GrampsKeys.get_uselds() \
or (not self.lds_baptism.is_empty()) \ # or (not self.lds_baptism.is_empty()) \
or (not self.lds_endowment.is_empty()) \ # or (not self.lds_endowment.is_empty()) \
or (not self.lds_sealing.is_empty()): # or (not self.lds_sealing.is_empty()):
self.top.get_widget("lds_tab").show() # self.top.get_widget("lds_tab").show()
self.top.get_widget("lds_page").show() # self.top.get_widget("lds_page").show()
if (not self.lds_baptism.is_empty()) \ # if (not self.lds_baptism.is_empty()) \
or (not self.lds_endowment.is_empty()) \ # or (not self.lds_endowment.is_empty()) \
or (not self.lds_sealing.is_empty()): # or (not self.lds_sealing.is_empty()):
Utils.bold_label(self.lds_tab) # Utils.bold_label(self.lds_tab)
else: # else:
self.top.get_widget("lds_tab").hide() # self.top.get_widget("lds_tab").hide()
self.top.get_widget("lds_page").hide() # self.top.get_widget("lds_page").hide()
self.ntype_selector = \ self.ntype_selector = \
AutoComp.StandardCustomSelector(Utils.name_types, AutoComp.StandardCustomSelector(Utils.name_types,
@ -348,95 +245,57 @@ class EditPerson(DisplayState.ManagedWindow):
self.write_primary_name() self.write_primary_name()
self.load_person_image() self.load_person_image()
# set notes data
self.notes_buffer = self.notes_field.get_buffer()
if person.get_note():
self.notes_buffer.set_text(person.get_note())
if person.get_note_object().get_format() == 1:
self.preform.set_active(True)
else:
self.flowed.set_active(True)
Utils.bold_label(self.notes_label)
self.set_list_dnd(self.name_list, self.name_drag_data_get,
self.name_drag_begin, self.name_drag_data_received)
self.set_list_dnd(self.event_list, self.ev_drag_data_get,
self.ev_drag_begin, self.ev_drag_data_received)
self.set_list_dnd(self.web_list,self.url_drag_data_get,
self.url_drag_begin, self.url_drag_data_received)
self.set_list_dnd(self.attr_list, self.at_drag_data_get,
self.at_drag_begin, self.at_drag_data_received)
self.set_list_dnd(self.addr_list, self.ad_drag_data_get,
self.ad_drag_begin, self.ad_drag_data_received)
self.gladeif.connect("edit_person", "delete_event", self.on_delete_event) self.gladeif.connect("edit_person", "delete_event", self.on_delete_event)
self.gladeif.connect("button15", "clicked", self.on_cancel_edit) self.gladeif.connect("button15", "clicked", self.on_cancel_edit)
self.gladeif.connect("ok", "clicked", self.on_apply_person_clicked) self.gladeif.connect("ok", "clicked", self.on_apply_person_clicked)
self.gladeif.connect("button134", "clicked", self.on_help_clicked) self.gladeif.connect("button134", "clicked", self.on_help_clicked)
self.gladeif.connect("notebook", "switch_page", self.on_switch_page) # self.gladeif.connect("notebook", "switch_page", self.on_switch_page)
# self.gladeif.connect("genderMale", "toggled", self.on_gender_activate)
# self.gladeif.connect("genderFemale", "toggled", self.on_gender_activate)
# self.gladeif.connect("genderUnknown", "toggled", self.on_gender_activate)
self.gladeif.connect("given_name", "focus_out_event", self.on_given_focus_out_event) self.gladeif.connect("given_name", "focus_out_event", self.on_given_focus_out_event)
self.gladeif.connect("button177", "clicked", self.on_edit_name_clicked) self.gladeif.connect("button177", "clicked", self.on_edit_name_clicked)
# self.gladeif.connect("button99", "clicked", self.on_edit_birth_clicked)
# self.gladeif.connect("button126", "clicked", self.on_edit_death_clicked)
# self.gladeif.connect("aka_add", "clicked", self.on_add_aka_clicked)
# self.gladeif.connect("aka_edit", "clicked", self.on_aka_update_clicked)
# self.gladeif.connect("aka_delete", "clicked", self.on_aka_delete_clicked)
# self.gladeif.connect("event_add", "clicked" , self.on_event_add_clicked)
# self.gladeif.connect("event_edit_btn", "clicked" ,self.on_event_update_clicked)
# self.gladeif.connect("event_del", "clicked", self.on_event_delete_clicked)
# self.gladeif.connect("attr_add", "clicked" , self.on_add_attr_clicked)
# self.gladeif.connect("attr_edit_btn", "clicked", self.on_update_attr_clicked)
# self.gladeif.connect("attr_del", "clicked", self.on_delete_attr_clicked)
# self.gladeif.connect("addr_add", "clicked", self.on_add_addr_clicked)
# self.gladeif.connect("addr_edit_btn", "clicked", self.on_update_addr_clicked)
# self.gladeif.connect("addr_del", "clicked", self.on_delete_addr_clicked)
# self.gladeif.connect("media_add", "clicked", self.gallery.on_add_media_clicked)
# self.gladeif.connect("media_sel", "clicked", self.gallery.on_select_media_clicked)
# self.gladeif.connect("image_edit_btn", "clicked", self.gallery.on_edit_media_clicked)
# self.gladeif.connect("media_del", "clicked", self.gallery.on_delete_media_clicked)
# self.gladeif.connect("add_url", "clicked", self.on_add_url_clicked)
# self.gladeif.connect("edit_url", "clicked", self.on_update_url_clicked,)
# self.gladeif.connect("web_go", "clicked", self.on_web_go_clicked)
# self.gladeif.connect("delete_url", "clicked", self.on_delete_url_clicked)
# self.gladeif.connect("button131", "clicked", self.on_ldsbap_source_clicked,)
# self.gladeif.connect("button128", "clicked", self.on_ldsbap_note_clicked)
# self.gladeif.connect("button132", "clicked", self.on_ldsendow_source_clicked)
# self.gladeif.connect("button129", "clicked", self.on_ldsendow_note_clicked)
# self.gladeif.connect("button133", "clicked", self.on_ldsseal_source_clicked)
# self.gladeif.connect("button130", "clicked", self.on_ldsseal_note_clicked)
self.sourcetab = Sources.SourceTab(self.state, self.uistate, self.track,
self.srcreflist, self, self.top, self.window, self.slist,
self.top.get_widget('add_src'), self.top.get_widget('edit_src'),
self.top.get_widget('del_src'), self.db.readonly)
self.private.set_active(self.person.get_privacy()) self.private.set_active(self.person.get_privacy())
self.eventbox.connect('button-press-event',self.image_button_press) self.eventbox.connect('button-press-event',self.image_button_press)
self.event_box.redraw() self.notebook = gtk.Notebook()
self.attr_box.redraw() self.vbox.pack_start(self.notebook,True)
self.addr_box.redraw() self.notebook.show_all()
self.name_box.redraw()
self.url_box.redraw()
self.top.get_widget("notebook").set_current_page(0)
self.given.grab_focus()
for i in ["ok", "add_aka", "aka_delete", "event_del", self.event_list = EventEmbedList(self.dbstate,self.uistate,
"event_add", "attr_add", "attr_del", "addr_add", self.track,self.person)
"addr_del", "media_add", "media_sel", "media_del", self.name_list = NameEmbedList(self.dbstate,self.uistate,
"add_url", "delete_url", "add_src", "del_src" ]: self.track,self.person.get_alternate_names())
widget = self.top.get_widget(i) self.srcref_list = SourceEmbedList(self.dbstate,self.uistate,
if widget: self.track,self.person.source_list)
widget.set_sensitive(not self.db.readonly) self.attr_list = AttrEmbedList(self.dbstate,self.uistate,self.track,
self.person.get_attribute_list())
self.addr_list = AddrEmbedList(self.dbstate,self.uistate,self.track,
self.person.get_address_list())
self.note_tab = NoteTab(self.dbstate, self.uistate, self.track,
self.person.get_note_object())
self.gallery_tab = GalleryTab(self.dbstate, self.uistate, self.track,
self.person.get_media_list())
self.web_list = WebEmbedList(self.dbstate,self.uistate,self.track,
self.person.get_url_list())
self.notebook.insert_page(self.event_list)
self.notebook.set_tab_label(self.event_list,self.event_list.get_tab_widget())
self.notebook.insert_page(self.name_list)
self.notebook.set_tab_label(self.name_list,self.name_list.get_tab_widget())
self.notebook.insert_page(self.attr_list)
self.notebook.set_tab_label(self.attr_list,self.attr_list.get_tab_widget())
self.notebook.insert_page(self.addr_list)
self.notebook.set_tab_label(self.addr_list,self.addr_list.get_tab_widget())
self.notebook.insert_page(self.note_tab)
self.notebook.set_tab_label(self.note_tab,self.note_tab.get_tab_widget())
self.notebook.insert_page(self.srcref_list)
self.notebook.set_tab_label(self.srcref_list,self.srcref_list.get_tab_widget())
self.notebook.insert_page(self.gallery_tab)
self.notebook.set_tab_label(self.gallery_tab,self.gallery_tab.get_tab_widget())
self.notebook.insert_page(self.web_list)
self.notebook.set_tab_label(self.web_list,self.web_list.get_tab_widget())
self.given.grab_focus()
self.show() self.show()
def build_menu_names(self,person): def build_menu_names(self,person):
@ -471,19 +330,6 @@ class EditPerson(DisplayState.ManagedWindow):
data = cursor.next() data = cursor.next()
cursor.close() cursor.close()
def build_gallery(self,container):
self.iconmodel = gtk.ListStore(gtk.gdk.Pixbuf,str)
self.iconlist = gtk.IconView(self.iconmodel)
self.iconlist.set_pixbuf_column(0)
self.iconlist.set_text_column(1)
self.iconlist.show()
container.add(self.iconlist)
for ref in self.person.get_media_list():
obj = self.db.get_object_from_handle(ref.get_reference_handle())
pixbuf = self.get_image(obj)
self.iconmodel.append(row=[pixbuf,obj.get_description()])
def get_image(self,obj): def get_image(self,obj):
import ImgManip import ImgManip
@ -726,210 +572,6 @@ class EditPerson(DisplayState.ManagedWindow):
def set_lds_seal(self,obj): def set_lds_seal(self,obj):
self.lds_sealing.set_status(obj.get_active()) self.lds_sealing.set_status(obj.get_active())
def name_drag_data_get(self,widget, context, sel_data, info, time):
name = self.ntree.get_selected_objects()
if not name:
return
bits_per = 8; # we're going to pass a string
pickled = pickle.dumps(name[0]);
data = str((DdTargets.NAME.drag_type,self.person.get_handle(),pickled));
sel_data.set(sel_data.target, bits_per, data)
def name_drag_begin(self, context, a):
return
icon = self.ntree.get_icon()
t = self.ntree.tree
(x,y) = icon.get_size()
mask = gtk.gdk.Pixmap(self.window.window,x,y,1)
mask.draw_rectangle(t.get_style().white_gc, True, 0,0,x,y)
t.drag_source_set_icon(t.get_colormap(),icon,mask)
def name_drag_data_received(self,widget,context,x,y,sel_data,info,time):
if self.db.readonly: # no DnD on readonly database
return
row = self.ntree.get_row_at(x,y)
if sel_data and sel_data.data:
exec 'data = %s' % sel_data.data
exec 'mytype = "%s"' % data[0]
exec 'person = "%s"' % data[1]
if mytype != DdTargets.NAME.drag_type:
return
elif person == self.person.get_handle():
self.move_element(self.nlist,self.ntree.get_selected_row(),row)
else:
foo = pickle.loads(data[2]);
for src in foo.get_source_references():
base_handle = src.get_base_handle()
newbase = self.db.get_source_from_handle(base_handle)
src.set_base_handle(newbase.get_handle())
self.nlist.insert(row,foo)
self.lists_changed = True
self.redraw_name_list()
def ev_drag_data_received(self,widget,context,x,y,sel_data,info,time):
if self.db.readonly: # no DnD on readonly database
return
row = self.etree.get_row_at(x,y)
if sel_data and sel_data.data:
exec 'data = %s' % sel_data.data
exec 'mytype = "%s"' % data[0]
exec 'person = "%s"' % data[1]
if mytype != DdTargets.EVENT.drag_type:
return
elif person == self.person.get_handle():
self.move_element(self.elist,self.etree.get_selected_row(),row)
else:
foo = pickle.loads(data[2]);
for src in foo.get_source_references():
base_handle = src.get_base_handle()
newbase = self.db.get_source_from_handle(base_handle)
src.set_base_handle(newbase.get_handle())
place = foo.get_place_handle()
if place:
foo.set_place_handle(place.get_handle())
self.elist.insert(row,foo.get_handle())
self.lists_changed = True
self.redraw_event_list()
def move_element(self,list,src,dest):
if src == -1:
return
obj = list[src]
list.remove(obj)
list.insert(dest,obj)
def ev_drag_data_get(self,widget, context, sel_data, info, time):
ev = self.etree.get_selected_objects()
if not ev:
return
bits_per = 8; # we're going to pass a string
pickled = pickle.dumps(ev[0]);
data = str((DdTargets.EVENT.drag_type,self.person.get_handle(),pickled));
sel_data.set(sel_data.target, bits_per, data)
def ev_drag_begin(self, context, a):
return
icon = self.etree.get_icon()
t = self.etree.tree
(x,y) = icon.get_size()
mask = gtk.gdk.Pixmap(self.window.window,x,y,1)
mask.draw_rectangle(t.get_style().white_gc, True, 0,0,x,y)
t.drag_source_set_icon(t.get_colormap(),icon,mask)
def url_drag_data_received(self,widget,context,x,y,sel_data,info,time):
if self.db.readonly: # no DnD on readonly database
return
row = self.wtree.get_row_at(x,y)
if sel_data and sel_data.data:
exec 'data = %s' % sel_data.data
exec 'mytype = "%s"' % data[0]
exec 'person = "%s"' % data[1]
if mytype != DdTargets.URL.drag_type:
return
elif person == self.person.get_handle():
self.move_element(self.ulist,self.wtree.get_selected_row(),row)
else:
foo = pickle.loads(data[2]);
self.ulist.append(foo)
self.lists_changed = True
self.redraw_url_list()
def url_drag_begin(self, context, a):
return
def url_drag_data_get(self,widget, context, sel_data, info, time):
ev = self.wtree.get_selected_objects()
if len(ev):
bits_per = 8; # we're going to pass a string
pickled = pickle.dumps(ev[0]);
data = str((DdTargets.URL.drag_type,self.person.get_handle(),pickled));
sel_data.set(sel_data.target, bits_per, data)
def at_drag_data_received(self,widget,context,x,y,sel_data,info,time):
if self.db.readonly: # no DnD on readonly database
return
row = self.atree.get_row_at(x,y)
if sel_data and sel_data.data:
exec 'data = %s' % sel_data.data
exec 'mytype = "%s"' % data[0]
exec 'person = "%s"' % data[1]
if mytype != DdTargets.ATTRIBUTE.drag_type:
return
elif person == self.person.get_handle():
self.move_element(self.alist,self.atree.get_selected_row(),row)
else:
foo = pickle.loads(data[2]);
for src in foo.get_source_references():
base_handle = src.get_base_handle()
newbase = self.db.get_source_from_handle(base_handle)
src.set_base_handle(newbase.get_handle())
self.alist.append(foo)
self.lists_changed = True
self.redraw_attr_list()
def at_drag_begin(self, context, a):
return
def at_drag_data_get(self,widget, context, sel_data, info, time):
ev = self.atree.get_selected_objects()
if len(ev):
bits_per = 8; # we're going to pass a string
pickled = pickle.dumps(ev[0]);
data = str((DdTargets.ATTRIBUTE.drag_type,
self.person.get_handle(),pickled));
sel_data.set(sel_data.target, bits_per, data)
def ad_drag_data_received(self,widget,context,x,y,sel_data,info,time):
if self.db.readonly: # no DnD on readonly database
return
row = self.ptree.get_row_at(x,y)
if sel_data and sel_data.data:
exec 'data = %s' % sel_data.data
exec 'mytype = "%s"' % data[0]
exec 'person = "%s"' % data[1]
if mytype != DdTargets.ADDRESS.drag_type:
return
elif person == self.person.get_handle():
self.move_element(self.plist,self.ptree.get_selected_row(),row)
else:
foo = pickle.loads(data[2]);
for src in foo.get_source_references():
base_handle = src.get_base_handle()
newbase = self.db.get_source_from_handle(base_handle)
src.set_base_handle(newbase.get_handle())
self.plist.insert(row,foo)
self.lists_changed = True
self.redraw_addr_list()
def ad_drag_data_get(self,widget, context, sel_data, info, time):
ev = self.ptree.get_selected_objects()
if len(ev):
bits_per = 8; # we're going to pass a string
pickled = pickle.dumps(ev[0]);
data = str((DdTargets.ADDRESS.drag_type,
self.person.get_handle(),pickled));
sel_data.set(sel_data.target, bits_per, data)
def ad_drag_begin(self, context, a):
return
def menu_changed(self,obj): def menu_changed(self,obj):
self.ldsfam = self.lds_fam_list[obj.get_active()] self.ldsfam = self.lds_fam_list[obj.get_active()]
@ -940,26 +582,6 @@ class EditPerson(DisplayState.ManagedWindow):
text = text.rstrip() text = text.rstrip()
return text return text
def on_up_clicked(self,obj):
sel = obj.get_selection()
store,node = sel.get_selected()
if node:
row = store.get_path(node)
sel.select_path((row[0]-1))
def on_down_clicked(self,obj):
sel = obj.get_selection()
store,node = sel.get_selected()
if node:
row = store.get_path(node)
sel.select_path((row[0]+1))
def on_web_go_clicked(self,obj):
"""Attempts to display the selected URL in a web browser"""
text = self.web_url.get()
if text:
GrampsDisplay.url(text)
def on_cancel_edit(self,obj): def on_cancel_edit(self,obj):
"""If the data has changed, give the user a chance to cancel """If the data has changed, give the user a chance to cancel
the close window""" the close window"""
@ -1000,6 +622,7 @@ class EditPerson(DisplayState.ManagedWindow):
"""Check to see if any of the data has changed from the """Check to see if any of the data has changed from the
orig record""" orig record"""
return False
surname = unicode(self.surname.get_text()) surname = unicode(self.surname.get_text())
ntype = self.ntype_selector.get_values() ntype = self.ntype_selector.get_values()
@ -1136,26 +759,6 @@ class EditPerson(DisplayState.ManagedWindow):
except: except:
self.person_photo.hide() self.person_photo.hide()
def update_lists(self):
"""Updates the person's lists if anything has changed"""
self.person.set_alternate_names(self.name_box.data)
self.person.set_url_list(self.url_box.data)
self.person.set_attribute_list(self.attr_box.data)
self.person.set_address_list(self.addr_box.data)
self.person.set_birth_ref(None)
self.person.set_death_ref(None)
eref_list = self.event_box.data[:]
for (event_ref,event) in eref_list:
if event.get_type()[0] == RelLib.Event.BIRTH:
self.person.set_birth_ref(event_ref)
self.event_box.data.remove((event_ref,event))
if event.get_type()[0] == RelLib.Event.DEATH:
self.person.set_death_ref(event_ref)
self.event_box.data.remove((event_ref,event))
eref_list = [event_ref for (event_ref,event) in self.event_box.data]
self.person.set_event_ref_list(eref_list)
def on_apply_person_clicked(self,obj): def on_apply_person_clicked(self,obj):
if self.gender.get_active() == RelLib.Person.UNKNOWN: if self.gender.get_active() == RelLib.Person.UNKNOWN:
@ -1359,13 +962,13 @@ class EditPerson(DisplayState.ManagedWindow):
self.pname.set_first_name(unicode(self.given.get_text())) self.pname.set_first_name(unicode(self.given.get_text()))
self.pname.set_title(unicode(self.title.get_text())) self.pname.set_title(unicode(self.title.get_text()))
NameEdit.NameEditor(self.state, self.uistate, self.track, self.pname, self) NameEdit.NameEditor(self.dbstate, self.uistate, self.track, self.pname, self)
def update_name(self,name): def update_name(self,name):
self.write_primary_name() self.write_primary_name()
def on_ldsbap_source_clicked(self,obj): def on_ldsbap_source_clicked(self,obj):
Sources.SourceSelector(self.state, self.uistate, self.track, Sources.SourceSelector(self.dbstate, self.uistate, self.track,
self.lds_baptism.get_source_references(), self.lds_baptism.get_source_references(),
self,self.update_ldsbap_list) self,self.update_ldsbap_list)
@ -1378,7 +981,7 @@ class EditPerson(DisplayState.ManagedWindow):
readonly=self.db.readonly) readonly=self.db.readonly)
def on_ldsendow_source_clicked(self,obj): def on_ldsendow_source_clicked(self,obj):
Sources.SourceSelector(self.state, self.uitstate, self.track, Sources.SourceSelector(self.dbstate, self.uitstate, self.track,
self.lds_endowment.get_source_references(), self.lds_endowment.get_source_references(),
self,self.set_ldsendow_list) self,self.set_ldsendow_list)
@ -1391,7 +994,7 @@ class EditPerson(DisplayState.ManagedWindow):
readonly=self.db.readonly) readonly=self.db.readonly)
def on_ldsseal_source_clicked(self,obj): def on_ldsseal_source_clicked(self,obj):
Sources.SourceSelector(self.state, self.uistate, self.track, Sources.SourceSelector(self.dbstate, self.uistate, self.track,
self.lds_sealing.get_source_references(), self.lds_sealing.get_source_references(),
self,self.lds_seal_list) self,self.lds_seal_list)
@ -1418,31 +1021,6 @@ class EditPerson(DisplayState.ManagedWindow):
else: else:
self.load_photo(None) self.load_photo(None)
def on_switch_page(self,obj,a,page):
if page == 0:
self.load_person_image()
self.event_box.redraw()
elif page == 6 and self.not_loaded:
self.not_loaded = False
elif page == 8 and self.lds_not_loaded:
self.lds_not_loaded = False
self.draw_lds()
note_buf = self.notes_buffer
text = unicode(note_buf.get_text(note_buf.get_start_iter(),
note_buf.get_end_iter(),False))
if text:
Utils.bold_label(self.notes_label)
else:
Utils.unbold_label(self.notes_label)
if not self.lds_not_loaded:
self.check_lds()
if (self.lds_baptism.is_empty() and self.lds_endowment.is_empty()
and self.lds_sealing.is_empty()):
Utils.unbold_label(self.lds_tab)
else:
Utils.bold_label(self.lds_tab)
def change_name(self,obj): def change_name(self,obj):
sel_objs = self.ntree.get_selected_objects() sel_objs = self.ntree.get_selected_objects()
if sel_objs: if sel_objs:

View File

@ -2164,7 +2164,7 @@ class GedcomParser:
attr.set_type((atype,n)) attr.set_type((atype,n))
else: else:
attr.set_type((atype,'')) attr.set_type((atype,''))
attr.set_value(matches[2]) attr.set_value(matches[2])
state.person.add_attribute(attr) state.person.add_attribute(attr)
@ -2172,7 +2172,7 @@ class GedcomParser:
n = matches[3].strip() n = matches[3].strip()
if self.gedattr.has_key(n): if self.gedattr.has_key(n):
attr = RelLib.Attribute() attr = RelLib.Attribute()
attr.set_type((RelLib.Event.CUSTOM,self.gedattr[n])) attr.set_type((self.gedattr[n],''))
attr.set_value(matches[2]) attr.set_value(matches[2])
state.person.add_attribute(attr) state.person.add_attribute(attr)
self.parse_person_attr(attr,2) self.parse_person_attr(attr,2)

View File

@ -858,7 +858,7 @@ class ViewManager:
ScratchPad.ScratchPadWindow(self.state, self) ScratchPad.ScratchPadWindow(self.state, self)
def pulse_progressbar(self,value): def pulse_progressbar(self,value):
self.progress.set_fraction(value/100.0) self.progress.set_fraction(min(value/100.0,1.0))
self.progress.set_text("%d%%" % value) self.progress.set_text("%d%%" % value)
while gtk.events_pending(): while gtk.events_pending():
gtk.main_iteration() gtk.main_iteration()

File diff suppressed because it is too large Load Diff