exports.cpp
author insilmaril
Thu, 25 Feb 2010 11:03:52 +0000
changeset 824 36eb4b8f409e
parent 823 0bba81dde1bc
child 825 1ad892c1a709
permissions -rw-r--r--
Added dialog for HTML export. Grouping in Switchboard shortcuts
insilmaril@0
     1
#include "exports.h"
insilmaril@750
     2
insilmaril@750
     3
#include "branchitem.h"
insilmaril@171
     4
#include "file.h"
insilmaril@171
     5
#include "linkablemapobj.h"
insilmaril@171
     6
#include "misc.h"
insilmaril@171
     7
#include "mainwindow.h"
insilmaril@311
     8
#include "warningdialog.h"
insilmaril@228
     9
#include "xsltproc.h"
insilmaril@0
    10
insilmaril@824
    11
insilmaril@171
    12
extern Main *mainWindow;
insilmaril@228
    13
extern QDir vymBaseDir;
insilmaril@404
    14
extern QString vymName;
insilmaril@131
    15
insilmaril@171
    16
ExportBase::ExportBase()
insilmaril@0
    17
{
insilmaril@819
    18
	init();
insilmaril@819
    19
}
insilmaril@819
    20
insilmaril@819
    21
ExportBase::ExportBase(VymModel *m)
insilmaril@819
    22
{
insilmaril@819
    23
	init();
insilmaril@819
    24
	model=m;
insilmaril@819
    25
}
insilmaril@819
    26
insilmaril@819
    27
ExportBase::~ExportBase()
insilmaril@819
    28
{
insilmaril@819
    29
	// Cleanup tmpdir
insilmaril@819
    30
	removeDir (tmpDir);
insilmaril@819
    31
}
insilmaril@819
    32
insilmaril@819
    33
void ExportBase::init()
insilmaril@819
    34
{
insilmaril@0
    35
	indentPerDepth="  ";
insilmaril@377
    36
	bool ok;
insilmaril@606
    37
    tmpDir.setPath (makeTmpDir(ok,"vym-export"));
insilmaril@377
    38
	if (!tmpDir.exists() || !ok)
insilmaril@377
    39
		QMessageBox::critical( 0, QObject::tr( "Error" ),
insilmaril@377
    40
					   QObject::tr("Couldn't access temporary directory\n"));
insilmaril@512
    41
	cancelFlag=false;				   
insilmaril@228
    42
}
insilmaril@228
    43
insilmaril@424
    44
void ExportBase::setDir(const QDir &d)
insilmaril@0
    45
{
insilmaril@424
    46
	outDir=d;
insilmaril@199
    47
}
insilmaril@199
    48
insilmaril@199
    49
void ExportBase::setFile (const QString &p)
insilmaril@199
    50
{
insilmaril@199
    51
	outputFile=p;
insilmaril@0
    52
}
insilmaril@0
    53
insilmaril@512
    54
QString ExportBase::getFile ()
insilmaril@512
    55
{
insilmaril@512
    56
	return outputFile;
insilmaril@512
    57
}
insilmaril@512
    58
insilmaril@643
    59
void ExportBase::setModel(VymModel *m)
insilmaril@0
    60
{
insilmaril@643
    61
	model=m;
insilmaril@0
    62
}
insilmaril@0
    63
insilmaril@228
    64
void ExportBase::setCaption (const QString &s)
insilmaril@228
    65
{
insilmaril@228
    66
	caption=s;
insilmaril@228
    67
}
insilmaril@228
    68
insilmaril@228
    69
void ExportBase::addFilter(const QString &s)
insilmaril@228
    70
{
insilmaril@228
    71
	filter=s;
insilmaril@228
    72
}
insilmaril@228
    73
insilmaril@228
    74
bool ExportBase::execDialog()
insilmaril@228
    75
{
insilmaril@228
    76
	{
insilmaril@643
    77
		QFileDialog *fd=new QFileDialog( 0, caption);
insilmaril@366
    78
		fd->setFilter (filter);
insilmaril@228
    79
		fd->setCaption(caption);
insilmaril@228
    80
		fd->setMode( QFileDialog::AnyFile );
insilmaril@424
    81
		fd->setDir (outDir);
insilmaril@228
    82
		fd->show();
insilmaril@228
    83
insilmaril@228
    84
		if ( fd->exec() == QDialog::Accepted )
insilmaril@228
    85
		{
insilmaril@228
    86
			if (QFile (fd->selectedFile()).exists() )
insilmaril@228
    87
			{
insilmaril@404
    88
				QMessageBox mb( vymName,
insilmaril@228
    89
					QObject::tr("The file %1 exists already.\nDo you want to overwrite it?").arg(fd->selectedFile()), 
insilmaril@228
    90
				QMessageBox::Warning,
insilmaril@228
    91
				QMessageBox::Yes | QMessageBox::Default,
insilmaril@228
    92
				QMessageBox::Cancel | QMessageBox::Escape,
insilmaril@366
    93
				Qt::NoButton );
insilmaril@228
    94
				mb.setButtonText( QMessageBox::Yes, QObject::tr("Overwrite") );
insilmaril@228
    95
				mb.setButtonText( QMessageBox::No, QObject::tr("Cancel"));
insilmaril@228
    96
				ExportBase ex;
insilmaril@228
    97
				switch( mb.exec() ) 
insilmaril@228
    98
				{
insilmaril@228
    99
					case QMessageBox::Yes:
insilmaril@228
   100
						// save 
insilmaril@228
   101
						break;;
insilmaril@228
   102
					case QMessageBox::Cancel:
insilmaril@512
   103
						cancelFlag=true;
insilmaril@228
   104
						return false;
insilmaril@228
   105
						break;
insilmaril@228
   106
				}
insilmaril@228
   107
			}
insilmaril@228
   108
			outputFile=fd->selectedFile();
insilmaril@512
   109
			cancelFlag=false;
insilmaril@228
   110
			return true;
insilmaril@228
   111
		}
insilmaril@228
   112
	}
insilmaril@228
   113
	return false;
insilmaril@228
   114
}
insilmaril@228
   115
insilmaril@512
   116
bool ExportBase::canceled()
insilmaril@512
   117
{
insilmaril@512
   118
	return cancelFlag;
insilmaril@512
   119
}
insilmaril@512
   120
insilmaril@791
   121
QString ExportBase::getSectionString(TreeItem *start)
insilmaril@163
   122
{
insilmaril@205
   123
	// Make prefix like "2.5.3" for "bo:2,bo:5,bo:3"
insilmaril@163
   124
	QString r;
insilmaril@791
   125
	TreeItem *ti=start;
insilmaril@749
   126
	int depth=ti->depth();
insilmaril@163
   127
	while (depth>0)
insilmaril@163
   128
	{
insilmaril@749
   129
		r=QString("%1").arg(1+ti->num(),0,10)+"." + r;
insilmaril@749
   130
		ti=ti->parent(); 
insilmaril@749
   131
		depth=ti->depth();
insilmaril@163
   132
	}	
insilmaril@163
   133
	if (r.isEmpty())
insilmaril@163
   134
		return r;
insilmaril@163
   135
	else	
insilmaril@163
   136
		return r + " ";
insilmaril@163
   137
}
insilmaril@163
   138
insilmaril@239
   139
////////////////////////////////////////////////////////////////////////
insilmaril@807
   140
ExportAO::ExportAO()
insilmaril@807
   141
{
insilmaril@807
   142
	filter="TXT (*.txt)";
insilmaril@807
   143
	caption=vymName+ " -" +QObject::tr("Export as ASCII")+" "+QObject::tr("(still experimental)");
insilmaril@807
   144
}
insilmaril@807
   145
insilmaril@807
   146
void ExportAO::doExport()	
insilmaril@807
   147
{
insilmaril@807
   148
	QFile file (outputFile);
insilmaril@807
   149
	if ( !file.open( QIODevice::WriteOnly ) )
insilmaril@807
   150
	{
insilmaril@807
   151
		qWarning ("ExportAO::doExport couldn't open "+outputFile);
insilmaril@807
   152
		return;
insilmaril@807
   153
	}
insilmaril@807
   154
	QTextStream ts( &file );	// use LANG decoding here...
insilmaril@807
   155
insilmaril@807
   156
	// Main loop over all branches
insilmaril@807
   157
	QString s;
insilmaril@807
   158
	QString curIndent;
insilmaril@807
   159
	int i;
insilmaril@807
   160
	BranchItem *cur=NULL;
insilmaril@807
   161
	BranchItem *prev=NULL;
insilmaril@807
   162
insilmaril@807
   163
	QString colString;
insilmaril@807
   164
	QColor col;
insilmaril@807
   165
insilmaril@807
   166
	cur=model->nextBranch (cur,prev);
insilmaril@807
   167
	while (cur) 
insilmaril@807
   168
	{
insilmaril@807
   169
		if (cur->getType()==TreeItem::Branch || cur->getType()==TreeItem::MapCenter)
insilmaril@807
   170
		{
insilmaril@807
   171
			// Make indentstring
insilmaril@807
   172
			curIndent="";
insilmaril@807
   173
			for (i=0;i<cur->depth()-1;i++) curIndent+= indentPerDepth;
insilmaril@807
   174
insilmaril@807
   175
			if (!cur->hasHiddenExportParent() )
insilmaril@807
   176
			{
insilmaril@807
   177
				col=cur->getHeadingColor();
insilmaril@807
   178
				if (col==QColor (255,0,0))
insilmaril@807
   179
					colString="[R]";
insilmaril@807
   180
				else if (col==QColor (217,81,0))
insilmaril@807
   181
					colString="[O]";
insilmaril@807
   182
				else if (col==QColor (0,85,0))
insilmaril@807
   183
					colString="[G]";
insilmaril@807
   184
				else  	
insilmaril@807
   185
					colString="[?]";
insilmaril@807
   186
				switch (cur->depth())
insilmaril@807
   187
				{
insilmaril@807
   188
					case 0:
insilmaril@807
   189
						//ts << underline (cur->getHeading(),QString("="));
insilmaril@807
   190
						//ts << "\n";
insilmaril@807
   191
						break;
insilmaril@807
   192
					case 1:
insilmaril@807
   193
						//ts << "\n";
insilmaril@807
   194
						//ts << (underline ( cur->getHeading(), QString("-") ) );
insilmaril@807
   195
						//ts << "\n";
insilmaril@807
   196
						break;
insilmaril@807
   197
					case 2: // Main heading
insilmaril@807
   198
						ts << "\n";
insilmaril@807
   199
						ts << underline ( cur->getHeading(), QString("=") );
insilmaril@818
   200
						ts << "\n";
insilmaril@807
   201
						break;
insilmaril@807
   202
					case 3: // Achievement, Bonus, Objective ...
insilmaril@818
   203
						ts << "\n\n";
insilmaril@807
   204
						ts << underline ( cur->getHeading(), "-");
insilmaril@807
   205
						ts << "\n\n";
insilmaril@807
   206
						break;
insilmaril@807
   207
					case 4:	// That's the item we need to know
insilmaril@815
   208
						//ts << (curIndent + "* " + colString+" "+ cur->getHeading());
insilmaril@815
   209
						ts << colString+" "+ cur->getHeading();
insilmaril@807
   210
						if (cur->isActiveStandardFlag ("hook-green"))
insilmaril@807
   211
							ts << " [DONE] ";
insilmaril@815
   212
						else	if (cur->isActiveStandardFlag ("wip"))
insilmaril@807
   213
							ts << " [WIP] ";
insilmaril@807
   214
						else	if (cur->isActiveStandardFlag ("cross-red"))
insilmaril@807
   215
							ts << " [NOT STARTED] ";
insilmaril@807
   216
						ts << "\n";
insilmaril@818
   217
						break;
insilmaril@807
   218
					default:
insilmaril@807
   219
						ts << (curIndent + "- " + cur->getHeading());
insilmaril@807
   220
						ts << "\n";
insilmaril@807
   221
						break;
insilmaril@807
   222
				}
insilmaril@807
   223
insilmaril@807
   224
				// If necessary, write note
insilmaril@807
   225
				if (!cur->getNoteObj().isEmpty())
insilmaril@807
   226
				{
insilmaril@807
   227
					curIndent +="  | ";
insilmaril@807
   228
					s=cur->getNoteASCII( curIndent, 80);
insilmaril@807
   229
					ts << s;
insilmaril@807
   230
				}
insilmaril@807
   231
			}
insilmaril@807
   232
		}
insilmaril@807
   233
		cur=model->nextBranch(cur,prev);
insilmaril@807
   234
	}
insilmaril@807
   235
	file.close();
insilmaril@807
   236
}
insilmaril@807
   237
insilmaril@807
   238
QString ExportAO::underline (const QString &text, const QString &line)
insilmaril@807
   239
{
insilmaril@807
   240
	QString r=text + "\n";
insilmaril@807
   241
	for (int j=0;j<text.length();j++) r+=line;
insilmaril@807
   242
	return r;
insilmaril@807
   243
}
insilmaril@807
   244
insilmaril@807
   245
insilmaril@807
   246
////////////////////////////////////////////////////////////////////////
insilmaril@512
   247
ExportASCII::ExportASCII()
insilmaril@512
   248
{
insilmaril@512
   249
	filter="TXT (*.txt)";
insilmaril@512
   250
	caption=vymName+ " -" +QObject::tr("Export as ASCII")+" "+QObject::tr("(still experimental)");
insilmaril@512
   251
}
insilmaril@512
   252
insilmaril@777
   253
void ExportASCII::doExport()	
insilmaril@0
   254
{
insilmaril@199
   255
	QFile file (outputFile);
insilmaril@366
   256
	if ( !file.open( QIODevice::WriteOnly ) )
insilmaril@0
   257
	{
insilmaril@807
   258
		qWarning ("ExportASCII::doExport couldn't open "+outputFile);
insilmaril@0
   259
		return;
insilmaril@0
   260
	}
insilmaril@0
   261
	QTextStream ts( &file );	// use LANG decoding here...
insilmaril@0
   262
insilmaril@0
   263
	// Main loop over all branches
insilmaril@0
   264
	QString s;
insilmaril@613
   265
	QString curIndent;
insilmaril@613
   266
	int i;
insilmaril@750
   267
	BranchItem *cur=NULL;
insilmaril@750
   268
	BranchItem *prev=NULL;
insilmaril@741
   269
insilmaril@804
   270
	cur=model->nextBranch (cur,prev);
insilmaril@741
   271
	while (cur) 
insilmaril@0
   272
	{
insilmaril@741
   273
		if (cur->getType()==TreeItem::Branch || cur->getType()==TreeItem::MapCenter)
insilmaril@740
   274
		{
insilmaril@740
   275
			// Make indentstring
insilmaril@740
   276
			curIndent="";
insilmaril@819
   277
			for (i=1;i<cur->depth()-1;i++) curIndent+= indentPerDepth;
insilmaril@740
   278
insilmaril@753
   279
			if (!cur->hasHiddenExportParent() )
insilmaril@600
   280
			{
insilmaril@791
   281
				//std::cout << "ExportASCII::  "<<curIndent.toStdString()<<cur->getHeading().toStdString()<<std::endl;
insilmaril@741
   282
				switch (cur->depth())
insilmaril@740
   283
				{
insilmaril@740
   284
					case 0:
insilmaril@741
   285
						ts << underline (cur->getHeading(),QString("="));
insilmaril@740
   286
						ts << "\n";
insilmaril@740
   287
						break;
insilmaril@740
   288
					case 1:
insilmaril@740
   289
						ts << "\n";
insilmaril@791
   290
						ts << (underline (getSectionString(cur) + cur->getHeading(), QString("-") ) );
insilmaril@740
   291
						ts << "\n";
insilmaril@740
   292
						break;
insilmaril@740
   293
					case 2:
insilmaril@740
   294
						ts << "\n";
insilmaril@741
   295
						ts << (curIndent + "* " + cur->getHeading());
insilmaril@740
   296
						ts << "\n";
insilmaril@740
   297
						break;
insilmaril@740
   298
					case 3:
insilmaril@741
   299
						ts << (curIndent + "- " + cur->getHeading());
insilmaril@740
   300
						ts << "\n";
insilmaril@740
   301
						break;
insilmaril@740
   302
					default:
insilmaril@741
   303
						ts << (curIndent + "- " + cur->getHeading());
insilmaril@740
   304
						ts << "\n";
insilmaril@740
   305
						break;
insilmaril@740
   306
				}
insilmaril@613
   307
insilmaril@740
   308
				// If necessary, write note
insilmaril@746
   309
				if (!cur->getNoteObj().isEmpty())
insilmaril@740
   310
				{
insilmaril@740
   311
					curIndent +="  | ";
insilmaril@746
   312
					s=cur->getNoteASCII( curIndent, 80);
insilmaril@740
   313
					ts << s;
insilmaril@740
   314
				}
insilmaril@600
   315
			}
insilmaril@0
   316
		}
insilmaril@804
   317
		cur=model->nextBranch(cur,prev);
insilmaril@0
   318
	}
insilmaril@0
   319
	file.close();
insilmaril@0
   320
}
insilmaril@0
   321
insilmaril@613
   322
QString ExportASCII::underline (const QString &text, const QString &line)
insilmaril@613
   323
{
insilmaril@613
   324
	QString r=text + "\n";
insilmaril@613
   325
	for (int j=0;j<text.length();j++) r+=line;
insilmaril@613
   326
	return r;
insilmaril@613
   327
}
insilmaril@613
   328
insilmaril@497
   329
insilmaril@497
   330
////////////////////////////////////////////////////////////////////////
insilmaril@497
   331
void ExportCSV::doExport()
insilmaril@497
   332
{
insilmaril@497
   333
	QFile file (outputFile);
insilmaril@497
   334
	if ( !file.open( QIODevice::WriteOnly ) )
insilmaril@497
   335
	{
insilmaril@497
   336
		qWarning ("ExportBase::exportXML  couldn't open "+outputFile);
insilmaril@497
   337
		return;
insilmaril@497
   338
	}
insilmaril@497
   339
	QTextStream ts( &file );	// use LANG decoding here...
insilmaril@497
   340
insilmaril@497
   341
	// Write header
insilmaril@497
   342
	ts << "\"Note\""  <<endl;
insilmaril@497
   343
insilmaril@497
   344
	// Main loop over all branches
insilmaril@497
   345
	QString s;
insilmaril@613
   346
	QString curIndent("");
insilmaril@512
   347
	int i;
insilmaril@750
   348
	BranchItem *cur=NULL;
insilmaril@750
   349
	BranchItem *prev=NULL;
insilmaril@804
   350
	cur=model->nextBranch (cur,prev);
insilmaril@741
   351
	while (cur) 
insilmaril@497
   352
	{
insilmaril@753
   353
		if (!cur->hasHiddenExportParent() )
insilmaril@497
   354
		{
insilmaril@600
   355
			// If necessary, write note
insilmaril@746
   356
			if (!cur->getNoteObj().isEmpty())
insilmaril@600
   357
			{
insilmaril@746
   358
				s =cur->getNoteASCII();
insilmaril@613
   359
				s=s.replace ("\n","\n"+curIndent);
insilmaril@600
   360
				ts << ("\""+s+"\",");
insilmaril@600
   361
			} else
insilmaril@600
   362
				ts <<"\"\",";
insilmaril@497
   363
insilmaril@600
   364
			// Make indentstring
insilmaril@741
   365
			for (i=0;i<cur->depth();i++) curIndent+= "\"\",";
insilmaril@497
   366
insilmaril@600
   367
			// Write heading
insilmaril@741
   368
			ts << curIndent << "\"" << cur->getHeading()<<"\""<<endl;
insilmaril@600
   369
		}
insilmaril@497
   370
		
insilmaril@804
   371
		cur=model->nextBranch(cur,prev);
insilmaril@613
   372
		curIndent="";
insilmaril@497
   373
	}
insilmaril@497
   374
	file.close();
insilmaril@497
   375
}
insilmaril@497
   376
insilmaril@239
   377
////////////////////////////////////////////////////////////////////////
insilmaril@742
   378
void ExportKDE3Bookmarks::doExport() 
insilmaril@239
   379
{
insilmaril@721
   380
	WarningDialog dia;
insilmaril@721
   381
	dia.showCancelButton (true);
insilmaril@721
   382
	dia.setText(QObject::tr("Exporting the %1 bookmarks will overwrite\nyour existing bookmarks file.").arg("KDE"));
insilmaril@742
   383
	dia.setCaption(QObject::tr("Warning: Overwriting %1 bookmarks").arg("KDE 3"));
insilmaril@742
   384
	dia.setShowAgainName("/exports/KDE/overwriteKDEBookmarks");
insilmaril@742
   385
	if (dia.exec()==QDialog::Accepted)
insilmaril@742
   386
	{
insilmaril@742
   387
		model->exportXML(tmpDir.path(),false);
insilmaril@742
   388
insilmaril@742
   389
		XSLTProc p;
insilmaril@742
   390
		p.setInputFile (tmpDir.path()+"/"+model->getMapName()+".xml");
insilmaril@742
   391
		p.setOutputFile (tmpDir.home().path()+"/.kde/share/apps/konqueror/bookmarks.xml");
insilmaril@742
   392
		p.setXSLFile (vymBaseDir.path()+"/styles/vym2kdebookmarks.xsl");
insilmaril@742
   393
		p.process();
insilmaril@742
   394
insilmaril@742
   395
		QString ub=vymBaseDir.path()+"/scripts/update-bookmarks";
insilmaril@742
   396
		QProcess *proc= new QProcess ;
insilmaril@742
   397
		proc->start( ub);
insilmaril@742
   398
		if (!proc->waitForStarted())
insilmaril@742
   399
		{
insilmaril@742
   400
			QMessageBox::warning(0, 
insilmaril@742
   401
				QObject::tr("Warning"),
insilmaril@742
   402
				QObject::tr("Couldn't find script %1\nto notifiy Browsers of changed bookmarks.").arg(ub));
insilmaril@742
   403
		}	
insilmaril@742
   404
	}
insilmaril@742
   405
}
insilmaril@742
   406
insilmaril@742
   407
////////////////////////////////////////////////////////////////////////
insilmaril@742
   408
void ExportKDE4Bookmarks::doExport() 
insilmaril@742
   409
{
insilmaril@742
   410
	WarningDialog dia;
insilmaril@742
   411
	dia.showCancelButton (true);
insilmaril@742
   412
	dia.setText(QObject::tr("Exporting the %1 bookmarks will overwrite\nyour existing bookmarks file.").arg("KDE 4"));
insilmaril@721
   413
	dia.setCaption(QObject::tr("Warning: Overwriting %1 bookmarks").arg("KDE"));
insilmaril@721
   414
	dia.setShowAgainName("/exports/KDE/overwriteKDEBookmarks");
insilmaril@721
   415
	if (dia.exec()==QDialog::Accepted)
insilmaril@239
   416
	{
insilmaril@721
   417
		model->exportXML(tmpDir.path(),false);
insilmaril@721
   418
insilmaril@721
   419
		XSLTProc p;
insilmaril@721
   420
		p.setInputFile (tmpDir.path()+"/"+model->getMapName()+".xml");
insilmaril@742
   421
		p.setOutputFile (tmpDir.home().path()+"/.kde4/share/apps/konqueror/bookmarks.xml");
insilmaril@721
   422
		p.setXSLFile (vymBaseDir.path()+"/styles/vym2kdebookmarks.xsl");
insilmaril@721
   423
		p.process();
insilmaril@721
   424
insilmaril@721
   425
		QString ub=vymBaseDir.path()+"/scripts/update-bookmarks";
insilmaril@721
   426
		QProcess *proc= new QProcess ;
insilmaril@721
   427
		proc->start( ub);
insilmaril@721
   428
		if (!proc->waitForStarted())
insilmaril@311
   429
		{
insilmaril@721
   430
			QMessageBox::warning(0, 
insilmaril@721
   431
				QObject::tr("Warning"),
insilmaril@721
   432
				QObject::tr("Couldn't find script %1\nto notifiy Browsers of changed bookmarks.").arg(ub));
insilmaril@721
   433
		}	
insilmaril@239
   434
	}
insilmaril@239
   435
}
insilmaril@239
   436
insilmaril@239
   437
////////////////////////////////////////////////////////////////////////
insilmaril@311
   438
void ExportFirefoxBookmarks::doExport() 
insilmaril@311
   439
{
insilmaril@721
   440
	WarningDialog dia;
insilmaril@721
   441
	dia.showCancelButton (true);
insilmaril@721
   442
	dia.setText(QObject::tr("Exporting the %1 bookmarks will overwrite\nyour existing bookmarks file.").arg("Firefox"));
insilmaril@721
   443
	dia.setCaption(QObject::tr("Warning: Overwriting %1 bookmarks").arg("Firefox"));
insilmaril@721
   444
	dia.setShowAgainName("/vym/warnings/overwriteImportBookmarks");
insilmaril@721
   445
	if (dia.exec()==QDialog::Accepted)
insilmaril@311
   446
	{
insilmaril@721
   447
		model->exportXML(tmpDir.path(),false);
insilmaril@311
   448
insilmaril@311
   449
/*
insilmaril@721
   450
		XSLTProc p;
insilmaril@721
   451
		p.setInputFile (tmpDir.path()+"/"+me->getMapName()+".xml");
insilmaril@721
   452
		p.setOutputFile (tmpDir.home().path()+"/.kde/share/apps/konqueror/bookmarks.xml");
insilmaril@721
   453
		p.setXSLFile (vymBaseDir.path()+"/styles/vym2kdebookmarks.xsl");
insilmaril@721
   454
		p.process();
insilmaril@311
   455
insilmaril@721
   456
		QString ub=vymBaseDir.path()+"/scripts/update-bookmarks";
insilmaril@721
   457
		QProcess *proc = new QProcess( );
insilmaril@721
   458
		proc->addArgument(ub);
insilmaril@311
   459
insilmaril@721
   460
		if ( !proc->start() ) 
insilmaril@721
   461
		{
insilmaril@721
   462
			QMessageBox::warning(0, 
insilmaril@721
   463
				QObject::tr("Warning"),
insilmaril@721
   464
				QObject::tr("Couldn't find script %1\nto notifiy Browsers of changed bookmarks.").arg(ub));
insilmaril@721
   465
		}	
insilmaril@311
   466
insilmaril@311
   467
*/
insilmaril@311
   468
	}
insilmaril@311
   469
}
insilmaril@311
   470
insilmaril@311
   471
////////////////////////////////////////////////////////////////////////
insilmaril@819
   472
ExportHTML::ExportHTML():ExportBase()
insilmaril@819
   473
{
insilmaril@819
   474
	init();
insilmaril@819
   475
}
insilmaril@819
   476
insilmaril@819
   477
ExportHTML::ExportHTML(VymModel *m):ExportBase(m)
insilmaril@819
   478
{
insilmaril@819
   479
	init();
insilmaril@819
   480
}
insilmaril@819
   481
insilmaril@819
   482
void ExportHTML::init()
insilmaril@819
   483
{
insilmaril@819
   484
	singularDelimiter=": ";
insilmaril@819
   485
	noSingulars=true;	
insilmaril@819
   486
	frameURLs=true;
insilmaril@819
   487
	useMapColors=true;
insilmaril@824
   488
	cssFileName="vym.css";
insilmaril@824
   489
	cssOriginalPath="";	// Is set in VymModel, based on default setting in ExportHTMLDialog
insilmaril@819
   490
insilmaril@819
   491
	if (model &&model->getMapEditor()) 
insilmaril@819
   492
		offset=model->getMapEditor()->getTotalBBox().topLeft();
insilmaril@819
   493
}
insilmaril@819
   494
insilmaril@819
   495
QString ExportHTML::getBranchText(BranchItem *current)
insilmaril@819
   496
{
insilmaril@819
   497
	if (current)
insilmaril@819
   498
	{
insilmaril@819
   499
		bool vis=false;
insilmaril@819
   500
		QRectF hr;
insilmaril@819
   501
		LinkableMapObj *lmo=current->getLMO();
insilmaril@819
   502
		if (lmo)
insilmaril@819
   503
		{
insilmaril@819
   504
			hr=((BranchObj*)lmo)->getBBoxHeading();
insilmaril@819
   505
			if (lmo->isVisibleObj()) vis=true;
insilmaril@819
   506
		}
insilmaril@819
   507
		QString col;
insilmaril@819
   508
		QString id=model->getSelectString(current);
insilmaril@819
   509
		if (useMapColors)
insilmaril@819
   510
			col=QString("style='color:%1'").arg(current->getHeadingColor().name());
insilmaril@819
   511
		QString s=QString("<span class='vym-branch%1' %2 id='%3'>")
insilmaril@819
   512
			.arg(current->depth())
insilmaril@819
   513
			.arg(col)
insilmaril@819
   514
			.arg(id);
insilmaril@819
   515
		QString url=current->getURL();	
insilmaril@819
   516
		if (!url.isEmpty())
insilmaril@819
   517
		{
insilmaril@819
   518
			s+=QString ("<a href=\"%1\">").arg(url);
insilmaril@819
   519
			s+=QString ("<img src=\"flags/flag-url-16x16.png\">%1</a>").arg(quotemeta(current->getHeading()));
insilmaril@819
   520
			s+="</a>";
insilmaril@819
   521
			
insilmaril@823
   522
			QRectF fbox=current->getBBoxURLFlag ();
insilmaril@819
   523
			if (vis)
insilmaril@819
   524
				imageMap+=QString("  <area shape='rect' coords='%1,%2,%3,%4' href='%5'>\n")
insilmaril@819
   525
					.arg(fbox.left()-offset.x())
insilmaril@819
   526
					.arg(fbox.top()-offset.y())
insilmaril@819
   527
					.arg(fbox.right()-offset.x())
insilmaril@819
   528
					.arg(fbox.bottom()-offset.y())
insilmaril@819
   529
					.arg(url);
insilmaril@819
   530
		} else	
insilmaril@819
   531
			s+=quotemeta(current->getHeading());
insilmaril@819
   532
		s+="</span>";
insilmaril@819
   533
insilmaril@819
   534
		if (vis)
insilmaril@819
   535
			imageMap+=QString("  <area shape='rect' coords='%1,%2,%3,%4' href='#%5'>\n")
insilmaril@819
   536
				.arg(hr.left()-offset.x())
insilmaril@819
   537
				.arg(hr.top()-offset.y())
insilmaril@819
   538
				.arg(hr.right()-offset.x())
insilmaril@819
   539
				.arg(hr.bottom()-offset.y())
insilmaril@819
   540
				.arg(id);
insilmaril@819
   541
insilmaril@819
   542
		// Include note
insilmaril@819
   543
		if (!current->getNoteObj().isEmpty())
insilmaril@819
   544
			s+="<table border=1><tr><td>"+current->getNote()+"</td></tr></table>";
insilmaril@819
   545
insilmaril@819
   546
		return s;
insilmaril@819
   547
	} 
insilmaril@819
   548
	return QString();
insilmaril@819
   549
}
insilmaril@819
   550
insilmaril@819
   551
QString ExportHTML::buildList (BranchItem *current)
insilmaril@819
   552
{
insilmaril@819
   553
    QString r;
insilmaril@819
   554
insilmaril@819
   555
    uint i=0;
insilmaril@819
   556
	BranchItem *bi=current->getFirstBranch();
insilmaril@819
   557
insilmaril@819
   558
	// Only add itemized list, if we have more than one subitem.
insilmaril@819
   559
	// For only one subitem, just add a separator to keep page more compact
insilmaril@819
   560
	bool noSingularsHere=false;
insilmaril@819
   561
	if (current->branchCount()<2 && noSingulars) noSingularsHere=true;
insilmaril@819
   562
insilmaril@819
   563
	if (bi)
insilmaril@819
   564
    {
insilmaril@819
   565
		if (!noSingularsHere)
insilmaril@819
   566
			r+="<ul>\n";
insilmaril@819
   567
		else
insilmaril@819
   568
			r+=singularDelimiter;
insilmaril@819
   569
insilmaril@819
   570
		while (bi)
insilmaril@819
   571
		{
insilmaril@819
   572
			if (!bi->hasHiddenExportParent() )	
insilmaril@819
   573
			{
insilmaril@819
   574
				if (!noSingularsHere) r+="<li>";
insilmaril@819
   575
				r+=getBranchText (bi);
insilmaril@819
   576
				if (!bi->getURL().isEmpty() && frameURLs && noSingularsHere)
insilmaril@819
   577
					// Add frame, if we have subitems to an URL
insilmaril@819
   578
					r+="<table border=1><tr><td>"+buildList (bi)+"</td></tr></table>";	// recursivly add deeper branches
insilmaril@819
   579
				else
insilmaril@819
   580
					r+=buildList (bi);	// recursivly add deeper branches
insilmaril@819
   581
				if (!noSingularsHere) r+="</li>";
insilmaril@819
   582
				r+="\n";
insilmaril@819
   583
			}
insilmaril@819
   584
			i++;
insilmaril@819
   585
			bi=current->getBranchNum(i);
insilmaril@819
   586
		}
insilmaril@819
   587
insilmaril@819
   588
		if (!noSingularsHere) r+="</ul>\n";
insilmaril@819
   589
	}
insilmaril@819
   590
    return r;
insilmaril@819
   591
}
insilmaril@819
   592
insilmaril@824
   593
void ExportHTML::setCSSPath(const QString &p)
insilmaril@824
   594
{
insilmaril@824
   595
	cssOriginalPath=p;
insilmaril@824
   596
}
insilmaril@824
   597
insilmaril@819
   598
void ExportHTML::doExport() 
insilmaril@819
   599
{
insilmaril@824
   600
	//FIXME-1  check for errors// Copy CSS file
insilmaril@824
   601
	QFile css_src (cssOriginalPath);
insilmaril@824
   602
	QFile css_dst (outDir.path()+"/"+cssFileName);
insilmaril@824
   603
	if (!css_src.open ( QIODevice::ReadOnly))
insilmaril@824
   604
		QMessageBox::warning( 0, QObject::tr( "Warning","ExportHTML" ),QObject::tr("Could not open %1","ExportHTML").arg(cssOriginalPath));
insilmaril@824
   605
	else
insilmaril@824
   606
	{
insilmaril@824
   607
		if (!css_dst.open( QIODevice::WriteOnly))
insilmaril@824
   608
			QMessageBox::warning( 0, QObject::tr( "Warning" ), QObject::tr("Could not open %1").arg(css_dst.fileName()));
insilmaril@824
   609
		else
insilmaril@824
   610
		{	
insilmaril@824
   611
		
insilmaril@824
   612
			QTextStream tsout( &css_dst);
insilmaril@824
   613
			QTextStream tsin ( &css_src);
insilmaril@824
   614
			QString s= tsin.read();
insilmaril@824
   615
			tsout << s;
insilmaril@824
   616
			css_dst.close();
insilmaril@824
   617
		}	
insilmaril@824
   618
		css_src.close();
insilmaril@824
   619
	}
insilmaril@824
   620
insilmaril@824
   621
insilmaril@824
   622
insilmaril@824
   623
	// Open file for writing
insilmaril@819
   624
	QFile file (outputFile);
insilmaril@819
   625
	if ( !file.open( QIODevice::WriteOnly ) ) 
insilmaril@819
   626
	{
insilmaril@819
   627
		QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not write %1").arg(outputFile));
insilmaril@819
   628
		mainWindow->statusMessage(QString(QObject::tr("Export failed.")));
insilmaril@819
   629
		return;
insilmaril@819
   630
	}
insilmaril@819
   631
	QTextStream ts( &file );	// use LANG decoding here...
insilmaril@819
   632
	ts.setEncoding (QTextStream::UnicodeUTF8); // Force UTF8
insilmaril@819
   633
insilmaril@819
   634
	// Write header
insilmaril@819
   635
	ts<<"<html><title>"+model->getMapName()<<"</title><body>";
insilmaril@824
   636
	ts<<" <link rel='stylesheet' id='css.stylesheet' href='"<<cssFileName<<"' />\n";
insilmaril@819
   637
insilmaril@819
   638
	// Include image
insilmaril@822
   639
	ts<<"<center><img src=\""<<model->getMapName()<<".png\" usemap='#imagemap'></center>\n";
insilmaril@819
   640
insilmaril@819
   641
insilmaril@819
   642
	// Main loop over all mapcenters
insilmaril@819
   643
	QString s;
insilmaril@819
   644
	TreeItem *rootItem=model->getRootItem();
insilmaril@819
   645
	BranchItem *bi;
insilmaril@819
   646
	for (int i=0; i<rootItem->branchCount(); i++)
insilmaril@819
   647
	{
insilmaril@819
   648
		bi=rootItem->getBranchNum(i);
insilmaril@819
   649
		if (!bi->hasHiddenExportParent())
insilmaril@819
   650
		{
insilmaril@819
   651
			ts<<getBranchText (bi);
insilmaril@819
   652
			ts<<buildList (bi);
insilmaril@819
   653
		}
insilmaril@819
   654
	}	
insilmaril@819
   655
insilmaril@819
   656
	// Imagemap
insilmaril@819
   657
	ts<<"<map name='imagemap'>\n"+imageMap+"</map>\n";
insilmaril@819
   658
insilmaril@819
   659
	// Write footer 
insilmaril@819
   660
	ts<<"<hr/>\n";
insilmaril@819
   661
	ts<<"<table class=\"vym-footer\">   \n\
insilmaril@819
   662
      <tr> \n\
insilmaril@819
   663
        <td class=\"vym-footerL\">"+model->getFileName()+"</td> \n\
insilmaril@819
   664
        <td class=\"vym-footerC\">"+model->getDate()+"</td> \n\
insilmaril@819
   665
        <td class=\"vym-footerR\"> vym "+model->getVersion()+"</td> \n\
insilmaril@819
   666
      </tr> \n \
insilmaril@819
   667
    </table>\n";
insilmaril@819
   668
	ts<<"</body></html>";
insilmaril@819
   669
	file.close();
insilmaril@819
   670
}
insilmaril@819
   671
insilmaril@819
   672
////////////////////////////////////////////////////////////////////////
insilmaril@228
   673
void ExportTaskjuggler::doExport() 
insilmaril@228
   674
{
insilmaril@721
   675
	model->exportXML(tmpDir.path(),false);
insilmaril@228
   676
insilmaril@721
   677
	XSLTProc p;
insilmaril@721
   678
	p.setInputFile (tmpDir.path()+"/"+model->getMapName()+".xml");
insilmaril@721
   679
	p.setOutputFile (outputFile);
insilmaril@721
   680
	p.setXSLFile (vymBaseDir.path()+"/styles/vym2taskjuggler.xsl");
insilmaril@721
   681
	p.process();
insilmaril@228
   682
}
insilmaril@228
   683
insilmaril@239
   684
////////////////////////////////////////////////////////////////////////
insilmaril@228
   685
void ExportLaTeX::doExport() 
insilmaril@0
   686
{
insilmaril@183
   687
	// Exports a map to a LaTex file.  
insilmaril@183
   688
	// This file needs to be included 
insilmaril@183
   689
	// or inported into a LaTex document
insilmaril@183
   690
	// it will not add a preamble, or anything 
insilmaril@183
   691
	// that makes a full LaTex document.
insilmaril@199
   692
  QFile file (outputFile);
insilmaril@366
   693
  if ( !file.open( QIODevice::WriteOnly ) ) {
insilmaril@205
   694
	QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not write %1").arg(outputFile));
insilmaril@205
   695
	mainWindow->statusMessage(QString(QObject::tr("Export failed.")));
insilmaril@163
   696
    return;
insilmaril@163
   697
  }
insilmaril@163
   698
  QTextStream ts( &file );	// use LANG decoding here...
insilmaril@163
   699
  ts.setEncoding (QTextStream::UnicodeUTF8); // Force UTF8
insilmaril@163
   700
  
insilmaril@163
   701
  // Main loop over all branches
insilmaril@163
   702
  QString s;
insilmaril@613
   703
  // QString curIndent("");
insilmaril@163
   704
  // int i;
insilmaril@163
   705
  BranchObj *bo;
insilmaril@750
   706
  BranchItem *cur=NULL;
insilmaril@750
   707
  BranchItem *prev=NULL;
insilmaril@804
   708
  model->nextBranch(cur,prev);
insilmaril@741
   709
  while (cur) 
insilmaril@740
   710
  {
insilmaril@741
   711
	bo=(BranchObj*)(cur->getLMO());
insilmaril@740
   712
insilmaril@753
   713
	if (!cur->hasHiddenExportParent() )
insilmaril@600
   714
	{
insilmaril@741
   715
		switch (cur->depth() ) 
insilmaril@740
   716
		{
insilmaril@740
   717
			case 0: break;
insilmaril@740
   718
			case 1: 
insilmaril@753
   719
			  ts << ("\\chapter{" + cur->getHeading()+ "}\n");
insilmaril@740
   720
			  break;
insilmaril@740
   721
			case 2: 
insilmaril@753
   722
			  ts << ("\\section{" + cur->getHeading()+ "}\n");
insilmaril@740
   723
			  break;
insilmaril@740
   724
			case 3: 
insilmaril@753
   725
			  ts << ("\\subsection{" + cur->getHeading()+ "}\n");
insilmaril@740
   726
			  break;
insilmaril@740
   727
			case 4: 
insilmaril@753
   728
			  ts << ("\\subsubsection{" + cur->getHeading()+ "}\n");
insilmaril@740
   729
			  break;
insilmaril@740
   730
			default:
insilmaril@753
   731
			  ts << ("\\paragraph*{" + cur->getHeading()+ "}\n");
insilmaril@740
   732
			
insilmaril@600
   733
		}
insilmaril@600
   734
		// If necessary, write note
insilmaril@746
   735
		if (!cur->getNoteObj().isEmpty()) {
insilmaril@746
   736
		  ts << (cur->getNoteASCII());
insilmaril@600
   737
		  ts << ("\n");
insilmaril@600
   738
		}
insilmaril@254
   739
	}
insilmaril@804
   740
    cur=model->nextBranch(cur,prev);
insilmaril@163
   741
   }
insilmaril@163
   742
  file.close();
insilmaril@0
   743
}
insilmaril@0
   744
insilmaril@239
   745
////////////////////////////////////////////////////////////////////////
insilmaril@171
   746
ExportOO::ExportOO()
insilmaril@171
   747
{
insilmaril@199
   748
	useSections=false;
insilmaril@171
   749
}
insilmaril@163
   750
insilmaril@171
   751
ExportOO::~ExportOO()
insilmaril@171
   752
{
insilmaril@171
   753
}	
insilmaril@163
   754
insilmaril@750
   755
QString ExportOO::buildList (TreeItem *current)
insilmaril@171
   756
{
insilmaril@171
   757
    QString r;
insilmaril@183
   758
insilmaril@183
   759
    uint i=0;
insilmaril@750
   760
	BranchItem *bi=current->getFirstBranch();
insilmaril@750
   761
	if (bi)
insilmaril@171
   762
    {
insilmaril@819
   763
		// Start list
insilmaril@819
   764
		r+="<text:list text:style-name=\"vym-list\">\n";
insilmaril@819
   765
		while (bi)
insilmaril@600
   766
		{
insilmaril@819
   767
			if (!bi->hasHiddenExportParent() )	
insilmaril@600
   768
			{
insilmaril@600
   769
				r+="<text:list-item><text:p >";
insilmaril@750
   770
				r+=quotemeta(bi->getHeading());
insilmaril@600
   771
				// If necessary, write note
insilmaril@750
   772
				if (!bi->getNoteObj().isEmpty())
insilmaril@750
   773
					r+=bi->getNoteOpenDoc();
insilmaril@600
   774
				r+="</text:p>";
insilmaril@750
   775
				r+=buildList (bi);	// recursivly add deeper branches
insilmaril@600
   776
				r+="</text:list-item>\n";
insilmaril@600
   777
			}
insilmaril@819
   778
			i++;
insilmaril@819
   779
			bi=current->getBranchNum(i);
insilmaril@600
   780
		}
insilmaril@819
   781
		r+="</text:list>\n";
insilmaril@171
   782
    }
insilmaril@171
   783
    return r;
insilmaril@171
   784
}
insilmaril@163
   785
insilmaril@171
   786
insilmaril@171
   787
void ExportOO::exportPresentation()
insilmaril@171
   788
{
insilmaril@183
   789
	QString allPages;
insilmaril@171
   790
insilmaril@804
   791
	BranchItem *firstMCO=(BranchItem*)(model->getRootItem()->getFirstBranch());
insilmaril@804
   792
	if (!firstMCO) 
insilmaril@804
   793
	{
insilmaril@804
   794
		QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("No objects in map!"));
insilmaril@804
   795
		return;
insilmaril@804
   796
	}
insilmaril@804
   797
insilmaril@163
   798
	// Insert new content
insilmaril@804
   799
	// FIXME add extra title in mapinfo for vym 1.13.x
insilmaril@804
   800
	content.replace ("<!-- INSERT TITLE -->",quotemeta(firstMCO->getHeading()));
insilmaril@804
   801
	content.replace ("<!-- INSERT AUTHOR -->",quotemeta(model->getAuthor()));
insilmaril@183
   802
insilmaril@183
   803
	QString	onePage;
insilmaril@183
   804
	QString list;
insilmaril@183
   805
	
insilmaril@804
   806
	BranchItem *sectionBI;	
insilmaril@183
   807
    int i=0;
insilmaril@804
   808
	BranchItem *pagesBI;
insilmaril@183
   809
    int j=0;
insilmaril@183
   810
insilmaril@804
   811
	int mapcenters=model->getRootItem()->branchCount();
insilmaril@804
   812
insilmaril@804
   813
	// useSections already has been set in setConfigFile 
insilmaril@804
   814
	if (mapcenters>1)	
insilmaril@804
   815
		sectionBI=firstMCO;
insilmaril@804
   816
	else
insilmaril@804
   817
		sectionBI=firstMCO->getFirstBranch();
insilmaril@804
   818
insilmaril@194
   819
	// Walk sections
insilmaril@804
   820
	while (sectionBI && !sectionBI->hasHiddenExportParent() )
insilmaril@183
   821
	{
insilmaril@194
   822
		if (useSections)
insilmaril@183
   823
		{
insilmaril@194
   824
			// Add page with section title
insilmaril@194
   825
			onePage=sectionTemplate;
insilmaril@804
   826
			onePage.replace ("<!-- INSERT PAGE HEADING -->", quotemeta(sectionBI->getHeading() ) );
insilmaril@183
   827
			allPages+=onePage;
insilmaril@804
   828
			pagesBI=sectionBI->getFirstBranch();
insilmaril@183
   829
		} else
insilmaril@183
   830
		{
insilmaril@804
   831
			//i=-2;	// only use inner loop to 
insilmaril@183
   832
			        // turn mainbranches into pages
insilmaril@804
   833
			//sectionBI=firstMCO;
insilmaril@804
   834
			pagesBI=sectionBI;
insilmaril@183
   835
		}
insilmaril@183
   836
insilmaril@183
   837
		j=0;
insilmaril@804
   838
		while (pagesBI && !pagesBI->hasHiddenExportParent() )
insilmaril@183
   839
		{
insilmaril@183
   840
			// Add page with list of items
insilmaril@254
   841
			onePage=pageTemplate;
insilmaril@804
   842
			onePage.replace ("<!-- INSERT PAGE HEADING -->", quotemeta (pagesBI->getHeading() ) );
insilmaril@804
   843
			list=buildList (pagesBI);
insilmaril@254
   844
			onePage.replace ("<!-- INSERT LIST -->", list);
insilmaril@254
   845
			allPages+=onePage;
insilmaril@804
   846
			if (pagesBI!=sectionBI)
insilmaril@804
   847
			{
insilmaril@804
   848
				j++;
insilmaril@804
   849
				pagesBI=((BranchItem*)pagesBI->parent())->getBranchNum(j);
insilmaril@804
   850
			} else
insilmaril@804
   851
				pagesBI=NULL;	// We are already iterating over the sectionBIs
insilmaril@183
   852
		}
insilmaril@183
   853
		i++;
insilmaril@804
   854
		if (mapcenters>1 )
insilmaril@804
   855
			sectionBI=model->getRootItem()->getBranchNum (i);
insilmaril@804
   856
		else
insilmaril@804
   857
			sectionBI=firstMCO->getBranchNum (i);
insilmaril@183
   858
	}
insilmaril@183
   859
	
insilmaril@171
   860
	content.replace ("<!-- INSERT PAGES -->",allPages);
insilmaril@171
   861
insilmaril@171
   862
	// Write modified content
insilmaril@171
   863
	QFile f (contentFile);
insilmaril@366
   864
    if ( !f.open( QIODevice::WriteOnly ) ) 
insilmaril@171
   865
	{
insilmaril@205
   866
		QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not write %1").arg(contentFile));
insilmaril@205
   867
		mainWindow->statusMessage(QString(QObject::tr("Export failed.")));
insilmaril@171
   868
		return;
insilmaril@171
   869
    }
insilmaril@171
   870
insilmaril@171
   871
    QTextStream t( &f );
insilmaril@171
   872
    t << content;
insilmaril@171
   873
    f.close();
insilmaril@171
   874
insilmaril@163
   875
	// zip tmpdir to destination
insilmaril@171
   876
	zipDir (tmpDir,outputFile);	
insilmaril@163
   877
}
insilmaril@163
   878
insilmaril@194
   879
bool ExportOO::setConfigFile (const QString &cf)
insilmaril@183
   880
{
insilmaril@183
   881
	configFile=cf;
insilmaril@183
   882
	int i=cf.findRev ("/");
insilmaril@183
   883
	if (i>=0) configDir=cf.left(i);
insilmaril@183
   884
	SimpleSettings set;
insilmaril@183
   885
	set.readSettings(configFile);
insilmaril@183
   886
insilmaril@183
   887
	// set paths
insilmaril@183
   888
	templateDir=configDir+"/"+set.readEntry ("Template");
insilmaril@183
   889
insilmaril@194
   890
	QDir d (templateDir);
insilmaril@194
   891
	if (!d.exists())
insilmaril@194
   892
	{
insilmaril@194
   893
		QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Check \"%1\" in\n%2").arg("Template="+set.readEntry ("Template")).arg(configFile));
insilmaril@194
   894
		return false;
insilmaril@194
   895
insilmaril@194
   896
	}
insilmaril@183
   897
insilmaril@183
   898
	contentTemplateFile=templateDir+"content-template.xml";
insilmaril@183
   899
	contentFile=tmpDir.path()+"/content.xml";
insilmaril@183
   900
	pageTemplateFile=templateDir+"page-template.xml";
insilmaril@194
   901
	sectionTemplateFile=templateDir+"section-template.xml";
insilmaril@183
   902
insilmaril@199
   903
	if (set.readEntry("useSections").contains("yes"))
insilmaril@199
   904
		useSections=true;
insilmaril@199
   905
insilmaril@183
   906
	// Copy template to tmpdir
insilmaril@183
   907
	system ("cp -r "+templateDir+"* "+tmpDir.path());
insilmaril@183
   908
insilmaril@183
   909
	// Read content-template
insilmaril@183
   910
	if (!loadStringFromDisk (contentTemplateFile,content))
insilmaril@183
   911
	{
insilmaril@194
   912
		QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not read %1").arg(contentTemplateFile));
insilmaril@194
   913
		return false;
insilmaril@183
   914
	}
insilmaril@183
   915
insilmaril@183
   916
	// Read page-template
insilmaril@183
   917
	if (!loadStringFromDisk (pageTemplateFile,pageTemplate))
insilmaril@183
   918
	{
insilmaril@194
   919
		QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not read %1").arg(pageTemplateFile));
insilmaril@194
   920
		return false;
insilmaril@183
   921
	}
insilmaril@183
   922
	
insilmaril@194
   923
	// Read section-template
insilmaril@201
   924
	if (useSections && !loadStringFromDisk (sectionTemplateFile,sectionTemplate))
insilmaril@183
   925
	{
insilmaril@194
   926
		QMessageBox::critical (0,QObject::tr("Critical Export Error"),QObject::tr("Could not read %1").arg(sectionTemplateFile));
insilmaril@194
   927
		return false;
insilmaril@183
   928
	}
insilmaril@194
   929
	return true;
insilmaril@183
   930
}
insilmaril@183
   931