2008-01-15 Raphael Ackermann <raphael.ackermann@gmail.com>

* src/plugins/WriteCD.py
	* src/plugins/vcardexport.glade
	* src/plugins/ExportVCard.py
	* src/plugins/writeftree.glade
	* src/plugins/ExportCSV.py
	* src/plugins/csvexport.glade
	* src/plugins/vcalendarexport.glade
	* src/plugins/ExportVCalendar.py
	* src/plugins/genewebexport.glade
	* src/plugins/WriteGeneWeb.py
	* src/ExportAssistant.py
	* src/ExportOptions.py
	* src/ArgHandler.py
	work on mnemonics for export dialogues and doc string fixes

svn: r9855
This commit is contained in:
Raphael Ackermann 2008-01-16 21:42:05 +00:00
parent 57d376fca7
commit 719be42081
14 changed files with 115 additions and 81 deletions

View File

@ -1,3 +1,19 @@
2008-01-15 Raphael Ackermann <raphael.ackermann@gmail.com>
* src/plugins/WriteCD.py
* src/plugins/vcardexport.glade
* src/plugins/ExportVCard.py
* src/plugins/writeftree.glade
* src/plugins/ExportCSV.py
* src/plugins/csvexport.glade
* src/plugins/vcalendarexport.glade
* src/plugins/ExportVCalendar.py
* src/plugins/genewebexport.glade
* src/plugins/WriteGeneWeb.py
* src/ExportAssistant.py
* src/ExportOptions.py
* src/ArgHandler.py
work on mnemonics for export dialogues and doc string fixes
2008-01-16 Benny Malengier <benny.malengier@gramps-project.org>
* src/ArgHandler.py: don't crash arghandler on wrong input #1592
* src/const.py.in: Add -h and --help so those work for non gnome users

View File

@ -141,7 +141,7 @@ class ArgHandler:
"""
Fill in lists with open, exports, imports, and actions options.
Any parsing errors lead to abort
Any parsing errors lead to abort.
Possible:
1/ Just the family tree (name or database dir)
@ -152,7 +152,9 @@ class ArgHandler:
4/ -o, output a family tree in required format, optionally provide
-f to indicate format (possible: 'gedcom',
'gramps-xml','gramps-pkg','iso','wft','geneweb')
5/ An action
5/ -a, --action: An action (possible: 'check', 'summary', 'report',
'tool')
"""
try:
options, leftargs = getopt.getopt(self.args[1:],

View File

@ -82,10 +82,13 @@ _ExportAssistant_pages = {
class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
"""
This class creates a GTK assistant to guide the user through the various
Save as/Export options. The overall goal is to keep things simple by
presenting few choice options on each assistant page.
Save as/Export options.
The overall goal is to keep things simple by presenting few choice options
on each assistant page.
The export formats and options are obtained from the plugins.
The export formats and options are obtained from the plugins
"""
__gsignals__ = {"apply": "override", "cancel": "override",
@ -93,7 +96,8 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
def __init__(self,dbstate,uistate):
"""
Set up the assistant, and build all the possible assistant pages.
Set up the assistant, and build all the possible assistant pages.
Some page elements are left empty, since their contents depends
on the user choices and on the success of the attempted save.
@ -143,13 +147,11 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
ManagedWindow.ManagedWindow.show(self)
def build_menu_names(self,obj):
''' Override ManagedWindow method
'''
"""Override ManagedWindow method."""
return (self.top_title, None)
def create_page_intro(self):
''' Create the introduction page
'''
"""Create the introduction page."""
label = gtk.Label(self.get_intro_text())
label.set_line_wrap(True)
label.set_use_markup(True)
@ -165,10 +167,12 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.set_page_type(page, gtk.ASSISTANT_PAGE_INTRO)
def create_page_exporttypes(self):
''' Create the export type page
A Title label
"""Create the export type page.
A Title label.
A table of format radio buttons and their descriptions.
'''
"""
self.format_buttons = []
box = gtk.VBox()
@ -224,10 +228,11 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.set_page_type(page, gtk.ASSISTANT_PAGE_CONTENT)
def forward_func(self, pagenumber, data):
''' This function is called on forward press.
"""This function is called on forward press.
Normally, go to next page, however, before options,
we decide if options to show
'''
"""
if pagenumber == _ExportAssistant_pages['exporttypes'] :
#decide if options need to be shown:
ix = self.get_selected_format_index()
@ -240,8 +245,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
return pagenumber + 1
def create_options(self):
''' This method gets the option page, and fills it with the options
'''
"""This method gets the option page, and fills it with the options."""
option = self.get_selected_format_index()
vbox = self.get_nth_page(_ExportAssistant_pages['options'])
self.set_page_title(vbox, self.exportformats[option][3][0])
@ -288,10 +292,11 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.set_page_type(page, gtk.ASSISTANT_PAGE_CONTENT)
def check_fileselect(self, filechooser, event=None):
''' Given a filechooser, determine if it can be marked complete
in the Assistant
Used as normal callback and event callback.
'''
"""Given a filechooser, determine if it can be marked complete in
the Assistant.
Used as normal callback and event callback.
"""
filename = filechooser.get_filename()
folder = filechooser.get_current_folder()
#the file must be valid, not a folder, and folder must be valid
@ -361,11 +366,13 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.close()
def do_prepare(self, page):
'''
"""
The "prepare" signal is emitted when a new page is set as the
assistant's current page, but before making the new page visible.
@param page: the new page to prepare for display
'''
@param page: the new page to prepare for display.
"""
#determine if we go backward or forward
page_number = self.get_current_page()
assert page == self.get_nth_page(page_number)
@ -435,7 +442,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.post_save()
#update the label and title
if success is None or success:
if success:
conclusion_title = _('Your data has been saved')
conclusion_text = _(
'The copy of your data has been '
@ -473,8 +480,10 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
def obtain_export_formats(self):
"""
This method builds its own list of available exports.
The list is built from the PluginMgr.export_list list
and from the locally defined exports (i.e. native export defined here).
The list is built from the PluginMgr.export_list list and from the
locally defined exports (i.e. native export defined here).
"""
self.exportformats = [item for item in export_list]
@ -493,8 +502,9 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
def get_selected_format_index(self):
"""
Query the format radiobuttons and return the index number
of the selected one.
Query the format radiobuttons and return the index number of the
selected one.
"""
for ix in range(len(self.format_buttons)):
button = self.format_buttons[ix]
@ -504,9 +514,7 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
return 0
def suggest_filename(self):
"""
Prepare suggested filename and set it in the file chooser.
"""
"""Prepare suggested filename and set it in the file chooser."""
ix = self.get_selected_format_index()
ext = self.exportformats[ix][4]
@ -527,8 +535,10 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
def save(self):
"""
Perform the actual Save As/Export operation.
Perform the actual Save As/Export operation.
Depending on the success status, set the text for the final page.
"""
filename = unicode(self.chooser.get_filename(),
sys.getfilesystemencoding())
@ -563,10 +573,12 @@ class ExportAssistant(gtk.Assistant, ManagedWindow.ManagedWindow) :
self.writestarted = False
def set_busy_cursor(self,value):
''' set or unset the busy cursor while saving data
"""Set or unset the busy cursor while saving data.
Note : self.window is the gtk.Assistant gtk.Window, not
a part of ManagedWindow
'''
"""
if value:
self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
#self.set_sensitive(0)

View File

@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2007 Donald N. Allingham
# Copyright (C) 2007-2008 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,9 +18,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
Provides the common export options for Exporters
"""
"""Provide the common export options for Exporters."""
#-------------------------------------------------------------------------
#
@ -48,7 +46,8 @@ from Filters import GenericFilter, Rules
class WriterOptionBox:
"""
Create a VBox with the option widgets and define methods to retrieve
the options.
the options.
"""
def __init__(self, person):
self.person = person
@ -60,16 +59,14 @@ class WriterOptionBox:
self.filter_obj = None
def get_option_box(self):
"""
Builds up a gtk.Table that contains the standard options
"""
"""Build up a gtk.Table that contains the standard options."""
table = gtk.Table(3, 2)
label = gtk.Label('Filter')
label = gtk.Label(_('Filt_er'))
self.filter_obj = gtk.ComboBox()
self.private_check = gtk.CheckButton(
_('Do not include records marked private'))
_('_Do not include records marked private'))
self.restrict_check = gtk.CheckButton(
_('Restrict data on living people'))
_('_Restrict data on living people'))
self.private_check.set_active(Config.get(Config.EXPORT_NO_PRIVATE))
self.restrict_check.set_active(Config.get(Config.EXPORT_RESTRICT))
@ -106,9 +103,7 @@ class WriterOptionBox:
return table
def __define_person_filters(self):
"""
Add person filters if the active person is defined
"""
"""Add person filters if the active person is defined."""
des = GenericFilter()
des.set_name(_("Descendants of %s") %
@ -131,8 +126,9 @@ class WriterOptionBox:
def parse_options(self):
"""
Extract the common values from the GTK widgets. After this function
is called, the following variables are defined:
Extract the common values from the GTK widgets.
After this function is called, the following variables are defined:
private = privacy requested
restrict = restrict information on living peoplel

View File

@ -1,7 +1,7 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2007 Douglas S. Blank
# Copyright (C) 2007-2008 Douglas S. Blank
# Copyright (C) 2004-2007 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
@ -20,7 +20,7 @@
#
# $Id$
"Export to CSV Spreadsheet"
"Export to CSV Spreadsheet."
#-------------------------------------------------------------------------
#
@ -93,9 +93,7 @@ def sortable_string_representation(text):
#
#-------------------------------------------------------------------------
class UTF8Recoder:
"""
Iterator that reads an encoded stream and reencodes the input to UTF-8
"""
"""Iterator that reads an encoded stream and reencodes the input to UTF-8."""
def __init__(self, f, encoding):
self.reader = codecs.getreader(encoding)(f)
@ -107,8 +105,9 @@ class UTF8Recoder:
class UnicodeReader:
"""
A CSV reader which will iterate over lines in the CSV file "f",
which is encoded in the given encoding.
A CSV reader which will iterate over lines in the CSV file "f", which is
encoded in the given encoding.
"""
def __init__(self, f, encoding="utf-8", **kwds):
@ -124,8 +123,9 @@ class UnicodeReader:
class UnicodeWriter:
"""
A CSV writer which will write rows to CSV file "f",
which is encoded in the given encoding.
A CSV writer which will write rows to CSV file "f", which is encoded in
the given encoding.
"""
def __init__(self, f, encoding="utf-8", **kwds):
@ -163,6 +163,7 @@ class CSVWriterOptionBox:
"""
Create a VBox with the option widgets and define methods to retrieve
the options.
"""
def __init__(self,person):
self.person = person
@ -498,7 +499,7 @@ class CSVWriter:
# Register all of the plugins
#
#-------------------------------------------------------------------------
_title = _('Comma Separated Values Spreadsheet (CSV)')
_title = _('Comma _Separated Values Spreadsheet (CSV)')
_description = _('CSV is a common spreadsheet format.')
_config = (_('CSV spreadsheet options'),CSVWriterOptionBox)
_filename = 'csv'

View File

@ -20,7 +20,7 @@
#
# $Id$
"Export Events to vCalendar"
"Export Events to vCalendar."
#-------------------------------------------------------------------------
#
@ -68,7 +68,8 @@ from PluginUtils import register_export
class CalendarWriterOptionBox:
"""
Create a VBox with the option widgets and define methods to retrieve
the options.
the options.
"""
def __init__(self, person):
self.person = person
@ -347,7 +348,7 @@ def exportData(database, filename, person, option_box, callback=None):
#
#
#-------------------------------------------------------------------------
_title = _('vCalendar')
_title = _('vC_alendar')
_description = _('vCalendar is used in many calendaring and pim applications.')
_config = (_('vCalendar export options'), CalendarWriterOptionBox)
_filename = 'vcs'

View File

@ -20,7 +20,7 @@
#
# $Id$
"Export Persons to vCard"
"Export Persons to vCard."
#-------------------------------------------------------------------------
#
@ -64,7 +64,8 @@ from PluginUtils import register_export
class CardWriterOptionBox:
"""
Create a VBox with the option widgets and define methods to retrieve
the options.
the options.
"""
def __init__(self, person):
self.person = person
@ -263,7 +264,7 @@ def exportData(database, filename, person, option_box, callback=None):
#
#
#-------------------------------------------------------------------------
_title = _('vCard')
_title = _('_vCard')
_description = _('vCard is used in many addressbook and pim applications.')
_config = (_('vCard export options'), CardWriterOptionBox)
_filename = 'vcf'

View File

@ -20,7 +20,7 @@
# $Id$
"Export to CD (nautilus)"
"Export to CD (nautilus)."
#-------------------------------------------------------------------------
#
@ -293,7 +293,7 @@ class PackageWriter:
# Register the plugin
#
#-------------------------------------------------------------------------
_title = _('Export to CD (p_ortable XML)')
_title = _('_Export to CD (portable XML)')
_description = _('Exporting to CD copies all your data and media '
'object files to the CD Creator. You may later burn the CD '
'with this data, and that copy will be completely portable '

View File

@ -20,7 +20,7 @@
#
# $Id$
"Export to GeneWeb"
"Export to GeneWeb."
#-------------------------------------------------------------------------
#
@ -67,7 +67,8 @@ from PluginUtils import register_export
class GeneWebWriterOptionBox:
"""
Create a VBox with the option widgets and define methods to retrieve
the options.
the options.
"""
def __init__(self, person):
self.person = person
@ -440,7 +441,11 @@ class GeneWebWriter:
return retval
def get_full_person_info_fam(self, person):
"""Output full person data of a family member only if the person is not listed as a child"""
"""Output full person data of a family member.
This is only done if the person is not listed as a child.
"""
retval = ""
if self.persons_details_done.count(person.get_handle()) == 0:
is_child = 0
@ -456,7 +461,7 @@ class GeneWebWriter:
def get_full_person_info_child(self, person):
"""Output full person data for a child, if not printed somewhere else"""
"""Output full person data for a child, if not printed somewhere else."""
retval = ""
if self.persons_details_done.count(person.get_handle()) == 0:
self.persons_details_done.append(person.get_handle())
@ -633,7 +638,7 @@ def exportData(database,filename,person,option_box,callback=None):
#
#
#-------------------------------------------------------------------------
_title = _('G_eneWeb')
_title = _('_GeneWeb')
_description = _('GeneWeb is a web based genealogy program.')
_config = (_('GeneWeb export options'), GeneWebWriterOptionBox)
_filename = 'gw'

View File

@ -136,7 +136,7 @@
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">_Filter:</property>
<property name="label" translatable="yes">Filt_er:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@ -241,7 +241,7 @@
<widget class="GtkCheckButton" id="individuals">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">_Individuals</property>
<property name="label" translatable="yes">I_ndividuals</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>

View File

@ -123,7 +123,7 @@
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">_Filter:</property>
<property name="label" translatable="yes">Filt_er:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@ -322,7 +322,7 @@
<widget class="GtkCheckButton" id="images">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">R_eference images from path: </property>
<property name="label" translatable="yes">Reference i_mages from path: </property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>

View File

@ -123,7 +123,7 @@
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">_Filter:</property>
<property name="label" translatable="yes">Filt_er:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>

View File

@ -123,7 +123,7 @@
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">_Filter:</property>
<property name="label" translatable="yes">Filt_er:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>

View File

@ -144,7 +144,7 @@
<child>
<widget class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">_Filter:</property>
<property name="label" translatable="yes">Filt_er:</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>