1.1 --- a/exports.cpp Tue Jan 24 15:09:48 2006 +0000
1.2 +++ b/exports.cpp Tue Jan 24 15:09:48 2006 +0000
1.3 @@ -79,7 +79,7 @@
1.4 // If necessary, write note
1.5 if (!bo->getNote().isEmpty())
1.6 {
1.7 - s =textConvertToASCII(bo->getNote());
1.8 + s =bo->getNoteASCII();
1.9 s=s.replace ("\n","\n"+actIndent);
1.10 ts << (s+"\n\n");
1.11 }
1.12 @@ -90,10 +90,13 @@
1.13 file.close();
1.14 }
1.15
1.16 -// Exports a map to a LaTex file. This file needs to be included or inported into a LaTex document
1.17 -// it will not add a preamble, or anything that makes a full LaTex document.
1.18 void ExportLaTeX::exportLaTeX()
1.19 {
1.20 + // Exports a map to a LaTex file.
1.21 + // This file needs to be included
1.22 + // or inported into a LaTex document
1.23 + // it will not add a preamble, or anything
1.24 + // that makes a full LaTex document.
1.25 QFile file (filepath);
1.26 if ( !file.open( IO_WriteOnly ) ) {
1.27 // FIXME
1.28 @@ -129,7 +132,7 @@
1.29
1.30 // If necessary, write note
1.31 if (!bo->getNote().isEmpty()) {
1.32 - ts << (textConvertToASCII(bo->getNote()));
1.33 + ts << (bo->getNoteASCII());
1.34 ts << ("\n");
1.35 }
1.36
1.37 @@ -142,102 +145,103 @@
1.38 {
1.39 // Create tmpdir and set paths
1.40 tmpDir.setPath (makeUniqueDir("/tmp/vym-XXXXXX"));
1.41 - templateDir="oo-test/suse-template/";
1.42 + templateDir="exports/novell/template/";
1.43 contentTemplateFile=templateDir+"content-template.xml";
1.44 contentFile=tmpDir.path()+"/content.xml";
1.45 pageTemplateFile=templateDir+"page-template.xml";
1.46 chapterTemplateFile=templateDir+"chapter-template.xml";
1.47
1.48 - outputFile=tmpDir.currentDirPath()+"/out.odp";
1.49 -
1.50 - // Copy template to tmpdir
1.51 - system ("cp -r "+templateDir+"* "+tmpDir.path());
1.52 -
1.53 -
1.54 - // Read content-template
1.55 - if (!loadStringFromDisk (contentTemplateFile,content))
1.56 - {
1.57 - qWarning ("Export::exportOOPresentation() Couldn't load from "+contentTemplateFile);
1.58 - return;
1.59 - }
1.60 -
1.61 - // Read page-template
1.62 - QString pageTemplate;
1.63 - if (!loadStringFromDisk (pageTemplateFile,pageTemplate))
1.64 - {
1.65 - qWarning ("Export::exportOOPresentation() Couldn't load from "+pageTemplateFile);
1.66 - return;
1.67 - }
1.68 -
1.69 - // Read chapter-template
1.70 - QString chapterTemplate;
1.71 - if (!loadStringFromDisk (chapterTemplateFile,chapterTemplate))
1.72 - {
1.73 - qWarning ("Export::exportOOPresentation() Couldn't load from "+chapterTemplateFile);
1.74 - return;
1.75 - }
1.76 + outputFile=tmpDir.currentDirPath()+"/test.odp";
1.77 }
1.78
1.79 ExportOO::~ExportOO()
1.80 {
1.81 // Remove tmpdir
1.82 - //FIXME removeDir (tmpDir);
1.83 - cout << "tmpDir="<<tmpDir.path()<<endl;
1.84 + removeDir (tmpDir);
1.85 }
1.86
1.87 QString ExportOO::buildList (BranchObj *current)
1.88 {
1.89 QString r;
1.90 BranchObj *bo;
1.91 - int i=0;
1.92 +
1.93 + uint i=0;
1.94 bo=current->getFirstBranch();
1.95 if (bo)
1.96 {
1.97 // Start list
1.98 - r+="<text:list>\n";
1.99 + r+="<text:list text:style-name=\"L4\">\n";
1.100 while (bo)
1.101 {
1.102 - r+="<text:list-item><text:p text:style-name=\"P7\">\n "+
1.103 - bo->getHeading()+
1.104 - "\n</text:p></text:list-item>\n";
1.105 + r+="<text:list-item><text:p >";
1.106 + r+=quotemeta(bo->getHeading());
1.107 + // If necessary, write note
1.108 + if (!bo->getNote().isEmpty())
1.109 + r+=bo->getNoteOpenDoc();
1.110 + r+="</text:p>";
1.111 + r+=buildList (bo); // recursivly add deeper branches
1.112 + r+="</text:list-item>\n";
1.113 + i++;
1.114 + bo=current->getBranchNum(i);
1.115 }
1.116 r+="</text:list>\n";
1.117 }
1.118 return r;
1.119 }
1.120
1.121 -QString ExportOO::walkPages (BranchObj *current)
1.122 -{
1.123 - //FIXME Denkfehler: mit current anfangen, nicht mit
1.124 - // Kind von current. Sonst erwisch ich nur jede 2. Depth
1.125 - //
1.126 -
1.127 -
1.128 - QString r;
1.129 - BranchObj *bo;
1.130 - int i=0;
1.131 - bo=current->getFirstBranch();
1.132 - while(bo)
1.133 - {
1.134 - r+=quotemeta(bo->getHeading())+"\n";
1.135 - if (bo->getFirstBranch())
1.136 - r+=walkPages (bo->getFirstBranch());
1.137 - i++;
1.138 - bo=current->getBranchNum (i);
1.139 - }
1.140 - return r;
1.141 -}
1.142 -
1.143
1.144 void ExportOO::exportPresentation()
1.145 {
1.146 - QString allPages=walkPages (mapCenter);
1.147 + QString allPages;
1.148
1.149 - cout << allPages<<endl;
1.150 -
1.151 + bool useChapters=true;
1.152 +
1.153 // Insert new content
1.154 content.replace ("<!-- INSERT TITLE -->",quotemeta(mapCenter->getHeading()));
1.155 content.replace ("<!-- INSERT AUTHOR -->",quotemeta(mapCenter->getAuthor()));
1.156 +
1.157 + QString onePage;
1.158 + QString list;
1.159 +
1.160 + BranchObj *chapterBO=mapCenter->getFirstBranch();
1.161 + int i=0;
1.162 + BranchObj *pagesBO;
1.163 + int j=0;
1.164 +
1.165 + // Walk chapters
1.166 + while (chapterBO)
1.167 + {
1.168 + if (useChapters)
1.169 + {
1.170 + // Add page with chapter title
1.171 + onePage=chapterTemplate;
1.172 + onePage.replace ("<!-- INSERT PAGE HEADING -->", quotemeta(chapterBO->getHeading() ) );
1.173 + allPages+=onePage;
1.174 + } else
1.175 + {
1.176 + i=-2; // only use inner loop to
1.177 + // turn mainbranches into pages
1.178 + chapterBO=mapCenter;
1.179 + }
1.180 +
1.181 + // Walk mainpages
1.182 + pagesBO=chapterBO->getFirstBranch();
1.183 + j=0;
1.184 + while (pagesBO)
1.185 + {
1.186 + // Add page with list of items
1.187 + onePage=pageTemplate;
1.188 + onePage.replace ("<!-- INSERT PAGE HEADING -->", quotemeta (pagesBO->getHeading() ) );
1.189 + list=buildList (pagesBO);
1.190 + onePage.replace ("<!-- INSERT LIST -->", list);
1.191 + allPages+=onePage;
1.192 + j++;
1.193 + pagesBO=chapterBO->getBranchNum(j);
1.194 + }
1.195 + i++;
1.196 + chapterBO=mapCenter->getBranchNum(i);
1.197 + }
1.198 +
1.199 content.replace ("<!-- INSERT PAGES -->",allPages);
1.200
1.201 // Write modified content
1.202 @@ -252,69 +256,54 @@
1.203 t << content;
1.204 f.close();
1.205
1.206 - mainWindow->statusMessage( QString( QObject::tr("Map exported as %1")).arg( outputFile));
1.207 -
1.208 -
1.209 // zip tmpdir to destination
1.210 zipDir (tmpDir,outputFile);
1.211 -
1.212 - /* FIXME not needed
1.213 - QString onePage;
1.214 - QString allPages;
1.215 - QString heading;
1.216 -
1.217 -
1.218 - // Walk through chapters (mainbranches)
1.219 - QString s;
1.220 -
1.221 - QString list;
1.222 - BranchObj *bo;
1.223 - BranchObj *boLastPage=NULL;
1.224 - bo=mapCenter->first();
1.225 - int depth;
1.226 - int lastDepth=-1;
1.227 - int basePageDepth=2;
1.228 - while (bo)
1.229 - {
1.230 - depth=bo->getDepth();
1.231 - heading=quotemeta(bo->getHeading());
1.232 - if (depth>1)
1.233 - {
1.234 - if (depth==basePageDepth)
1.235 - {
1.236 - // Start a new page containing a heading and a list
1.237 - if (boLastPage==NULL)
1.238 - {
1.239 - // Start new single page
1.240 - boLastPage=bo;
1.241 - onePage=pageTemplate;
1.242 - onePage.replace ("<!-- INSERT PAGE HEADING -->", heading);
1.243 - list="";
1.244 - } else
1.245 - {
1.246 - // Finish last page, start new one
1.247 - onePage.replace ("<!-- INSERT LIST -->", list);
1.248 - boLastPage=bo;
1.249 - allPages+=onePage;
1.250 - onePage=pageTemplate;
1.251 - onePage.replace ("<!-- INSERT PAGE HEADING -->", heading);
1.252 - list="";
1.253 - }
1.254 - } else
1.255 - {
1.256 - if (lastDepth==depth-1)
1.257 - // entering deeper branches, new list
1.258 - list+="<text:list>";
1.259 - // Just add heading to list on current page
1.260 - list+="<text:list-item><text:p text:style-name=\"P7\">"+heading+"</text:p></text:list-item>\n";
1.261 - if (lastDepth==depth+1)
1.262 - // returning from deeper branches, finish list
1.263 - list+="</text:list>";
1.264 - }
1.265 - }
1.266 - lastDepth=depth;
1.267 - bo=bo->next();
1.268 - }
1.269 -*/
1.270 }
1.271
1.272 +void ExportOO::setConfigFile (const QString &cf)
1.273 +{
1.274 + configFile=cf;
1.275 + int i=cf.findRev ("/");
1.276 + if (i>=0) configDir=cf.left(i);
1.277 + SimpleSettings set;
1.278 + set.readSettings(configFile);
1.279 +
1.280 + // set paths
1.281 + templateDir=configDir+"/"+set.readEntry ("Template");
1.282 +
1.283 + //FIXME check if templateDir is really set, otherwise abort
1.284 +
1.285 + contentTemplateFile=templateDir+"content-template.xml";
1.286 + contentFile=tmpDir.path()+"/content.xml";
1.287 + pageTemplateFile=templateDir+"page-template.xml";
1.288 + chapterTemplateFile=templateDir+"chapter-template.xml";
1.289 +
1.290 + outputFile=tmpDir.currentDirPath()+"/test.odp";
1.291 +
1.292 + // Copy template to tmpdir
1.293 + system ("cp -r "+templateDir+"* "+tmpDir.path());
1.294 +
1.295 +
1.296 + // Read content-template
1.297 + if (!loadStringFromDisk (contentTemplateFile,content))
1.298 + {
1.299 + qWarning ("Export::exportOO() Couldn't load from "+contentTemplateFile);
1.300 + return;
1.301 + }
1.302 +
1.303 + // Read page-template
1.304 + if (!loadStringFromDisk (pageTemplateFile,pageTemplate))
1.305 + {
1.306 + qWarning ("Export::exportOO() Couldn't load from "+pageTemplateFile);
1.307 + return;
1.308 + }
1.309 +
1.310 + // Read chapter-template
1.311 + if (!loadStringFromDisk (chapterTemplateFile,chapterTemplate))
1.312 + {
1.313 + qWarning ("Export::exportOO() Couldn't load from "+chapterTemplateFile);
1.314 + return;
1.315 + }
1.316 +
1.317 +}
1.318 +
2.1 --- a/exports.h Tue Jan 24 15:09:48 2006 +0000
2.2 +++ b/exports.h Tue Jan 24 15:09:48 2006 +0000
2.3 @@ -10,7 +10,7 @@
2.4
2.5 //using namespace std;
2.6
2.7 -/////////////////////////////////////////////////////////////////////////////
2.8 +///////////////////////////////////////////////////////////////////////
2.9
2.10 class ExportBase
2.11 {
2.12 @@ -31,25 +31,27 @@
2.13 QString indentPerDepth;
2.14 };
2.15
2.16 -/////////////////////////////////////////////////////////////////////////////
2.17 +///////////////////////////////////////////////////////////////////////
2.18 class ExportLaTeX:public ExportBase
2.19 {
2.20 public:
2.21 void exportLaTeX();
2.22 };
2.23
2.24 -/////////////////////////////////////////////////////////////////////////////
2.25 +///////////////////////////////////////////////////////////////////////
2.26 class ExportOO:public ExportBase
2.27 {
2.28 public:
2.29 ExportOO();
2.30 ~ExportOO();
2.31 void exportPresentation();
2.32 + void setConfigFile (const QString &);
2.33 private:
2.34 QString buildList (BranchObj*);
2.35 - QString walkPages (BranchObj*);
2.36 QDir tmpDir;
2.37 bool useChapters;
2.38 + QString configFile;
2.39 + QString configDir;
2.40 QString templateDir;
2.41 QString content;
2.42 QString contentTemplate;