Rewrite the reports to be a set of base classes and subclasses.
svn: r637
This commit is contained in:
parent
6c5703b06c
commit
05c8fc72fd
719
gramps/src/Report.py
Normal file
719
gramps/src/Report.py
Normal file
@ -0,0 +1,719 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2001 David R. Hampton
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
"Report Generation Framework"
|
||||
|
||||
import RelLib
|
||||
import const
|
||||
import os
|
||||
import re
|
||||
import sort
|
||||
import string
|
||||
import utils
|
||||
import intl
|
||||
|
||||
_ = intl.gettext
|
||||
|
||||
from TextDoc import *
|
||||
from StyleEditor import *
|
||||
|
||||
import Config
|
||||
import FindDoc
|
||||
import PaperMenu
|
||||
|
||||
import gtk
|
||||
import gnome.ui
|
||||
import libglade
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# The Report base class. This is a base class for generating
|
||||
# customized reports. It cannot be used as is, but it can be easily
|
||||
# sub-classed to create a functional report generator.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class Report:
|
||||
|
||||
# Ordinal generation names. Used by multiple reports.
|
||||
gen = {
|
||||
1 : _("First"),
|
||||
2 : _("Second"),
|
||||
3 : _("Third"),
|
||||
4 : _("Fourth"),
|
||||
5 : _("Fifth"),
|
||||
6 : _("Sixth"),
|
||||
7 : _("Seventh"),
|
||||
8 : _("Eighth"),
|
||||
9 : _("Ninth"),
|
||||
10: _("Tenth"),
|
||||
11: _("Eleventh"),
|
||||
12: _("Twelfth"),
|
||||
13: _("Thirteenth"),
|
||||
14: _("Fourteenth"),
|
||||
15: _("Fifteenth"),
|
||||
16: _("Sixteenth"),
|
||||
17: _("Seventeenth"),
|
||||
18: _("Eighteenth"),
|
||||
19: _("Nineteenth"),
|
||||
20: _("Twentieth"),
|
||||
21: _("Twenty-first"),
|
||||
22: _("Twenty-second"),
|
||||
23: _("Twenty-third"),
|
||||
24: _("Twenty-fourth"),
|
||||
25: _("Twenty-fifth"),
|
||||
26: _("Twenty-sixth"),
|
||||
27: _("Twenty-seventh"),
|
||||
28: _("Twenty-eighth"),
|
||||
29: _("Twenty-ninth")
|
||||
}
|
||||
|
||||
def get_progressbar_data(self):
|
||||
"""The window title for this dialog, and the header line to
|
||||
put at the top of the contents of the dialog box."""
|
||||
return (_("Gramps - Progress Report"), _("Working"))
|
||||
|
||||
def progress_bar_setup(self,total):
|
||||
"""Create a progress dialog. This routine calls a
|
||||
customization function to find out how to fill out the dialog.
|
||||
The argument to this function is the maximum number of items
|
||||
that the report will progress; i.e. what's considered 100%,
|
||||
i.e. the maximum number of times this routine will be
|
||||
called."""
|
||||
|
||||
# Load the glade file
|
||||
base = os.path.dirname(__file__)
|
||||
self.glade_file = os.path.join(base, "plugins", "basicreport.glade")
|
||||
self.pxml = libglade.GladeXML(self.glade_file,"progress_dialog")
|
||||
|
||||
# Customize the dialog for this report
|
||||
(title, header) = self.get_progressbar_data()
|
||||
self.ptop = self.pxml.get_widget("progress_dialog")
|
||||
self.ptop.set_title(title)
|
||||
self.pxml.get_widget("header_label").set_text(header)
|
||||
|
||||
# Setup the progress bar limits
|
||||
self.pbar = self.pxml.get_widget("progressbar")
|
||||
self.pbar.configure(0.0,0.0,total)
|
||||
self.pbar_index = 0.0
|
||||
|
||||
def progress_bar_step(self):
|
||||
"""Click the progress bar over to the next value. Be paranoid
|
||||
and insure that it doesn't go over 100%."""
|
||||
self.pbar_index = self.pbar_index + 1.0
|
||||
if (self.pbar_index > 100.0):
|
||||
self.pbar_index = 100.0
|
||||
self.pbar.set_value(self.pbar_index)
|
||||
|
||||
def progress_bar_done(self):
|
||||
"""Done with the progress bar. It can be destroyed now."""
|
||||
utils.destroy_passed_object(self.ptop)
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# The ReportDialog base class. This is a base class for generating
|
||||
# customized dialogs to solicit options for a report. It cannot be
|
||||
# used as is, but it can be easily sub-classed to create a functional
|
||||
# dialog.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class ReportDialog:
|
||||
def __init__(self,database,person,filename="basicreport.glade"):
|
||||
"""Initialize a dialog to request that the user select options
|
||||
for a basic report. The glade filename is optional. If
|
||||
provided it must reference a glade file that is either be a
|
||||
superset of the basic dialog, or the subclass must override
|
||||
most of the setup_xxx and parse_xxx functions."""
|
||||
|
||||
# Save info about who the report is about.
|
||||
self.db = database
|
||||
self.person = person
|
||||
|
||||
# Load the glade file
|
||||
base = os.path.dirname(__file__)
|
||||
self.glade_file = os.path.join(base, "plugins", filename)
|
||||
self.topDialog = libglade.GladeXML(self.glade_file,"report_dialog")
|
||||
|
||||
# Set up and run the dialog. These calls are not in top down
|
||||
# order when looking at the dialog box as there is some
|
||||
# interaction between the various frames.
|
||||
self.setup_title()
|
||||
self.setup_header()
|
||||
self.setup_output_notebook()
|
||||
self.setup_target_frame()
|
||||
self.setup_style_frame()
|
||||
self.setup_format_frame()
|
||||
self.setup_paper_frame()
|
||||
self.setup_html_frame()
|
||||
self.setup_report_options_frame()
|
||||
self.setup_other_frames()
|
||||
self.connect_signals()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks for subclasses
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog."""
|
||||
return(_("Gramps - Base Report"))
|
||||
|
||||
def get_header(self, name):
|
||||
"""The header line to put at the top of the contents of the
|
||||
dialog box. By default this will just be the name of the
|
||||
selected person. Most subclasses will customize this to give
|
||||
some indication of what the report will be, i.e. 'Descendant
|
||||
Report for %s'."""
|
||||
return(name)
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window that will be created when the user
|
||||
clicks the 'Browse' button in the 'Save As' File Entry
|
||||
widget."""
|
||||
return(_("Gramps - Save Report As"))
|
||||
|
||||
def get_target_is_directory(self):
|
||||
"""Is the user being asked to input the name of a file or a
|
||||
directory in the 'Save As' File Entry widget. This item
|
||||
currently only selects the Filename/Directory prompt, and
|
||||
whether or not the browser accepts filenames. In the future it
|
||||
may also control checking of the selected filename."""
|
||||
return None
|
||||
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where should new styles for this report be saved? This is
|
||||
the name of an XML file that will be located in the ~/.gramps
|
||||
directory. This file does not have to exist; it will be
|
||||
created when needed. All subclasses should probably override
|
||||
this function."""
|
||||
return "basic_report.xml"
|
||||
|
||||
def get_print_pagecount_map(self):
|
||||
"""Return the data used to fill out the 'pagecount' option
|
||||
menu in the print options box. The first value is a mapping
|
||||
of string:value pairs. The strings will be used to label
|
||||
individual menu items, and the values are what will be
|
||||
returned if a given menu item is selected. The second value
|
||||
is the name of menu item to pre-select."""
|
||||
return (None, None)
|
||||
|
||||
def get_report_filter_strings(self):
|
||||
"""Return the data used to fill out the 'filter' combo box in
|
||||
the report options box. The return value is the list of
|
||||
strings to be inserted into the pulldown."""
|
||||
return None
|
||||
|
||||
def get_report_generations(self):
|
||||
"""Return the default number of generations to start the
|
||||
spinbox (zero to disable) and whether or not to include the
|
||||
'page break between generations' check box"""
|
||||
return (10, 1)
|
||||
|
||||
def get_report_extra_menu_map(self):
|
||||
"""Return the data used to fill out the 'extra' option menu in
|
||||
the report options box. The first value is the string to be
|
||||
used as the label to the left of the menu. The second value
|
||||
is a mapping of string:value pairs. The strings will be used
|
||||
to label individual menu items, and the values are what will
|
||||
be returned if a given menu item is selected. The final value
|
||||
is the name of menu item to pre-select."""
|
||||
return (None, None, None)
|
||||
|
||||
def get_report_extra_textbox_string(self):
|
||||
"""Return the string to put into the 'extra' text box in
|
||||
the report options box. If None, then the text box will be
|
||||
hidden."""
|
||||
return (None, None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related getting/setting the default directory for a dialog.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_default_directory(self):
|
||||
"""Get the name of the directory to which the target dialog
|
||||
box should default. This value can be set in the preferences
|
||||
panel."""
|
||||
return Config.report_dir
|
||||
|
||||
def set_default_directory(self, value):
|
||||
"""Save the name of the current directory, so that any future
|
||||
reports will default to the most recently used directory.
|
||||
This also changes the directory name that will appear in the
|
||||
preferences panel, but does not change the preference in disk.
|
||||
This means that the last directory used will only be
|
||||
remembered for this session of gramps unless the user saves
|
||||
his/her preferences."""
|
||||
Config.report_dir = value
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions to create a default output style.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Create the default style to be used by the associated report. This
|
||||
routine is a default implementation and should be overridden."""
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=16,bold=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(1)
|
||||
para.set(pad=0.5)
|
||||
self.default_style.add_style("Title",para)
|
||||
|
||||
def build_style_menu(self,dummy):
|
||||
"""Build a menu of style sets that are available for use in
|
||||
this report. This menu will always have a default style
|
||||
available, and will have any other style set name that the
|
||||
user has previously created for this report. This menu is
|
||||
created here instead of inline with the rest of the style
|
||||
frame, because it must be recreated to reflect any changes
|
||||
whenever the user closes the style editor dialog."""
|
||||
style_sheet_map = self.style_sheet_list.get_style_sheet_map()
|
||||
myMenu = utils.build_string_optmenu(style_sheet_map, "default")
|
||||
self.style_menu.set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to selecting/changing the current file format.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_doc_menu(self):
|
||||
"""Build a menu of document types that are appropriate for
|
||||
this report. This menu will be generated based upon the type
|
||||
of document (text, draw, graph, etc. - a subclass), whether or
|
||||
not the document requires table support, etc."""
|
||||
assert 0, _("The make_doc_menu function must be overridden.")
|
||||
|
||||
def make_document(self):
|
||||
"""Create a document of the type selected by the user."""
|
||||
assert 0, _("The make_document function must be overridden.")
|
||||
|
||||
def doc_type_changed(self, obj):
|
||||
"""This routine is called when the user selects a new file
|
||||
formats for the report. It adjust the various dialog sections
|
||||
to reflect the appropriate values for the currently selected
|
||||
file format. For example, a HTML document doesn't need any
|
||||
paper size/orientation options, but it does need a template
|
||||
file. Those chances are made here."""
|
||||
|
||||
# Is this to be a printed report or an electronic report
|
||||
# (i.e. a set of web pages)
|
||||
if obj.get_data("paper") == 1:
|
||||
self.output_notebook.set_page(0)
|
||||
else:
|
||||
self.output_notebook.set_page(1)
|
||||
|
||||
# Does this report format use styles?
|
||||
self.style_frame.set_sensitive(obj.get_data("styles"))
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to setting up the dialog window.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def setup_title(self):
|
||||
"""Set up the title bar of the dialog. This function relies
|
||||
on the get_title() customization function for what the title
|
||||
should be."""
|
||||
self.window = self.topDialog.get_widget("report_dialog")
|
||||
self.name = self.person.getPrimaryName().getRegularName()
|
||||
self.window.set_title(self.get_title())
|
||||
|
||||
def setup_header(self):
|
||||
"""Set up the header line bar of the dialog. This function
|
||||
relies on the get_header() customization function for what the
|
||||
header line should read. If no customization function is
|
||||
supplied by the subclass, the default is to use the full name
|
||||
of the currently selected person."""
|
||||
name = self.person.getPrimaryName().getRegularName()
|
||||
self.header = self.topDialog.get_widget("header_label")
|
||||
self.header.set_text(self.get_header(name))
|
||||
|
||||
def setup_target_frame(self):
|
||||
"""Set up the target frame of the dialog. This function
|
||||
relies on several target_xxx() customization functions to
|
||||
determine whether the target is a directory or file, what the
|
||||
title of any browser window should be, and what default
|
||||
directory should be used."""
|
||||
self.target_fileentry = self.topDialog.get_widget("fileentry1")
|
||||
self.target_fileentry.set_title(self.get_target_browser_title())
|
||||
self.target_fileentry.set_default_path(self.get_default_directory())
|
||||
if (self.get_target_is_directory()):
|
||||
import _gnomeui
|
||||
_gnomeui.gnome_file_entry_set_directory(self.target_fileentry._o, 1)
|
||||
self.topDialog.get_widget("saveas").set_text(_("Directory"))
|
||||
self.target_filename = self.topDialog.get_widget("filename")
|
||||
self.target_filename.set_text(self.get_default_directory())
|
||||
|
||||
# Faugh! The following line of code would allow the 'Enter'
|
||||
# key in the file name box to close the dialog. However there
|
||||
# is a bug (or is it?) in the closing of the Gnome FileEntry
|
||||
# browser that sends the same signal that is sent when the
|
||||
# 'Enter' key is pressed. This causes the report to be run
|
||||
# when the browser window is closed instead of waiting for the
|
||||
# dialog window OK button to be clicked. The user does not
|
||||
# have a chance to set any other options.
|
||||
#
|
||||
# self.window.editable_enters(self.target_filename)
|
||||
|
||||
def setup_format_frame(self):
|
||||
"""Set up the format frame of the dialog. This function
|
||||
relies on the make_doc_menu() function to do all the hard
|
||||
work."""
|
||||
self.format_menu = self.topDialog.get_widget("format")
|
||||
self.make_doc_menu()
|
||||
|
||||
def setup_style_frame(self):
|
||||
"""Set up the style frame of the dialog. This function relies
|
||||
on other routines create the default style for this report,
|
||||
and to read in any user defined styles for this report. It
|
||||
the builds a menu of all the available styles for the user to
|
||||
choose from."""
|
||||
self.style_frame = self.topDialog.get_widget("style_frame")
|
||||
self.style_menu = self.topDialog.get_widget("style_menu")
|
||||
|
||||
# Build the default style set for this report.
|
||||
self.default_style = StyleSheet()
|
||||
self.make_default_style()
|
||||
|
||||
# Build the initial list of available styles sets. This
|
||||
# includes the default style set and any style sets saved from
|
||||
# previous invocations of gramps.
|
||||
self.style_sheet_list = StyleSheetList(self.get_stylesheet_savefile(),
|
||||
self.default_style)
|
||||
|
||||
# Now build the actual menu.
|
||||
self.build_style_menu(None)
|
||||
|
||||
def setup_output_notebook(self):
|
||||
"""Set up the output notebook of the dialog. This sole
|
||||
purpose of this function is to grab a pointer for later use in
|
||||
the callback from when the file format is changed."""
|
||||
self.output_notebook = self.topDialog.get_widget("output_notebook")
|
||||
|
||||
def setup_paper_frame(self):
|
||||
"""Set up the paper selection frame of the dialog. This
|
||||
function relies on a paper_xxx() customization functions to
|
||||
determine whether the pagecount menu should appear and what
|
||||
its strings should be."""
|
||||
# Paper size and orientation. Always present in this frame.
|
||||
self.papersize_menu = self.topDialog.get_widget("papersize")
|
||||
PaperMenu.make_paper_menu(self.papersize_menu)
|
||||
self.orientation_menu = self.topDialog.get_widget("orientation")
|
||||
PaperMenu.make_orientation_menu(self.orientation_menu)
|
||||
|
||||
# The optional pagecount stuff.
|
||||
self.pagecount_menu = self.topDialog.get_widget("pagecount_menu")
|
||||
self.pagecount_label = self.topDialog.get_widget("pagecount_label")
|
||||
(pagecount_map, start_text) = self.get_print_pagecount_map()
|
||||
if pagecount_map:
|
||||
myMenu = utils.build_string_optmenu(pagecount_map, start_text)
|
||||
self.pagecount_menu.set_menu(myMenu)
|
||||
else:
|
||||
self.pagecount_menu.hide()
|
||||
self.pagecount_label.hide()
|
||||
|
||||
def setup_html_frame(self):
|
||||
"""Set up the html frame of the dialog. This sole purpose of
|
||||
this function is to grab a pointer for later use in the parse
|
||||
html frame function."""
|
||||
self.html_fileentry = self.topDialog.get_widget("htmltemplate")
|
||||
|
||||
def setup_report_options_frame(self):
|
||||
"""Set up the report options frame of the dialog. This
|
||||
function relies on several report_xxx() customization
|
||||
functions to determine which of the items should be present in
|
||||
this box. *All* of these items are optional, although the
|
||||
generations fields and the filter combo box are used in most
|
||||
(but not all) dialog boxes."""
|
||||
|
||||
# Set up the generations spin and page break checkbox
|
||||
(use_gen, use_break) = self.get_report_generations()
|
||||
self.generations_spinbox = self.topDialog.get_widget("generations")
|
||||
self.pagebreak_checkbox = self.topDialog.get_widget("pagebreak")
|
||||
if use_gen:
|
||||
self.generations_spinbox.set_value(use_gen)
|
||||
else:
|
||||
self.topDialog.get_widget("gen_label").hide()
|
||||
self.generations_spinbox.hide()
|
||||
use_break = 0
|
||||
if not use_break:
|
||||
self.pagebreak_checkbox.hide()
|
||||
|
||||
# Now the filter combo
|
||||
self.filter_combo = self.topDialog.get_widget("filter_combo")
|
||||
filter_strings = self.get_report_filter_strings()
|
||||
if filter_strings:
|
||||
filter_strings.sort()
|
||||
self.filter_combo.set_popdown_strings(filter_strings)
|
||||
else:
|
||||
self.topDialog.get_widget("filter_label").hide()
|
||||
self.filter_combo.hide()
|
||||
|
||||
# Now the "extra" option menu
|
||||
self.extra_menu_label = self.topDialog.get_widget("extra_menu_label")
|
||||
self.extra_menu = self.topDialog.get_widget("extra_menu")
|
||||
(label, extra_map, preset) = self.get_report_extra_menu_map()
|
||||
if extra_map:
|
||||
self.extra_menu_label.set_text(label)
|
||||
myMenu = utils.build_string_optmenu(extra_map, preset)
|
||||
self.extra_menu.set_menu(myMenu)
|
||||
self.extra_menu.set_sensitive(len(extra_map) > 1)
|
||||
else:
|
||||
self.extra_menu_label.hide()
|
||||
self.extra_menu.hide()
|
||||
|
||||
# Now the "extra" text box
|
||||
self.extra_textbox_label = self.topDialog.get_widget("extra_textbox_label")
|
||||
self.extra_textbox = self.topDialog.get_widget("extra_textbox")
|
||||
(label, string) = self.get_report_extra_textbox_string()
|
||||
if string:
|
||||
self.extra_textbox_label.set_text(label)
|
||||
self.extra_textbox.insert_defaults(string)
|
||||
else:
|
||||
self.extra_textbox_label.hide()
|
||||
self.topDialog.get_widget("extra_scrolledwindow").hide()
|
||||
|
||||
def setup_other_frames(self):
|
||||
"""Do nothing. This sole purpose of this function is to give
|
||||
subclass a place to hang a routine to handle any other frames
|
||||
that are unique to that specific report."""
|
||||
pass
|
||||
|
||||
def connect_signals(self):
|
||||
"""Connect the signal handlers for this dialog. The signal
|
||||
handlers in this default function will handle all of the items
|
||||
in the basic report dialog. Most items do not interact with
|
||||
each other, and their vales will be read back when the user
|
||||
clicks the OK button. This dialog only need be sub-classed if
|
||||
there is interaction between/within any additional frames
|
||||
added in a subclass."""
|
||||
self.topDialog.signal_autoconnect({
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_style_edit_clicked" : self.on_style_edit_clicked,
|
||||
"on_ok_clicked" : self.on_ok_clicked
|
||||
})
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to retrieving data from the dialog window
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def parse_target_frame(self):
|
||||
"""Parse the target frame of the dialog. If the target
|
||||
filename is empty this routine returns a special value of None
|
||||
to tell the calling routine to give up. This function also
|
||||
saves the current directory so that any future reports will
|
||||
default to the most recently used directory."""
|
||||
self.target_path = self.target_fileentry.get_full_path(0)
|
||||
if not self.target_path:
|
||||
return None
|
||||
self.set_default_directory(os.path.dirname(self.target_path) + os.sep)
|
||||
return 1
|
||||
|
||||
def parse_format_frame(self):
|
||||
"""Parse the format frame of the dialog. Save the user
|
||||
selected output format for later use."""
|
||||
self.format = self.format_menu.get_menu().get_active().get_data("name")
|
||||
|
||||
def parse_style_frame(self):
|
||||
"""Parse the style frame of the dialog. Save the user
|
||||
selected output style for later use. Note that this routine
|
||||
retrieves a value whether or not the menu is displayed on the
|
||||
screen. The subclass will know whether this menu was enabled.
|
||||
This is for simplicity of programming."""
|
||||
self.selected_style = self.style_menu.get_menu().get_active().get_data("d")
|
||||
|
||||
def parse_paper_frame(self):
|
||||
"""Parse the paper frame of the dialog. Save the user
|
||||
selected choices for later use. Note that this routine
|
||||
retrieves a value from the pagecount menu, whether or not it
|
||||
is displayed on the screen. The subclass will know which ones
|
||||
it has enabled. This is for simplicity of programming."""
|
||||
self.paper = self.papersize_menu.get_menu().get_active().get_data("i")
|
||||
self.orien = self.orientation_menu.get_menu().get_active().get_data("i")
|
||||
self.pagecount = self.pagecount_menu.get_menu().get_active().get_data("d")
|
||||
|
||||
def parse_html_frame(self):
|
||||
"""Parse the html frame of the dialog. Save the user selected
|
||||
html template name for later use. Note that this routine
|
||||
retrieves a value whether or not the file entry box is
|
||||
displayed on the screen. The subclass will know whether this
|
||||
entry was enabled. This is for simplicity of programming."""
|
||||
self.template_name = self.html_fileentry.get_full_path(0)
|
||||
|
||||
def parse_report_options_frame(self):
|
||||
"""Parse the report options frame of the dialog. Save the
|
||||
user selected choices for later use. Note that this routine
|
||||
retrieves a value from all fields in the frame, regardless of
|
||||
whether or not they are displayed on the screen. The subclass
|
||||
will know which ones it has enabled. This is for simplicity
|
||||
of programming."""
|
||||
self.max_gen = self.generations_spinbox.get_value_as_int()
|
||||
self.pg_brk = self.pagebreak_checkbox.get_active()
|
||||
self.filter = self.filter_combo.entry.get_text()
|
||||
self.report_menu = self.extra_menu.get_menu().get_active().get_data("d")
|
||||
self.report_text = string.split(self.extra_textbox.get_chars(0,-1),'\n')
|
||||
|
||||
def parse_other_frames(self):
|
||||
"""Do nothing. This sole purpose of this function is to give
|
||||
subclass a place to hang a routine to parser any other frames
|
||||
that are unique to that specific report."""
|
||||
pass
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Callback functions from the dialog
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(self, obj):
|
||||
"""The user has clicked on the 'Edit Styles' button. Create a
|
||||
style sheet editor object and let them play. When they are
|
||||
done, the previous routine will be called to update the dialog
|
||||
menu for selecting a style."""
|
||||
StyleListDisplay(self.style_sheet_list,self.build_style_menu,None)
|
||||
|
||||
def on_ok_clicked(self, obj):
|
||||
"""The user is satisfied with the dialog choices. Validate
|
||||
the output file name before doing anything else. If there is
|
||||
a file name, gather the options and create the report."""
|
||||
|
||||
# Is there a filename? This should also test file permissions, etc.
|
||||
if not self.parse_target_frame():
|
||||
return
|
||||
|
||||
# Preparation
|
||||
self.parse_format_frame()
|
||||
self.parse_style_frame()
|
||||
self.parse_paper_frame()
|
||||
self.parse_html_frame()
|
||||
self.parse_report_options_frame()
|
||||
self.parse_other_frames()
|
||||
|
||||
# Create the output document.
|
||||
self.make_document()
|
||||
|
||||
# Create the report object and product the report.
|
||||
self.make_report()
|
||||
|
||||
# Clean up the dialog object
|
||||
utils.destroy_passed_object(obj)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to creating the actual report document.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the contents of the report. This is the meat and
|
||||
potatoes of reports. The whole purpose of the dialog is to
|
||||
get to this routine so that data is written to a file. This
|
||||
routine should either write the data directly to the file, or
|
||||
better yet, should create a subclass of a Report that will
|
||||
write the data to a file."""
|
||||
assert 0, _("The make_report function must be overridden.")
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# TextReportDialog - A class of ReportDialog customized for text based
|
||||
# reports.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class TextReportDialog(ReportDialog):
|
||||
def __init__(self,database,person,filename):
|
||||
"""Initialize a dialog to request that the user select options
|
||||
for a basic text report. See the ReportDialog class for more
|
||||
information."""
|
||||
ReportDialog.__init__(self,database,person,filename)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks for subclasses
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def doc_uses_tables(self):
|
||||
"""Does this report require the ability to generate tables in
|
||||
the file format. Override this for documents that do need
|
||||
table support."""
|
||||
return 0
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to selecting/changing the current file format.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_doc_menu(self):
|
||||
"""Build a menu of document types that are appropriate for
|
||||
this text report. This menu will be generated based upon
|
||||
whether the document requires table support, etc."""
|
||||
FindDoc.get_text_doc_menu(self.format_menu, self.doc_uses_tables(),
|
||||
self.doc_type_changed)
|
||||
|
||||
def make_document(self):
|
||||
"""Create a document of the type requested by the user."""
|
||||
self.doc = FindDoc.make_text_doc(self.selected_style,self.format,
|
||||
self.paper,self.orien,
|
||||
self.template_name)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to creating the actual report document.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the contents of the report. This is a simple
|
||||
default implementation suitable for testing. Is should be
|
||||
overridden to produce a real report."""
|
||||
self.doc.start_paragraph("Title")
|
||||
title = "Basic Report for %s" % self.name
|
||||
self.doc.write_text(title)
|
||||
self.doc.end_paragraph()
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# DrawReportDialog - A class of ReportDialog customized for drawing based
|
||||
# reports.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class DrawReportDialog(ReportDialog):
|
||||
def __init__(self,database,person,filename):
|
||||
"""Initialize a dialog to request that the user select options
|
||||
for a basic drawing report. See the ReportDialog class for
|
||||
more information."""
|
||||
ReportDialog.__init__self,database,person,filename()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to selecting/changing the current file format.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_doc_menu(self):
|
||||
"""Build a menu of document types that are appropriate for
|
||||
this drawing report."""
|
||||
FindDoc.get_draw_doc_menu(self.format_menu)
|
||||
|
||||
def make_document(self):
|
||||
"""Create a document of the type requested by the user."""
|
||||
self.doc = FindDoc.make_draw_doc(self.selected_style,self.format,
|
||||
self.paper,self.orien)
|
@ -76,6 +76,12 @@ class PaperStyle:
|
||||
def get_width(self):
|
||||
return self.width
|
||||
|
||||
def get_height_inches(self):
|
||||
return self.height / 2.54
|
||||
|
||||
def get_width_inches(self):
|
||||
return self.width / 2.54
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
@ -402,6 +408,9 @@ class StyleSheetList:
|
||||
def delete_style_sheet(self,name):
|
||||
del self.map[name]
|
||||
|
||||
def get_style_sheet_map(self):
|
||||
return self.map
|
||||
|
||||
def get_style_sheet(self,name):
|
||||
return self.map[name]
|
||||
|
||||
|
@ -21,17 +21,12 @@
|
||||
"Generate files/Ancestor Chart"
|
||||
|
||||
import Config
|
||||
import const
|
||||
import os
|
||||
import string
|
||||
import utils
|
||||
|
||||
from FontScale import string_width
|
||||
|
||||
from TextDoc import *
|
||||
from DrawDoc import *
|
||||
from StyleEditor import *
|
||||
import FindDoc
|
||||
from Report import *
|
||||
|
||||
import libglade
|
||||
import gtk
|
||||
@ -39,17 +34,6 @@ import gtk
|
||||
import intl
|
||||
_ = intl.gettext
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
active_person = None
|
||||
db = None
|
||||
styles = StyleSheet()
|
||||
style_sheet_list = None
|
||||
topDialog = None
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# pt2cm - convert points to centimeters
|
||||
@ -63,14 +47,14 @@ def pt2cm(pt):
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class AncestorReport:
|
||||
class AncestorChart:
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#--------------------------------------------------------------------
|
||||
def __init__(self,database,display,person,output,doc,max):
|
||||
def __init__(self,database,person,output,max,doc,display):
|
||||
self.doc = doc
|
||||
self.doc.creator(database.getResearcher().getName())
|
||||
self.map = {}
|
||||
@ -141,7 +125,6 @@ class AncestorReport:
|
||||
#
|
||||
#--------------------------------------------------------------------
|
||||
def write_report(self):
|
||||
|
||||
self.calc()
|
||||
try:
|
||||
self.doc.open(self.output)
|
||||
@ -256,114 +239,81 @@ class AncestorReport:
|
||||
self.draw_graph(index*2,start*2,level+1)
|
||||
self.draw_graph((index*2)+1,(start*2)+1,level+1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class AncestorChartDialog(DrawReportDialog):
|
||||
def __init__(self,database,person):
|
||||
ReportDialog.__init__(self,database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Ancestor Chart")
|
||||
|
||||
def get_header(self, name):
|
||||
"""The header line at the top of the dialog contents."""
|
||||
return _("Ancestor Chart for %s") % name
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Save Ancestor Chart")
|
||||
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where to save user defined styles for this report."""
|
||||
return "ancestor_chart.xml"
|
||||
|
||||
def get_report_generations(self):
|
||||
"""Default to 10 generations, no page breaks."""
|
||||
return (10, 0)
|
||||
|
||||
def get_report_extra_textbox_string(self):
|
||||
"""Label the textbox and provide the default contents."""
|
||||
return (_("Display Format"), "$n\nb. $b\nd. $d")
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create output styles appropriate to this report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Make the default output style for the Ancestor Chart report."""
|
||||
f = FontStyle()
|
||||
f.set_size(9)
|
||||
f.set_type_face(FONT_SANS_SERIF)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(f)
|
||||
self.default_style.add_style("Normal",p)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create the contents of the report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the Ancestor Chart.
|
||||
All user dialog has already been handled and the output file
|
||||
opened."""
|
||||
MyReport = AncestorChart(self.db, self.person, self.target_path,
|
||||
self.max_gen, self.doc, self.report_text)
|
||||
MyReport.write_report()
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
import PaperMenu
|
||||
|
||||
global style_sheet_list
|
||||
global active_person
|
||||
global topDialog
|
||||
global db
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
|
||||
base = os.path.dirname(__file__)
|
||||
glade_file = base + os.sep + "ancestorchart.glade"
|
||||
topDialog = libglade.GladeXML(glade_file,"dialog1")
|
||||
topDialog.get_widget("fileentry1").set_default_path(Config.report_dir)
|
||||
|
||||
name = person.getPrimaryName().getRegularName()
|
||||
|
||||
PaperMenu.make_paper_menu(topDialog.get_widget("papersize"))
|
||||
PaperMenu.make_orientation_menu(topDialog.get_widget("orientation"))
|
||||
FindDoc.get_draw_doc_menu(topDialog.get_widget("format"))
|
||||
|
||||
styles.clear()
|
||||
f = FontStyle()
|
||||
f.set_size(9)
|
||||
f.set_type_face(FONT_SANS_SERIF)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(f)
|
||||
styles.add_style("Normal",p)
|
||||
|
||||
style_sheet_list = StyleSheetList("ancestor_chart.xml",styles)
|
||||
build_menu(None)
|
||||
|
||||
title = _("Ancestor Chart for %s") % name
|
||||
topDialog.get_widget("labelTitle").set_text(title)
|
||||
topDialog.signal_autoconnect({
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_style_edit_clicked" : on_style_edit_clicked,
|
||||
"on_save_clicked" : on_save_clicked
|
||||
})
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def build_menu(object):
|
||||
menu = topDialog.get_widget("style_menu")
|
||||
|
||||
myMenu = gtk.GtkMenu()
|
||||
for style in style_sheet_list.get_style_names():
|
||||
menuitem = gtk.GtkMenuItem(style)
|
||||
menuitem.set_data("d",style_sheet_list.get_style_sheet(style))
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
menu.set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def option_switch(obj):
|
||||
pass
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(obj):
|
||||
StyleListDisplay(style_sheet_list,build_menu,None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_save_clicked(obj):
|
||||
global active_person
|
||||
global db
|
||||
|
||||
outputName = topDialog.get_widget("fileentry1").get_full_path(0)
|
||||
if outputName == "":
|
||||
return
|
||||
|
||||
paper_obj = topDialog.get_widget("papersize").get_menu().get_active()
|
||||
paper = paper_obj.get_data("i")
|
||||
orien_obj = topDialog.get_widget("orientation").get_menu().get_active()
|
||||
orien = orien_obj.get_data("i")
|
||||
max_gen = topDialog.get_widget("generations").get_value_as_int()
|
||||
text = topDialog.get_widget("display_text").get_chars(0,-1)
|
||||
text = string.split(text,'\n')
|
||||
|
||||
styles = topDialog.get_widget("style_menu").get_menu().get_active().get_data("d")
|
||||
item = topDialog.get_widget("format").get_menu().get_active()
|
||||
format = item.get_data("name")
|
||||
doc = FindDoc.make_draw_doc(styles,format,paper,orien)
|
||||
|
||||
MyReport = AncestorReport(db,text,active_person,outputName,doc,max_gen)
|
||||
MyReport.write_report()
|
||||
|
||||
utils.destroy_passed_object(obj)
|
||||
AncestorChartDialog(database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -21,19 +21,13 @@
|
||||
"Generate files/Ahnentafel Report"
|
||||
|
||||
import RelLib
|
||||
import const
|
||||
import os
|
||||
import string
|
||||
import utils
|
||||
import Config
|
||||
import intl
|
||||
|
||||
_ = intl.gettext
|
||||
|
||||
from TextDoc import *
|
||||
from StyleEditor import *
|
||||
|
||||
import FindDoc
|
||||
from Report import *
|
||||
|
||||
import gtk
|
||||
import gnome.ui
|
||||
@ -44,57 +38,14 @@ import libglade
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
active_person = None
|
||||
db = None
|
||||
styles = StyleSheet()
|
||||
style_sheet_list = None
|
||||
topDialog = None
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class AncestorReport:
|
||||
|
||||
gen = {
|
||||
1 : _("First"),
|
||||
2 : _("Second"),
|
||||
3 : _("Third"),
|
||||
4 : _("Fourth"),
|
||||
5 : _("Fifth"),
|
||||
6 : _("Sixth"),
|
||||
7 : _("Seventh"),
|
||||
8 : _("Eighth"),
|
||||
9 : _("Ninth"),
|
||||
10: _("Tenth"),
|
||||
11: _("Eleventh"),
|
||||
12: _("Twelfth"),
|
||||
13: _("Thirteenth"),
|
||||
14: _("Fourteenth"),
|
||||
15: _("Fifteenth"),
|
||||
16: _("Sixteenth"),
|
||||
17: _("Seventeenth"),
|
||||
18: _("Eightteenth"),
|
||||
19: _("Nineteenth"),
|
||||
20: _("Twentieth"),
|
||||
21: _("Twenty-first"),
|
||||
22: _("Twenty-second"),
|
||||
23: _("Twenty-third"),
|
||||
24: _("Twenty-fourth"),
|
||||
25: _("Twenty-fifth"),
|
||||
26: _("Twenty-sixth"),
|
||||
27: _("Twenty-seventh"),
|
||||
28: _("Twenty-eighth"),
|
||||
29: _("Twenty-ninth")
|
||||
}
|
||||
class AncestorReport(Report):
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#--------------------------------------------------------------------
|
||||
def __init__(self,database,person,output,max,pgbrk,doc):
|
||||
def __init__(self,database,person,output,max,doc,pgbrk):
|
||||
self.map = {}
|
||||
self.database = database
|
||||
self.start = person
|
||||
@ -268,135 +219,86 @@ class AncestorReport:
|
||||
self.doc.close()
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class AncestorReportDialog(TextReportDialog):
|
||||
def __init__(self,database,person):
|
||||
ReportDialog.__init__(self,database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Ahnentafel Report")
|
||||
|
||||
def get_header(self, name):
|
||||
"""The header line at the top of the dialog contents"""
|
||||
return _("Ahnentafel Report for %s") % name
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Save Ancestor Report")
|
||||
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where to save styles for this report."""
|
||||
return "ancestor_report.xml"
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create output styles appropriate to this report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Make the default output style for the Ahnentafel report."""
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=16,bold=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(1)
|
||||
para.set(pad=0.5)
|
||||
self.default_style.add_style("Title",para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=14,italic=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(2)
|
||||
para.set(pad=0.5)
|
||||
self.default_style.add_style("Generation",para)
|
||||
|
||||
para = ParagraphStyle()
|
||||
para.set(first_indent=-1.0,lmargin=1.0,pad=0.25)
|
||||
self.default_style.add_style("Entry",para)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create the contents of the report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the Ahnentafel Report.
|
||||
All user dialog has already been handled and the output file
|
||||
opened."""
|
||||
MyReport = AncestorReport(self.db, self.person, self.target_path,
|
||||
self.max_gen, self.doc, self.pg_brk)
|
||||
MyReport.write_report()
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
import PaperMenu
|
||||
|
||||
global active_person
|
||||
global topDialog
|
||||
global db
|
||||
global style_sheet_list
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
AncestorReportDialog(database,person)
|
||||
|
||||
base = os.path.dirname(__file__)
|
||||
glade_file = base + os.sep + "ancestorreport.glade"
|
||||
topDialog = libglade.GladeXML(glade_file,"dialog1")
|
||||
topDialog.get_widget("fileentry1").set_default_path(Config.report_dir)
|
||||
|
||||
name = person.getPrimaryName().getRegularName()
|
||||
|
||||
PaperMenu.make_paper_menu(topDialog.get_widget("papersize"))
|
||||
PaperMenu.make_orientation_menu(topDialog.get_widget("orientation"))
|
||||
FindDoc.get_text_doc_menu(topDialog.get_widget("format"),0,option_switch)
|
||||
|
||||
styles.clear()
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=16,bold=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(1)
|
||||
para.set(pad=0.5)
|
||||
styles.add_style("Title",para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=14,italic=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(2)
|
||||
para.set(pad=0.5)
|
||||
styles.add_style("Generation",para)
|
||||
|
||||
para = ParagraphStyle()
|
||||
para.set(first_indent=-1.0,lmargin=1.0,pad=0.25)
|
||||
styles.add_style("Entry",para)
|
||||
|
||||
style_sheet_list = StyleSheetList("ancestor_report.xml",styles)
|
||||
build_menu(None)
|
||||
|
||||
topDialog.get_widget("labelTitle").set_text(_("Ahnentafel Report for %s") % name)
|
||||
topDialog.signal_autoconnect({
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_style_edit_clicked" : on_style_edit_clicked,
|
||||
"on_save_clicked" : on_save_clicked
|
||||
})
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def build_menu(object):
|
||||
menu = topDialog.get_widget("style_menu")
|
||||
|
||||
myMenu = gtk.GtkMenu()
|
||||
for style in style_sheet_list.get_style_names():
|
||||
menuitem = gtk.GtkMenuItem(style)
|
||||
menuitem.set_data("d",style_sheet_list.get_style_sheet(style))
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
menu.set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def option_switch(obj):
|
||||
val = obj.get_data("paper")
|
||||
st = obj.get_data("styles")
|
||||
notebook = topDialog.get_widget("option_notebook")
|
||||
if val == 1:
|
||||
notebook.set_page(0)
|
||||
else:
|
||||
notebook.set_page(1)
|
||||
topDialog.get_widget("style_frame").set_sensitive(st)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(obj):
|
||||
StyleListDisplay(style_sheet_list,build_menu,None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_save_clicked(obj):
|
||||
global active_person
|
||||
global db
|
||||
|
||||
outputName = topDialog.get_widget("fileentry1").get_full_path(0)
|
||||
if not outputName:
|
||||
return
|
||||
|
||||
max_gen = topDialog.get_widget("generations").get_value_as_int()
|
||||
pgbrk = topDialog.get_widget("pagebreak").get_active()
|
||||
template = topDialog.get_widget("htmltemplate").get_full_path(0)
|
||||
paper_obj = topDialog.get_widget("papersize").get_menu().get_active()
|
||||
paper = paper_obj.get_data("i")
|
||||
orien_obj = topDialog.get_widget("orientation").get_menu().get_active()
|
||||
orien = orien_obj.get_data("i")
|
||||
|
||||
item = topDialog.get_widget("format").get_menu().get_active()
|
||||
format = item.get_data("name")
|
||||
|
||||
styles = topDialog.get_widget("style_menu").get_menu().get_active().get_data("d")
|
||||
|
||||
doc = FindDoc.make_text_doc(styles,format,paper,orien,template)
|
||||
|
||||
MyReport = AncestorReport(db,active_person,outputName,max_gen,pgbrk,doc)
|
||||
MyReport.write_report()
|
||||
|
||||
utils.destroy_passed_object(obj)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -27,12 +27,7 @@ import intl
|
||||
|
||||
_ = intl.gettext
|
||||
|
||||
import const
|
||||
import Config
|
||||
import utils
|
||||
from TextDoc import *
|
||||
from StyleEditor import *
|
||||
import FindDoc
|
||||
from Report import *
|
||||
|
||||
import gtk
|
||||
import libglade
|
||||
@ -49,10 +44,11 @@ class DescendantReport:
|
||||
#
|
||||
#
|
||||
#--------------------------------------------------------------------
|
||||
def __init__(self,name,person,db,doc):
|
||||
def __init__(self,db,person,name,max,doc):
|
||||
self.creator = db.getResearcher().getName()
|
||||
self.name = name
|
||||
self.person = person
|
||||
self.max_generations = max
|
||||
self.doc = doc
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
@ -116,6 +112,9 @@ class DescendantReport:
|
||||
self.dump_dates(person)
|
||||
self.doc.end_paragraph()
|
||||
|
||||
if (level >= self.max_generations):
|
||||
return
|
||||
|
||||
childlist = []
|
||||
for family in person.getFamilyList():
|
||||
for child in family.getChildList():
|
||||
@ -130,30 +129,39 @@ class DescendantReport:
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class DesReportWindow:
|
||||
def __init__(self,person,db):
|
||||
import PaperMenu
|
||||
|
||||
self.person = person
|
||||
class DescendantReportDialog(TextReportDialog):
|
||||
def __init__(self,person,database):
|
||||
ReportDialog.__init__(self,database,person)
|
||||
|
||||
glade_file = os.path.dirname(__file__) + os.sep + "desreport.glade"
|
||||
self.top = libglade.GladeXML(glade_file,"dialog1")
|
||||
self.top.get_widget("fileentry1").set_default_path(Config.report_dir)
|
||||
self.top.signal_autoconnect({
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_style_edit_clicked" : on_style_edit_clicked,
|
||||
"on_save_clicked": on_save_clicked
|
||||
})
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Descendant Report")
|
||||
|
||||
notebook = self.top.get_widget("option_notebook")
|
||||
notebook.set_data("frame",self.top.get_widget("style_frame"))
|
||||
PaperMenu.make_paper_menu(self.top.get_widget("papersize"))
|
||||
PaperMenu.make_orientation_menu(self.top.get_widget("orientation"))
|
||||
FindDoc.get_text_doc_menu(self.top.get_widget("format"),0,\
|
||||
option_switch,notebook)
|
||||
|
||||
mytop = self.top.get_widget("dialog1")
|
||||
def get_header(self, name):
|
||||
"""The header line at the top of the dialog contents"""
|
||||
return _("Descendant Report for %s") % name
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Save Descendant Report")
|
||||
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where to save styles for this report."""
|
||||
return "descend_report.xml"
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create output styles appropriate to this report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Make the default output style for the Descendant Report."""
|
||||
f = FontStyle()
|
||||
f.set_size(14)
|
||||
f.set_type_face(FONT_SANS_SERIF)
|
||||
@ -161,56 +169,29 @@ class DesReportWindow:
|
||||
p = ParagraphStyle()
|
||||
p.set_header_level(1)
|
||||
p.set_font(f)
|
||||
|
||||
sheet = StyleSheet()
|
||||
sheet.add_style("Title",p)
|
||||
self.default_style.add_style("Title",p)
|
||||
|
||||
f = FontStyle()
|
||||
for i in range(1,10):
|
||||
p = ParagraphStyle()
|
||||
p.set_font(f)
|
||||
p.set_left_margin(float(i-1))
|
||||
sheet.add_style("Level" + str(i),p)
|
||||
self.default_style.add_style("Level" + str(i),p)
|
||||
|
||||
self.style_sheet_list = StyleSheetList("descend_report.xml",sheet)
|
||||
build_menu(self)
|
||||
|
||||
mytop.set_data("o",self)
|
||||
mytop.set_data("d",db)
|
||||
mytop.show()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def build_menu(object):
|
||||
|
||||
myMenu = gtk.GtkMenu()
|
||||
|
||||
for style in object.style_sheet_list.get_style_names():
|
||||
menuitem = gtk.GtkMenuItem(style)
|
||||
menuitem.set_data("d",object.style_sheet_list.get_style_sheet(style))
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
|
||||
object.top.get_widget("style_menu").set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def option_switch(obj):
|
||||
val = obj.get_data("paper")
|
||||
st = obj.get_data("styles")
|
||||
notebook = obj.get_data("obj")
|
||||
frame = notebook.get_data("frame")
|
||||
if val == 1:
|
||||
notebook.set_page(0)
|
||||
else:
|
||||
notebook.set_page(1)
|
||||
frame.set_sensitive(st)
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create the contents of the report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the Descendant Report.
|
||||
All user dialog has already been handled and the output file
|
||||
opened."""
|
||||
MyReport = DescendantReport(self.db, self.person, self.target_path,
|
||||
self.max_gen, self.doc)
|
||||
MyReport.setup()
|
||||
MyReport.report()
|
||||
MyReport.end()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
@ -218,50 +199,7 @@ def option_switch(obj):
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
DesReportWindow(person,database)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(obj):
|
||||
myobj = obj.get_data("o")
|
||||
StyleListDisplay(myobj.style_sheet_list,build_menu,myobj)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def on_save_clicked(obj):
|
||||
myobj = obj.get_data("o")
|
||||
db = obj.get_data("d")
|
||||
|
||||
file = myobj.top.get_widget("fileentry1").get_full_path(0)
|
||||
if file == "":
|
||||
return
|
||||
|
||||
paper_obj = myobj.top.get_widget("papersize")
|
||||
paper = paper_obj.get_menu().get_active().get_data("i")
|
||||
|
||||
orien_obj = myobj.top.get_widget("orientation")
|
||||
orien = orien_obj.get_menu().get_active().get_data("i")
|
||||
|
||||
template = myobj.top.get_widget("htmltemplate").get_full_path(0)
|
||||
|
||||
item = myobj.top.get_widget("format").get_menu().get_active()
|
||||
format = item.get_data("name")
|
||||
|
||||
styles = myobj.top.get_widget("style_menu").get_menu().get_active().get_data("d")
|
||||
doc = FindDoc.make_text_doc(styles,format,paper,orien,template)
|
||||
|
||||
report = DescendantReport(file,myobj.person,db,doc)
|
||||
report.setup()
|
||||
report.report()
|
||||
report.end()
|
||||
|
||||
utils.destroy_passed_object(obj)
|
||||
DescendantReportDialog(person,database)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -22,20 +22,13 @@
|
||||
"Generate files/Detailed Ancestral Report"
|
||||
|
||||
import RelLib
|
||||
import const
|
||||
import os
|
||||
import re
|
||||
import sort
|
||||
import string
|
||||
import utils
|
||||
import intl
|
||||
|
||||
_ = intl.gettext
|
||||
|
||||
from TextDoc import *
|
||||
from StyleEditor import *
|
||||
|
||||
import FindDoc
|
||||
from Report import *
|
||||
|
||||
import gtk
|
||||
import gnome.ui
|
||||
@ -46,50 +39,8 @@ import libglade
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
active_person = None
|
||||
db = None
|
||||
styles = StyleSheet()
|
||||
style_sheet_list = None
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class DetAncestorReport:
|
||||
|
||||
gen = {
|
||||
1 : _("First"),
|
||||
2 : _("Second"),
|
||||
3 : _("Third"),
|
||||
4 : _("Fourth"),
|
||||
5 : _("Fifth"),
|
||||
6 : _("Sixth"),
|
||||
7 : _("Seventh"),
|
||||
8 : _("Eighth"),
|
||||
9 : _("Ninth"),
|
||||
10: _("Tenth"),
|
||||
11: _("Eleventh"),
|
||||
12: _("Twelfth"),
|
||||
13: _("Thirteenth"),
|
||||
14: _("Fourteenth"),
|
||||
15: _("Fifteenth"),
|
||||
16: _("Sixteenth"),
|
||||
17: _("Seventeenth"),
|
||||
18: _("Eightteenth"),
|
||||
19: _("Nineteenth"),
|
||||
20: _("Twentieth"),
|
||||
21: _("Twenty-first"),
|
||||
22: _("Twenty-second"),
|
||||
23: _("Twenty-third"),
|
||||
24: _("Twenty-fourth"),
|
||||
25: _("Twenty-fifth"),
|
||||
26: _("Twenty-sixth"),
|
||||
27: _("Twenty-seventh"),
|
||||
28: _("Twenty-eighth"),
|
||||
29: _("Twenty-ninth")
|
||||
}
|
||||
|
||||
class DetAncestorReport(Report):
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
@ -484,154 +435,104 @@ class DetAncestorReport:
|
||||
|
||||
self.doc.close()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class DetAncestorReportDialog(TextReportDialog):
|
||||
def __init__(self,database,person):
|
||||
ReportDialog.__init__(self,database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Ahnentafel Report")
|
||||
|
||||
def get_header(self, name):
|
||||
"""The header line at the top of the dialog contents"""
|
||||
return _("Detailed Ancestral Report for %s") % name
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Save Ancestor Report")
|
||||
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where to save styles for this report."""
|
||||
return "det_ancestor_report.xml"
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create output styles appropriate to this report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Make the default output style for the Detailed Ancestral Report"""
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=16,bold=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(1)
|
||||
para.set(pad=0.5)
|
||||
self.default_style.add_style("Title",para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=14,italic=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(2)
|
||||
para.set(pad=0.5)
|
||||
self.default_style.add_style("Generation",para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(3)
|
||||
para.set_left_margin(1.0) # in centimeters
|
||||
para.set(pad=0.5)
|
||||
self.default_style.add_style("ChildTitle",para)
|
||||
|
||||
para = ParagraphStyle()
|
||||
para.set(first_indent=1.0,lmargin=0.0,pad=0.25)
|
||||
self.default_style.add_style("ChildList",para)
|
||||
|
||||
para = ParagraphStyle()
|
||||
para.set(first_indent=-1.0,lmargin=1.0,pad=0.25)
|
||||
self.default_style.add_style("Entry",para)
|
||||
|
||||
table = TableStyle()
|
||||
table.set_width(1000)
|
||||
table.set_columns(3)
|
||||
table.set_column_width(1,"30%")
|
||||
#self.default_style.add_style("Images",table)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create the contents of the report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the Detailed Ancestral
|
||||
Report. All user dialog has already been handled and the
|
||||
output file opened."""
|
||||
MyReport = DetAncestorReport(self.db, self.person, self.target_path,
|
||||
self.max_gen, self.pg_brk, self.doc)
|
||||
MyReport.write_report()
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
import PaperMenu
|
||||
|
||||
global active_person
|
||||
global topDialog
|
||||
global glade_file
|
||||
global db
|
||||
global style_sheet_list
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
|
||||
base = os.path.dirname(__file__)
|
||||
glade_file = base + os.sep + "ancestorreport.glade"
|
||||
topDialog = libglade.GladeXML(glade_file,"dialog1")
|
||||
|
||||
name = person.getPrimaryName().getRegularName()
|
||||
|
||||
PaperMenu.make_paper_menu(topDialog.get_widget("papersize"))
|
||||
PaperMenu.make_orientation_menu(topDialog.get_widget("orientation"))
|
||||
FindDoc.get_text_doc_menu(topDialog.get_widget("format"),0,option_switch)
|
||||
|
||||
styles.clear()
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=16,bold=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(1)
|
||||
para.set(pad=0.5)
|
||||
styles.add_style("Title",para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=14,italic=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(2)
|
||||
para.set(pad=0.5)
|
||||
styles.add_style("Generation",para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
para.set_header_level(3)
|
||||
para.set_left_margin(1.0) # in centimeters
|
||||
para.set(pad=0.5)
|
||||
styles.add_style("ChildTitle",para)
|
||||
|
||||
para = ParagraphStyle()
|
||||
para.set(first_indent=1.0,lmargin=0.0,pad=0.25)
|
||||
styles.add_style("ChildList",para)
|
||||
|
||||
para = ParagraphStyle()
|
||||
para.set(first_indent=-1.0,lmargin=1.0,pad=0.25)
|
||||
styles.add_style("Entry",para)
|
||||
|
||||
table = TableStyle()
|
||||
table.set_width(1000)
|
||||
table.set_columns(3)
|
||||
table.set_column_width(1,"30%")
|
||||
#add_table_style("Images",table)
|
||||
|
||||
style_sheet_list = StyleSheetList("det_ancestor_report.xml",styles)
|
||||
build_menu(None)
|
||||
|
||||
topDialog.get_widget("labelTitle").set_text(_("Detailed Ancestral Report for %s") % name)
|
||||
topDialog.signal_autoconnect({
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_style_edit_clicked" : on_style_edit_clicked,
|
||||
"on_save_clicked" : on_save_clicked
|
||||
})
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def build_menu(object):
|
||||
menu = topDialog.get_widget("style_menu")
|
||||
|
||||
myMenu = gtk.GtkMenu()
|
||||
for style in style_sheet_list.get_style_names():
|
||||
menuitem = gtk.GtkMenuItem(style)
|
||||
menuitem.set_data("d",style_sheet_list.get_style_sheet(style))
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
menu.set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def option_switch(obj):
|
||||
val = obj.get_data("paper")
|
||||
st = obj.get_data("styles")
|
||||
notebook = topDialog.get_widget("option_notebook")
|
||||
if val == 1:
|
||||
notebook.set_page(0)
|
||||
else:
|
||||
notebook.set_page(1)
|
||||
topDialog.get_widget("style_frame").set_sensitive(st)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(obj):
|
||||
StyleListDisplay(style_sheet_list,build_menu,None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_save_clicked(obj):
|
||||
global active_person
|
||||
global db
|
||||
|
||||
outputName = topDialog.get_widget("fileentry1").get_full_path(0)
|
||||
if not outputName:
|
||||
return
|
||||
|
||||
max_gen = topDialog.get_widget("generations").get_value_as_int()
|
||||
pgbrk = topDialog.get_widget("pagebreak").get_active()
|
||||
template = topDialog.get_widget("htmltemplate").get_full_path(0)
|
||||
paper_obj = topDialog.get_widget("papersize").get_menu().get_active()
|
||||
paper = paper_obj.get_data("i")
|
||||
orien_obj = topDialog.get_widget("orientation").get_menu().get_active()
|
||||
orien = orien_obj.get_data("i")
|
||||
|
||||
item = topDialog.get_widget("format").get_menu().get_active()
|
||||
format = item.get_data("name")
|
||||
|
||||
styles = topDialog.get_widget("style_menu").get_menu().get_active().get_data("d")
|
||||
|
||||
doc = FindDoc.make_text_doc(styles,format,paper,orien,template)
|
||||
|
||||
MyReport = DetAncestorReport(db,active_person,outputName,max_gen,pgbrk,doc)
|
||||
MyReport.write_report()
|
||||
|
||||
utils.destroy_passed_object(obj)
|
||||
DetAncestorReportDialog(database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -21,32 +21,15 @@
|
||||
"Generate files/Family Group Report"
|
||||
|
||||
import RelLib
|
||||
import const
|
||||
import os
|
||||
import string
|
||||
import FindDoc
|
||||
import utils
|
||||
import intl
|
||||
import Config
|
||||
_ = intl.gettext
|
||||
|
||||
from TextDoc import *
|
||||
from StyleEditor import *
|
||||
from Report import *
|
||||
|
||||
import gtk
|
||||
import libglade
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
active_person = None
|
||||
db = None
|
||||
styles = StyleSheet()
|
||||
style_sheet_list = None
|
||||
topDialog = None
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
@ -336,177 +319,132 @@ class FamilyGroup:
|
||||
self.doc.end_table()
|
||||
self.end()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class FamilyGroupDialog(TextReportDialog):
|
||||
def __init__(self,database,person):
|
||||
ReportDialog.__init__(self,database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Family Group Report")
|
||||
|
||||
def get_header(self, name):
|
||||
"""The header line at the top of the dialog contents"""
|
||||
return _("Family Group Report for %s") % name
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Save Family Group Report")
|
||||
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where to save styles for this report."""
|
||||
return "family_group.xml"
|
||||
|
||||
def doc_uses_tables(self):
|
||||
"""This report requires table support."""
|
||||
return 1
|
||||
|
||||
def get_report_generations(self):
|
||||
"""No generation options."""
|
||||
return (0, 0)
|
||||
|
||||
def get_report_extra_menu_map(self):
|
||||
"""Create a mapping of all spouse names:families to be put
|
||||
into the 'extra' option menu in the report options box. If
|
||||
the selected person has never been married then this routine
|
||||
will return a placebo label and disable the OK button."""
|
||||
mapping = {}
|
||||
family_list = self.person.getFamilyList()
|
||||
if not family_list:
|
||||
mapping[_("No known marriages")] = None
|
||||
self.topDialog.get_widget("OK").set_sensitive(0)
|
||||
for family in family_list:
|
||||
if self.person == family.getFather():
|
||||
spouse = family.getMother()
|
||||
else:
|
||||
spouse = family.getFather()
|
||||
if spouse:
|
||||
name = spouse.getPrimaryName().getName()
|
||||
else:
|
||||
name= _("unknown")
|
||||
mapping[name] = family
|
||||
return (_("Spouse"), mapping, None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create output styles appropriate to this report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Make default output style for the Family Group Report."""
|
||||
para = ParagraphStyle()
|
||||
font = FontStyle()
|
||||
font.set_size(4)
|
||||
para.set_font(font)
|
||||
self.default_style.add_style('blank',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(16)
|
||||
font.set_bold(1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
self.default_style.add_style('Title',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SERIF)
|
||||
font.set_size(10)
|
||||
font.set_bold(0)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
self.default_style.add_style('Normal',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(10)
|
||||
font.set_bold(1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
self.default_style.add_style('ChildText',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(12)
|
||||
font.set_bold(1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
self.default_style.add_style('ParentName',para)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create the contents of the report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the Ancestor Chart.
|
||||
All user dialog has already been handled and the output file
|
||||
opened."""
|
||||
MyReport = FamilyGroup(self.db, self.report_menu, self.target_path, self.doc)
|
||||
MyReport.setup()
|
||||
MyReport.write_report()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
import PaperMenu
|
||||
|
||||
global active_person
|
||||
global topDialog
|
||||
global db
|
||||
global style_sheet_list
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
|
||||
glade_file = "%s/familygroup.glade" % os.path.dirname(__file__)
|
||||
topDialog = libglade.GladeXML(glade_file,"dialog1")
|
||||
topDialog.get_widget("fileentry1").set_default_path(Config.report_dir)
|
||||
|
||||
name = person.getPrimaryName().getRegularName()
|
||||
family_list = person.getFamilyList()
|
||||
label = topDialog.get_widget("labelTitle")
|
||||
|
||||
label.set_text(_("Family Group Report for %s") % name)
|
||||
topDialog.signal_autoconnect({
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_style_edit_clicked" : on_style_edit_clicked,
|
||||
"on_save_clicked" : on_save_clicked
|
||||
})
|
||||
|
||||
PaperMenu.make_paper_menu(topDialog.get_widget("papersize"))
|
||||
PaperMenu.make_orientation_menu(topDialog.get_widget("orientation"))
|
||||
FindDoc.get_text_doc_menu(topDialog.get_widget("format"),1,option_switch)
|
||||
styles.clear()
|
||||
|
||||
para = ParagraphStyle()
|
||||
font = FontStyle()
|
||||
font.set_size(4)
|
||||
para.set_font(font)
|
||||
styles.add_style('blank',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(16)
|
||||
font.set_bold(1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
styles.add_style('Title',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SERIF)
|
||||
font.set_size(10)
|
||||
font.set_bold(0)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
styles.add_style('Normal',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(10)
|
||||
font.set_bold(1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
styles.add_style('ChildText',para)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(12)
|
||||
font.set_bold(1)
|
||||
para = ParagraphStyle()
|
||||
para.set_font(font)
|
||||
styles.add_style('ParentName',para)
|
||||
style_sheet_list = StyleSheetList("family_group.xml",styles)
|
||||
build_menu(None)
|
||||
|
||||
frame = topDialog.get_widget("spouse")
|
||||
option_menu = topDialog.get_widget("spouse_menu")
|
||||
|
||||
if len(family_list) > 1:
|
||||
frame.show()
|
||||
else:
|
||||
frame.hide()
|
||||
|
||||
my_menu = gtk.GtkMenu()
|
||||
for family in family_list:
|
||||
if person == family.getFather():
|
||||
spouse = family.getMother()
|
||||
else:
|
||||
spouse = family.getFather()
|
||||
if spouse:
|
||||
item = gtk.GtkMenuItem(spouse.getPrimaryName().getName())
|
||||
else:
|
||||
item = gtk.GtkMenuItem("unknown")
|
||||
item.set_data("f",family)
|
||||
item.show()
|
||||
my_menu.append(item)
|
||||
option_menu.set_menu(my_menu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(obj):
|
||||
StyleListDisplay(style_sheet_list,build_menu,None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def build_menu(object):
|
||||
menu = topDialog.get_widget("style_menu")
|
||||
|
||||
myMenu = gtk.GtkMenu()
|
||||
for style in style_sheet_list.get_style_names():
|
||||
menuitem = gtk.GtkMenuItem(style)
|
||||
menuitem.set_data("d",style_sheet_list.get_style_sheet(style))
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
menu.set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def option_switch(obj):
|
||||
val = obj.get_data("paper")
|
||||
st = obj.get_data("styles")
|
||||
notebook = topDialog.get_widget("option_notebook")
|
||||
|
||||
if val == 1:
|
||||
notebook.set_page(0)
|
||||
else:
|
||||
notebook.set_page(1)
|
||||
topDialog.get_widget("style_frame").set_sensitive(st)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_save_clicked(obj):
|
||||
global active_person
|
||||
global db
|
||||
|
||||
outputName = topDialog.get_widget("fileentry1").get_full_path(0)
|
||||
if not outputName:
|
||||
return
|
||||
|
||||
menu = topDialog.get_widget("spouse_menu").get_menu()
|
||||
family = menu.get_active().get_data("f")
|
||||
paper_obj = topDialog.get_widget("papersize")
|
||||
paper = paper_obj.get_menu().get_active().get_data("i")
|
||||
orien_obj = topDialog.get_widget("orientation")
|
||||
orien = orien_obj.get_menu().get_active().get_data("i")
|
||||
template = topDialog.get_widget("htmlfile").get_text()
|
||||
|
||||
item = topDialog.get_widget("format").get_menu().get_active()
|
||||
format = item.get_data("name")
|
||||
|
||||
doc = FindDoc.make_text_doc(styles,format,paper,orien,template)
|
||||
|
||||
MyReport = FamilyGroup(db,family,outputName,doc)
|
||||
|
||||
MyReport.setup()
|
||||
MyReport.write_report()
|
||||
|
||||
utils.destroy_passed_object(obj)
|
||||
FamilyGroupDialog(database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -21,17 +21,13 @@
|
||||
"Generate files/Relationship graph"
|
||||
|
||||
import os
|
||||
import utils
|
||||
import intl
|
||||
|
||||
_ = intl.gettext
|
||||
|
||||
import libglade
|
||||
from Report import *
|
||||
|
||||
active_person = None
|
||||
db = None
|
||||
topDialog = None
|
||||
glade_file = None
|
||||
ind_list = []
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
@ -39,49 +35,54 @@ ind_list = []
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def ancestor_filter(database,person,list):
|
||||
def ancestor_filter(database,person,list,generations):
|
||||
|
||||
if person == None:
|
||||
return
|
||||
if person not in list:
|
||||
list.append(person)
|
||||
if generations <= 1:
|
||||
return
|
||||
|
||||
family = person.getMainFamily()
|
||||
if family != None:
|
||||
ancestor_filter(database,family.getFather(),list)
|
||||
ancestor_filter(database,family.getMother(),list)
|
||||
ancestor_filter(database,family.getFather(),list,generations-1)
|
||||
ancestor_filter(database,family.getMother(),list,generations-1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def descendant_filter(database,person,list):
|
||||
def descendant_filter(database,person,list,generations):
|
||||
|
||||
if person == None:
|
||||
return
|
||||
if person not in list:
|
||||
list.append(person)
|
||||
|
||||
if generations <= 1:
|
||||
return
|
||||
|
||||
for family in person.getFamilyList():
|
||||
for child in family.getChildList():
|
||||
descendant_filter(database,child,list)
|
||||
descendant_filter(database,child,list,generations-1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def an_des_filter(database,person,list):
|
||||
def an_des_filter(database,person,list,generations):
|
||||
|
||||
descendant_filter(database,person,list)
|
||||
ancestor_filter(database,person,list)
|
||||
descendant_filter(database,person,list,generations)
|
||||
ancestor_filter(database,person,list,generations)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def entire_db_filter(database,person,list):
|
||||
def entire_db_filter(database,person,list,generations):
|
||||
|
||||
for entry in database.getPersonMap().values():
|
||||
list.append(entry)
|
||||
@ -99,100 +100,136 @@ filter_map = {
|
||||
_("Entire Database") : entire_db_filter
|
||||
}
|
||||
|
||||
_scaled = 0
|
||||
_single = 1
|
||||
_multiple = 2
|
||||
|
||||
pagecount_map = {
|
||||
_("Single (scaled)") : _scaled,
|
||||
_("Single") : _single,
|
||||
_("Multiple") : _multiple,
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class GraphVizDialog(ReportDialog):
|
||||
def __init__(self,database,person):
|
||||
ReportDialog.__init__(self,database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Generate Relationship Graphs")
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Graphviz File")
|
||||
|
||||
def get_print_pagecount_map(self):
|
||||
"""Set up the list of possible page counts."""
|
||||
return (pagecount_map, _("Single (scaled)"))
|
||||
|
||||
def get_report_generations(self):
|
||||
"""Default to 10 generations, no page breaks."""
|
||||
return (10, 0)
|
||||
|
||||
def get_report_filter_strings(self):
|
||||
"""Set up the list of possible content filters."""
|
||||
return filter_map.keys()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to selecting/changing the current file format
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_doc_menu(self):
|
||||
"""Build a one item menu of document types that are
|
||||
appropriate for this report."""
|
||||
map = {"Graphviz (dot)" : None}
|
||||
myMenu = utils.build_string_optmenu(map, None)
|
||||
self.format_menu.set_menu(myMenu)
|
||||
|
||||
def make_document(self):
|
||||
"""Do Nothing. This document will be created in the
|
||||
make_report routine."""
|
||||
pass
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to setting up the dialog window
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def setup_style_frame(self):
|
||||
"""The style frame is not used in this dialog."""
|
||||
self.topDialog.get_widget("style_frame").hide()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to retrieving data from the dialog window
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def parse_style_frame(self):
|
||||
"""The style frame is not used in this dialog."""
|
||||
pass
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to creating the actual report document.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the GraphViz file."""
|
||||
width = self.paper.get_width_inches()
|
||||
height = self.paper.get_height_inches()
|
||||
|
||||
file = open(self.target_path,"w")
|
||||
|
||||
filter = filter_map[self.filter]
|
||||
ind_list = []
|
||||
|
||||
filter(self.db,self.person,ind_list,self.max_gen)
|
||||
|
||||
file.write("digraph g {\n")
|
||||
file.write("bgcolor=white;\n")
|
||||
file.write("rankdir=LR;\n")
|
||||
file.write("center=1;\n")
|
||||
|
||||
if self.pagecount == _scaled:
|
||||
file.write("size=\"%3.1fin,%3.1fin\";\n" % (width-0.5,height-0.5))
|
||||
file.write("ratio=compress;\n")
|
||||
else:
|
||||
file.write("ratio=auto;\n")
|
||||
|
||||
if self.pagecount == _multiple:
|
||||
file.write("page=\"%3.1f,%3.1f\";\n" % (width,height))
|
||||
|
||||
if self.orien == PAPER_PORTRAIT:
|
||||
file.write("orientation=portrait;\n")
|
||||
else:
|
||||
file.write("orientation=landscape;\n")
|
||||
|
||||
if len(ind_list) > 1:
|
||||
dump_index(ind_list,file)
|
||||
dump_person(ind_list,file)
|
||||
|
||||
file.write("}\n")
|
||||
file.close()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
global active_person
|
||||
global topDialog
|
||||
global glade_file
|
||||
global db
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
|
||||
base = os.path.dirname(__file__)
|
||||
glade_file = base + os.sep + "graphviz.glade"
|
||||
dic = {
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_ok_clicked" : on_ok_clicked,
|
||||
}
|
||||
|
||||
topDialog = libglade.GladeXML(glade_file,"top")
|
||||
topDialog.signal_autoconnect(dic)
|
||||
|
||||
top = topDialog.get_widget("top")
|
||||
topDialog.get_widget("targetDirectory").set_default_path(os.getcwd())
|
||||
filterName = topDialog.get_widget("filterName")
|
||||
popdown_strings = filter_map.keys()
|
||||
popdown_strings.sort()
|
||||
filterName.set_popdown_strings(popdown_strings)
|
||||
|
||||
name = person.getPrimaryName().getName()
|
||||
topDialog.get_widget("personName").set_text(name)
|
||||
|
||||
top.show()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_ok_clicked(obj):
|
||||
global active_person
|
||||
global filter_map
|
||||
global db
|
||||
global glade_file
|
||||
global ind_list
|
||||
|
||||
filterName = topDialog.get_widget("filter").get_text()
|
||||
file_name = topDialog.get_widget("filename").get_text()
|
||||
if file_name == "":
|
||||
return
|
||||
|
||||
paper = topDialog.get_widget("paper")
|
||||
multi = topDialog.get_widget("multi").get_active()
|
||||
scaled = topDialog.get_widget("scaled").get_active()
|
||||
portrait = topDialog.get_widget("portrait").get_active()
|
||||
|
||||
width = paper.get_width()/72.0
|
||||
height = paper.get_height()/72.0
|
||||
|
||||
file = open(file_name,"w")
|
||||
|
||||
filter = filter_map[filterName]
|
||||
ind_list = []
|
||||
|
||||
filter(db,active_person,ind_list)
|
||||
|
||||
file.write("digraph g {\n")
|
||||
file.write("bgcolor=white;\n")
|
||||
file.write("rankdir=LR;\n")
|
||||
file.write("center=1;\n")
|
||||
|
||||
if scaled == 1:
|
||||
file.write("size=\"%3.1fin,%3.1fin\";\n" % (width-0.5,height-0.5))
|
||||
file.write("ratio=compress;\n")
|
||||
else:
|
||||
file.write("ratio=auto;\n")
|
||||
|
||||
if multi == 1:
|
||||
file.write("page=\"%3.1f,%3.1f\";\n" % (width,height))
|
||||
|
||||
if portrait == 1:
|
||||
file.write("orientation=portrait;\n")
|
||||
else:
|
||||
file.write("orientation=landscape;\n")
|
||||
|
||||
if len(ind_list) > 1:
|
||||
dump_index(ind_list,file)
|
||||
dump_person(ind_list,file)
|
||||
|
||||
file.write("}\n")
|
||||
file.close()
|
||||
utils.destroy_passed_object(obj)
|
||||
GraphVizDialog(database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -32,21 +32,11 @@ _ = intl.gettext
|
||||
|
||||
from TextDoc import *
|
||||
from StyleEditor import *
|
||||
import FindDoc
|
||||
from Report import *
|
||||
|
||||
import gtk
|
||||
import libglade
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
active_person = None
|
||||
db = None
|
||||
styles = StyleSheet()
|
||||
style_sheet_list = None
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
@ -326,145 +316,105 @@ class IndivSummary:
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
import PaperMenu
|
||||
class IndivSummaryDialog(TextReportDialog):
|
||||
def __init__(self,database,person):
|
||||
ReportDialog.__init__(self,database,person)
|
||||
|
||||
global active_person
|
||||
global topDialog
|
||||
global db
|
||||
global style_sheet_list
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Individual Summary")
|
||||
|
||||
if person == None:
|
||||
return
|
||||
def get_header(self, name):
|
||||
"""The header line at the top of the dialog contents"""
|
||||
return _("Individual Summary for %s") % name
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Save Individual Summary")
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
|
||||
glade_file = "%s/indsum.glade" % os.path.dirname(__file__)
|
||||
topDialog = libglade.GladeXML(glade_file,"dialog1")
|
||||
topDialog.get_widget("fileentry1").set_default_path(Config.report_dir)
|
||||
|
||||
name = person.getPrimaryName().getRegularName()
|
||||
label = topDialog.get_widget("labelTitle")
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where to save styles for this report."""
|
||||
return "family_group.xml"
|
||||
|
||||
label.set_text(_("Individual Summary for %s") % name)
|
||||
def doc_uses_tables(self):
|
||||
"""This report requires table support."""
|
||||
return 1
|
||||
|
||||
PaperMenu.make_paper_menu(topDialog.get_widget("papersize"))
|
||||
PaperMenu.make_orientation_menu(topDialog.get_widget("orientation"))
|
||||
FindDoc.get_text_doc_menu(topDialog.get_widget("format"),1,option_switch)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_bold(1)
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(16)
|
||||
p = ParagraphStyle()
|
||||
p.set_alignment(PARA_ALIGN_CENTER)
|
||||
p.set_font(font)
|
||||
styles.add_style("Title",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_bold(1)
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(12)
|
||||
font.set_italic(1)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("TableTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_bold(1)
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("Spouse",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("Normal",p)
|
||||
|
||||
style_sheet_list = StyleSheetList("individual_summary.xml",styles)
|
||||
build_menu(None)
|
||||
|
||||
topDialog.signal_autoconnect({
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_style_edit_clicked" : on_style_edit_clicked,
|
||||
"on_save_clicked" : on_save_clicked
|
||||
})
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def build_menu(object):
|
||||
menu = topDialog.get_widget("style_menu")
|
||||
|
||||
myMenu = gtk.GtkMenu()
|
||||
for style in style_sheet_list.get_style_names():
|
||||
menuitem = gtk.GtkMenuItem(style)
|
||||
menuitem.set_data("d",style_sheet_list.get_style_sheet(style))
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
menu.set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(obj):
|
||||
StyleListDisplay(style_sheet_list,build_menu,None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def option_switch(obj):
|
||||
val = obj.get_data("paper")
|
||||
st = obj.get_data("styles")
|
||||
notebook = topDialog.get_widget("option_notebook")
|
||||
if val == 1:
|
||||
notebook.set_page(0)
|
||||
else:
|
||||
notebook.set_page(1)
|
||||
topDialog.get_widget("style_frame").set_sensitive(st)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_save_clicked(obj):
|
||||
global active_person
|
||||
global db
|
||||
|
||||
outputName = topDialog.get_widget("fileentry1").get_full_path(0)
|
||||
if not outputName:
|
||||
return
|
||||
|
||||
paper_obj = topDialog.get_widget("papersize")
|
||||
paper = paper_obj.get_menu().get_active().get_data("i")
|
||||
orien_obj = topDialog.get_widget("orientation")
|
||||
orien = orien_obj.get_menu().get_active().get_data("i")
|
||||
template = topDialog.get_widget("htmltemplate").get_full_path(0)
|
||||
|
||||
item = topDialog.get_widget("format").get_menu().get_active()
|
||||
format = item.get_data("name")
|
||||
|
||||
styles = topDialog.get_widget("style_menu").get_menu().get_active().get_data("d")
|
||||
|
||||
doc = FindDoc.make_text_doc(styles,format,paper,orien,template)
|
||||
|
||||
MyReport = IndivSummary(db,active_person,outputName,doc)
|
||||
|
||||
MyReport.setup()
|
||||
MyReport.write_report()
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create output styles appropriate to this report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Make the default output style for the Individual Summary Report."""
|
||||
font = FontStyle()
|
||||
font.set_bold(1)
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(16)
|
||||
p = ParagraphStyle()
|
||||
p.set_alignment(PARA_ALIGN_CENTER)
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("Title",p)
|
||||
|
||||
utils.destroy_passed_object(obj)
|
||||
font = FontStyle()
|
||||
font.set_bold(1)
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(12)
|
||||
font.set_italic(1)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("TableTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_bold(1)
|
||||
font.set_type_face(FONT_SANS_SERIF)
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("Spouse",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("Normal",p)
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to setting up the dialog window
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def setup_report_options(self):
|
||||
"""The 'Report Options' frame is not used in this dialog."""
|
||||
self.topDialog.get_widget("options_frame").hide()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create the contents of the report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the Ancestor Chart.
|
||||
All user dialog has already been handled and the output file
|
||||
opened."""
|
||||
MyReport = IndivSummary(self.db, self.person, self.target_path, self.doc)
|
||||
MyReport.setup()
|
||||
MyReport.write_report()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
IndivSummaryDialog(database,person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -21,7 +21,6 @@
|
||||
"Web Site/Generate Web Site"
|
||||
|
||||
from RelLib import *
|
||||
from TextDoc import *
|
||||
from HtmlDoc import *
|
||||
|
||||
import const
|
||||
@ -40,20 +39,7 @@ import shutil
|
||||
from gtk import *
|
||||
from gnome.ui import *
|
||||
from libglade import *
|
||||
from StyleEditor import *
|
||||
|
||||
active_person = None
|
||||
db = None
|
||||
topDialog = None
|
||||
|
||||
glade_file = os.path.dirname(__file__) + os.sep + "webpage.glade"
|
||||
|
||||
restrict = 1
|
||||
private = 1
|
||||
restrict_photos = 0
|
||||
no_photos = 0
|
||||
styles = StyleSheet()
|
||||
style_sheet_list = None
|
||||
from Report import *
|
||||
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
@ -406,30 +392,21 @@ class IndividualPage:
|
||||
|
||||
if place != "" and place[-1] == ".":
|
||||
place = place[0:-1]
|
||||
else:
|
||||
place = ""
|
||||
if descr != "" and descr[-1] == ".":
|
||||
descr = descr[0:-1]
|
||||
|
||||
if date == "":
|
||||
if place == "":
|
||||
if descr == "":
|
||||
val = ""
|
||||
else:
|
||||
val = "%s." % descr
|
||||
if date != "":
|
||||
if place != "":
|
||||
val = "%s, %s." % (date,place)
|
||||
else:
|
||||
if descr == "":
|
||||
val = ""
|
||||
else:
|
||||
val = "%s. %s." % (place,descr)
|
||||
val = "%s." % date
|
||||
elif place != "":
|
||||
val = "%s." % place
|
||||
else:
|
||||
if place == "":
|
||||
if descr == "":
|
||||
val = "%s." % date
|
||||
else:
|
||||
val = "%s. %s." % (date,descr)
|
||||
else:
|
||||
val = "%s, %s. %s." % (date,place,descr)
|
||||
val = ""
|
||||
|
||||
if descr != "":
|
||||
val = val + ("%s." % descr)
|
||||
|
||||
self.write_normal_row(name, val, srcref)
|
||||
|
||||
@ -463,7 +440,7 @@ class IndividualPage:
|
||||
|
||||
if event == None:
|
||||
return
|
||||
name = event.getName()
|
||||
name = _(event.getName())
|
||||
date = event.getDate()
|
||||
place = event.getPlaceName()
|
||||
descr = event.getDescription()
|
||||
@ -576,7 +553,7 @@ class IndividualPage:
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def individual_filter(database,person,list):
|
||||
def individual_filter(database,person,list,generations):
|
||||
list.append(person)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
@ -584,48 +561,54 @@ def individual_filter(database,person,list):
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def ancestor_filter(database,person,list):
|
||||
def ancestor_filter(database,person,list,generations):
|
||||
|
||||
if person == None:
|
||||
return
|
||||
if person not in list:
|
||||
list.append(person)
|
||||
if generations <= 1:
|
||||
return
|
||||
|
||||
family = person.getMainFamily()
|
||||
if family != None:
|
||||
ancestor_filter(database,family.getFather(),list)
|
||||
ancestor_filter(database,family.getMother(),list)
|
||||
ancestor_filter(database,family.getFather(),list,generations-1)
|
||||
ancestor_filter(database,family.getMother(),list,generations-1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def descendant_filter(database,person,list):
|
||||
def descendant_filter(database,person,list,generations):
|
||||
|
||||
if person == None or person in list:
|
||||
return
|
||||
if person not in list:
|
||||
list.append(person)
|
||||
if generations <= 1:
|
||||
return
|
||||
|
||||
for family in person.getFamilyList():
|
||||
for child in family.getChildList():
|
||||
descendant_filter(database,child,list)
|
||||
descendant_filter(database,child,list,generations-1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def an_des_filter(database,person,list):
|
||||
def an_des_filter(database,person,list,generations):
|
||||
|
||||
descendant_filter(database,person,list)
|
||||
ancestor_filter(database,person,list)
|
||||
descendant_filter(database,person,list,generations)
|
||||
ancestor_filter(database,person,list,generations)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def entire_db_filter(database,person,list):
|
||||
def entire_db_filter(database,person,list,generations):
|
||||
|
||||
for entry in database.getPersonMap().values():
|
||||
list.append(entry)
|
||||
@ -635,7 +618,7 @@ def entire_db_filter(database,person,list):
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def an_des_of_gparents_filter(database,person,list):
|
||||
def an_des_of_gparents_filter(database,person,list,generations):
|
||||
|
||||
my_list = []
|
||||
|
||||
@ -653,8 +636,8 @@ def an_des_of_gparents_filter(database,person,list):
|
||||
my_list.append(pf.getMother())
|
||||
|
||||
for person in my_list:
|
||||
descendant_filter(database,person,list)
|
||||
ancestor_filter(database,person,list)
|
||||
descendant_filter(database,person,list,generations)
|
||||
ancestor_filter(database,person,list,generations)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
@ -676,275 +659,359 @@ filter_map = {
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def report(database,person):
|
||||
global active_person
|
||||
global topDialog
|
||||
global db
|
||||
global styles
|
||||
global style_sheet_list
|
||||
class WebReport(Report):
|
||||
def __init__(self,db,person,target_path,max_gen,photos,filter,restrict,
|
||||
private, srccomments, include_link, style, template_name):
|
||||
self.db = db
|
||||
self.person = person
|
||||
self.target_path = target_path
|
||||
self.max_gen = max_gen
|
||||
self.photos = photos
|
||||
self.filter = filter
|
||||
self.restrict = restrict
|
||||
self.private = private
|
||||
self.srccomments = srccomments
|
||||
self.include_link = include_link
|
||||
self.selected_style = style
|
||||
self.template_name = template_name
|
||||
|
||||
def get_progressbar_data(self):
|
||||
return (_("Gramps - Generate HTML reports"), _("Creating Web Pages"))
|
||||
|
||||
active_person = person
|
||||
db = database
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1, face=FONT_SANS_SERIF, size=16)
|
||||
p = ParagraphStyle()
|
||||
p.set(align=PARA_ALIGN_CENTER,font=font)
|
||||
styles.add_style("Title",p)
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Writes a index file, listing all people in the person list.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def dump_index(self,person_list,styles,template,html_dir):
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
styles.add_style("EventsTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
styles.add_style("NotesTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
styles.add_style("SourcesTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
styles.add_style("GalleryTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
styles.add_style("FamilyTitle",p)
|
||||
doc = HtmlLinkDoc(styles,template)
|
||||
doc.set_title(_("Family Tree Index"))
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("Spouse",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("Label",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("Data",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("PhotoDescription",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(size=12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("PhotoNote",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(10)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("SourceParagraph",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
styles.add_style("NotesParagraph",p)
|
||||
|
||||
style_sheet_list = StyleSheetList("webpage.xml",styles)
|
||||
|
||||
dic = {
|
||||
"destroy_passed_object" : utils.destroy_passed_object,
|
||||
"on_nophotos_toggled" : on_nophotos_toggled,
|
||||
"on_style_edit_clicked" : on_style_edit_clicked,
|
||||
"on_ok_clicked" : on_ok_clicked,
|
||||
}
|
||||
|
||||
topDialog = GladeXML(glade_file,"top")
|
||||
topDialog.signal_autoconnect(dic)
|
||||
build_menu(None)
|
||||
doc.open(html_dir + os.sep + "index.html")
|
||||
doc.start_paragraph("Title")
|
||||
doc.write_text(_("Family Tree Index"))
|
||||
doc.end_paragraph()
|
||||
|
||||
top = topDialog.get_widget("top")
|
||||
topDialog.get_widget("targetDirectory").set_default_path(Config.web_dir)
|
||||
topDialog.get_widget("tgtdir").set_text(Config.web_dir)
|
||||
filterName = topDialog.get_widget("filterName")
|
||||
|
||||
popdown_strings = filter_map.keys()
|
||||
popdown_strings.sort()
|
||||
filterName.set_popdown_strings(popdown_strings)
|
||||
|
||||
name = person.getPrimaryName().getName()
|
||||
topDialog.get_widget("personName").set_text(name)
|
||||
|
||||
top.show()
|
||||
person_list.sort(sort.by_last_name)
|
||||
for person in person_list:
|
||||
name = person.getPrimaryName().getName()
|
||||
doc.start_link("%s.html" % person.getId())
|
||||
doc.write_text(name)
|
||||
doc.end_link()
|
||||
doc.newline()
|
||||
doc.close()
|
||||
|
||||
def write_report(self):
|
||||
dir_name = self.target_path
|
||||
if dir_name == None:
|
||||
dir_name = os.getcwd()
|
||||
elif not os.path.isdir(dir_name):
|
||||
parent_dir = os.path.dirname(dir_name)
|
||||
if not os.path.isdir(parent_dir):
|
||||
GnomeErrorDialog(_("Neither %s nor %s are directories") % \
|
||||
(dir_name,parent_dir))
|
||||
return
|
||||
else:
|
||||
try:
|
||||
os.mkdir(dir_name)
|
||||
except IOError, value:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
dir_name + "\n" + value[1])
|
||||
return
|
||||
except:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
dir_name)
|
||||
return
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_style_edit_clicked(obj):
|
||||
StyleListDisplay(style_sheet_list,build_menu,None)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def build_menu(object):
|
||||
menu = topDialog.get_widget("style_menu")
|
||||
|
||||
myMenu = GtkMenu()
|
||||
for style in style_sheet_list.get_style_names():
|
||||
menuitem = GtkMenuItem(style)
|
||||
menuitem.set_data("d",style_sheet_list.get_style_sheet(style))
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
menu.set_menu(myMenu)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_nophotos_toggled(obj):
|
||||
if obj.get_active():
|
||||
topDialog.get_widget("restrict_photos").set_sensitive(0)
|
||||
else:
|
||||
topDialog.get_widget("restrict_photos").set_sensitive(1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_ok_clicked(obj):
|
||||
global active_person
|
||||
global filter_map
|
||||
global db
|
||||
|
||||
filterName = topDialog.get_widget("filter").get_text()
|
||||
dir_name = topDialog.get_widget("targetDirectory").get_full_path(0)
|
||||
templ_name = topDialog.get_widget("htmlTemplate").get_full_path(0)
|
||||
|
||||
restrict = topDialog.get_widget("restrict").get_active()
|
||||
private = topDialog.get_widget("private").get_active()
|
||||
srccomments = topDialog.get_widget("srccomments").get_active()
|
||||
restrict_photos = topDialog.get_widget("restrict_photos").get_active()
|
||||
no_photos = topDialog.get_widget("nophotos").get_active()
|
||||
include_link = topDialog.get_widget("include_link").get_active()
|
||||
|
||||
if dir_name == None:
|
||||
dir_name = os.getcwd()
|
||||
elif not os.path.isdir(dir_name):
|
||||
parent_dir = os.path.dirname(dir_name)
|
||||
if not os.path.isdir(parent_dir):
|
||||
GnomeErrorDialog(_("Neither %s nor %s are directories") % \
|
||||
(dir_name,parent_dir))
|
||||
return
|
||||
else:
|
||||
image_dir_name = os.path.join(dir_name, "images")
|
||||
if not os.path.isdir(image_dir_name) and self.photos != 0:
|
||||
try:
|
||||
os.mkdir(dir_name)
|
||||
os.mkdir(image_dir_name)
|
||||
except IOError, value:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
dir_name + "\n" + value[1])
|
||||
image_dir_name + "\n" + value[1])
|
||||
return
|
||||
except:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
dir_name)
|
||||
image_dir_name)
|
||||
return
|
||||
|
||||
image_dir_name = os.path.join(dir_name, "images")
|
||||
if not os.path.isdir(image_dir_name) and not no_photos:
|
||||
try:
|
||||
os.mkdir(image_dir_name)
|
||||
except IOError, value:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
image_dir_name + "\n" + value[1])
|
||||
return
|
||||
except:
|
||||
GnomeErrorDialog(_("Could not create the directory : %s") % \
|
||||
image_dir_name)
|
||||
return
|
||||
|
||||
filter = filter_map[filterName]
|
||||
ind_list = []
|
||||
|
||||
filter(db,active_person,ind_list)
|
||||
styles = topDialog.get_widget("style_menu").get_menu().get_active().get_data("d")
|
||||
|
||||
if no_photos == 1:
|
||||
photos = 0
|
||||
elif restrict_photos == 1:
|
||||
photos = 1
|
||||
else:
|
||||
photos = 2
|
||||
|
||||
total = float(len(ind_list))
|
||||
index = 0.0
|
||||
|
||||
pxml = GladeXML(glade_file,"progress")
|
||||
ptop = pxml.get_widget("progress")
|
||||
pbar = pxml.get_widget("progressbar")
|
||||
pbar.configure(0.0,0.0,total)
|
||||
|
||||
doc = HtmlLinkDoc(styles,templ_name)
|
||||
my_map = {}
|
||||
for l in ind_list:
|
||||
my_map[l] = 1
|
||||
for person in ind_list:
|
||||
tdoc = HtmlLinkDoc(styles,None,doc)
|
||||
idoc = IndividualPage(person,photos,restrict,private,srccomments,\
|
||||
include_link,my_map,dir_name,tdoc)
|
||||
idoc.create_page()
|
||||
idoc.close()
|
||||
index = index + 1.0
|
||||
pbar.set_value(index)
|
||||
while events_pending():
|
||||
mainiteration()
|
||||
filter = filter_map[self.filter]
|
||||
ind_list = []
|
||||
filter(self.db,self.person,ind_list,self.max_gen)
|
||||
self.progress_bar_setup(float(len(ind_list)))
|
||||
|
||||
if len(ind_list) > 1:
|
||||
dump_index(ind_list,styles,templ_name,dir_name)
|
||||
doc = HtmlLinkDoc(self.selected_style,self.template_name)
|
||||
my_map = {}
|
||||
for l in ind_list:
|
||||
my_map[l] = 1
|
||||
for person in ind_list:
|
||||
tdoc = HtmlLinkDoc(self.selected_style,None,doc)
|
||||
idoc = IndividualPage(person, self.photos, self.restrict,
|
||||
self.private, self.srccomments,
|
||||
self.include_link, my_map, dir_name, tdoc)
|
||||
idoc.create_page()
|
||||
idoc.close()
|
||||
self.progress_bar_step()
|
||||
while events_pending():
|
||||
mainiteration()
|
||||
|
||||
if len(ind_list) > 1:
|
||||
self.dump_index(ind_list,self.selected_style,self.template_name,dir_name)
|
||||
|
||||
self.progress_bar_done()
|
||||
|
||||
utils.destroy_passed_object(ptop)
|
||||
utils.destroy_passed_object(obj)
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
class WebReportDialog(ReportDialog):
|
||||
def __init__(self,database,person):
|
||||
ReportDialog.__init__(self,database,person,"webpage.glade")
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Customization hooks
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_title(self):
|
||||
"""The window title for this dialog"""
|
||||
return _("Gramps - Generate HTML reports")
|
||||
|
||||
def get_target_browser_title(self):
|
||||
"""The title of the window created when the 'browse' button is
|
||||
clicked in the 'Save As' frame."""
|
||||
return _("Target Directory")
|
||||
|
||||
def get_target_is_directory(self):
|
||||
"""This report creates a directory full of files, not a single file."""
|
||||
return 1
|
||||
|
||||
def get_stylesheet_savefile(self):
|
||||
"""Where to save styles for this report."""
|
||||
return "webpage.xml"
|
||||
|
||||
def get_report_generations(self):
|
||||
"""Default to ten generations, no page break box."""
|
||||
return (10, 0)
|
||||
|
||||
def get_report_filter_strings(self):
|
||||
"""Set up the list of possible content filters."""
|
||||
return filter_map.keys()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to the default directory
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def get_default_directory(self):
|
||||
"""Get the name of the directory to which the target dialog
|
||||
box should default. This value can be set in the preferences
|
||||
panel."""
|
||||
return Config.web_dir
|
||||
|
||||
def set_default_directory(self, value):
|
||||
"""Save the name of the current directory, so that any future
|
||||
reports will default to the most recently used directory.
|
||||
This also changes the directory name that will appear in the
|
||||
preferences panel, but does not change the preference in disk.
|
||||
This means that the last directory used will only be
|
||||
remembered for this session of gramps unless the user saves
|
||||
his/her preferences."""
|
||||
Config.web_dir = value
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Create output style appropriate to this report.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_default_style(self):
|
||||
"""Make the default output style for the Web Pages Report."""
|
||||
font = FontStyle()
|
||||
font.set(bold=1, face=FONT_SANS_SERIF, size=16)
|
||||
p = ParagraphStyle()
|
||||
p.set(align=PARA_ALIGN_CENTER,font=font)
|
||||
self.default_style.add_style("Title",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
self.default_style.add_style("EventsTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
self.default_style.add_style("NotesTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
self.default_style.add_style("SourcesTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
self.default_style.add_style("GalleryTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set(font=font,bborder=1)
|
||||
self.default_style.add_style("FamilyTitle",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("Spouse",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(size=12,italic=1)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("Label",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("Data",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(bold=1,face=FONT_SANS_SERIF,size=12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("PhotoDescription",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set(size=12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("PhotoNote",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(10)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("SourceParagraph",p)
|
||||
|
||||
font = FontStyle()
|
||||
font.set_size(12)
|
||||
p = ParagraphStyle()
|
||||
p.set_font(font)
|
||||
self.default_style.add_style("NotesParagraph",p)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to selecting/changing the current file format
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_document(self):
|
||||
"""Do Nothing. This document will be created in the
|
||||
make_report routine."""
|
||||
pass
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to setting up the dialog window
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def setup_format_frame(self):
|
||||
"""The format frame is not used in this dialog. Hide it, and
|
||||
set the output notebook to always display the html template
|
||||
page."""
|
||||
self.topDialog.get_widget("format_frame").hide()
|
||||
self.output_notebook.set_page(1)
|
||||
|
||||
def setup_other_frames(self):
|
||||
"""Set up the privacy frame of the dialog. This sole purpose of
|
||||
this function is to grab a pointer for later use in a callback
|
||||
routine."""
|
||||
self.restrict_photos_check = self.topDialog.get_widget("restrict_photos")
|
||||
|
||||
def connect_signals(self):
|
||||
"""Connect the signal handlers for this dialog. This routine
|
||||
uses the parent routine to connect the common handlers, and
|
||||
the connects its own unique handler."""
|
||||
ReportDialog.connect_signals(self)
|
||||
self.topDialog.signal_autoconnect({
|
||||
"on_nophotos_toggled" : self.on_nophotos_toggled,
|
||||
})
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to retrieving data from the dialog window
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
|
||||
def parse_format_frame(self):
|
||||
"""The format frame is not used in this dialog."""
|
||||
pass
|
||||
|
||||
def parse_report_options_frame(self):
|
||||
"""Parse the report options frame of the dialog. Save the
|
||||
user selected choices for later use."""
|
||||
ReportDialog.parse_report_options_frame(self)
|
||||
self.include_link = self.topDialog.get_widget("include_link").get_active()
|
||||
|
||||
def parse_other_frames(self):
|
||||
"""Parse the privacy options frame of the dialog. Save the
|
||||
user selected choices for later use."""
|
||||
self.restrict = self.topDialog.get_widget("restrict").get_active()
|
||||
self.private = self.topDialog.get_widget("private").get_active()
|
||||
self.srccomments = self.topDialog.get_widget("srccomments").get_active()
|
||||
if (self.topDialog.get_widget("nophotos").get_active() == 1):
|
||||
self.photos = 0
|
||||
elif (self.restrict_photos_check.get_active() == 1):
|
||||
self.photos = 1
|
||||
else:
|
||||
self.photos = 2
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Callback functions from the dialog
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def on_nophotos_toggled(obj):
|
||||
"""Keep the 'restrict photos' checkbox in line with the 'no
|
||||
photos' checkbox. If there are no photos included, it makes
|
||||
no sense to worry about restricting which photos are included,
|
||||
now does it?"""
|
||||
if obj.get_active():
|
||||
self.restrict_photos_check.set_sensitive(0)
|
||||
else:
|
||||
self.restrict_photos_check.set_sensitive(1)
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Functions related to creating the actual report document.
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def make_report(self):
|
||||
"""Create the object that will produce the web pages."""
|
||||
MyReport = WebReport(self.db, self.person, self.target_path,
|
||||
self.max_gen, self.photos, self.filter,
|
||||
self.restrict, self.private, self.srccomments,
|
||||
self.include_link, self.selected_style,
|
||||
self.template_name)
|
||||
MyReport.write_report()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# Writes a index file, listing all people in the person list.
|
||||
#
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
def dump_index(person_list,styles,template,html_dir):
|
||||
|
||||
doc = HtmlLinkDoc(styles,template)
|
||||
doc.set_title(_("Family Tree Index"))
|
||||
|
||||
doc.open(html_dir + os.sep + "index.html")
|
||||
doc.start_paragraph("Title")
|
||||
doc.write_text(_("Family Tree Index"))
|
||||
doc.end_paragraph()
|
||||
|
||||
person_list.sort(sort.by_last_name)
|
||||
for person in person_list:
|
||||
name = person.getPrimaryName().getName()
|
||||
doc.start_link("%s.html" % person.getId())
|
||||
doc.write_text(name)
|
||||
doc.end_link()
|
||||
doc.newline()
|
||||
doc.close()
|
||||
def report(database,person):
|
||||
WebReportDialog(database,person)
|
||||
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -1,504 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>ancestorreport</name>
|
||||
<program_name>ancestorreport</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory></pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>dialog1</name>
|
||||
<title>Gramps - Ancestor Chart</title>
|
||||
<type>GTK_WINDOW_DIALOG</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>False</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>dialog-vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>8</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>dialog-action_area2</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button14</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_save_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:39 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button16</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:20 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>labelTitle</name>
|
||||
<label>Ancestor Chart</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator1</name>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label12</name>
|
||||
<label>Save As</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>fileentry1</name>
|
||||
<width>350</width>
|
||||
<history_id>ancestor_chart</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Save Ancestor Chart</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>filename</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame1</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Format</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>format</name>
|
||||
<border_width>5</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>OpenOffice
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>style_frame</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Styles</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>style_menu</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>default
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button17</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_style_edit_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Tue, 05 Jun 2001 14:39:29 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Style Editor</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame2</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<rows>4</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label13</name>
|
||||
<label>Generations</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label14</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label15</name>
|
||||
<label>Orientation</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>papersize</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Letter
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>orientation</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Portrait
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkSpinButton</class>
|
||||
<name>generations</name>
|
||||
<can_focus>True</can_focus>
|
||||
<climb_rate>1</climb_rate>
|
||||
<digits>0</digits>
|
||||
<numeric>True</numeric>
|
||||
<update_policy>GTK_UPDATE_ALWAYS</update_policy>
|
||||
<snap>False</snap>
|
||||
<wrap>False</wrap>
|
||||
<value>10</value>
|
||||
<lower>1</lower>
|
||||
<upper>28</upper>
|
||||
<step>1</step>
|
||||
<page>10</page>
|
||||
<page_size>10</page_size>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkScrolledWindow</class>
|
||||
<name>scrolledwindow1</name>
|
||||
<height>55</height>
|
||||
<hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy>
|
||||
<vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy>
|
||||
<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
|
||||
<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkText</class>
|
||||
<name>display_text</name>
|
||||
<tooltip>Allows you to customize the data in the boxes in the report</tooltip>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text>$n
|
||||
b. $b
|
||||
d. $d</text>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label16</name>
|
||||
<label>Display Format</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
@ -1,640 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>ancestorreport</name>
|
||||
<program_name>ancestorreport</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory></pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>dialog1</name>
|
||||
<title>Gramps - Ahnentafel Report</title>
|
||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>False</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>dialog-vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>8</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>dialog-action_area2</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button14</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_save_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:39 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button16</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:20 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>labelTitle</name>
|
||||
<label>Ahnentafel Report</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator1</name>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label12</name>
|
||||
<label>Save As</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>fileentry1</name>
|
||||
<width>350</width>
|
||||
<history_id>ancestor_report</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Save Ancestor Report</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>filename</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame1</name>
|
||||
<border_width>3</border_width>
|
||||
<label>Format</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>format</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>style_frame</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Styles</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox4</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>style_menu</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>default
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>style_edit</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_style_edit_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Tue, 05 Jun 2001 14:39:29 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Style Editor</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame2</name>
|
||||
<border_width>4</border_width>
|
||||
<label>Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox5</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox6</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<rows>3</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label13</name>
|
||||
<label>Generations</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkCheckButton</class>
|
||||
<name>pagebreak</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Page break between generations</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkSpinButton</class>
|
||||
<name>generations</name>
|
||||
<can_focus>True</can_focus>
|
||||
<climb_rate>1</climb_rate>
|
||||
<digits>0</digits>
|
||||
<numeric>True</numeric>
|
||||
<update_policy>GTK_UPDATE_ALWAYS</update_policy>
|
||||
<snap>False</snap>
|
||||
<wrap>False</wrap>
|
||||
<value>10</value>
|
||||
<lower>1</lower>
|
||||
<upper>28</upper>
|
||||
<step>1</step>
|
||||
<page>10</page>
|
||||
<page_size>10</page_size>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator2</name>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>True</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkNotebook</class>
|
||||
<name>option_notebook</name>
|
||||
<show_tabs>False</show_tabs>
|
||||
<show_border>False</show_border>
|
||||
<tab_pos>GTK_POS_TOP</tab_pos>
|
||||
<scrollable>False</scrollable>
|
||||
<tab_hborder>2</tab_hborder>
|
||||
<tab_vborder>2</tab_vborder>
|
||||
<popup_enable>False</popup_enable>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table2</name>
|
||||
<rows>2</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label14</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label15</name>
|
||||
<label>Orientation</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>papersize</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>orientation</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label14</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox7</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label11</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>htmltemplate</name>
|
||||
<history_id>HtmlTemplate</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Choose the HTML template</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>htmlfile</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label15</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
926
gramps/src/plugins/basicreport.glade
Normal file
926
gramps/src/plugins/basicreport.glade
Normal file
@ -0,0 +1,926 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>Basicreport</name>
|
||||
<program_name>basicreport</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory>pixmaps</pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>report_dialog</name>
|
||||
<title>Basic Report</title>
|
||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>False</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>dialog-vbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>dialog-action_area1</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>OK</name>
|
||||
<can_default>True</can_default>
|
||||
<has_default>True</has_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_ok_clicked</handler>
|
||||
<object>report_dialog</object>
|
||||
<last_modification_time>Tue, 18 Dec 2001 09:50:07 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>Cancel</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>report_dialog</object>
|
||||
<last_modification_time>Sun, 16 Dec 2001 07:52:14 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>dialog_body</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>header_label</name>
|
||||
<label>Basic Report Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator1</name>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>format_frame</name>
|
||||
<border_width>4</border_width>
|
||||
<label>Save As</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>save_hbox</name>
|
||||
<border_width>4</border_width>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>saveas</name>
|
||||
<label>Filename</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>fileentry1</name>
|
||||
<width>350</width>
|
||||
<history_id>file_name</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Save Report</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>filename</name>
|
||||
<can_focus>True</can_focus>
|
||||
<has_focus>True</has_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>format_frame</name>
|
||||
<border_width>4</border_width>
|
||||
<label>Format</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>format</name>
|
||||
<border_width>7</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>AbiWord
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>style_frame</name>
|
||||
<border_width>4</border_width>
|
||||
<label>Styles</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>style_hbox</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>style_menu</name>
|
||||
<border_width>7</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>default
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>style_edit</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_style_edit_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Sun, 16 Dec 2001 07:52:56 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Style Editor</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkNotebook</class>
|
||||
<name>output_notebook</name>
|
||||
<border_width>4</border_width>
|
||||
<show_tabs>False</show_tabs>
|
||||
<show_border>False</show_border>
|
||||
<tab_pos>GTK_POS_TOP</tab_pos>
|
||||
<scrollable>False</scrollable>
|
||||
<tab_hborder>2</tab_hborder>
|
||||
<tab_vborder>2</tab_vborder>
|
||||
<popup_enable>False</popup_enable>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>paper_frame</name>
|
||||
<label>Paper Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>paper_table</name>
|
||||
<rows>2</rows>
|
||||
<columns>4</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>size_label</name>
|
||||
<label>Size</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>True</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>orientation_label</name>
|
||||
<label>Orientation</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>2</left_attach>
|
||||
<right_attach>3</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>True</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>papersize</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Letter
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>True</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>orientation</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Portrait
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>3</left_attach>
|
||||
<right_attach>4</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>True</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>pagecount_label</name>
|
||||
<label>Count</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>pagecount_menu</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>Single (scaled)
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>True</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>paper_tab</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>html_frame</name>
|
||||
<label>HTML Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table3</name>
|
||||
<rows>2</rows>
|
||||
<columns>4</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label7</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>htmltemplate</name>
|
||||
<history_id>HtmlTemplate</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>4</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>htmlfile</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>html_tab</name>
|
||||
<label>HTML</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>options_frame</name>
|
||||
<border_width>4</border_width>
|
||||
<label>Report Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>options_table</name>
|
||||
<rows>5</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkCombo</class>
|
||||
<name>filter_combo</name>
|
||||
<border_width>5</border_width>
|
||||
<value_in_list>True</value_in_list>
|
||||
<ok_if_empty>True</ok_if_empty>
|
||||
<case_sensitive>False</case_sensitive>
|
||||
<use_arrows>True</use_arrows>
|
||||
<use_arrows_always>False</use_arrows_always>
|
||||
<items></items>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GtkCombo:entry</child_name>
|
||||
<name>filter</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>filter_label</name>
|
||||
<label>Filter</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>gen_label</name>
|
||||
<label>Generations</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkSpinButton</class>
|
||||
<name>generations</name>
|
||||
<can_focus>True</can_focus>
|
||||
<climb_rate>1</climb_rate>
|
||||
<digits>0</digits>
|
||||
<numeric>True</numeric>
|
||||
<update_policy>GTK_UPDATE_ALWAYS</update_policy>
|
||||
<snap>False</snap>
|
||||
<wrap>False</wrap>
|
||||
<value>0</value>
|
||||
<lower>1</lower>
|
||||
<upper>28</upper>
|
||||
<step>1</step>
|
||||
<page>10</page>
|
||||
<page_size>10</page_size>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkCheckButton</class>
|
||||
<name>pagebreak</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Page break between generations</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>extra_menu_label</name>
|
||||
<label></label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>extra_textbox_label</name>
|
||||
<label></label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>4</top_attach>
|
||||
<bottom_attach>5</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>extra_menu</name>
|
||||
<border_width>5</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>default
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>3</top_attach>
|
||||
<bottom_attach>4</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkScrolledWindow</class>
|
||||
<name>extra_scrolledwindow</name>
|
||||
<border_width>5</border_width>
|
||||
<height>80</height>
|
||||
<hscrollbar_policy>GTK_POLICY_ALWAYS</hscrollbar_policy>
|
||||
<vscrollbar_policy>GTK_POLICY_ALWAYS</vscrollbar_policy>
|
||||
<hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy>
|
||||
<vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>4</top_attach>
|
||||
<bottom_attach>5</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>True</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkText</class>
|
||||
<name>extra_textbox</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkWindow</class>
|
||||
<name>progress_dialog</name>
|
||||
<title>Gramps - Generate HTML reports</title>
|
||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>header_label</name>
|
||||
<label>default</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>5</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator2</name>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkProgressBar</class>
|
||||
<name>progressbar</name>
|
||||
<width>300</width>
|
||||
<value>0</value>
|
||||
<lower>0</lower>
|
||||
<upper>100</upper>
|
||||
<bar_style>GTK_PROGRESS_CONTINUOUS</bar_style>
|
||||
<orientation>GTK_PROGRESS_LEFT_TO_RIGHT</orientation>
|
||||
<activity_mode>False</activity_mode>
|
||||
<show_text>True</show_text>
|
||||
<format>%v of %u (%P%%)</format>
|
||||
<text_xalign>0.5</text_xalign>
|
||||
<text_yalign>0.5</text_yalign>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
@ -1,501 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>desreport</name>
|
||||
<program_name>desreport</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory>pixmaps</pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>dialog1</name>
|
||||
<title>Gramps - Descendant Report</title>
|
||||
<type>GTK_WINDOW_DIALOG</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>False</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>dialog-vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>8</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>dialog-action_area2</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button14</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_save_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:39 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button16</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:20 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>labelTitle</name>
|
||||
<label>Descendant Report</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator1</name>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label12</name>
|
||||
<label>Save As</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>fileentry1</name>
|
||||
<width>350</width>
|
||||
<history_id>descendant_report</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Save Descendant Report</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>filename</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame1</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Format</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox6</name>
|
||||
<border_width>5</border_width>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>format</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>style_frame</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Styles</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>style_menu</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>default
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button17</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_style_edit_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Tue, 05 Jun 2001 14:39:29 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Style Editor</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame2</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkNotebook</class>
|
||||
<name>option_notebook</name>
|
||||
<show_tabs>False</show_tabs>
|
||||
<show_border>False</show_border>
|
||||
<tab_pos>GTK_POS_TOP</tab_pos>
|
||||
<scrollable>False</scrollable>
|
||||
<tab_hborder>2</tab_hborder>
|
||||
<tab_vborder>2</tab_vborder>
|
||||
<popup_enable>False</popup_enable>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<rows>2</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label13</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label14</name>
|
||||
<label>Orientation</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>papersize</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>orientation</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label13</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox5</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label11</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>htmltemplate</name>
|
||||
<history_id>HtmlTemplate</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Choose the HTML template</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>htmlfile</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label14</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
@ -1,526 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>familygroup</name>
|
||||
<program_name>familygroup</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory>pixmaps</pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>dialog1</name>
|
||||
<title>Gramps - Family Group Report</title>
|
||||
<type>GTK_WINDOW_DIALOG</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>False</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>dialog-vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>8</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>dialog-action_area2</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button14</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_save_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:39 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button16</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:20 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>labelTitle</name>
|
||||
<label>Family Group Report</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator1</name>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label12</name>
|
||||
<label>Save As</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>fileentry1</name>
|
||||
<width>350</width>
|
||||
<history_id>family_group</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Save Family Group Report</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>filename</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>spouse</name>
|
||||
<border_width>5</border_width>
|
||||
<visible>False</visible>
|
||||
<label>Choose Spouse</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>spouse_menu</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame1</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Format</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox4</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>format</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>style_frame</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Styles</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>style_menu</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>default
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button17</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_style_edit_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Tue, 05 Jun 2001 14:39:29 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Style Editor</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame2</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkNotebook</class>
|
||||
<name>option_notebook</name>
|
||||
<show_tabs>False</show_tabs>
|
||||
<show_border>False</show_border>
|
||||
<tab_pos>GTK_POS_TOP</tab_pos>
|
||||
<scrollable>False</scrollable>
|
||||
<tab_hborder>2</tab_hborder>
|
||||
<tab_vborder>2</tab_vborder>
|
||||
<popup_enable>False</popup_enable>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<rows>2</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label14</name>
|
||||
<label>Orientation</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label13</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>orientation</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>papersize</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label14</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox5</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label11</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>htmltemplate</name>
|
||||
<history_id>HtmlTemplate</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Choose the HTML template</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>htmlfile</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label15</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
@ -1,488 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>HtmlReport</name>
|
||||
<program_name>htmlreport</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory>pixmaps</pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GtkWindow</class>
|
||||
<name>top</name>
|
||||
<title>Generate Relationship Graphs</title>
|
||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||
<position>GTK_WIN_POS_CENTER</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<rows>3</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label3</name>
|
||||
<label>Output File</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>False</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>targetDirectory</name>
|
||||
<history_id>relationgraph</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>GraphViz File</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>filename</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkCombo</class>
|
||||
<name>filterName</name>
|
||||
<value_in_list>False</value_in_list>
|
||||
<ok_if_empty>True</ok_if_empty>
|
||||
<case_sensitive>False</case_sensitive>
|
||||
<use_arrows>True</use_arrows>
|
||||
<use_arrows_always>False</use_arrows_always>
|
||||
<items></items>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>10</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GtkCombo:entry</child_name>
|
||||
<name>filter</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>False</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>personName</name>
|
||||
<label>Person</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>10</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label6</name>
|
||||
<label>Filter</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>2</top_attach>
|
||||
<bottom_attach>3</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox4</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame2</name>
|
||||
<label>Format</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkRadioButton</class>
|
||||
<name>graphviz</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>GraphViz (dot)</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<group>format</group>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame1</name>
|
||||
<label>Paper Size Selection</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GnomePaperSelector</class>
|
||||
<name>paper</name>
|
||||
<border_width>10</border_width>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox3</name>
|
||||
<homogeneous>True</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label8</name>
|
||||
<label>Pages</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkRadioButton</class>
|
||||
<name>scaled</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Single (scaled)</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<group>s</group>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkRadioButton</class>
|
||||
<name>fit</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Single</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<group>s</group>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkRadioButton</class>
|
||||
<name>multi</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Multiple</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<group>s</group>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox2</name>
|
||||
<homogeneous>True</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label7</name>
|
||||
<label>Paper Orientation</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkRadioButton</class>
|
||||
<name>portrait</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Portrait</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<group>o</group>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkRadioButton</class>
|
||||
<name>radiobutton1</name>
|
||||
<can_focus>True</can_focus>
|
||||
<label>Landscape</label>
|
||||
<active>False</active>
|
||||
<draw_indicator>True</draw_indicator>
|
||||
<group>o</group>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label9</name>
|
||||
<label></label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<name>hbuttonbox1</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>30</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>10</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>ok</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_ok_clicked</handler>
|
||||
<object>top</object>
|
||||
<last_modification_time>Sun, 12 Nov 2000 00:45:16 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button2</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>top</object>
|
||||
<last_modification_time>Sun, 12 Nov 2000 00:45:38 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
@ -1,501 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<GTK-Interface>
|
||||
|
||||
<project>
|
||||
<name>indsum</name>
|
||||
<program_name>indsum</program_name>
|
||||
<directory></directory>
|
||||
<source_directory>src</source_directory>
|
||||
<pixmaps_directory></pixmaps_directory>
|
||||
<language>C</language>
|
||||
<gnome_support>True</gnome_support>
|
||||
<gettext_support>True</gettext_support>
|
||||
</project>
|
||||
|
||||
<widget>
|
||||
<class>GnomeDialog</class>
|
||||
<name>dialog1</name>
|
||||
<title>Gramps - Individual Summary</title>
|
||||
<type>GTK_WINDOW_DIALOG</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>False</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
<auto_close>False</auto_close>
|
||||
<hide_on_close>False</hide_on_close>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<child_name>GnomeDialog:vbox</child_name>
|
||||
<name>dialog-vbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>8</spacing>
|
||||
<child>
|
||||
<padding>4</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHButtonBox</class>
|
||||
<child_name>GnomeDialog:action_area</child_name>
|
||||
<name>dialog-action_area2</name>
|
||||
<layout_style>GTK_BUTTONBOX_END</layout_style>
|
||||
<spacing>8</spacing>
|
||||
<child_min_width>85</child_min_width>
|
||||
<child_min_height>27</child_min_height>
|
||||
<child_ipad_x>7</child_ipad_x>
|
||||
<child_ipad_y>0</child_ipad_y>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
<pack>GTK_PACK_END</pack>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button14</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_save_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:39 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_OK</stock_button>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button16</name>
|
||||
<can_default>True</can_default>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>destroy_passed_object</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Thu, 15 Mar 2001 23:13:20 GMT</last_modification_time>
|
||||
</signal>
|
||||
<stock_button>GNOME_STOCK_BUTTON_CANCEL</stock_button>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>labelTitle</name>
|
||||
<label>Individual Summary</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHSeparator</class>
|
||||
<name>hseparator1</name>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox2</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label12</name>
|
||||
<label>Save As</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>fileentry1</name>
|
||||
<width>350</width>
|
||||
<history_id>family_group</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Save Individual Summary</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>filename</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame1</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Format</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox6</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>format</name>
|
||||
<border_width>5</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>style_frame</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Styles</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox3</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>style_menu</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<items>default
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkButton</class>
|
||||
<name>button17</name>
|
||||
<border_width>10</border_width>
|
||||
<can_focus>True</can_focus>
|
||||
<signal>
|
||||
<name>clicked</name>
|
||||
<handler>on_style_edit_clicked</handler>
|
||||
<object>dialog1</object>
|
||||
<last_modification_time>Tue, 05 Jun 2001 14:39:29 GMT</last_modification_time>
|
||||
</signal>
|
||||
<label>Style Editor</label>
|
||||
<relief>GTK_RELIEF_NORMAL</relief>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>frame2</name>
|
||||
<border_width>5</border_width>
|
||||
<label>Options</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkNotebook</class>
|
||||
<name>option_notebook</name>
|
||||
<show_tabs>False</show_tabs>
|
||||
<show_border>False</show_border>
|
||||
<tab_pos>GTK_POS_TOP</tab_pos>
|
||||
<scrollable>False</scrollable>
|
||||
<tab_hborder>2</tab_hborder>
|
||||
<tab_vborder>2</tab_vborder>
|
||||
<popup_enable>False</popup_enable>
|
||||
|
||||
<widget>
|
||||
<class>GtkTable</class>
|
||||
<name>table1</name>
|
||||
<rows>2</rows>
|
||||
<columns>2</columns>
|
||||
<homogeneous>False</homogeneous>
|
||||
<row_spacing>0</row_spacing>
|
||||
<column_spacing>0</column_spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label13</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label14</name>
|
||||
<label>Orientation</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<left_attach>0</left_attach>
|
||||
<right_attach>1</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<xexpand>False</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>orientation</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>1</top_attach>
|
||||
<bottom_attach>2</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkOptionMenu</class>
|
||||
<name>papersize</name>
|
||||
<can_focus>True</can_focus>
|
||||
<items>
|
||||
</items>
|
||||
<initial_choice>0</initial_choice>
|
||||
<child>
|
||||
<left_attach>1</left_attach>
|
||||
<right_attach>2</right_attach>
|
||||
<top_attach>0</top_attach>
|
||||
<bottom_attach>1</bottom_attach>
|
||||
<xpad>5</xpad>
|
||||
<ypad>5</ypad>
|
||||
<xexpand>True</xexpand>
|
||||
<yexpand>False</yexpand>
|
||||
<xshrink>False</xshrink>
|
||||
<yshrink>False</yshrink>
|
||||
<xfill>True</xfill>
|
||||
<yfill>False</yfill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label13</name>
|
||||
<label>Paper</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox5</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox1</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
<child>
|
||||
<padding>5</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>label11</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>1</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>5</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GnomeFileEntry</class>
|
||||
<name>htmltemplate</name>
|
||||
<history_id>HtmlTemplate</history_id>
|
||||
<max_saved>10</max_saved>
|
||||
<title>Choose the HTML template</title>
|
||||
<directory>False</directory>
|
||||
<modal>False</modal>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<child_name>GnomeEntry:entry</child_name>
|
||||
<name>htmlfile</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>Placeholder</class>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label14</name>
|
||||
<label>Template</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
</GTK-Interface>
|
File diff suppressed because it is too large
Load Diff
@ -531,3 +531,31 @@ def combo_timer_callback(combo):
|
||||
entry.set_position(len(typed))
|
||||
entry.select_region(len(typed), -1)
|
||||
return
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def build_string_optmenu(mapping, start_val):
|
||||
index = 0
|
||||
start_index = 0
|
||||
keys = mapping.keys()
|
||||
keys.sort()
|
||||
myMenu = gtk.GtkMenu()
|
||||
|
||||
for key in keys:
|
||||
if key == "default":
|
||||
menuitem = gtk.GtkMenuItem(_("default"))
|
||||
else:
|
||||
menuitem = gtk.GtkMenuItem(key)
|
||||
menuitem.set_data("d", mapping[key])
|
||||
menuitem.show()
|
||||
myMenu.append(menuitem)
|
||||
if key == start_val:
|
||||
start_index = index
|
||||
index = index + 1
|
||||
|
||||
if start_index:
|
||||
myMenu.set_active(start_index)
|
||||
return myMenu
|
||||
|
Loading…
Reference in New Issue
Block a user