"Fossies" - the Fresh Open Source Software Archive

Member "ansifilter-2.18-x64/src/qt-gui/mydialog.cpp" (30 Jan 2021, 20743 Bytes) of package /windows/misc/ansifilter-2.18-x64.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "mydialog.cpp": 2.17_vs_2.18.

    1 /***************************************************************************
    2                         mydialog.h  -  description
    3                              -------------------
    4     copyright            : (C) 2007-2020 by Andre Simon
    5     email                : andre.simon1@gmx.de
    6  ***************************************************************************/
    7 
    8 /*
    9 This file is part of ANSIFilter.
   10 
   11 ANSIFilter is free software: you can redistribute it and/or modify
   12 it under the terms of the GNU General Public License as published by
   13 the Free Software Foundation, either version 3 of the License, or
   14 (at your option) any later version.
   15 
   16 ANSIFilter is distributed in the hope that it will be useful,
   17 but WITHOUT ANY WARRANTY; without even the implied warranty of
   18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
   19 GNU General Public License for more details.
   20 
   21 You should have received a copy of the GNU General Public License
   22 along with ANSIFilter.  If not, see <http://www.gnu.org/licenses/>.
   23 */
   24 
   25 #include "mydialog.h"
   26 
   27 #include <QtGlobal>
   28 
   29 
   30 #ifdef Q_OS_WIN
   31 #include <windows.h>
   32 #endif
   33 
   34 #if (QT_VERSION < QT_VERSION_CHECK(5,0,0))
   35 #include <QtWidgets/QMessageBox>
   36 #include <QtWidgets/QFileDialog>
   37 #include <QScrollBar>
   38 #else
   39 #include <QtWidgets/QMessageBox>
   40 #include <QtWidgets/QFileDialog>
   41 #include <QtWidgets/QScrollBar>
   42 #endif
   43 
   44 #include "../version.h"
   45 #include <memory>
   46 #include <QClipboard>
   47 #include <QSettings>
   48 #include <QUrl>
   49 #include <QMimeData>
   50 #include <QMimeData>
   51 #include <QFileInfo>
   52 #include <QStyleFactory>
   53 
   54 MyDialog::MyDialog(QWidget * parent, Qt::WindowFlags f):QDialog(parent, f)
   55 {
   56 
   57 #ifdef Q_OS_WIN
   58 // https://forum.qt.io/topic/101391/windows-10-dark-theme/
   59 if (QSysInfo::productVersion()=="10") {
   60     QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize",QSettings::NativeFormat);
   61     if(settings.value("AppsUseLightTheme")==0){
   62         qApp->setStyle(QStyleFactory::create("Fusion"));
   63         QPalette darkPalette;
   64         QColor darkColor = QColor(45,45,45);
   65         QColor disabledColor = QColor(127,127,127);
   66         darkPalette.setColor(QPalette::Window, darkColor);
   67         darkPalette.setColor(QPalette::WindowText, Qt::white);
   68         darkPalette.setColor(QPalette::Base, QColor(18,18,18));
   69         darkPalette.setColor(QPalette::AlternateBase, darkColor);
   70         darkPalette.setColor(QPalette::ToolTipBase, Qt::white);
   71         darkPalette.setColor(QPalette::ToolTipText, Qt::white);
   72         darkPalette.setColor(QPalette::Text, Qt::white);
   73         darkPalette.setColor(QPalette::Disabled, QPalette::Text, disabledColor);
   74         darkPalette.setColor(QPalette::Button, darkColor);
   75         darkPalette.setColor(QPalette::ButtonText, Qt::white);
   76         darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, disabledColor);
   77         darkPalette.setColor(QPalette::BrightText, Qt::red);
   78         darkPalette.setColor(QPalette::Link, QColor(42, 130, 218));
   79 
   80         darkPalette.setColor(QPalette::Highlight, QColor(153, 153, 153));
   81         darkPalette.setColor(QPalette::HighlightedText, Qt::black);
   82         darkPalette.setColor(QPalette::Disabled, QPalette::HighlightedText, disabledColor);
   83 
   84         qApp->setPalette(darkPalette);
   85         qApp->setStyleSheet("QToolTip { color: #ffffff; background-color: #404040; border: 1px solid white; }");
   86     }
   87 }
   88 #endif
   89 
   90 
   91 
   92     dlg.setupUi(this);
   93     QSettings settings("andre-simon.de", "ansifilter-gui");
   94     settings.beginGroup("format");
   95     dlg.leTitle->setText(settings.value("title").toString());
   96     dlg.leColorMapPath->setText(settings.value("map").toString());
   97     dlg.leStyleFile->setText(settings.value("stylefile").toString());
   98     dlg.cbFragment->setChecked(settings.value("fragment").toBool());
   99     dlg.cbIgnoreSequences->setChecked(settings.value("ignoreseq").toBool());
  100     dlg.cbParseAsciiArt->setChecked(settings.value("parseart").toBool());
  101     dlg.cbOmitVersion->setChecked(settings.value("cbOmitVersion").toBool());
  102     dlg.comboAnsiFormat->setCurrentIndex(settings.value("ansiformat").toInt());
  103     dlg.comboEncoding->setCurrentIndex(settings.value("encoding").toInt());
  104     dlg.comboFont->setCurrentIndex(settings.value("font").toInt());
  105     dlg.comboFormat->setCurrentIndex(settings.value("format").toInt());
  106     dlg.spinBoxWrap->setValue(settings.value("linewrap").toInt());
  107     dlg.sbWidth->setValue(settings.value("width").toInt());
  108     dlg.sbHeight->setValue(settings.value("height").toInt());
  109     dlg.cbIgnClearSeq->setChecked(settings.value("ignoreclearseq").toBool());
  110     dlg.cbIgnCSISeq->setChecked(settings.value("ignorecsiseq").toBool());
  111 
  112     dlg.cbDeriveStyles->setChecked(settings.value("derivestyles").toBool());
  113     dlg.leSvgWidth->setText(settings.value("svgwidth").toString());
  114     dlg.leSvgHeight->setText(settings.value("svgheight").toString());
  115 
  116     settings.endGroup();
  117     settings.beginGroup("paths");
  118     //inputFileName = settings.value("infile").toString();
  119     outputFileName = settings.value("outfile").toString();
  120     settings.endGroup();
  121     settings.beginGroup("window");
  122     resize(settings.value("size", QSize(400, 400)).toSize());
  123     move(settings.value("pos", QPoint(200, 200)).toPoint());
  124     settings.endGroup();
  125 
  126     this->setAcceptDrops(true);
  127     QObject::connect(&fileWatcher, SIGNAL(fileChanged(const QString &)), this, SLOT(onFileChanged(const QString &)));
  128     QObject::connect(dlg.comboFormat, SIGNAL(currentIndexChanged(int)), this, SLOT(plausibility()));
  129 
  130     if (!inputFileName.isEmpty()) {
  131         showFile();
  132         dlg.cbWatchFile->setEnabled(true);
  133     }
  134 
  135 //avoid ugly buttons in MacOS
  136 #ifndef Q_OS_OSX
  137     dlg.pbSelectMapFile->setMaximumWidth(30);
  138 #endif
  139 
  140     plausibility();
  141 }
  142 
  143 void MyDialog::closeEvent(QCloseEvent *event)
  144 {
  145     QSettings settings("andre-simon.de", "ansifilter-gui");
  146     settings.beginGroup("format");
  147     settings.setValue("title", dlg.leTitle->text());
  148     settings.setValue("map", dlg.leColorMapPath->text());
  149     settings.setValue("stylefile", dlg.leStyleFile->text());
  150     settings.setValue("fragment", dlg.cbFragment->isChecked());
  151     settings.setValue("ignoreseq", dlg.cbIgnoreSequences->isChecked());
  152     settings.setValue("ignoreclearseq", dlg.cbIgnClearSeq->isChecked());
  153     settings.setValue("ignorecsiseq", dlg.cbIgnCSISeq->isChecked());
  154 
  155     settings.setValue("parseart", dlg.cbParseAsciiArt->isChecked());
  156     settings.setValue("cbOmitVersion", dlg.cbOmitVersion->isChecked());
  157     settings.setValue("derivestyles", dlg.cbDeriveStyles->isChecked());
  158 
  159     settings.setValue("ansiformat", dlg.comboAnsiFormat->currentIndex());
  160     settings.setValue("encoding", dlg.comboEncoding->currentIndex());
  161     settings.setValue("format", dlg.comboFormat->currentIndex());
  162     settings.setValue("font", dlg.comboFont->currentIndex());
  163     settings.setValue("linewrap", dlg.spinBoxWrap->value());
  164     settings.setValue("width", dlg.sbWidth->value());
  165     settings.setValue("height", dlg.sbHeight->value());
  166     settings.setValue("svgheight", dlg.leSvgHeight->text());
  167     settings.setValue("svgwidth", dlg.leSvgWidth->text());
  168 
  169     settings.endGroup();
  170     settings.beginGroup("paths");
  171     settings.setValue("infile", inputFileName);
  172     settings.setValue("outfile", outputFileName);
  173     settings.endGroup();
  174     settings.beginGroup("window");
  175     settings.setValue("size", size());
  176     settings.setValue("pos", pos());
  177     settings.endGroup();
  178 }
  179 
  180 void MyDialog::dragEnterEvent(QDragEnterEvent *event)
  181 {
  182     if ( event->mimeData()->hasFormat("text/uri-list")
  183             && event->mimeData()->urls().count()==1
  184        ) {
  185         event->acceptProposedAction();
  186         dlg.lblDrop->setEnabled(true);
  187     }
  188 }
  189 
  190 void MyDialog::dragLeaveEvent(QDragLeaveEvent* event)
  191 {
  192     dlg.lblDrop->setEnabled(false);
  193 }
  194 
  195 void MyDialog::dropEvent(QDropEvent* event)
  196 {
  197     dlg.lblDrop->setEnabled(false);
  198 
  199     QList<QUrl> urls = event->mimeData()->urls();
  200     if (urls.isEmpty())
  201         return;
  202     openFile(urls.first().toLocalFile());
  203 }
  204 
  205 void MyDialog::openFile(const QString & path){
  206     if (!path.isEmpty()) {
  207         inputFileName=path;
  208 
  209         if (!dlg.cbParseAsciiArt->isChecked()){
  210             dlg.cbWatchFile->setEnabled(true);
  211             dlg.cbWatchFile->setChecked(false);
  212         }
  213         showFile();
  214     }
  215 }
  216 
  217 void MyDialog::onFileChanged(const QString & path)
  218 {
  219     inputFileName  = path;
  220     showFile();
  221     QScrollBar *sb = dlg.textEdit->verticalScrollBar();
  222     sb->setValue(sb->maximum());
  223 }
  224 
  225 void MyDialog::plausibility()
  226 {
  227     int selIdx = dlg.comboFormat->currentIndex();
  228     dlg.cbIgnoreSequences->setEnabled(selIdx>0 && ! ((selIdx==1|| selIdx==2) && dlg.cbParseAsciiArt->isChecked() ));
  229     dlg.cbFragment->setEnabled(selIdx==1 || selIdx==3 || selIdx==4|| selIdx==6);
  230     dlg.cbParseAsciiArt->setEnabled(selIdx==1 || selIdx==2);
  231 
  232     dlg.lblEncoding->setEnabled(selIdx==1|| selIdx==2 || selIdx==3);
  233     dlg.comboEncoding->setEnabled(selIdx==1 || selIdx==2 ||selIdx==3);
  234     dlg.leTitle->setEnabled(selIdx==1||selIdx==3||selIdx==4|| selIdx==7);
  235     dlg.lblTitle->setEnabled(selIdx==1||selIdx==3||selIdx==4|| selIdx==7);
  236     dlg.cbDeriveStyles->setEnabled(selIdx==1|| selIdx==7);
  237 
  238     dlg.comboFont->setEnabled(selIdx==1||selIdx==2||selIdx==6|| selIdx==7);
  239     dlg.cbOmitVersion->setEnabled(selIdx==1|| selIdx==3 || selIdx==4|| selIdx==7);
  240     dlg.leStyleFile->setEnabled(selIdx==1|| selIdx==3 || selIdx==4|| selIdx==7);
  241     dlg.lblStyleFile->setEnabled(selIdx==1|| selIdx==3 || selIdx==4|| selIdx==7);
  242 
  243     dlg.comboAnsiFormat->setEnabled(dlg.cbParseAsciiArt->isEnabled() && dlg.cbParseAsciiArt->isChecked());
  244     dlg.artSizeFrame->setEnabled(dlg.cbParseAsciiArt->isEnabled() && dlg.cbParseAsciiArt->isChecked());
  245     dlg.lblHeight->setEnabled(dlg.gbAsciiArt->isEnabled());
  246     dlg.sbHeight->setEnabled(dlg.gbAsciiArt->isEnabled());
  247     dlg.lblWidth->setEnabled(dlg.gbAsciiArt->isEnabled());
  248     dlg.sbWidth->setEnabled(dlg.gbAsciiArt->isEnabled());
  249     dlg.cbIgnClearSeq->setEnabled(!dlg.cbParseAsciiArt->isChecked());
  250     dlg.cbIgnCSISeq->setEnabled(!dlg.cbParseAsciiArt->isChecked());
  251 
  252     dlg.cbWatchFile->setEnabled(!dlg.cbParseAsciiArt->isChecked());
  253 
  254     dlg.leSvgHeight->setEnabled(selIdx==7);
  255     dlg.leSvgWidth->setEnabled(selIdx==7);
  256     dlg.lblSvgDim->setEnabled(selIdx==7);
  257 }
  258 
  259 ansifilter::OutputType MyDialog::getOutputType()
  260 {
  261     switch (dlg.comboFormat->currentIndex()) {
  262 
  263     case 1:
  264         return ansifilter::HTML;
  265     case 2:
  266         return ansifilter::RTF;
  267     case 3:
  268         return ansifilter::LATEX;
  269     case 4:
  270         return ansifilter::TEX;
  271     case 5:
  272         return ansifilter::BBCODE;
  273     case 6:
  274         return ansifilter::PANGO;
  275     case 7:
  276         return ansifilter::SVG;
  277     }
  278     return ansifilter::TEXT;
  279 }
  280 
  281 QString MyDialog::getOutFileSuffix()
  282 {
  283     switch (dlg.comboFormat->currentIndex()) {
  284     case 1:
  285         return ".html";
  286     case 2:
  287         return ".rtf";
  288     case 3:
  289         return ".latex";
  290     case 4:
  291         return ".tex";
  292     case 5:
  293         return ".bbcode";
  294     case 6:
  295         return ".pango";
  296     case 7:
  297         return ".svg";
  298     }
  299     return ".txt";
  300 }
  301 
  302 void MyDialog::on_pbSaveAs_clicked()
  303 {
  304     if (inputFileName.isEmpty()) {
  305         QMessageBox::information(this, "Note", "Please select an input file.");
  306         return;
  307     }
  308 
  309     QFileInfo check_file(dlg.leColorMapPath->text());
  310     if (dlg.leColorMapPath->text().length() && (!check_file.exists() || !check_file.isFile())) {
  311         QMessageBox::information(this, "Note", "Please select a color map file.");
  312         dlg.leColorMapPath->setFocus();
  313         return;
  314     }
  315 
  316     QString outFileSuffix = getOutFileSuffix();
  317 
  318     QString outFileName =QFileDialog::getSaveFileName(this, tr("Save File"), outputFileName,
  319                          outFileSuffix.mid(1).toUpper() + " (*" + outFileSuffix+")" );
  320 
  321     QString title(QFileInfo(outFileName).fileName());
  322 
  323     unique_ptr<ansifilter::CodeGenerator> generator(ansifilter::CodeGenerator::getInstance(getOutputType()));
  324     generator->setTitle( (dlg.leTitle->text().isEmpty()? title : dlg.leTitle->text()).toStdString());
  325     generator->setEncoding(dlg.comboEncoding->currentText().toStdString());
  326     generator->setFragmentCode(dlg.cbFragment->isChecked());
  327     generator->setPlainOutput(dlg.cbIgnoreSequences->isChecked());
  328     generator->setOmitVersionInfo(dlg.cbOmitVersion->isChecked());
  329 
  330     generator->setIgnoreClearSeq(dlg.cbIgnClearSeq->isChecked());
  331     generator->setIgnoreCSISeq(dlg.cbIgnCSISeq->isChecked());
  332 
  333     generator->setApplyDynStyles(dlg.cbDeriveStyles->isChecked());
  334 
  335     generator->setSVGSize(dlg.leSvgWidth->text().toStdString(), dlg.leSvgHeight->text().toStdString());
  336 
  337 
  338     if (dlg.leStyleFile->text().isEmpty() && dlg.cbDeriveStyles->isChecked()&& (dlg.comboFormat->currentIndex()==1 || dlg.comboFormat->currentIndex()==7) )
  339         dlg.leStyleFile->setText("derived_styles.css");
  340 
  341     generator->setStyleSheet(dlg.leStyleFile->text().toStdString());
  342 
  343     if (dlg.cbParseAsciiArt->isChecked()){
  344         switch (dlg.comboAnsiFormat->currentIndex()){
  345             case 0:
  346                 generator->setParseCodePage437(true);
  347                 break;
  348             case 1:
  349                 generator->setParseAsciiBin(true);
  350                 break;
  351             case 2:
  352                 generator->setParseAsciiTundra(true);
  353                 break;
  354         }
  355         generator->setAsciiArtSize(dlg.sbWidth->value(), dlg.sbHeight->value());
  356     }
  357 
  358     generator->setFont(dlg.comboFont->currentFont().family().toStdString());
  359     generator->setPreformatting ( ansifilter::WRAP_SIMPLE, static_cast<unsigned int>(dlg.spinBoxWrap->value()) );
  360     generator->setFontSize("10pt"); //TODO TeX?
  361 
  362     if (!generator->setColorMap(dlg.leColorMapPath->text().toStdString())){
  363         QMessageBox::warning(this, "Color Mapping Error", "Could not read color map");
  364         return;
  365     }
  366 
  367     this->setCursor(Qt::WaitCursor);
  368 
  369     QString inputFileNameShort(inputFileName);
  370     QString outFileNameShort(outFileName);
  371 
  372 #ifdef Q_OS_WIN
  373     QFile file( outFileName );
  374     if ( file.open(QIODevice::ReadWrite) )
  375     {
  376         outFileNameShort = getWindowsShortPath(outFileName);
  377     }
  378     inputFileNameShort = getWindowsShortPath(inputFileName);
  379 #endif
  380 
  381     ansifilter::ParseError result= generator->generateFile( inputFileNameShort.toStdString (), outFileNameShort.toStdString () ) ;
  382     if (result==ansifilter::BAD_OUTPUT) {
  383         QMessageBox::warning(this, "IO Error", "Could not write output file");
  384     } else if (result==ansifilter::BAD_INPUT) {
  385         QMessageBox::warning(this, "IO Error", "Could not read input file");
  386     } else {
  387         outputFileName = outFileName;
  388 
  389         if (dlg.cbDeriveStyles->isChecked() && (dlg.comboFormat->currentIndex()==1 || dlg.comboFormat->currentIndex()==7) ) {
  390             QString styleStyleSheetPath =  QFileInfo(outFileName).absolutePath()  + QDir::separator() + "derived_styles.css";
  391             generator->printDynamicStyleFile(styleStyleSheetPath.toStdString());
  392         }
  393     }
  394     this->setCursor(Qt::ArrowCursor);
  395 
  396 }
  397 
  398 
  399 void MyDialog::on_pbClipboard_clicked()
  400 {
  401 
  402     if (inputFileName.isEmpty()) {
  403         QMessageBox::information(this, "Note", "Please select an input file.");
  404         return;
  405     }
  406 
  407     unique_ptr<ansifilter::CodeGenerator> generator(ansifilter::CodeGenerator::getInstance(ansifilter::TEXT));
  408     generator->setPreformatting ( ansifilter::WRAP_SIMPLE, static_cast<unsigned int>(dlg.spinBoxWrap->value()));
  409     generator->setIgnoreClearSeq(dlg.cbIgnClearSeq->isChecked());
  410     generator->setIgnoreCSISeq(dlg.cbIgnCSISeq->isChecked());
  411 
  412     QString inputFileNameShort(inputFileName);
  413 #ifdef Q_OS_WIN
  414     inputFileNameShort = getWindowsShortPath(inputFileName);
  415 #endif
  416     QString outString = QString(generator->generateStringFromFile( inputFileNameShort.toStdString ()).c_str() ) ;
  417 
  418     if(!outString.isEmpty()) {
  419         QClipboard *clipboard = QApplication::clipboard();
  420         clipboard->setText(outString);
  421     }
  422 }
  423 
  424 void MyDialog::on_pbSelectMapFile_clicked()
  425 {
  426   QString openFile = QFileDialog::getOpenFileName(this, tr("Open Map File"), "/home", tr("Text files (*.*)"));
  427     if (!openFile.isEmpty()) {
  428         dlg.leColorMapPath->setText(openFile);
  429         showFile();
  430     }
  431 }
  432 
  433 void MyDialog::on_pbFileOpen_clicked()
  434 {
  435     openFile (QFileDialog::getOpenFileName(this, tr("Open File"), inputFileName, tr("Text files (*.*)")));
  436 }
  437 
  438 void MyDialog::showFile()
  439 {
  440     if (inputFileName.isEmpty()) return;
  441 
  442     dlg.lblInFilePath->setText(inputFileName);
  443 
  444     unique_ptr<ansifilter::CodeGenerator> generator(ansifilter::CodeGenerator::getInstance(ansifilter::HTML));
  445 
  446     generator->setEncoding(dlg.comboEncoding->currentText().toStdString());
  447     generator->setFragmentCode(false);
  448     generator->setPlainOutput(dlg.cbIgnoreSequences->isChecked());
  449     generator->setIgnoreClearSeq(dlg.cbIgnClearSeq->isChecked());
  450     generator->setIgnoreCSISeq(dlg.cbIgnCSISeq->isChecked());
  451 
  452     if (dlg.cbParseAsciiArt->isChecked()){
  453         switch (dlg.comboAnsiFormat->currentIndex()){
  454             case 0:
  455                 generator->setParseCodePage437(true);
  456                 break;
  457             case 1:
  458                 generator->setParseAsciiBin(true);
  459                 break;
  460             case 2:
  461                 generator->setParseAsciiTundra(true);
  462                 break;
  463         }
  464         generator->setAsciiArtSize(dlg.sbWidth->value(), dlg.sbHeight->value());
  465     }
  466 
  467     generator->setFont(dlg.comboFont->currentFont().family().toStdString());
  468     generator->setPreformatting ( ansifilter::WRAP_SIMPLE, static_cast<unsigned int>(dlg.spinBoxWrap->value()) );
  469     generator->setFontSize("10pt");
  470     if (!generator->setColorMap(dlg.leColorMapPath->text().toStdString())){
  471         QMessageBox::warning(this, "Color Mapping Error", "Could not read color map");
  472         return;
  473     }
  474 
  475     this->setCursor(Qt::WaitCursor);
  476 
  477     QString inputFileNameShort(inputFileName);
  478 #ifdef Q_OS_WIN
  479     inputFileNameShort = getWindowsShortPath(inputFileName);
  480 #endif
  481     string htmlStdString=generator->generateStringFromFile(inputFileNameShort.toStdString ());
  482     QString htmlString( htmlStdString.c_str() );
  483     if (!htmlString.isEmpty()) {
  484 
  485         dlg.textEdit->setText(htmlString);
  486         this->setWindowTitle("ANSIFilter - " + inputFileName);
  487     }
  488     this->setCursor(Qt::ArrowCursor);
  489 }
  490 
  491 void MyDialog::on_pbAbout_clicked()
  492 {
  493     QMessageBox::about(this,
  494                        "ANSIFilter Information",
  495                        QString("ANSIFilter GUI %1\n"
  496                        "(c) 2007-2021 Andre Simon\n\n"
  497                        "Built with Qt version %2\n\n"
  498                        "Released under the terms of the GNU GPL license.\n\n"
  499                        "%3\n"
  500                        "See %4 for updates.").arg(QString::fromStdString(Info::getVersion())).arg(QString(qVersion())).arg(QString::fromStdString(Info::getEmail())).arg(QString::fromStdString(Info::getWebsite()))
  501                       );
  502 }
  503 
  504 void MyDialog::on_cbIgnoreSequences_stateChanged()
  505 {
  506     showFile();
  507 }
  508 
  509 void MyDialog::on_cbParseAsciiArt_clicked()
  510 {
  511     plausibility();
  512     showFile();
  513 }
  514 
  515 
  516 void MyDialog::on_sbWidth_valueChanged(int i)
  517 {
  518     showFile();
  519 }
  520 void MyDialog::on_sbHeight_valueChanged(int i)
  521 {
  522     showFile();
  523 }
  524 void MyDialog::on_comboAnsiFormat_currentIndexChanged(int idx)
  525 {
  526     showFile();
  527 }
  528 void MyDialog::on_comboFont_currentIndexChanged(int idx)
  529 {
  530     showFile();
  531 }
  532 void MyDialog::on_comboEncoding_currentIndexChanged(int idx)
  533 {
  534     showFile();
  535 }
  536 
  537 void MyDialog::on_cbIgnClearSeq_clicked()
  538 {
  539     showFile();
  540 }
  541 
  542 void MyDialog::on_cbIgnCSISeq_clicked()
  543 {
  544     showFile();
  545 }
  546 
  547 void MyDialog::on_cbWatchFile_stateChanged()
  548 {
  549     if (dlg.cbWatchFile->isChecked() && !inputFileName.isEmpty())
  550         fileWatcher.addPath(inputFileName);
  551     else
  552         fileWatcher.removePath(inputFileName);
  553 }
  554 
  555 QString MyDialog::getWindowsShortPath(const QString & path){
  556     QString shortPath(path);
  557 #ifdef Q_OS_WIN
  558         int length = GetShortPathName( (const wchar_t*)path.utf16(),0,0);
  559         wchar_t* buffer = new wchar_t[length];
  560 
  561         length = GetShortPathName( (const wchar_t*)path.utf16(), buffer, length);
  562         shortPath = QString::fromUtf16((const char16_t*)buffer, length);
  563         delete[] buffer;
  564 #endif
  565     return shortPath;
  566 }