Image handling fixes

svn: r1284
This commit is contained in:
Don Allingham 2003-02-03 19:24:27 +00:00
parent f7fea013a9
commit 0aa3cce886
15 changed files with 171 additions and 44 deletions

View File

@ -25,6 +25,9 @@
#------------------------------------------------------------------------ #------------------------------------------------------------------------
import TextDoc import TextDoc
SOLID = 0
DASHED = 1
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# GraphicsStyle # GraphicsStyle
@ -39,6 +42,7 @@ class GraphicsStyle:
self.shadow = obj.shadow self.shadow = obj.shadow
self.color = obj.color self.color = obj.color
self.lwidth = obj.lwidth self.lwidth = obj.lwidth
self.lstyle = obj.lstyle
else: else:
self.height = 0 self.height = 0
self.width = 0 self.width = 0
@ -46,6 +50,7 @@ class GraphicsStyle:
self.shadow = 0 self.shadow = 0
self.lwidth = 0.5 self.lwidth = 0.5
self.color = (255,255,255) self.color = (255,255,255)
self.lstyle = SOLID
def set_line_width(self,val): def set_line_width(self,val):
self.lwidth = val self.lwidth = val
@ -53,6 +58,12 @@ class GraphicsStyle:
def get_line_width(self): def get_line_width(self):
return self.lwidth return self.lwidth
def get_line_style(self):
return self.lstyle
def set_line_style(self,val):
self.lstyle = val
def set_height(self,val): def set_height(self,val):
self.height = val self.height = val
@ -142,6 +153,9 @@ class DrawDoc:
def end_page(self): def end_page(self):
pass pass
def draw_path(self,style,path):
pass
def draw_box(self,style,text,x,y): def draw_box(self,style,text,x,y):
pass pass

View File

@ -136,7 +136,7 @@ class FamilyView:
self.child_selection = self.child_list.get_selection() self.child_selection = self.child_list.get_selection()
Utils.build_columns(self.child_list, Utils.build_columns(self.child_list,
[ (_(''),30,-1), (_('Name'),250,-1), (_('ID'),50,-1), [ ('',30,-1), (_('Name'),250,-1), (_('ID'),50,-1),
(_('Gender'),100,-1), (_('Birth Date'),150,-1), (_('Gender'),100,-1), (_('Birth Date'),150,-1),
(_('Status'),150,-1), ('',0,-1) ]) (_('Status'),150,-1), ('',0,-1) ])

View File

@ -835,7 +835,8 @@ class FilterParser(handler.ContentHandler):
pass pass
self.gfilter_list.add(self.f) self.gfilter_list.add(self.f)
elif tag == "rule": elif tag == "rule":
name = _(attrs['class']) cname = attrs['class']
name = _(cname)
self.a = [] self.a = []
self.cname = tasks[name] self.cname = tasks[name]
elif tag == "arg": elif tag == "arg":

View File

@ -130,7 +130,7 @@ class ImageSelect:
self.image.set_from_pixbuf(image) self.image.set_from_pixbuf(image)
else: else:
i = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(type)) i = gtk.gdk.pixbuf_new_from_file(Utils.find_icon(type))
self.image.set_from_pixbuf(i) self.image.set_from_pixbuf(i)
def on_savephoto_clicked(self, obj): def on_savephoto_clicked(self, obj):
"""Save the photo in the dataobj object. (Required function)""" """Save the photo in the dataobj object. (Required function)"""
@ -161,7 +161,6 @@ class ImageSelect:
description = os.path.basename(filename) description = os.path.basename(filename)
mobj.setDescription(description) mobj.setDescription(description)
mobj.setMimeType(type) mobj.setMimeType(type)
self.savephoto(mobj)
if type[0:5] == "image": if type[0:5] == "image":
if self.external.get_active() == 0: if self.external.get_active() == 0:
@ -178,6 +177,7 @@ class ImageSelect:
mobj.getId()) mobj.getId())
mobj.setLocal(1) mobj.setLocal(1)
mobj.setPath(name) mobj.setPath(name)
self.savephoto(mobj)
self.parent.lists_changed = 1 self.parent.lists_changed = 1
Utils.destroy_passed_object(obj) Utils.destroy_passed_object(obj)

View File

@ -51,12 +51,12 @@ _column_headers = [
(_('County'),10,75), (_('County'),10,75),
(_('State'),11,75), (_('State'),11,75),
(_('Country'),12,75), (_('Country'),12,75),
(_(''),7,0), ('',7,0),
(_(''),8,0), ('',8,0),
(_(''),9,0), ('',9,0),
(_(''),10,0), ('',10,0),
(_(''),11,0), ('',11,0),
(_(''),12,0)] ('',12,0)]
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #

View File

@ -61,8 +61,6 @@ def import_media_object(filename,path,base):
type = Utils.get_mime_type(filename) type = Utils.get_mime_type(filename)
if type[0:5] == "image": if type[0:5] == "image":
name = "%s/%s%s" % (path,base,ext) name = "%s/%s%s" % (path,base,ext)
#base = "%s%s" % (base,ext)
thumb = "%s/.thumb" % (path) thumb = "%s/.thumb" % (path)
try: try:
@ -113,8 +111,7 @@ def scale_image(path,size):
scale = size / float(max(width,height)) scale = size / float(max(width,height))
try: try:
image1.scale_simple(int(scale*width), int(scale*height), gtk.gdk.INTERP_BILINEAR) return image1.scale_simple(int(scale*width), int(scale*height), gtk.gdk.INTERP_BILINEAR)
return image1
except: except:
WarningDialog(_("Could not load image file %s") % path) WarningDialog(_("Could not load image file %s") % path)
return gtk.gdk.pixbuf_new_from_file(const.icon) return gtk.gdk.pixbuf_new_from_file(const.icon)
@ -129,7 +126,7 @@ def mk_thumb(source,dest,size):
source = os.path.normpath(source) source = os.path.normpath(source)
dest = os.path.normpath(dest) dest = os.path.normpath(dest)
try: try:
if not os.path.exists(dir): if not os.path.exists(dir):
os.mkdir(dir) os.mkdir(dir)

View File

@ -647,7 +647,7 @@ class ReportDialog:
gtk.FILL|gtk.EXPAND,gtk.FILL|gtk.EXPAND,pad,pad) gtk.FILL|gtk.EXPAND,gtk.FILL|gtk.EXPAND,pad,pad)
table.attach(gtk.Label(_("User Template")),0,1,1,2, table.attach(gtk.Label(_("User Template")),0,1,1,2,
gtk.FILL,gtk.FILL,pad,pad) gtk.FILL,gtk.FILL,pad,pad)
self.html_fileentry = gnome.ui.FileEntry(_("HTML_Template"), self.html_fileentry = gnome.ui.FileEntry("HTML_Template",
_("Choose File")) _("Choose File"))
self.html_fileentry.set_sensitive(0) self.html_fileentry.set_sensitive(0)
table.attach(self.html_fileentry,1,2,1,2, table.attach(self.html_fileentry,1,2,1,2,

View File

@ -400,7 +400,7 @@ def birthday(person):
def thumb_path(dir,mobj): def thumb_path(dir,mobj):
type = mobj.getMimeType() type = mobj.getMimeType()
if type[0:5] == "image": if type[0:5] == "image":
thumb = "%s/.thumb/%s.jpg" % (dir,mobj.getId()) thumb = "%s/.thumb/%s.jpg" % (dir,mobj.getId())
try: try:
if RelImage.check_thumb(mobj.getPath(),thumb,const.thumbScale): if RelImage.check_thumb(mobj.getPath(),thumb,const.thumbScale):
return thumb return thumb

View File

@ -131,6 +131,7 @@ childRelations = {
_("Adopted") : "Adopted", _("Adopted") : "Adopted",
_("Stepchild") : "Stepchild", _("Stepchild") : "Stepchild",
_("Foster") : "Foster", _("Foster") : "Foster",
_("Sponsored") : "Sponsored",
_("None") : "None", _("None") : "None",
_("Unknown") : "Unknown", _("Unknown") : "Unknown",
_("Other") : "Other", _("Other") : "Other",

View File

@ -130,6 +130,7 @@ childRelations = {
_("Birth") : "Birth", _("Birth") : "Birth",
_("Adopted") : "Adopted", _("Adopted") : "Adopted",
_("Stepchild") : "Stepchild", _("Stepchild") : "Stepchild",
_("Sponsored") : "Sponsored",
_("Foster") : "Foster", _("Foster") : "Foster",
_("None") : "None", _("None") : "None",
_("Unknown") : "Unknown", _("Unknown") : "Unknown",

View File

@ -498,4 +498,9 @@ class OpenDrawDoc(DrawDoc.DrawDoc):
else: else:
self.f.write('/>\n') self.f.write('/>\n')
#-------------------------------------------------------------------------
#
# Register document generator
#
#-------------------------------------------------------------------------
Plugins.register_draw_doc(_("OpenOffice/StarOffice 6"),OpenDrawDoc); Plugins.register_draw_doc(_("OpenOffice/StarOffice 6"),OpenDrawDoc);

View File

@ -134,6 +134,11 @@ class PSDrawDoc(DrawDoc.DrawDoc):
self.f.write('%f cm %f cm moveto\n' % self.translate(x1,y1)) self.f.write('%f cm %f cm moveto\n' % self.translate(x1,y1))
self.f.write('%f cm %f cm lineto\n' % self.translate(x2,y2)) self.f.write('%f cm %f cm lineto\n' % self.translate(x2,y2))
self.f.write('%d setlinewidth\n' % stype.get_line_width()) self.f.write('%d setlinewidth\n' % stype.get_line_width())
if stype.get_line_style() == DrawDoc.SOLID:
self.f.write('[] 0 setdash\n')
else:
self.f.write('[2 4] 0 setdash\n')
self.f.write('2 setlinecap\n') self.f.write('2 setlinecap\n')
self.f.write('stroke\n') self.f.write('stroke\n')
self.f.write('grestore\n') self.f.write('grestore\n')

View File

@ -78,15 +78,58 @@ class PdfDrawDoc(DrawDoc.DrawDoc):
self.f.showPage() self.f.showPage()
def draw_line(self,style,x1,y1,x2,y2): def draw_line(self,style,x1,y1,x2,y2):
x1 = x1 + self.lmargin
x2 = x2 + self.lmargin
y1 = y1 + self.tmargin
y2 = y2 + self.tmargin
stype = self.draw_styles[style]
if stype.get_line_style() == DrawDoc.SOLID:
self.f.setDash([],0)
else:
self.f.setDash([2,4],0)
self.f.setLineWidth(stype.get_line_width())
self.f.line(x1*cm,y1*cm,x2*cm,y2*cm) self.f.line(x1*cm,y1*cm,x2*cm,y2*cm)
def draw_bar(self,style,x1,y1,x2,y2):
x1 = x1 + self.lmargin
x2 = x2 + self.lmargin
y1 = y1 + self.tmargin
y2 = y2 + self.tmargin
stype = self.draw_styles[style]
if stype.get_line_style() == DrawDoc.SOLID:
self.f.setDash([],0)
else:
self.f.setDash([2,4],0)
self.f.setLineWidth(stype.get_line_width())
self.f.rect(x1*cm,y1*cm,(x2-x1)*cm,(y2-y1)*cm,fill=0,stroke=1)
def draw_path(self,style,path,fill):
stype = self.draw_styles[style]
if stype.get_line_style() == DrawDoc.SOLID:
self.f.setDash([],0)
else:
self.f.setDash([2,4],0)
self.f.setLineWidth(stype.get_line_width())
p = self.f.beginPath()
point = path[0]
p.moveTo((point[0]+self.lmargin)*cm,(point[1]+self.tmargin)*cm)
for point in path[1:]:
p.lineTo((point[0]+self.lmargin)*cm,(point[1]+self.tmargin)*cm)
p.close()
self.f.drawPath(p,stroke=1,fill=fill)
def draw_box(self,style,text,x,y): def draw_box(self,style,text,x,y):
x = x + self.lmargin
y = y + self.tmargin
box_style = self.draw_styles[style] box_style = self.draw_styles[style]
para_name = box_style.get_paragraph_style() para_name = box_style.get_paragraph_style()
p = self.style_list[para_name] p = self.style_list[para_name]
w = box_style.get_width()*cm w = box_style.get_width()*cm
h = box_style.get_height()*cm h = box_style.get_height()*cm
self.f.setLineWidth(stype.get_line_width())
if box_style.get_shadow(): if box_style.get_shadow():
self.f.setFillColorRGB(0.5,0.5,0.5) self.f.setFillColorRGB(0.5,0.5,0.5)
@ -103,13 +146,16 @@ class PdfDrawDoc(DrawDoc.DrawDoc):
lines = string.split(text,'\n') lines = string.split(text,'\n')
self.center_print(lines,font,x*cm,y*cm,w,h) self.center_print(lines,font,x*cm,y*cm,w,h)
def write_at(self,style,text,x,y): def draw_text(self,style,text,x,y):
p = self.style_list[style] x = x + self.lmargin
y = y + self.tmargin
stype = self.draw_styles[style]
pname = stype.get_paragraph_style()
p = self.style_list[pname]
font = p.get_font() font = p.get_font()
self.f.setStrokeColor(make_color(font.get_color())) self.f.setStrokeColor(make_color(font.get_color()))
self.left_print(text,font,x*cm,(y*cm)+font.get_size())
self.left_print(text,font,x*cm,y*cm)
def center_print(self,lines,font,x,y,w,h): def center_print(self,lines,font,x,y,w,h):
l = len(lines) l = len(lines)

View File

@ -18,14 +18,28 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# #
#-------------------------------------------------------------------------
#
# python modules
#
#-------------------------------------------------------------------------
import string import string
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
import Plugins import Plugins
from intl import gettext as _ from intl import gettext as _
import TextDoc import TextDoc
import DrawDoc import DrawDoc
#-------------------------------------------------------------------------
#
# SvgDrawDoc
#
#-------------------------------------------------------------------------
class SvgDrawDoc(DrawDoc.DrawDoc): class SvgDrawDoc(DrawDoc.DrawDoc):
def __init__(self,styles,type,orientation): def __init__(self,styles,type,orientation):
@ -78,11 +92,34 @@ class SvgDrawDoc(DrawDoc.DrawDoc):
self.f.close() self.f.close()
def draw_line(self,style,x1,y1,x2,y2): def draw_line(self,style,x1,y1,x2,y2):
x1 = x1 + self.lmargin
x2 = x2 + self.lmargin
y1 = y1 + self.tmargin
y2 = y2 + self.tmargin
self.f.write('<line x1="%4.2fcm" y1="%4.2fcm" ' % (x1*28.35,y1*28.35)) self.f.write('<line x1="%4.2fcm" y1="%4.2fcm" ' % (x1*28.35,y1*28.35))
self.f.write('x2="%4.2fcm" y2="%4.2fcm" ' % (x2*28.35,y2*28.35)) self.f.write('x2="%4.2fcm" y2="%4.2fcm" ' % (x2*28.35,y2*28.35))
self.f.write(' style="stroke:#000000;stroke-width=1"/>\n') self.f.write(' style="stroke:#000000;stroke-width=1"/>\n')
def draw_bar(self,style,x1,y1,x2,y2):
x1 = x1 + self.lmargin
x2 = x2 + self.lmargin
y1 = y1 + self.tmargin
y2 = y2 + self.tmargin
s = self.draw_styles[style]
self.f.write('<rect ')
self.f.write('x="%4.2fcm" ' % x1)
self.f.write('y="%4.2fcm" ' % y1)
self.f.write('width="%4.2fcm" ' % (x2-x1))
self.f.write('height="%4.2fcm" ' % (y2-y1))
self.f.write('style="fill:#ffffff;stroke:#000000;')
self.f.write('stroke-width:%.2f"/>\n' % s.get_line_width())
def draw_box(self,style,text,x,y): def draw_box(self,style,text,x,y):
x = x + self.lmargin
y = y + self.tmargin
box_style = self.draw_styles[style] box_style = self.draw_styles[style]
para_name = box_style.get_paragraph_style() para_name = box_style.get_paragraph_style()
p = self.style_list[para_name] p = self.style_list[para_name]
@ -128,5 +165,38 @@ class SvgDrawDoc(DrawDoc.DrawDoc):
self.f.write('">') self.f.write('">')
self.f.write(lines[i]) self.f.write(lines[i])
self.f.write('</text>\n') self.f.write('</text>\n')
def draw_text(self,style,text,x,y):
x = x + self.lmargin
y = y + self.tmargin
box_style = self.draw_styles[style]
para_name = box_style.get_paragraph_style()
p = self.style_list[para_name]
font = p.get_font()
font_size = font.get_size()
fs = (font_size/28.35) * 1.2
self.f.write('<text ')
self.f.write('x="%4.2fcm" ' % x)
self.f.write('y="%4.2fcm" ' % (y+fs))
self.f.write('style="fill:#%02x%02x%02x; '% font.get_color())
if font.get_bold():
self.f.write('font-weight="bold";')
if font.get_italic():
self.f.write('font-style="italic";')
self.f.write('font-size:%d;' % font_size)
if font.get_type_face() == TextDoc.FONT_SANS_SERIF:
self.f.write('font-family=sans-serif;')
else:
self.f.write('font-family=serif;')
self.f.write('">')
self.f.write(text)
self.f.write('</text>\n')
#-------------------------------------------------------------------------
#
# Register document generator
#
#-------------------------------------------------------------------------
Plugins.register_draw_doc(_("SVG (Scalable Vector Graphics)"),SvgDrawDoc); Plugins.register_draw_doc(_("SVG (Scalable Vector Graphics)"),SvgDrawDoc);

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: Thu Jan 30 21:21:32 2003\n" "POT-Creation-Date: Sat Feb 1 08:40:59 2003\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -393,11 +393,6 @@ msgstr ""
msgid "Places" msgid "Places"
msgstr "" msgstr ""
#: FamilyView.py:139 PlaceView.py:54 PlaceView.py:55 PlaceView.py:56
#: PlaceView.py:57 PlaceView.py:58 PlaceView.py:59
msgid ""
msgstr ""
#: FamilyView.py:140 gramps_main.py:91 plugins/IndivComplete.py:381 #: FamilyView.py:140 gramps_main.py:91 plugins/IndivComplete.py:381
#: plugins/IndivSummary.py:225 plugins/WebPage.py:284 plugins/WebPage.py:286 #: plugins/IndivSummary.py:225 plugins/WebPage.py:284 plugins/WebPage.py:286
#: plugins/WebPage.py:288 #: plugins/WebPage.py:288
@ -596,19 +591,15 @@ msgstr ""
msgid "Matches the filter named" msgid "Matches the filter named"
msgstr "" msgstr ""
#: GenericFilter.py:838 #: GenericFilter.py:881
msgid "class"
msgstr ""
#: GenericFilter.py:880
msgid "Local Filters" msgid "Local Filters"
msgstr "" msgstr ""
#: GenericFilter.py:895 #: GenericFilter.py:896
msgid "System Filters" msgid "System Filters"
msgstr "" msgstr ""
#: GenericFilter.py:910 #: GenericFilter.py:911
msgid "Custom Filters" msgid "Custom Filters"
msgstr "" msgstr ""
@ -1158,10 +1149,6 @@ msgstr ""
msgid "User Template" msgid "User Template"
msgstr "" msgstr ""
#: Report.py:650
msgid "HTML_Template"
msgstr ""
#: Report.py:651 #: Report.py:651
msgid "Choose File" msgid "Choose File"
msgstr "" msgstr ""
@ -1540,7 +1527,7 @@ msgstr ""
msgid "LaTeX" msgid "LaTeX"
msgstr "" msgstr ""
#: docgen/OpenDrawDoc.py:501 docgen/OpenOfficeDoc.py:572 #: docgen/OpenDrawDoc.py:506 docgen/OpenOfficeDoc.py:572
msgid "OpenOffice/StarOffice 6" msgid "OpenOffice/StarOffice 6"
msgstr "" msgstr ""
@ -1560,7 +1547,7 @@ msgstr ""
msgid "Rich Text Format (RTF)" msgid "Rich Text Format (RTF)"
msgstr "" msgstr ""
#: docgen/SvgDrawDoc.py:132 #: docgen/SvgDrawDoc.py:202
msgid "SVG (Scalable Vector Graphics)" msgid "SVG (Scalable Vector Graphics)"
msgstr "" msgstr ""
@ -2317,7 +2304,7 @@ msgid "Full Family Chart for %s"
msgstr "" msgstr ""
#: plugins/FullFamily.py:114 #: plugins/FullFamily.py:114
msgid "Save Full Famly Chart" msgid "Save Full Family Chart"
msgstr "" msgstr ""
#: plugins/GraphViz.py:60 plugins/GraphViz.py:87 #: plugins/GraphViz.py:60 plugins/GraphViz.py:87