GEP 18: Obtain repo data from attached repo, no user input field
svn: r22572
This commit is contained in:
parent
99671bdfaf
commit
1fd823bb71
@ -234,7 +234,28 @@ def get_address_str(addr):
|
|||||||
else:
|
else:
|
||||||
str = "%s, %s" % (str, info)
|
str = "%s, %s" % (str, info)
|
||||||
return str
|
return str
|
||||||
|
|
||||||
|
def get_address_ref_str(addr):
|
||||||
|
"""
|
||||||
|
Return a string that combines the elements of an address without county,
|
||||||
|
postal_code and phone, for typical use in references
|
||||||
|
|
||||||
|
@param addr: the GRAMPS address instance
|
||||||
|
"""
|
||||||
|
str = ""
|
||||||
|
elems = [ addr.get_street(),
|
||||||
|
addr.get_locality(),
|
||||||
|
addr.get_city(),
|
||||||
|
addr.get_state(),
|
||||||
|
addr.get_country(), ]
|
||||||
|
|
||||||
|
for info in elems:
|
||||||
|
if info:
|
||||||
|
if str == "":
|
||||||
|
str = info
|
||||||
|
else:
|
||||||
|
str = "%s, %s" % (str, info)
|
||||||
|
return str
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# People Filters
|
# People Filters
|
||||||
|
@ -44,6 +44,7 @@ from gi.repository import Gtk
|
|||||||
from gramps.gen.lib.srcattrtype import (SrcAttributeType, REF_TYPE_F,
|
from gramps.gen.lib.srcattrtype import (SrcAttributeType, REF_TYPE_F,
|
||||||
REF_TYPE_S, REF_TYPE_L, EMPTY)
|
REF_TYPE_S, REF_TYPE_L, EMPTY)
|
||||||
from gramps.gen.lib import SrcAttribute, SrcTemplate
|
from gramps.gen.lib import SrcAttribute, SrcTemplate
|
||||||
|
from gramps.gen.plug.report.utils import get_address_ref_str
|
||||||
from ...autocomp import StandardCustomSelector
|
from ...autocomp import StandardCustomSelector
|
||||||
from ...widgets.srctemplatetreeview import SrcTemplateTreeView
|
from ...widgets.srctemplatetreeview import SrcTemplateTreeView
|
||||||
from ...widgets import UndoableEntry, MonitoredEntryIndicator
|
from ...widgets import UndoableEntry, MonitoredEntryIndicator
|
||||||
@ -308,7 +309,18 @@ class TemplateFields(object):
|
|||||||
lbl.set_halign(Gtk.Align.START)
|
lbl.set_halign(Gtk.Align.START)
|
||||||
self.gridfields.attach(lbl, 0, row-1, 1, 1)
|
self.gridfields.attach(lbl, 0, row-1, 1, 1)
|
||||||
self.lbls.append(lbl)
|
self.lbls.append(lbl)
|
||||||
#setup entry
|
if srcattrtype in [SrcAttributeType.REPOSITORY,
|
||||||
|
SrcAttributeType.REPOSITORY_ADDRESS,
|
||||||
|
SrcAttributeType.REPOSITORY_CALL_NUMBER]:
|
||||||
|
self._add_repo_entry(srcattrtype, row)
|
||||||
|
else:
|
||||||
|
#setup entry
|
||||||
|
self._add_normal_entry(srcattrtype, row, hint, tooltip)
|
||||||
|
|
||||||
|
def _add_normal_entry(self, srcattrtype, row, hint, tooltip):
|
||||||
|
"""
|
||||||
|
add an entryfield that sets the required SrcAttribute
|
||||||
|
"""
|
||||||
inpt = UndoableEntry()
|
inpt = UndoableEntry()
|
||||||
inpt.set_halign(Gtk.Align.FILL)
|
inpt.set_halign(Gtk.Align.FILL)
|
||||||
inpt.set_hexpand(True)
|
inpt.set_hexpand(True)
|
||||||
@ -327,6 +339,42 @@ class TemplateFields(object):
|
|||||||
read_only=self.db.readonly,
|
read_only=self.db.readonly,
|
||||||
parameter=srcattrtype)
|
parameter=srcattrtype)
|
||||||
|
|
||||||
|
def _add_repo_entry(self, srcattrtype, row):
|
||||||
|
"""
|
||||||
|
Add a field that obtains info from repository
|
||||||
|
"""
|
||||||
|
repo_list = self.src.get_reporef_list()
|
||||||
|
if repo_list:
|
||||||
|
reporef = repo_list[0]
|
||||||
|
repo = self.db.get_repository_from_handle(reporef.get_reference_handle())
|
||||||
|
else:
|
||||||
|
reporef = None
|
||||||
|
repo = None
|
||||||
|
if not reporef:
|
||||||
|
lbl = Gtk.Label("")
|
||||||
|
lbl.set_markup(_("<i>No repository added to the source</i>"))
|
||||||
|
lbl.set_halign(Gtk.Align.START)
|
||||||
|
self.gridfields.attach(lbl, 1, row-1, 1, 1)
|
||||||
|
self.lbls.append(lbl)
|
||||||
|
else:
|
||||||
|
#we show the data as defined by the field
|
||||||
|
if srcattrtype == SrcAttributeType.REPOSITORY:
|
||||||
|
text = repo.get_name()
|
||||||
|
elif srcattrtype == SrcAttributeType.REPOSITORY_ADDRESS:
|
||||||
|
text = _("<i>No Address attached to the repository</i>")
|
||||||
|
addrlist = repo.get_address_list()
|
||||||
|
if addrlist:
|
||||||
|
text = get_address_ref_str(addrlist[0])
|
||||||
|
elif srcattrtype == SrcAttributeType.REPOSITORY_CALL_NUMBER:
|
||||||
|
text = reporef.get_call_number().strip()
|
||||||
|
if not text:
|
||||||
|
text = _("<i>No call number given in the repository reference</i>")
|
||||||
|
lbl = Gtk.Label("")
|
||||||
|
lbl.set_markup(text)
|
||||||
|
lbl.set_halign(Gtk.Align.START)
|
||||||
|
self.gridfields.attach(lbl, 1, row-1, 1, 1)
|
||||||
|
self.lbls.append(lbl)
|
||||||
|
|
||||||
def get_src_field(self, srcattrtype):
|
def get_src_field(self, srcattrtype):
|
||||||
return self.__get_field(srcattrtype, self.src)
|
return self.__get_field(srcattrtype, self.src)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user