X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Fexport-html-dialog.cpp;fp=src%2Fexport-html-dialog.cpp;h=f967e6c0ceccd27ed853271f381f810372b84ebe;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/export-html-dialog.cpp b/src/export-html-dialog.cpp new file mode 100644 index 0000000..f967e6c --- /dev/null +++ b/src/export-html-dialog.cpp @@ -0,0 +1,352 @@ +#include "export-html-dialog.h" + +#include +#include + +#include "file.h" +#include "settings.h" + +extern QDir vymBaseDir; +extern Settings settings; +extern bool debug; + +ExportHTMLDialog::ExportHTMLDialog(QWidget *parent) : QDialog(parent) +{ + ui.setupUi(this); + + filepath = ""; + settingsChanged = false; + + // signals and slots connections + connect(ui.browseExportDirButton, SIGNAL(pressed()), this, + SLOT(browseDirectoryPressed())); + connect(ui.browseCssSrcButton, SIGNAL(pressed()), this, + SLOT(browseCssSrcPressed())); + connect(ui.browseCssDstButton, SIGNAL(pressed()), this, + SLOT(browseCssDstPressed())); + connect(ui.imageCheckBox, SIGNAL(toggled(bool)), this, + SLOT(imageCheckBoxPressed(bool))); + connect(ui.includeImagesCheckBox, SIGNAL(toggled(bool)), this, + SLOT(includeImagesCheckBoxPressed(bool))); + connect(ui.TOCCheckBox, SIGNAL(toggled(bool)), this, + SLOT(TOCCheckBoxPressed(bool))); + connect(ui.numberingCheckBox, SIGNAL(toggled(bool)), this, + SLOT(numberingCheckBoxPressed(bool))); + connect(ui.taskFlagsCheckBox, SIGNAL(toggled(bool)), this, + SLOT(taskFlagsCheckBoxPressed(bool))); + connect(ui.userFlagsCheckBox, SIGNAL(toggled(bool)), this, + SLOT(userFlagsCheckBoxPressed(bool))); + connect(ui.textColorCheckBox, SIGNAL(toggled(bool)), this, + SLOT(textcolorCheckBoxPressed(bool))); + connect(ui.lineEditDir, SIGNAL(textChanged(const QString &)), this, + SLOT(dirChanged())); + connect(ui.copyCssCheckBox, SIGNAL(pressed()), this, + SLOT(copyCssPressed())); + connect(ui.lineEditCssSrc, SIGNAL(textChanged(const QString &)), this, + SLOT(cssSrcChanged())); + connect(ui.lineEditCssDst, SIGNAL(textChanged(const QString &)), this, + SLOT(cssDstChanged())); + connect(ui.saveSettingsInMapCheckBox, SIGNAL(toggled(bool)), this, + SLOT(saveSettingsInMapCheckBoxPressed(bool))); + connect(ui.lineEditPostScript, SIGNAL(textChanged(const QString &)), this, + SLOT(postscriptChanged())); + connect(ui.browsePostExportButton, SIGNAL(pressed()), this, + SLOT(browsePostExportButtonPressed())); +} + +void ExportHTMLDialog::readSettings() +{ + dir.setPath(settings + .localValue(filepath, "/export/html/exportDir", + vymBaseDir.currentPath()) + .toString()); // FIXME-3 exportDir only needed for dialog + ui.lineEditDir->setText(dir.absolutePath()); + + includeMapImage = + settings.localValue(filepath, "/export/html/includeMapImage", "true") + .toBool(); + ui.imageCheckBox->setChecked(includeMapImage); + + includeImages = + settings.localValue(filepath, "/export/html/includeImages", "true") + .toBool(); + ui.includeImagesCheckBox->setChecked(includeImages); + + useTOC = + settings.localValue(filepath, "/export/html/useTOC", "true").toBool(); + ui.TOCCheckBox->setChecked(useTOC); + + useNumbering = + settings.localValue(filepath, "/export/html/useNumbering", "true") + .toBool(); + ui.numberingCheckBox->setChecked(useNumbering); + + useTaskFlags = + settings.localValue(filepath, "/export/html/useTaskFlags", "true") + .toBool(); + ui.taskFlagsCheckBox->setChecked(useTaskFlags); + + useUserFlags = + settings.localValue(filepath, "/export/html/useUserFlags", "true") + .toBool(); + ui.userFlagsCheckBox->setChecked(useUserFlags); + + useTextColor = + settings.localValue(filepath, "/export/html/useTextColor", "no") + .toBool(); + ui.textColorCheckBox->setChecked(useTextColor); + + /* FIXME-3 this was used in old html export, is not yet in new stylesheet + useHeading=settings.readValue + ("/export/html/useHeading","false").toBool(); + checkBox4_2->setChecked(useHeading); + */ + + saveSettingsInMap = + settings.localValue(filepath, "/export/html/saveSettingsInMap", "no") + .toBool(); + ui.saveSettingsInMapCheckBox->setChecked(saveSettingsInMap); + + // CSS settings + css_copy = + settings.localValue(filepath, "/export/html/copy_css", true).toBool(); + ui.copyCssCheckBox->setChecked(css_copy); + + QString css_org = vymBaseDir.path() + "/styles/vym.css"; + css_src = settings.localValue(filepath, "/export/html/css_src", css_org) + .toString(); + css_dst = + settings.localValue(filepath, "/export/html/css_dst", basename(css_org)) + .toString(); + + ui.lineEditCssSrc->setText(css_src); + ui.lineEditCssDst->setText(css_dst); + + postscript = + settings.localValue(filepath, "/export/html/postscript", "").toString(); + ui.lineEditPostScript->setText(postscript); + + if (!postscript.isEmpty()) { + QMessageBox::warning(0, tr("Warning"), + tr("The settings saved in the map " + "would like to run script:\n\n" + "%1\n\n" + "Please check, if you really\n" + "want to allow this in your system!") + .arg(postscript)); + } +} + +void ExportHTMLDialog::setDirectory(const QString &d) { dir.setPath(d); } + +void ExportHTMLDialog::dirChanged() +{ + setDirectory(ui.lineEditDir->text()); + settingsChanged = true; +} + +void ExportHTMLDialog::browseDirectoryPressed() +{ + QFileDialog fd(this); + fd.setFileMode(QFileDialog::DirectoryOnly); + fd.setWindowTitle(tr("VYM - Export HTML to directory")); + fd.setModal(true); + fd.setDirectory(QDir::current()); + fd.show(); + + if (fd.exec() == QDialog::Accepted) { + QDir dir = fd.directory(); + ui.lineEditDir->setText(dir.path()); + settingsChanged = true; + } +} + +void ExportHTMLDialog::imageCheckBoxPressed(bool b) +{ + includeMapImage = b; + settingsChanged = true; +} + +void ExportHTMLDialog::includeImagesCheckBoxPressed(bool b) +{ + includeImages = b; + settingsChanged = true; +} + +void ExportHTMLDialog::TOCCheckBoxPressed(bool b) +{ + useTOC = b; + settingsChanged = true; +} + +void ExportHTMLDialog::numberingCheckBoxPressed(bool b) +{ + useNumbering = b; + settingsChanged = true; +} + +void ExportHTMLDialog::taskFlagsCheckBoxPressed(bool b) +{ + useTaskFlags = b; + settingsChanged = true; +} + +void ExportHTMLDialog::userFlagsCheckBoxPressed(bool b) +{ + useUserFlags = b; + settingsChanged = true; +} + +void ExportHTMLDialog::textcolorCheckBoxPressed(bool b) +{ + useTextColor = b; + settingsChanged = true; +} + +void ExportHTMLDialog::saveSettingsInMapCheckBoxPressed(bool b) +{ + saveSettingsInMap = b; + settingsChanged = true; +} + +void ExportHTMLDialog::warningsCheckBoxPressed(bool b) +{ + showWarnings = b; + settingsChanged = true; +} + +void ExportHTMLDialog::outputCheckBoxPressed(bool b) +{ + showOutput = b; + settingsChanged = true; +} + +void ExportHTMLDialog::cssSrcChanged() +{ + css_src = ui.lineEditCssSrc->text(); + settingsChanged = true; +} + +void ExportHTMLDialog::cssDstChanged() +{ + css_dst = ui.lineEditCssDst->text(); + settingsChanged = true; +} + +QString ExportHTMLDialog::getCssSrc() +{ + if (css_copy) + return css_src; + else + return QString(); +} + +QString ExportHTMLDialog::getCssDst() { return css_dst; } + +void ExportHTMLDialog::copyCssPressed() +{ + css_copy = ui.imageCheckBox->isChecked(); + settingsChanged = true; +} + +void ExportHTMLDialog::browseCssSrcPressed() +{ + QFileDialog fd(this); + fd.setModal(true); + fd.setNameFilter("Cascading Stylesheet (*.css)"); + fd.setDirectory(QDir::current()); + fd.show(); + + if (fd.exec() == QDialog::Accepted) { + if (!fd.selectedFiles().isEmpty()) { + css_src = fd.selectedFiles().first(); + ui.lineEditCssSrc->setText(css_src); + settingsChanged = true; + } + } +} + +void ExportHTMLDialog::browseCssDstPressed() +{ + QFileDialog fd(this); + fd.setModal(true); + fd.setNameFilter("Cascading Stylesheet (*.css)"); + fd.setDirectory(QDir::current()); + fd.show(); + + if (fd.exec() == QDialog::Accepted) { + if (!fd.selectedFiles().isEmpty()) { + css_dst = fd.selectedFiles().first(); + ui.lineEditCssDst->setText(css_dst); + settingsChanged = true; + } + } +} + +void ExportHTMLDialog::postscriptChanged() +{ + postscript = ui.lineEditPostScript->text(); + settingsChanged = true; +} + +void ExportHTMLDialog::browsePostExportButtonPressed() +{ + QFileDialog fd(this); + fd.setModal(true); + fd.setNameFilter("Scripts (*.sh *.pl *.py *.php)"); + fd.setDirectory(QDir::current()); + fd.show(); + + if (fd.exec() == QDialog::Accepted) { + if (!fd.selectedFiles().isEmpty()) { + postscript = fd.selectedFiles().first(); + ui.lineEditPostScript->setText(postscript); + settingsChanged = true; + } + } +} + +void ExportHTMLDialog::saveSettings() +{ + // Save options to settings file + // (but don't save at destructor, which + // is called for "cancel", too) + if (!saveSettingsInMap) + settings.clearLocal(filepath, "/export/html"); + else { + settings.setLocalValue( + filepath, "/export/html/exportDir", + dir.absolutePath()); // FIXME-3 exportDir only needed for dialog + settings.setLocalValue(filepath, "/export/html/saveSettingsInMap", + "yes"); + settings.setLocalValue(filepath, "/export/html/postscript", postscript); + settings.setLocalValue(filepath, "/export/html/includeMapImage", + includeMapImage); + settings.setLocalValue(filepath, "/export/html/includeImages", + includeImages); + settings.setLocalValue(filepath, "/export/html/useTOC", useTOC); + settings.setLocalValue(filepath, "/export/html/useNumbering", + useNumbering); + settings.setLocalValue(filepath, "/export/html/useTaskFlags", + useTaskFlags); + settings.setLocalValue(filepath, "/export/html/useUserFlags", + useUserFlags); + settings.setLocalValue(filepath, "/export/html/useTextColor", + useTextColor); + settings.setLocalValue(filepath, "/export/html/css_copy", css_copy); + settings.setLocalValue(filepath, "/export/html/css_src", css_src); + settings.setLocalValue(filepath, "/export/html/css_dst", css_dst); + settings.setValue("/export/html/showWarnings", showWarnings); + settings.setValue("/export/html/showOutput", showOutput); + } +} + +void ExportHTMLDialog::setFilePath(const QString &s) { filepath = s; } + +void ExportHTMLDialog::setMapName(const QString &s) { mapname = s; } + +QDir ExportHTMLDialog::getDir() { return dir; } + +bool ExportHTMLDialog::warnings() { return showWarnings; } + +bool ExportHTMLDialog::hasChanged() { return settingsChanged; } // FIXME-2 never used