* src/docgen/LPRDoc.py (draw_path,draw_bar): Fill, then stroke.

* src/DbPrompter.py: Change file filter name.

* src/Report.py (doc_type_changed): Deal with empty extensions.
* src/docgen/AsciiDoc.py (add_photo): Add method;
(end_row): Inlcude last cell into proper formatting.
* src/GedcomInfo.py: Properly import expat.ParserCreate class.
* src/TipOfDay.py: Properly import expat.ParserCreate class.
* src/RecentFiles.py: Properly import expat.ParserCreate class.
* src/ReadXML.py: Properly import expat.* classes.
* doc/gramps-manual/C/usage.xml: Update.
* doc/gramps-manual/C/usage.xml: Update.
* doc/xmldocs.make: Switch Makefile from CLEANFILES to DISTCLEANFILES.
* src/Makefile.am: Add const.pyc and const.pyo to CLEANFILES.


svn: r4051
This commit is contained in:
Alex Roitman 2005-02-19 00:49:49 +00:00
parent fdfa19fa1f
commit 8b0aa1f633
10 changed files with 189 additions and 77 deletions

View File

@ -1,3 +1,19 @@
2005-02-18 Alex Roitman <shura@alex.neuro.umn.edu>
* src/docgen/LPRDoc.py (draw_path,draw_bar): Fill, then stroke.
* src/DbPrompter.py: Change file filter name.
* src/Report.py (doc_type_changed): Deal with empty extensions.
* src/docgen/AsciiDoc.py (add_photo): Add method;
(end_row): Inlcude last cell into proper formatting.
* src/GedcomInfo.py: Properly import expat.ParserCreate class.
* src/TipOfDay.py: Properly import expat.ParserCreate class.
* src/RecentFiles.py: Properly import expat.ParserCreate class.
* src/ReadXML.py: Properly import expat.* classes.
* doc/gramps-manual/C/usage.xml: Update.
* doc/gramps-manual/C/usage.xml: Update.
* doc/xmldocs.make: Switch Makefile from CLEANFILES to DISTCLEANFILES.
* src/Makefile.am: Add const.pyc and const.pyo to CLEANFILES.
2005-02-18 Eero Tamminen <eerot@sf>
* src/plugins/StatisticsChart.py: fix date object checking

View File

@ -1,5 +1,3 @@
<chapter id="gramps-usage">
<!--
User Manual for Gramps - a GTK+/GNOME based genealogy program
@ -22,6 +20,7 @@
<!-- $Id$ -->
<chapter id="gramps-usage">
<title>Usage</title>
<para>As commonly encountered in everyday life, in
&app; there is usually more than one way to
@ -33,10 +32,19 @@
<title>Starting a New Database</title>
<para>To start a new database, choose <menuchoice><guimenu>File</guimenu>
<guimenuitem>New</guimenuitem></menuchoice>. You will then be
prompted with the <guilabel>Save Database</guilabel> dialog asking
prompted with the <guilabel>Create GRAMPS database</guilabel> dialog asking
to specify the name under which the new database will be stored.
Choose an <replaceable>empty directory</replaceable> for your new
database (create one if necessary). </para>
The new database will be created in the BSDDB format, with <filename>.grdb</filename>
as the default extension.</para>
<note id="new-db-notdir-note">
<title>Selecting file</title>
<para>
Unlike the version 1.0.X of &app;, this version does not require selecting directory
for the database. Please select filename, as you would in any other application.
</para>
</note>
</sect1>
<!-- ================ Usage Subsection ================================ -->
@ -45,39 +53,77 @@
<para>To open a database, either choose <menuchoice>
<guimenu>File</guimenu><guimenuitem>Open</guimenuitem></menuchoice>
or click the <guibutton>Open</guibutton> button on the Toolbar.
The <guilabel>Open Database</guilabel> dialog will appear.
Either type the full path into the <guilabel>Database</guilabel> text
entry field, or click the <guibutton>Browse...</guibutton> button to get
the <guilabel>Open File</guilabel> dialog in which you can select the
database that you want to open. After you have selected the database,
click the <guibutton>OK</guibutton> button to open it. </para>
The <guilabel>Open database</guilabel> dialog will appear.
</para>
<para>
The filetype filter in the <guilabel>Open database</guilabel> dialog allows
you to display files of a certain type. If the <guilabel>All files</guilabel>
filter is selected (the default), all the files will be shown. The type will
be deteremined by the extension of the selected filename.
</para>
<note id="open-db-note"><title>Selecting file</title>
<para>
Unlike the version 1.0.X of &app;, this version does not require selecting directory
for the database. Please select filename, as you would in any other application.
</para>
</note>
<para>If you do not have write permissions for the selected database, it will
be opened in a Read Only mode. In this mode, the data may be viewed, but
no changes will be made to the database. To indicate this mode, the title of the
main window will be appended with <guilabel>(Read Only)</guilabel> text.
</para>
<note id="open-db-note2"><title>Opening XML and GEDCOM databases</title>
<para>
This version allows direct opening and editing of &app; XML and GEDCOM
databases. Please keep in mind that, unlike using the native grdb format,
these formats require holding all data in memory. This leads to performance
and memory consumption problems which grdb was designed to solve.</para>
<para>While direct opening of a &app; XML or GEDCOM file is convenient
for a small database, it may prove burdensome for large databases.
If you experience this, please consider creating a new native (grdb) database
and importing your XML or GEDCOM data into it. This will make accessing
your data much more efficient and quick.
</para>
</note>
<warning id="open-db-warn">
<title>GEDCOM Editing</title>
<para>
Please keep in mind that some information in GEDCOM file may be lost
during import into &app;. Simply opening and viewing the file will not change it.
However, if any changes were made and they were not abandoned upon exit,
exiting &app; will save the data, with the possible data loss.
</para>
</warning>
<para>If you have previously opened databases with &app; you can
retrieve your past selections from the drop-down menu by clicking the
down arrow button. Finally, if the Revision Control System (RCS) is
enabled in the <guilabel>Preferences</guilabel> dialog, the check box
<guilabel>Revert to an older version from RCS</guilabel> will be
available. Check it to revert your database to an older RCS
version. </para>
<para>NOTE: you should open a <replaceable>DIRECTORY</replaceable> and
<replaceable>NOT a FILE</replaceable> when opening
&app; database. The directory you need to open should contain the
database file <replaceable>data.gramps</replaceable> as well as any
possible copies
of media objects. Such a directory is created by &app; when you start
a new database and is updated each time the database is saved. </para>
</sect1>
<!-- ================ Usage Subsection ================================ -->
<sect1 id="save-db">
<title>Saving a Database</title>
<para>To save changes made to your database, choose <menuchoice>
<guimenu>File</guimenu>
<guimenuitem>Save</guimenuitem></menuchoice> or click the
<guibutton>Save</guibutton> button on the Toolbar. The statusbar will then
display the <guilabel>Saving <replaceable>databasename</replaceable>...</guilabel>
message, and the progressbar will advance as the saving progresses.</para>
<para>A consequence of the new database backend is that the changes, once approved
by the user, are applied immediately. In short, once you click <guibutton>OK</guibutton>
in the Person, Family, Source, Place, Media object, or Event editor, all the changes made to
this object are recorded in the database. No saving is necessary, or even possible.
</para>
<para>Choosing <menuchoice><guimenu>Edit</guimenu><guimenuitem>Undo</guimenuitem>
</menuchoice> allows you to undo the changes you made, one step at a time.</para>
<tip id="save-tip"><title>Reverting the whole session</title>
<para>If you would like to revert the whole editing session, choose
<menuchoice><guimenu>File</guimenu><guimenuitem>Abandon changes
and quit</guimenuitem></menuchoice>. This will be analogous to quitting
without saving any changes in other applications.
</para>
</tip>
</sect1>
<!-- ================ Usage Subsection ================================ -->
@ -85,33 +131,71 @@
<title>Importing Data</title>
<para>Importing allows you to incorporate the data from other
databases into your currently open &app; database. Currently,
&app; can import data from three different
formats: GEDCOM, &app; database, and &app; package. All of these are
available as items of <menuchoice><guimenu>File</guimenu>
<guisubmenu>Import</guisubmenu></menuchoice> submenu.</para>
&app; can import data from the following formats: &app; database (grdb),
GEDCOM, &app; XML, &app; package, and GeneWeb. All of these are
available by choosing <menuchoice><guimenu>File</guimenu>
<guisubmenu>Import</guisubmenu></menuchoice> and
selecting an appropriate file.</para>
<para>Both &app; database, and &app; package are native &app;
formats. The package is a compressed archive containing the database
file and all media objects (images, sound files, etc.) that the
database refers to. The package is created by exporting data to
the &app; package, see <xref linkend="export-data"/>.
The &app; database is a directory containing the database file and
the local media objects. The database may also have references
<para>&app; database (grdb), &app; XML, and &app; package are
all native &app; formats in that there is no information loss resulting
from reading from and writing into these formats.
<variablelist>
<varlistentry><term>&app; database (grdb)</term>
<listitem><para>
The native &app; database format is a specific form of Berkeley database (BSDDB)
with special structure of data tables. This format is binary and architecture-dependent.
It is very quick and efficient, but not generally portable across computers with
different binary architecture (e.g. i386 vs alpha).
</para></listitem>
</varlistentry>
<varlistentry><term>&app; XML</term>
<listitem><para>
The &app; XML file was the default format for the previous stable
version of &app;. Unlike the grdb format, it is architecture
independent and human-readable. The database may also have references
to non-local (external) media objects, therefore it is not guaranteed
to be completely portable. The &app; database is created by saving
the data in a usual way, see <xref linkend="save-db"/>.
to be completely portable. The &app; XML database is created by saving
(<menuchoice><guimenu>File</guimenu><guimenuitem>Save
As...</guimenuitem></menuchoice>) or exporting (<menuchoice>
<guimenu>File</guimenu><guimenuitem>Export...</guimenuitem>
</menuchoice>) data in that format.
</para></listitem>
</varlistentry>
<varlistentry><term>&app; package</term>
<listitem><para>
The package is a compressed archive containing the &app; XML
file and all media objects (images, sound files, etc.) that the
database refers to. The &app; package is created by exporting
(<menuchoice> <guimenu>File</guimenu><guimenuitem>
Export...</guimenuitem></menuchoice>) data in that format.
</para></listitem>
</varlistentry>
</variablelist>
</para>
<para>Note that the difference between opening &app; database and
importing from &app; database is that importing incorporates all the
data into your currently open database, if any. </para>
<tip id="import-tip"><title>Opening vs importing</title>
<para>The difference between opening &app; database (in any format) and
importing from &app; or GEDCOM database is that importing incorporates all the
data into your currently open database, if any. In contrast, opening the database
will switch from editing your current data to editing another file.</para></tip>
<para>After choosing an import format, you will be prompted with the
<guilabel>Open File</guilabel> dialog asking you to specify the
file name from which to import. For GEDCOM and
&app; package, select an appropriate file.
For &app; database, select a directory which stores
the database and all media files (if any).</para>
<guilabel>Import database</guilabel> dialog asking you to specify the
file name from which to import.
</para>
<note id="import-note"><title>Selecting file</title>
<para>
Unlike the version 1.0.X of &app;, this version does not require selecting directory
for the database. Please select filename, as you would in any other application.
</para>
</note>
<para>Upon starting the GEDCOM import, &app;
will display the following GEDCOM import dialog with the summary of the

View File

@ -1,3 +1,4 @@
# $Id$
#
# No modifications of this Makefile should be necessary.
#
@ -43,7 +44,8 @@ xml_files = $(entities) $(docname).xml
omf_dir=$(top_srcdir)/omf-install
EXTRA_DIST = $(xml_files) $(omffile)
CLEANFILES = omf_timestamp Makefile
CLEANFILES = omf_timestamp
DISTCLEANFILES = Makefile
include $(top_srcdir)/doc/omf.make
@ -61,6 +63,7 @@ distclean-hook:
then \
rm -f $(entities); \
fi
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
app-dist-hook:

View File

@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000 Donald N. Allingham
# Copyright (C) 2000-2005 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -18,6 +18,8 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id$
import const
ADOPT_NONE = 0
@ -50,7 +52,7 @@ SOURCE_REFS_YES = 1
# XML parser
#
#-------------------------------------------------------------------------
import xml.parsers.expat
from xml.parsers.expat import ParserCreate
class GedcomDescription:
def __init__(self,name):
@ -190,7 +192,7 @@ class GedInfoParser:
self.current = None
def parse(self,file):
p = xml.parsers.expat.ParserCreate()
p = ParserCreate()
p.StartElementHandler = self.startElement
p.ParseFile(file)

View File

@ -4,7 +4,7 @@ SUBDIRS = docgen plugins dates data po
# For intl. support, how do we compile?
MOSTLYCLEANFILES =
CLEANFILES = const.pyc const.pyo
# What are the PYTHON scripts for this package that need to be handled?
#
# We only want optimized byte-compiled (.pyo) versions, no .pyc

View File

@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2004 Donald N. Allingham
# Copyright (C) 2000-2005 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -29,7 +29,7 @@ import string
import os
import gtk
import shutil
import xml.parsers.expat
from xml.parsers.expat import ExpatError, ParserCreate
from gettext import gettext as _
#-------------------------------------------------------------------------
@ -125,7 +125,7 @@ def importData(database, filename, callback=None,cl=0,use_trans=True):
import traceback
traceback.print_exc()
return
except xml.parsers.expat.ExpatError, msg:
except ExpatError, msg:
if cl:
print "Error reading %s" % filename
print "The file is probably either corrupt or not a valid GRAMPS database."
@ -538,7 +538,7 @@ class GrampsParser:
self.trans = self.db.transaction_begin()
else:
self.trans = None
p = xml.parsers.expat.ParserCreate()
p = ParserCreate()
p.StartElementHandler = self.startElement
p.EndElementHandler = self.endElement
p.CharacterDataHandler = self.characters

View File

@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004 Donald N. Allingham
# Copyright (C) 2004-2005 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -30,7 +30,7 @@
import os
import fcntl
import time
import xml.parsers.expat
from xml.parsers.expat import ParserCreate
#-------------------------------------------------------------------------
#
@ -285,7 +285,7 @@ class GnomeRecentParser:
xml_file = open(os.path.expanduser(GNOME_FILENAME))
fcntl.lockf(xml_file,fcntl.LOCK_SH)
p = xml.parsers.expat.ParserCreate()
p = ParserCreate()
p.StartElementHandler = self.startElement
p.EndElementHandler = self.endElement
p.CharacterDataHandler = self.characters
@ -345,7 +345,7 @@ class GrampsRecentParser:
xml_file = open(os.path.expanduser(GRAMPS_FILENAME))
fcntl.lockf(xml_file,fcntl.LOCK_SH)
p = xml.parsers.expat.ParserCreate()
p = ParserCreate()
p.StartElementHandler = self.startElement
p.EndElementHandler = self.endElement
p.CharacterDataHandler = self.characters

View File

@ -1050,6 +1050,8 @@ class ReportDialog(BareReportDialog):
ext_val = obj.get_ext()
if ext_val:
fname = spath + ext_val
else:
fname = spath
self.target_fileentry.set_filename(fname)
# Does this report format use styles?

View File

@ -25,7 +25,7 @@
# standard python modules
#
#-------------------------------------------------------------------------
import xml.parsers.expat
from xml.parsers.expat import ParserCreate
from random import Random
#-------------------------------------------------------------------------
@ -100,7 +100,7 @@ class TipParser:
self.mylist = []
xml_file = open(const.tipdata)
self.tlist = []
p = xml.parsers.expat.ParserCreate()
p = ParserCreate()
p.StartElementHandler = self.startElement
p.EndElementHandler = self.endElement
p.CharacterDataHandler = self.characters

View File

@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2004 Donald N. Allingham
# Copyright (C) 2000-2005 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -25,20 +25,18 @@
# python modules
#
#------------------------------------------------------------------------
import string
import os
import GrampsMime
from gettext import gettext as _
#------------------------------------------------------------------------
#
# Load the base BaseDoc class
# Gramps modules
#
#------------------------------------------------------------------------
import BaseDoc
import PluginMgr
import Errors
from gettext import gettext as _
import GrampsMime
LEFT,RIGHT,CENTER = 'LEFT','RIGHT','CENTER'
_WIDTH_IN_CHARS = 72
@ -291,7 +289,7 @@ class AsciiDoc(BaseDoc.BaseDoc):
for cell in range(self.ncols):
if self.cell_widths[cell]:
blanks = ' '*self.cell_widths[cell] + '\n'
if self.cell_lines[cell] < self.maxlines and cell < self.ncols - 1:
if self.cell_lines[cell] < self.maxlines:
self.cellpars[cell] = self.cellpars[cell] \
+ blanks * (self.maxlines-self.cell_lines[cell])
cell_text[cell] = self.cellpars[cell].split('\n')
@ -327,6 +325,13 @@ class AsciiDoc(BaseDoc.BaseDoc):
if self.cell_lines[self.cellnum] > self.maxlines:
self.maxlines = self.cell_lines[self.cellnum]
def add_photo(self,name,pos,x,y):
this_text = '(photo)'
if self.in_cell:
self.cellpars[self.cellnum] = self.cellpars[self.cellnum] + this_text
else:
self.f.write(this_text)
def write_note(self,text,format,style_name):
if format == 1:
for line in text.split('\n'):
@ -337,7 +342,7 @@ class AsciiDoc(BaseDoc.BaseDoc):
for line in text.split('\n\n'):
self.start_paragraph(style_name)
line = line.replace('\n',' ')
line = string.join(string.split(line))
line = ' '.join(line.split())
self.write_text(line)
self.end_paragraph()