2007-02-05 Don Allingham <don@gramps-project.org>

* src/DataViews/_MediaView.py: view export support
	* src/DataViews/_RepositoryView.py: view export support
	* src/DataViews/_SourceView.py: view export support
	* src/DataViews/_EventView.py: view export support
	* src/DataViews/_FamilyList.py: view export support
	* src/DataViews/_PlaceView.py: view export support
	* src/DataViews/_PersonView.py: view export support
	* src/ViewManager.py: view export support
	* src/plugins/EventCmp.py: use new format
	* src/PageView.py: view export support
	* src/docgen/TabbedDoc.py: base class for tabular format
	* src/docgen/ODSTab.py: Open Document format for tabular format
	* src/docgen/CSVTab.py: Comma Separated Value format for tabular format



svn: r8060
This commit is contained in:
Don Allingham
2007-02-06 05:19:16 +00:00
parent 4dac15ad08
commit abf15c7712
15 changed files with 824 additions and 46 deletions

View File

@@ -755,13 +755,6 @@ class ListView(BookMarkView):
for sig in self.signal_map:
db.connect(sig, self.signal_map[sig])
# if Config.get(Config.FILTER):
# search = EMPTY_SEARCH
# else:
# search = self.search_bar.get_value()
# self.model = self.make_model(self.dbstate.db, 0, search=search)
# self.list.set_model(self.model)
self.build_columns()
self.bookmarks.update_bookmarks(self.get_bookmarks())
if self.active:
@@ -811,6 +804,7 @@ class ListView(BookMarkView):
self.DEL_MSG, self.remove),
('ColumnEdit', gtk.STOCK_PROPERTIES, _('_Column Editor'),
None, None, self.column_editor),
('ExportTab', None, _('Export view'), None, None, self.export),
])
self.add_action_group(self.edit_action)
@@ -853,3 +847,67 @@ class ListView(BookMarkView):
def key_delete(self):
self.remove(None)
def export(self, obj):
chooser = gtk.FileChooserDialog(
_("Export view as spreadsheet"),
self.uistate.window,
gtk.FILE_CHOOSER_ACTION_SAVE,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN, gtk.RESPONSE_OK))
chooser.set_do_overwrite_confirmation(True)
combobox = gtk.combo_box_new_text()
label = gtk.Label(_("Format:"))
label.set_alignment(1.0, 0.5)
box = gtk.HBox()
box.pack_start(label, True, True, padding=12)
box.pack_start(combobox, False, False)
combobox.append_text(_('CSV'))
combobox.append_text(_('OpenOffice Spreadsheet'))
combobox.set_active(0)
box.show_all()
chooser.set_extra_widget(box)
while True:
value = chooser.run()
fn = chooser.get_filename()
fl = combobox.get_active()
if value == gtk.RESPONSE_OK:
if fn:
chooser.destroy()
break
else:
chooser.destroy()
return
self.write_tabbed_file(fn, fl)
def write_tabbed_file(self, name, type):
if type == 0:
from CSVTab import CSVTab as tabgen
else:
from ODSTab import ODSTab as tabgen
data_cols = [pair[1] for pair in self.column_order() if pair[0]]
column_names = [self.colinfo[i] for i in data_cols]
o = tabgen(len(column_names))
o.open(name)
o.start_page()
o.start_row()
for name in column_names:
o.write_cell(name)
o.end_row()
for row in self.model:
o.start_row()
for index in data_cols:
o.write_cell(row[index])
o.end_row()
o.end_page()
o.close()