2007-08-24 Don Allingham <don@gramps-project.org>

* src/ExportAssistant.py: fix grammar
	* src/ExportOptions.py: place for common options, build option dialog for
	exporters
	* src/GrampsDbUtils/_WriteGedcom.py: handle restrict, private, and new
	option dialog
	* src/GrampsDbUtils/_PrivateProxyDb.py: add get_researcher()
	* src/GrampsDbUtils/exportgedcom.glade: removed
	


svn: r8864
This commit is contained in:
Don Allingham 2007-08-25 05:03:23 +00:00
parent 50dd896298
commit 5b26062459
9 changed files with 160 additions and 536 deletions

View File

@ -1,3 +1,12 @@
2007-08-24 Don Allingham <don@gramps-project.org>
* src/ExportAssistant.py: fix grammar
* src/ExportOptions.py: place for common options, build option dialog for
exporters
* src/GrampsDbUtils/_WriteGedcom.py: handle restrict, private, and new
option dialog
* src/GrampsDbUtils/_PrivateProxyDb.py: add get_researcher()
* src/GrampsDbUtils/exportgedcom.glade: removed
2007-08-25 Benny Malengier <bm@cage.ugent.be>
* src/plugins/rel_de.py : nomeata, bug #1183

View File

@ -20,6 +20,7 @@ src/DdTargets.py
src/DisplayState.py
src/Errors.py
src/ExportAssistant.py
src/ExportOptions.py
src/FontScale.py
src/GrampsCfg.py
src/GrampsDisplay.py

View File

@ -199,7 +199,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.append_page(page)
self.set_page_header_image(page, self.logo)
self.set_page_title(page, _('Choose the format you want to export to'))
self.set_page_title(page, _('Choose the output format'))
self.set_page_type(page, gtk.ASSISTANT_PAGE_CONTENT)

123
src/ExportOptions.py Normal file
View File

@ -0,0 +1,123 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2007 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
import gtk
from gettext import gettext as _
import RelLib
from BasicUtils import name_displayer
from Filters import GenericFilter, Rules, build_filter_menu
def restrict_living(person):
newperson = RelLib.Person()
name = RelLib.Name()
# copy name info
source = person.get_primary_name()
name.first_name = _(u'Living')
name.surname = source.surname
name.title = source.title
name.type = source.type
name.prefix = source.prefix
name.patronymic = source.patronymic
name.group_as = source.group_as
name.sort_as = source.sort_as
name.display_as = source.display_as
name.call = ""
newperson.set_primary_name(name)
newperson.parent_family_list = person.parent_family_list[:]
newperson.family_list = person.family_list[:]
newperson.gender = person.gender
return newperson
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class WriterOptionBox:
"""
Create a VBox with the option widgets and define methods to retrieve
the options.
"""
def __init__(self, person):
self.person = person
def get_option_box(self):
self.restrict = True
table = gtk.Table(3, 2)
label = gtk.Label('Filter')
self.filter_obj = gtk.OptionMenu()
self.private_check = gtk.CheckButton(_('Do not include records marked private'))
self.restrict_check = gtk.CheckButton(_('Restrict data on living people'))
table.set_border_width(12)
table.set_row_spacings(6)
table.set_col_spacings(6)
table.attach(label, 0, 1, 0, 1, xoptions=0, yoptions=0)
table.attach(self.filter_obj, 1, 2, 0, 1, yoptions=0)
table.attach(self.private_check, 1, 2, 1, 2, yoptions=0)
table.attach(self.restrict_check, 1, 2, 2, 3, yoptions=0)
#filter_obj = self.topDialog.get_widget("filter")
all = GenericFilter()
all.set_name(_("Entire Database"))
all.add_rule(Rules.Person.Everyone([]))
the_filters = [all]
if self.person:
des = GenericFilter()
des.set_name(_("Descendants of %s") %
name_displayer.display(self.person))
des.add_rule(Rules.Person.IsDescendantOf(
[self.person.get_gramps_id(), 1]))
ans = GenericFilter()
ans.set_name(_("Ancestors of %s")
% name_displayer.display(self.person))
ans.add_rule(Rules.Person.IsAncestorOf(
[self.person.get_gramps_id(), 1]))
com = GenericFilter()
com.set_name(_("People with common ancestor with %s") %
name_displayer.display(self.person))
com.add_rule(Rules.Person.HasCommonAncestorWith(
[self.person.get_gramps_id()]))
the_filters += [des, ans, com]
from Filters import CustomFilters
the_filters.extend(CustomFilters.get_filters('Person'))
self.filter_menu = build_filter_menu(the_filters)
self.filter_obj.set_menu(self.filter_menu)
table.show()
return table
def parse_options(self):
self.restrict = self.restrict_check.get_active()
self.private = self.private_check.get_active()
self.cfilter = self.filter_menu.get_active().get_data("filter")

View File

@ -26,8 +26,7 @@ pkgpyexecdir = @pkgpyexecdir@/GrampsDbUtils
pkgpythondir = @pkgpythondir@/GrampsDbUtils
GLADEFILES = \
gedcomimport.glade\
gedcomexport.glade
gedcomimport.glade
dist_pkgdata_DATA = $(GLADEFILES)

View File

@ -946,7 +946,7 @@ class PrivateProxyDb:
def get_researcher(self):
"""returns the Researcher instance, providing information about
the owner of the database"""
raise NotImplementedError
return self.db.get_researcher()
def set_default_person_handle(self, handle):
"""sets the default Person to the passed instance"""
@ -1876,11 +1876,11 @@ def sanitize_repository(db,repository):
new_repository.set_type(repository.get_type())
new_repository.set_name(repository.get_name())
new_repository.set_gramps_id(repository.get_gramps_id())
new_repository.set_handle(repositofy.get_handle())
new_repository.set_handle(repository.get_handle())
new_repository.set_marker(repository.get_marker())
copy_notes(db,repository,new_repository)
copy_addresses(db,repository,new_repository)
copy_urls(db,repository,new_repository)
return new_repository
return new_repository

View File

@ -36,24 +36,17 @@ import string
import logging
log = logging.getLogger(".WriteGedcom")
#-------------------------------------------------------------------------
#
# GNOME/GTK modules
#
#-------------------------------------------------------------------------
import gtk
#-------------------------------------------------------------------------
#
# GRAMPS modules
#
#-------------------------------------------------------------------------
import RelLib
from Filters import GenericFilter, Rules, build_filter_menu
import const
import _GedcomInfo as GedcomInfo
import Errors
import Utils
import ExportOptions
from QuestionDialog import ErrorDialog, WarningDialog
from BasicUtils import UpdateCallback, name_displayer
@ -159,7 +152,7 @@ quay_map = {
RelLib.SourceRef.CONF_HIGH : 2,
RelLib.SourceRef.CONF_LOW : 1,
RelLib.SourceRef.CONF_VERY_LOW : 0,
}
}
#-------------------------------------------------------------------------
#
@ -244,97 +237,6 @@ def breakup(txt, limit):
data.append(txt)
return data
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
class GedcomWriterOptionBox:
"""
Create a VBox with the option widgets and define methods to retrieve
the options.
"""
def __init__(self, person):
self.person = person
def get_option_box(self):
self.restrict = True
glade_file = "%s/gedcomexport.glade" % os.path.dirname(__file__)
if not os.path.isfile(glade_file):
glade_file = "plugins/gedcomexport.glade"
self.topDialog = gtk.glade.XML(glade_file, "gedcomExport", "gramps")
self.topDialog.signal_autoconnect({
"on_restrict_toggled" : self.on_restrict_toggled,
})
filter_obj = self.topDialog.get_widget("filter")
all = GenericFilter()
all.set_name(_("Entire Database"))
all.add_rule(Rules.Person.Everyone([]))
the_filters = [all]
if self.person:
des = GenericFilter()
des.set_name(_("Descendants of %s") %
name_displayer.display(self.person))
des.add_rule(Rules.Person.IsDescendantOf(
[self.person.get_gramps_id(), 1]))
ans = GenericFilter()
ans.set_name(_("Ancestors of %s")
% name_displayer.display(self.person))
ans.add_rule(Rules.Person.IsAncestorOf(
[self.person.get_gramps_id(), 1]))
com = GenericFilter()
com.set_name(_("People with common ancestor with %s") %
name_displayer.display(self.person))
com.add_rule(Rules.Person.HasCommonAncestorWith(
[self.person.get_gramps_id()]))
the_filters += [des, ans, com]
from Filters import CustomFilters
the_filters.extend(CustomFilters.get_filters('Person'))
self.filter_menu = build_filter_menu(the_filters)
filter_obj.set_menu(self.filter_menu)
the_box = self.topDialog.get_widget('vbox1')
the_parent = self.topDialog.get_widget('dialog-vbox1')
the_parent.remove(the_box)
self.topDialog.get_widget("gedcomExport").destroy()
return the_box
def on_restrict_toggled(self, restrict):
active = restrict.get_active ()
map (lambda x: x.set_sensitive (active),
[self.topDialog.get_widget("living"),
self.topDialog.get_widget("notes"),
self.topDialog.get_widget("sources")])
def parse_options(self):
self.restrict = self.topDialog.get_widget("restrict").get_active()
self.living = (self.restrict and
self.topDialog.get_widget("living").get_active())
self.exclnotes = (self.restrict and
self.topDialog.get_widget("notes").get_active())
self.exclsrcs = (self.restrict and
self.topDialog.get_widget("sources").get_active())
self.cfilter = self.filter_menu.get_active().get_data("filter")
self.images = self.topDialog.get_widget ("images").get_active ()
if self.images:
images_path = self.topDialog.get_widget ("images_path")
self.images_path = unicode(images_path.get_text ())
else:
self.images_path = ""
#-------------------------------------------------------------------------
#
# GedcomWriter class
@ -393,11 +295,11 @@ class GedcomWriter(UpdateCallback):
self.option_box.parse_options()
self.restrict = self.option_box.restrict
self.living = self.option_box.living
self.exclnotes = self.option_box.exclnotes
self.exclsrcs = self.option_box.exclsrcs
self.images = self.option_box.images
self.images_path = self.option_box.images_path
self.private = self.option_box.private
if self.private:
import _PrivateProxyDb
self.db = _PrivateProxyDb.PrivateProxyDb(self.db)
if self.option_box.cfilter == None:
self.plist = set(self.db.get_person_handles(sort_handles=False))
@ -414,7 +316,7 @@ class GedcomWriter(UpdateCallback):
def cli_setup(self):
# use default settings
self.restrict = 0
self.images = 0
self.private = 0
self.plist = set(self.db.get_person_handles(sort_handles=False))
@ -555,7 +457,11 @@ class GedcomWriter(UpdateCallback):
sorted.sort()
for data in sorted:
self.__write_person(self.db.get_person_from_handle(data[1]))
person = self.db.get_person_from_handle(data[1])
if self.restrict:
if Utils.probably_alive(person, self.db):
person = ExportOptions.restrict_living(person)
self.__write_person(person)
self.update()
def __write_person(self, person):
@ -767,9 +673,8 @@ class GedcomWriter(UpdateCallback):
self.__write_source_references(addr.get_source_references(), 2)
def __write_photos(self, media_list, level):
if self.images:
for photo in media_list:
self.__write_photo(photo, level)
for photo in media_list:
self.__write_photo(photo, level)
def __write_child_families(self, person):
hndl_list = [ hndl for hndl in person.get_parent_family_handle_list() \
@ -1090,10 +995,9 @@ class GedcomWriter(UpdateCallback):
self.__write_note_references(event.get_note_list(), 1)
self.__write_source_references(event.get_source_references(), 2)
if self.images:
self.__write_photos(event.get_media_list(), 2)
if place:
self.__write_photos(place.get_media_list(), 2)
self.__write_photos(event.get_media_list(), 2)
if place:
self.__write_photos(place.get_media_list(), 2)
def write_ord(self, ord, index):
self.__writeln(index, lds_ord_name[ord.get_type()])
@ -1250,31 +1154,14 @@ class GedcomWriter(UpdateCallback):
mime = photo_obj.get_mime_type()
form = mime2ged.get(mime, mime)
path = photo_obj.get_path()
imgdir = os.path.join(self.dirname, self.images_path)
imgdir = path
if not os.path.isfile(path):
return
try:
if not os.path.isdir(imgdir):
os.makedirs(imgdir)
except:
return
basename = os.path.basename(path)
dest = os.path.join (imgdir, basename)
if dest != path:
try:
shutil.copyfile(path, dest)
shutil.copystat(path, dest)
except (IOError, OSError), msg:
msg2 = _("Could not create %s") % dest
WarningDialog(msg2, str(msg))
return
self.__writeln(level, 'OBJE')
if form:
self.__writeln(level+1, 'FORM', form)
self.__writeln(level+1, 'TITL', photo_obj.get_description())
basename = os.path.basename (path)
self.__writeln(level+1, 'FILE', os.path.join(self.images_path, basename))
self.__writeln(level+1, 'FILE', path)
self.__write_note_references(photo_obj.get_note_list(), level+1)
@ -1312,7 +1199,7 @@ def exportData(database, filename, person, option_box, callback=None):
_title = _('GE_DCOM')
_description = _('GEDCOM is used to transfer data between genealogy programs. '
'Most genealogy software will accept a GEDCOM file as input. ')
_config = (_('GEDCOM export options'), GedcomWriterOptionBox)
_config = (_('GEDCOM export options'), ExportOptions.WriterOptionBox)
_filename = 'ged'
from PluginUtils import register_export

View File

@ -1,396 +0,0 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
<widget class="GtkDialog" id="gedcomExport">
<property name="visible">True</property>
<property name="title" translatable="yes"></property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">True</property>
<property name="default_width">400</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">False</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">8</property>
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
<widget class="GtkButton" id="cancel">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="destroy_passed_object" object="gedcomExport"/>
</widget>
</child>
<child>
<widget class="GtkButton" id="ok">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_ok_clicked" object="gedcomExport"/>
</widget>
</child>
<child>
<widget class="GtkButton" id="button1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-help</property>
<property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="response_id">-11</property>
<signal name="clicked" handler="on_help_clicked" last_modification_time="Tue, 02 Dec 2003 01:53:26 GMT"/>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkTable" id="table3">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">6</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<widget class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Options&lt;/b&gt;</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">_Filter:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">filter</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkOptionMenu" id="filter">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="history">-1</property>
<child internal-child="menu">
<widget class="GtkMenu" id="convertwidget1">
<property name="visible">True</property>
</widget>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="private">
<property name="border_width">3</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">_Do not include records marked private</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="restrict">
<property name="border_width">3</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">_Restrict data on living people</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_restrict_toggled" last_modification_time="Tue, 22 Jul 2003 09:50:16 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkTable" id="table4">
<property name="visible">True</property>
<property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<widget class="GtkCheckButton" id="notes">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Exclude _notes</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="sources">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Exclude sour_ces</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="living">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Use _Living as first name</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">True</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkDrawingArea" id="drawingarea1">
<property name="visible">True</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">shrink|fill</property>
<property name="y_options">fill</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkCheckButton" id="images">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">R_eference images from path: </property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkEntry" id="images_path">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">True</property>
<property name="visibility">True</property>
<property name="max_length">0</property>
<property name="text" translatable="yes">media</property>
<property name="has_frame">True</property>
<property name="invisible_char">*</property>
<property name="activates_default">False</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">fill</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>

View File

@ -49,6 +49,7 @@ gdir_PYTHON = \
DisplayState.py\
Errors.py\
ExportAssistant.py\
ExportOptions.py\
FontScale.py\
GrampsCfg.py\
GrampsDisplay.py\