* src/plugins/SimpleBookTitle.py: Introduce footer.

Introduce Image size option. Re-name item to Title Page (no longer
simple I'm afraid).


svn: r2114
This commit is contained in:
Alex Roitman 2003-09-11 01:40:20 +00:00
parent 94d169d9b4
commit dab655e2ac
2 changed files with 134 additions and 26 deletions

View File

@ -1,3 +1,8 @@
2003-09-10 Alex Roitman <shura@alex.neuro.umn.edu>
* src/plugins/SimpleBookTitle.py: Introduce footer.
Introduce Image size option. Re-name item to Title Page (no longer
simple I'm afraid).
2003-09-10 Tim Waugh <twaugh@redhat.com> 2003-09-10 Tim Waugh <twaugh@redhat.com>
* src/Relationship.py: Fixed typos in relationship descriptions. * src/Relationship.py: Fixed typos in relationship descriptions.

View File

@ -51,14 +51,17 @@ import gnome.ui
#------------------------------------------------------------------------ #------------------------------------------------------------------------
class SimpleBookTitle(Report.Report): class SimpleBookTitle(Report.Report):
def __init__(self,database,person,title_string,object_id,copyright_string, def __init__(self,database,
doc,output,newpage=0): person,title_string,subtitle_string,object_id,image_size,
footer_string,doc,output,newpage=0):
self.map = {} self.map = {}
self.database = database self.database = database
self.start = person self.start = person
self.title_string = title_string self.title_string = title_string
self.object_id = object_id self.object_id = object_id
self.copyright_string = copyright_string self.image_size = image_size
self.subtitle_string = subtitle_string
self.footer_string = footer_string
self.doc = doc self.doc = doc
self.newpage = newpage self.newpage = newpage
if output: if output:
@ -81,13 +84,23 @@ class SimpleBookTitle(Report.Report):
self.doc.write_text(self.title_string) self.doc.write_text(self.title_string)
self.doc.end_paragraph() self.doc.end_paragraph()
self.doc.start_paragraph('SBT-Subtitle')
self.doc.write_text(self.subtitle_string)
self.doc.end_paragraph()
if self.object_id: if self.object_id:
object = self.database.getObject(self.object_id) object = self.database.getObject(self.object_id)
name = object.getPath() name = object.getPath()
self.doc.add_photo(name,'center',10,10) if self.image_size:
image_size = self.image_size
else:
image_size = min(
0.8 * self.doc.get_usable_width(),
0.7 * self.doc.get_usable_height() )
self.doc.add_photo(name,'center',image_size,image_size)
self.doc.start_paragraph('SBT-Subtitle') self.doc.start_paragraph('SBT-Footer')
self.doc.write_text(self.copyright_string) self.doc.write_text(self.footer_string)
self.doc.end_paragraph() self.doc.end_paragraph()
if self.standalone: if self.standalone:
@ -115,7 +128,49 @@ def _make_default_style(default_style):
para.set_alignment(BaseDoc.PARA_ALIGN_CENTER) para.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
para.set_description(_('The style used for the subtitle.')) para.set_description(_('The style used for the subtitle.'))
default_style.add_style("SBT-Subtitle",para) default_style.add_style("SBT-Subtitle",para)
font = BaseDoc.FontStyle()
font.set(face=BaseDoc.FONT_SANS_SERIF,size=10,italic=1)
para = BaseDoc.ParagraphStyle()
para.set_font(font)
para.set_header_level(2)
para.set(pad=0.5)
para.set_alignment(BaseDoc.PARA_ALIGN_CENTER)
para.set_description(_('The style used for the footer.'))
default_style.add_style("SBT-Footer",para)
#-------------------------------------------------------------------------
#
# Define pre-set image sizes
#
#-------------------------------------------------------------------------
_sizes = (
( _('Fit page'), 0 ),
( _('%d cm') % 5, 5 ),
( _('%d cm') % 10, 10 ),
( _('%d cm') % 15, 15 ),
)
#-------------------------------------------------------------------------
#
# make_paper_menu
#
#-------------------------------------------------------------------------
def make_size_menu(main_menu,def_size_index=0):
index = 0
myMenu = gtk.Menu()
for size in _sizes:
name = size[0]
menuitem = gtk.MenuItem(name)
menuitem.show()
myMenu.append(menuitem)
if index == def_size_index:
myMenu.set_active(index)
index = index + 1
main_menu.set_menu(myMenu)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# Set up sane defaults for the book_item # Set up sane defaults for the book_item
@ -126,10 +181,19 @@ _style_name = "default"
_person_id = "" _person_id = ""
_title_string = "" _title_string = ""
_subtitle_string = ""
_object_id = "" _object_id = ""
_copyright_string = "" _size_index = 0
_footer_string = ""
_options = ( _person_id, _title_string, _object_id, _copyright_string ) _options = (
_person_id,
_title_string,
_subtitle_string,
_object_id,
_size_index,
_footer_string
)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
@ -157,20 +221,32 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
self.title_string = _('Title of the Book') self.title_string = _('Title of the Book')
if self.options[2]: if self.options[2]:
self.object_id = self.options[2] self.subtitle_string = self.options[2]
else:
self.subtitle_string = _('Subtitle of the Book')
if self.options[3]:
self.object_id = self.options[3]
else: else:
self.object_id = "" self.object_id = ""
if self.options[3]: if self.options[4]:
self.copyright_string = self.options[3] self.size_index = int(self.options[4])
else:
self.size_index = 0
if self.options[5]:
self.footer_string = self.options[5]
else: else:
import time import time
dateinfo = time.localtime(time.time()) dateinfo = time.localtime(time.time())
name = self.db.getResearcher().getName() name = self.db.getResearcher().getName()
self.copyright_string = _('Copyright %d %s') % (dateinfo[0], name) self.footer_string = _('Copyright %d %s') % (dateinfo[0], name)
self.title_entry.set_text(self.title_string) self.title_entry.set_text(self.title_string)
self.copyright_entry.set_text(self.copyright_string) self.subtitle_entry.set_text(self.subtitle_string)
self.footer_entry.set_text(self.footer_string)
self.size_menu.set_history(self.size_index)
if self.object_id: if self.object_id:
object = self.db.getObject(self.object_id) object = self.db.getObject(self.object_id)
self.obj_title.set_text(object.getDescription()) self.obj_title.set_text(object.getDescription())
@ -184,6 +260,7 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
icon_image = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(the_type)) icon_image = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(the_type))
self.preview.set_from_pixbuf(icon_image) self.preview.set_from_pixbuf(icon_image)
self.remove_obj_button.set_sensitive(gtk.TRUE) self.remove_obj_button.set_sensitive(gtk.TRUE)
self.size_menu.set_sensitive(gtk.TRUE)
self.new_person = None self.new_person = None
@ -219,9 +296,11 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
def add_user_options(self): def add_user_options(self):
self.title_entry = gtk.Entry() self.title_entry = gtk.Entry()
self.copyright_entry = gtk.Entry() self.subtitle_entry = gtk.Entry()
self.add_frame_option(_('Text'),_('Title String'),self.title_entry) self.footer_entry = gtk.Entry()
self.add_frame_option(_('Text'),_('Subtitle String'),self.copyright_entry) self.add_frame_option(_('Text'),_('Title'),self.title_entry)
self.add_frame_option(_('Text'),_('Subtitle'),self.subtitle_entry)
self.add_frame_option(_('Text'),_('Footer'),self.footer_entry)
frame = gtk.Frame() frame = gtk.Frame()
frame.set_size_request(96,96) frame.set_size_request(96,96)
@ -248,8 +327,14 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
1,2,0,1,gtk.SHRINK|gtk.FILL,gtk.SHRINK|gtk.FILL) 1,2,0,1,gtk.SHRINK|gtk.FILL,gtk.SHRINK|gtk.FILL)
select_table.attach(self.remove_obj_button, select_table.attach(self.remove_obj_button,
2,3,0,1,gtk.SHRINK|gtk.FILL,gtk.SHRINK|gtk.FILL) 2,3,0,1,gtk.SHRINK|gtk.FILL,gtk.SHRINK|gtk.FILL)
self.size_menu = gtk.OptionMenu()
make_size_menu(self.size_menu)
self.size_menu.set_sensitive(gtk.FALSE)
self.add_frame_option(_('Image'),_('Preview'),preview_table) self.add_frame_option(_('Image'),_('Preview'),preview_table)
self.add_frame_option(_('Image'),_('Select'),select_table) self.add_frame_option(_('Image'),_('Select'),select_table)
self.add_frame_option(_('Image'),_('Size'),self.size_menu)
def parse_report_options_frame(self): def parse_report_options_frame(self):
"""Parse the report options frame of the dialog. Save the user selected choices for later use.""" """Parse the report options frame of the dialog. Save the user selected choices for later use."""
@ -259,7 +344,9 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
# get values from the widgets # get values from the widgets
self.title_string = self.title_entry.get_text() self.title_string = self.title_entry.get_text()
self.copyright_string = self.copyright_entry.get_text() self.subtitle_string = self.subtitle_entry.get_text()
self.footer_string = self.footer_entry.get_text()
self.size_index = self.size_menu.get_history()
def on_cancel(self, obj): def on_cancel(self, obj):
pass pass
@ -269,7 +356,8 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
self.obj_title.set_text('') self.obj_title.set_text('')
self.preview.set_from_pixbuf(None) self.preview.set_from_pixbuf(None)
self.remove_obj_button.set_sensitive(gtk.FALSE) self.remove_obj_button.set_sensitive(gtk.FALSE)
self.size_menu.set_sensitive(gtk.FALSE)
def select_obj(self, obj): def select_obj(self, obj):
s_o = SelectObject.SelectObject(self.db,_("Select an Object")) s_o = SelectObject.SelectObject(self.db,_("Select an Object"))
object = s_o.run() object = s_o.run()
@ -288,6 +376,7 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
icon_image = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(the_type)) icon_image = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(the_type))
self.preview.set_from_pixbuf(icon_image) self.preview.set_from_pixbuf(icon_image)
self.remove_obj_button.set_sensitive(gtk.TRUE) self.remove_obj_button.set_sensitive(gtk.TRUE)
self.size_menu.set_sensitive(gtk.TRUE)
def select_file(self, obj): def select_file(self, obj):
a_o = AddMedia.AddMediaObject(self.db) a_o = AddMedia.AddMediaObject(self.db)
@ -307,6 +396,7 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
icon_image = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(the_type)) icon_image = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(the_type))
self.preview.set_from_pixbuf(icon_image) self.preview.set_from_pixbuf(icon_image)
self.remove_obj_button.set_sensitive(gtk.TRUE) self.remove_obj_button.set_sensitive(gtk.TRUE)
self.size_menu.set_sensitive(gtk.TRUE)
def on_ok_clicked(self, obj): def on_ok_clicked(self, obj):
"""The user is satisfied with the dialog choices. Parse all options """The user is satisfied with the dialog choices. Parse all options
@ -318,10 +408,12 @@ class SimpleBookTitleDialog(Report.BareReportDialog):
if self.new_person: if self.new_person:
self.person = self.new_person self.person = self.new_person
self.options = ( self.person.getId() , self.title_string, self.object_id, self.copyright_string )
self.options = ( self.person.getId(),
self.title_string, self.subtitle_string,
self.object_id, self.size_index, self.footer_string )
self.style_name = self.selected_style.get_name() self.style_name = self.selected_style.get_name()
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# Function to write Book Item # Function to write Book Item
@ -338,17 +430,28 @@ def write_book_item(database,person,doc,options,newpage=0):
else: else:
title_string = _('Title of the Book') title_string = _('Title of the Book')
if options[2]: if options[2]:
object_id = options[2] subtitle_string = options[2]
else:
subtitle_string = _('Subtitle of the Book')
if options[3]:
object_id = options[3]
else: else:
object_id = "" object_id = ""
if options[3]: if options[4]:
copyright_string = options[3] size_index = int(options[4])
else:
size_index = 0
size = _sizes[size_index][1]
if options[5]:
footer_string = options[5]
else: else:
import time import time
dateinfo = time.localtime(time.time()) dateinfo = time.localtime(time.time())
name = database.getResearcher().getName() name = database.getResearcher().getName()
copyright_string = _('Copyright %d %s') % (dateinfo[0], name) footer_string = _('Copyright %d %s') % (dateinfo[0], name)
return SimpleBookTitle(database, person, title_string, object_id, copyright_string, doc, None, newpage ) return SimpleBookTitle(database, person,
title_string, subtitle_string, object_id, size,
footer_string, doc, None, newpage )
except Errors.ReportError, msg: except Errors.ReportError, msg:
(m1,m2) = msg.messages() (m1,m2) = msg.messages()
ErrorDialog(m1,m2) ErrorDialog(m1,m2)
@ -458,7 +561,7 @@ from Plugins import register_book_item
# (name,category,options_dialog,write_book_item,options,style_name,style_file,make_default_style) # (name,category,options_dialog,write_book_item,options,style_name,style_file,make_default_style)
register_book_item( register_book_item(
_("Simple Book Title"), _("Title Page"),
_("Title"), _("Title"),
SimpleBookTitleDialog, SimpleBookTitleDialog,
write_book_item, write_book_item,