diff -r 000000000000 -r 190b3a70fabc exportxhtmldialog.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exportxhtmldialog.cpp Thu Nov 16 10:07:11 2006 +0000
@@ -0,0 +1,411 @@
+#include "exportxhtmldialog.h"
+
+#include
+#include
+#include
+
+#include "options.h"
+#include "settings.h"
+
+
+extern Options options;
+extern QDir vymBaseDir;
+extern Settings settings;
+
+ExportXHTMLDialog::ExportXHTMLDialog(QWidget* parent) : QDialog(parent)
+{
+ ui.setupUi(this);
+
+ filepath="";
+ settingsChanged=false;
+ scriptProc=new Process;
+
+ // signals and slots connections
+ connect(ui.browseExportDirButton, SIGNAL(pressed()), this, SLOT(browseDirectoryPressed()));
+ connect(ui.outputButton, SIGNAL(toggled(bool)), this, SLOT(outputButtonPressed(bool)));
+ connect(ui.browseXSLButton, SIGNAL(pressed()), this, SLOT(browseXSLPressed()));
+ connect(ui.browseCSSButton, SIGNAL(pressed()), this, SLOT(browseCSSPressed()));
+ connect(ui.imageButton, SIGNAL(toggled(bool)), this, SLOT(imageButtonPressed(bool)));
+ connect(ui.textColorButton, SIGNAL(toggled(bool)), this, SLOT(textcolorButtonPressed(bool)));
+ connect(ui.lineEditDir, SIGNAL(textChanged(const QString&)), this, SLOT(dirChanged()));
+ connect(ui.lineEditCSS, SIGNAL(textChanged(const QString&)), this, SLOT(cssChanged()));
+ connect(ui.lineEditXSL, SIGNAL(textChanged(const QString&)), this, SLOT(xslChanged()));
+ connect(ui.warningsButton, SIGNAL(toggled(bool)), this, SLOT(warningsButtonPressed(bool)));
+ connect(ui.saveSettingsInMapButton, SIGNAL(toggled(bool)), this, SLOT(saveSettingsInMapButtonPressed(bool)));
+ connect(ui.browsePreExportButton, SIGNAL(pressed()), this, SLOT(browsePreExportButtonPressed()));
+ connect(ui.lineEditPreScript, SIGNAL(textChanged(const QString&)), this, SLOT(prescriptChanged()));
+ connect(ui.lineEditPostScript, SIGNAL(textChanged(const QString&)), this, SLOT(postscriptChanged()));
+ connect(ui.browsePostExportButton, SIGNAL(pressed()), this, SLOT(browsePostExportButtonPressed()));
+}
+
+
+void ExportXHTMLDialog::readSettings()
+{
+
+ dir=settings.readLocalEntry (filepath,"/export/xhtml/exportDir",vymBaseDir.currentDirPath() );
+ ui.lineEditDir->setText(dir);
+
+ if ( settings.readLocalEntry (filepath,"/export/xhtml/useImage","yes")=="yes")
+ useImage=true;
+ else
+ useImage=false;
+ ui.imageButton->setChecked(useImage);
+
+ if ( settings.readLocalEntry (filepath,"/export/xhtml/useTextColor","no")=="yes")
+ useTextColor=true;
+ else
+ useTextColor=false;
+ ui.textColorButton->setChecked(useTextColor);
+
+/* FIXME this was used in old html export, is not yet in new stylesheet
+ if ( settings.readEntry ("/export/html/useHeading","no")=="yes")
+ useHeading=true;
+ else
+ useHeading=false;
+ checkBox4_2->setChecked(useHeading);
+*/
+
+ if ( settings.readLocalEntry (filepath,"/export/xhtml/saveSettingsInMap","no")=="yes")
+ saveSettingsInMap=true;
+ else
+ saveSettingsInMap=false;
+ ui.saveSettingsInMapButton->setChecked(saveSettingsInMap);
+
+ if ( settings.readEntry ("/export/xhtml/showWarnings","yes")=="yes")
+ showWarnings=true;
+ else
+ showWarnings=false;
+ ui.warningsButton->setChecked(showWarnings);
+
+ if ( settings.readEntry ("/export/xhtml/showOutput","no")=="yes")
+ showOutput=true;
+ else
+ showOutput=false;
+ ui.outputButton->setChecked(showOutput);
+
+ // For testing better use local styles
+ if (options.isOn ("local"))
+ {
+ xsl=vymBaseDir.path()+"/styles/vym2xhtml.xsl";
+ css=vymBaseDir.path()+"/styles/vym.css";
+ } else
+ {
+ xsl=settings.readLocalEntry
+ (filepath,"/export/xhtml/xsl","/usr/share/vym/styles/vym2xhtml.xsl");
+ css=settings.readLocalEntry
+ (filepath,"/export/xhtml/css","/usr/share/vym/styles/vym.css");
+ }
+ ui.lineEditXSL->setText(xsl);
+ ui.lineEditCSS->setText(css);
+
+ prescript=settings.readLocalEntry
+ (filepath,"/export/xhtml/prescript","");
+ ui.lineEditPreScript->setText (prescript);
+
+ postscript=settings.readLocalEntry
+ (filepath,"/export/xhtml/postscript","");
+ ui.lineEditPostScript->setText (postscript);
+
+ if (!prescript.isEmpty() || !postscript.isEmpty())
+ {
+ QMessageBox::warning( 0, tr( "Warning" ),tr(
+ "The settings saved in the map "
+ "would like to run scripts:\n\n"
+ "%1\n\n"
+ "Please check, if you really\n"
+ "want to allow this in your system!").arg(prescript+" "+postscript));
+
+ }
+}
+
+void ExportXHTMLDialog::dirChanged()
+{
+ dir=ui.lineEditDir->text();
+ if (dir.right(1)!="/")
+ dir+="/";
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browseDirectoryPressed()
+{
+ QFileDialog fd( this);
+ fd.setMode (QFileDialog::DirectoryOnly);
+ fd.setCaption(tr("VYM - Export HTML to directory"));
+ fd.setModal (true);
+ fd.setDirectory (QDir::current());
+ fd.show();
+
+ if ( fd.exec() == QDialog::Accepted )
+ {
+ dir=fd.selectedFile();
+ ui.lineEditDir->setText (dir );
+ settingsChanged=true;
+ }
+}
+
+void ExportXHTMLDialog::imageButtonPressed(bool b)
+{
+ useImage=b;
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::textcolorButtonPressed(bool b)
+{
+ useTextColor=b;
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::saveSettingsInMapButtonPressed(bool b)
+{
+ saveSettingsInMap=b;
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::warningsButtonPressed(bool b)
+{
+ showWarnings=b;
+ settingsChanged=true;
+}
+
+
+void ExportXHTMLDialog::outputButtonPressed(bool b)
+{
+ showOutput=b;
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::cssChanged()
+{
+ css=ui.lineEditCSS->text();
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browseCSSPressed()
+{
+ QFileDialog fd( this);
+ fd.setModal (true);
+ fd.setFilter ("Cascading Stylesheet (*.css)");
+ fd.setDirectory (QDir::current());
+ fd.show();
+
+ if ( fd.exec() == QDialog::Accepted )
+ {
+ css=fd.selectedFile();
+ ui.lineEditCSS->setText (css );
+ settingsChanged=true;
+ }
+}
+
+void ExportXHTMLDialog::xslChanged()
+{
+ xsl=ui.lineEditXSL->text();
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::prescriptChanged()
+{
+ prescript=ui.lineEditPreScript->text();
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browseXSLPressed()
+{
+ QFileDialog fd( this);
+ fd.setModal (true);
+ fd.setFilter ("Extensible Stylesheet Language (*.xsl)");
+ fd.setDirectory (QDir::current());
+ fd.show();
+
+ if ( fd.exec() == QDialog::Accepted )
+ {
+ xsl=fd.selectedFile();
+ ui.lineEditXSL->setText (xsl );
+ settingsChanged=true;
+ }
+}
+
+void ExportXHTMLDialog::postscriptChanged()
+{
+ postscript=ui.lineEditPostScript->text();
+ settingsChanged=true;
+}
+
+void ExportXHTMLDialog::browsePreExportButtonPressed()
+{
+ QFileDialog fd( this);
+ fd.setModal (true);
+ fd.setFilter ("Scripts (*.sh *.pl *.py *.php)");
+ fd.setDirectory (QDir::current());
+ fd.show();
+
+ if ( fd.exec() == QDialog::Accepted )
+ {
+ prescript=fd.selectedFile();
+ ui.lineEditPreScript->setText (prescript );
+ settingsChanged=true;
+ }
+
+}
+
+void ExportXHTMLDialog::browsePostExportButtonPressed()
+{
+ QFileDialog fd( this);
+ fd.setModal (true);
+ fd.setFilter ("Scripts (*.sh *.pl *.py *.php)");
+ fd.setDirectory (QDir::current());
+ fd.show();
+
+ if ( fd.exec() == QDialog::Accepted )
+ {
+ postscript=fd.selectedFile();
+ ui.lineEditPostScript->setText (postscript );
+ settingsChanged=true;
+ }
+}
+
+
+void ExportXHTMLDialog::doExport (const QString &mapname)
+{
+ // Save options to settings file
+ // (but don't save at destructor, which
+ // is called for "cancel", too)
+ settings.setLocalEntry (filepath,"/export/xhtml/exportDir",dir);
+ settings.setLocalEntry (filepath,"/export/xhtml/prescript",prescript);
+ settings.setLocalEntry (filepath,"/export/xhtml/postscript",postscript);
+
+ if (useImage)
+ settings.setLocalEntry (filepath,"/export/xhtml/useImage","yes");
+ else
+ settings.setLocalEntry (filepath,"/export/xhtml/useImage","no");
+
+ if (useTextColor)
+ settings.setLocalEntry (filepath,"/export/xhtml/useTextColor","yes");
+ else
+ settings.setLocalEntry (filepath,"/export/xhtml/useTextColor","no");
+
+ if (showWarnings)
+ settings.writeEntry ("/export/xhtml/showWarnings","yes");
+ else
+ settings.writeEntry ("/export/xhtml/showWarnings","no");
+
+ if (showOutput)
+ settings.writeEntry ("/export/xhtml/showOutput","yes");
+ else
+ settings.writeEntry ("/export/xhtml/showOutput","no");
+
+ QString ipath;
+ ipath=vymBaseDir.path()+"/flags/flag-url-16x16.png";
+ if (!options.isOn ("local"))
+ {
+ settings.setLocalEntry
+ (filepath,"/export/xhtml/xsl",xsl);
+ settings.setLocalEntry
+ (filepath,"/export/xhtml/css",css);
+ }
+
+ // Provide a smaller URL-icon to improve Layout
+ QPixmap pm;
+ if (!pm.load(ipath,"PNG") )
+ QMessageBox::warning( 0, tr( "Warning" ),tr("Could not open %1").arg(ipath));
+
+
+ if(!pm.save (dir + "flags/flag-url-16x16.png","PNG"))
+ QMessageBox::warning( 0, tr( "Warning" ),tr("Could not write %1").arg(ipath));
+ if (!saveSettingsInMap)
+ settings.clearLocal("/export/xhtml");
+ else
+ settings.setLocalEntry
+ (filepath,"/export/xhtml/saveSettingsInMap","yes");
+
+ // Copy CSS file
+ QFile css_src (css);
+ QFile css_dst (dir+"vym.css");
+ if (!css_src.open ( QIODevice::ReadOnly))
+ QMessageBox::warning( 0, tr( "Warning" ),tr("Could not open %1").arg(css));
+ else
+ {
+ if (!css_dst.open( QIODevice::WriteOnly))
+ QMessageBox::warning( 0, tr( "Warning" ), tr("Could not open %1").arg(dir+"vym.css"));
+ else
+ {
+
+ QTextStream tsout( &css_dst);
+ QTextStream tsin ( &css_src);
+ QString s= tsin.read();
+ tsout << s;
+ css_dst.close();
+ }
+ css_src.close();
+ }
+
+ if (!prescript.isEmpty()) runScript (prescript,dir+mapname+".xml");
+
+ if (useImage)
+ p.addStringParam ("imagemap","images/"+mapname+".png");
+ if (useTextColor)
+ p.addStringParam ("use.textcolor","1");
+ p.addStringParam ("mapname",mapname+".vym");
+
+ p.setOutputFile (dir+mapname+".html");
+ p.setInputFile (dir+mapname+".xml");
+ p.setXSLFile (xsl);
+ p.process();
+
+ if (!postscript.isEmpty()) runScript (postscript,dir+mapname+".html");
+
+}
+
+void ExportXHTMLDialog::setFilePath(const QString &s)
+{
+ filepath=s;
+}
+
+void ExportXHTMLDialog::setMapName(const QString &s)
+{
+ mapname=s;
+}
+
+QString ExportXHTMLDialog::getDir()
+{
+ return dir;
+}
+
+bool ExportXHTMLDialog::warnings()
+{
+ return showWarnings;
+}
+
+bool ExportXHTMLDialog::hasChanged()
+{
+ return settingsChanged;
+}
+
+
+void ExportXHTMLDialog::runScript(QString spath, QString fpath)
+{
+ spath.replace ("%f",fpath);
+ QStringList args=QStringList::split (' ',spath,false);
+
+ scriptProc->clearArguments();
+ scriptProc->setArguments (args);
+ p.addOutput ("vym is executing: \n" + scriptProc->arguments().join(" ") );
+ if (!scriptProc->start() )
+ {
+ QMessageBox::critical( 0, tr( "Critical Error" ),
+ tr("Could not start %1").arg(spath) );
+ } else
+ {
+ scriptProc->waitFinished();
+ if (!scriptProc->normalExit() )
+ QMessageBox::critical( 0, tr( "Critical Error" ),
+ tr("%1 didn't exit normally").arg(spath) +
+ scriptProc->getErrout() );
+ else
+ if (scriptProc->exitStatus()>0) showOutput=true;
+
+ }
+ p.addOutput ("\n");
+ p.addOutput (scriptProc->getErrout());
+ p.addOutput (scriptProc->getStdout());
+}
+