OpenOffice fixes, calendar format fixes

svn: r1239
This commit is contained in:
Don Allingham
2003-01-06 05:14:49 +00:00
parent 6620c09d52
commit c6ca0c4e18
14 changed files with 330 additions and 189 deletions

View File

@@ -27,15 +27,8 @@ from intl import gettext as _
from TextDoc import *
from DrawDoc import *
from latin_utf8 import latin_to_utf8
import const
try:
from codecs import *
except:
def EncodedFile(a,b,c):
return a
class OpenDrawDoc(DrawDoc):
@@ -66,7 +59,7 @@ class OpenDrawDoc(DrawDoc):
os.mkdir(self.tempdir + os.sep + "META-INF")
fname = self.tempdir + os.sep + "content.xml"
self.f = EncodedFile(open(fname,"wb"),'latin-1','utf-8')
self.f = open(fname,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<office:document-content ')
@@ -156,7 +149,7 @@ class OpenDrawDoc(DrawDoc):
def _write_styles_file(self):
file = self.tempdir + os.sep + "styles.xml"
self.f = EncodedFile(open(file,"wb"),'latin-1','utf-8')
self.f = open(file,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<office:document-styles ')
self.f.write('xmlns:office="http://openoffice.org/2000/office" ')
@@ -343,11 +336,11 @@ class OpenDrawDoc(DrawDoc):
def write_text(self,text):
text = string.replace(text,'\t','<text:tab-stop/>')
text = string.replace(text,'\n','<text:line-break/>')
self.f.write(latin_to_utf8(text))
self.f.write(text)
def _write_manifest(self):
file = self.tempdir + os.sep + "META-INF" + os.sep + "manifest.xml"
self.f = EncodedFile(open(file,"wb"),'latin-1','utf-8')
self.f = open(file,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<manifest:manifest ')
self.f.write('xmlns:manifest="http://openoffice.org/2001/manifest">')
@@ -369,8 +362,8 @@ class OpenDrawDoc(DrawDoc):
def _write_meta_file(self):
file = self.tempdir + os.sep + "meta.xml"
name = latin_to_utf8(self.name)
self.f = EncodedFile(open(file,"wb"),'latin-1','utf-8')
name = self.name
self.f = open(file,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<office:document-meta ')
self.f.write('xmlns:office="http://openoffice.org/2000/office" ')
@@ -435,7 +428,7 @@ class OpenDrawDoc(DrawDoc):
self.f.write('svg:y="%.3fcm"' % float(y))
if text != "":
text = string.replace(text,'\t','<text:tab-stop/>')
text = latin_to_utf8(string.replace(text,'\n','<text:line-break/>'))
text = string.replace(text,'\n','<text:line-break/>')
self.f.write('>\n')
self.f.write('<text:p text:style-name="P1">')
self.f.write('<text:span text:style-name="T%s">' % para_name)

View File

@@ -18,23 +18,39 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#-------------------------------------------------------------------------
#
# Standard Python Modules
#
#-------------------------------------------------------------------------
import os
import tempfile
import string
import zipfile
import time
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
from TextDoc import *
from latin_utf8 import latin_to_utf8
import const
import Plugins
from intl import gettext as _
import ImgManip
try:
from codecs import *
except:
def EncodedFile(a,b,c):
return a
#-------------------------------------------------------------------------
#
# internationalization
#
#-------------------------------------------------------------------------
from intl import gettext as _
#-------------------------------------------------------------------------
#
# OpenOfficeDoc
#
#-------------------------------------------------------------------------
class OpenOfficeDoc(TextDoc):
def __init__(self,styles,type,template,orientation):
@@ -46,8 +62,6 @@ class OpenOfficeDoc(TextDoc):
self.new_page = 0
def open(self,filename):
import time
t = time.localtime(time.time())
self.time = "%04d-%02d-%02dT%02d:%02d:%02d" % \
(t[0],t[1],t[2],t[3],t[4],t[5])
@@ -58,13 +72,9 @@ class OpenOfficeDoc(TextDoc):
self.filename = filename
tempfile.tempdir = "/tmp"
self.tempdir = tempfile.mktemp()
os.mkdir(self.tempdir,0700)
os.mkdir(self.tempdir + os.sep + "Pictures")
os.mkdir(self.tempdir + os.sep + "META-INF")
fname = self.tempdir + os.sep + "content.xml"
self.f = EncodedFile(open(fname,"wb"),'latin-1','utf-8')
self.content_xml = tempfile.mktemp()
self.f = open(self.content_xml,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<office:document-content ')
@@ -220,7 +230,6 @@ class OpenOfficeDoc(TextDoc):
self._write_styles_file()
self._write_manifest()
self._write_meta_file()
self._write_photos()
self._write_zip()
def add_photo(self,name,pos,x_cm,y_cm):
@@ -264,7 +273,7 @@ class OpenOfficeDoc(TextDoc):
def start_table(self,name,style_name):
self.f.write('<table:table table:name="')
self.f.write(name)
self.f.write('" table:style-name="' + style_name + '">\n')
self.f.write('" table:style-name="%s">\n' % style_name)
table = self.table_styles[style_name]
for col in range(0,table.get_columns()):
self.f.write('<table:table-column table:style-name="')
@@ -285,7 +294,7 @@ class OpenOfficeDoc(TextDoc):
self.f.write(style_name)
self.f.write('" table:value-type="string"')
if span > 1:
self.f.write(' table:number-columns-spanned="' + str(span) + '">\n')
self.f.write(' table:number-columns-spanned="%s">\n' % span)
else:
self.f.write('>\n')
@@ -302,26 +311,25 @@ class OpenOfficeDoc(TextDoc):
def _write_zip(self):
if os.path.isfile(self.filename):
os.unlink(self.filename)
os.system("cd %s; %s %s ." % (self.tempdir,const.zipcmd,self.filename))
os.unlink(self.tempdir + os.sep + "META-INF" + os.sep + "manifest.xml")
os.unlink(self.tempdir + os.sep + "content.xml")
os.unlink(self.tempdir + os.sep + "meta.xml")
os.unlink(self.tempdir + os.sep + "styles.xml")
file = zipfile.ZipFile(self.filename,"w",zipfile.ZIP_DEFLATED)
file.write(self.manifest_xml,"META-INF/manifest.xml")
file.write(self.content_xml,"content.xml")
file.write(self.meta_xml,"meta.xml")
file.write(self.styles_xml,"styles.xml")
for image in self.photo_list:
base = os.path.basename(image[0])
os.unlink(self.tempdir + os.sep + "Pictures" + os.sep + base)
os.rmdir(self.tempdir + os.sep + "Pictures")
os.rmdir(self.tempdir + os.sep + "META-INF")
os.rmdir(self.tempdir)
file.write(image[0],"Pictures/%s" % base)
file.close()
os.unlink(self.manifest_xml)
os.unlink(self.content_xml)
os.unlink(self.meta_xml)
os.unlink(self.styles_xml)
def _write_styles_file(self):
file = self.tempdir + os.sep + "styles.xml"
self.f = EncodedFile(open(file,"wb"),'latin-1','utf-8')
self.styles_xml = tempfile.mktemp()
self.f = open(self.styles_xml,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<office:document-styles ')
@@ -478,7 +486,7 @@ class OpenOfficeDoc(TextDoc):
self.f.write(name)
self.f.write('" text:level="' + str(self.level) + '">')
if leader != None:
self.f.write(latin_to_utf8(leader))
self.f.write(leader)
self.f.write('<text:tab-stop/>')
def end_paragraph(self):
@@ -489,25 +497,11 @@ class OpenOfficeDoc(TextDoc):
def write_text(self,text):
text = string.replace(text,'\n','<text:line-break/>')
self.f.write(latin_to_utf8(text))
def _write_photos(self):
import shutil
for file_tuple in self.photo_list:
file = file_tuple[0]
base = os.path.basename(file)
image_name = self.tempdir + os.sep + "Pictures" + os.sep + base
try:
shutil.copy(file,image_name)
except IOError,msg:
import gnome.ui
gnome.ui.GnomeErrorDialog(_("Error copying %s") + "\n" + msg)
self.f.write(text)
def _write_manifest(self):
file = self.tempdir + os.sep + "META-INF" + os.sep + "manifest.xml"
self.f = EncodedFile(open(file,"wb"),'latin-1','utf-8')
self.manifest_xml = tempfile.mktemp()
self.f = open(self.manifest_xml,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<manifest:manifest ')
self.f.write('xmlns:manifest="http://openoffice.org/2001/manifest">')
@@ -533,9 +527,9 @@ class OpenOfficeDoc(TextDoc):
self.f.close()
def _write_meta_file(self):
file = self.tempdir + os.sep + "meta.xml"
name = latin_to_utf8(self.name)
self.f = EncodedFile(open(file,"wb"),'latin-1','utf-8')
name = self.name
self.meta_xml = tempfile.mktemp()
self.f = open(self.meta_xml,"wb")
self.f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
self.f.write('<office:document-meta ')
self.f.write('xmlns:office="http://openoffice.org/2000/office" ')