diff --git a/komparepart/komparesaveoptionswidget.cpp b/komparepart/komparesaveoptionswidget.cpp index d911b05..e3defb2 100644 --- a/komparepart/komparesaveoptionswidget.cpp +++ b/komparepart/komparesaveoptionswidget.cpp @@ -1,224 +1,225 @@ /*************************************************************************** komparesaveoptionswidget.cpp ---------------------------- begin : Sun Mar 4 2001 Copyright 2001-2003 Otto Bruggeman Copyright 2001-2003 John Firebaugh Copyright 2007-2011 Kevin Kofler ****************************************************************************/ /*************************************************************************** ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ***************************************************************************/ #include "komparesaveoptionswidget.h" +#include #include #include #include #include #include #include #include KompareSaveOptionsWidget::KompareSaveOptionsWidget(const QString& source, const QString& destination, DiffSettings* settings, QWidget* parent) : KompareSaveOptionsBase(parent) , m_source(source) , m_destination(destination) , m_FormatBG(new QButtonGroup(this)) { setObjectName(QStringLiteral("save options")); m_settings = settings; m_directoryRequester->setMode( KFile::ExistingOnly | KFile::Directory | KFile::LocalOnly); QUrl sourceURL; QUrl destinationURL; sourceURL.setPath(source); destinationURL.setPath(destination); // Find a common root. QUrl root(sourceURL); while (root.isValid() && !root.isParentOf(destinationURL) && root != KIO::upUrl(root)) { root = KIO::upUrl(root); } // If we found a common root, change to that directory and // strip the common part from source and destination. if (root.isValid() && root != KIO::upUrl(root)) { m_directoryRequester->setUrl(root); } connect(m_SmallerChangesCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_LargeFilesCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_IgnoreCaseCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_ExpandTabsCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_IgnoreEmptyLinesCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_IgnoreWhiteSpaceCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_FunctionNamesCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_RecursiveCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_NewFilesCB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_ContextRB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_EdRB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_NormalRB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_RCSRB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_UnifiedRB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_SideBySideRB, &QCheckBox::toggled, this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_ContextLinesSB, static_cast(&QSpinBox::valueChanged), this, &KompareSaveOptionsWidget::updateCommandLine); connect(m_directoryRequester, &KUrlRequester::textChanged, this, &KompareSaveOptionsWidget::updateCommandLine); m_FormatBG->setExclusive(true); m_FormatBG->addButton(m_ContextRB, Kompare::Context); m_FormatBG->addButton(m_EdRB, Kompare::Ed); m_FormatBG->addButton(m_NormalRB, Kompare::Normal); m_FormatBG->addButton(m_UnifiedRB, Kompare::Unified); m_FormatBG->addButton(m_RCSRB, Kompare::RCS); m_FormatBG->addButton(m_SideBySideRB, Kompare::SideBySide); loadOptions(); } KompareSaveOptionsWidget::~KompareSaveOptionsWidget() { } QString KompareSaveOptionsWidget::directory() const { return QUrl(m_directoryRequester->url()).toLocalFile(); } void KompareSaveOptionsWidget::updateCommandLine() { QString cmdLine = QStringLiteral("diff"); QString options; switch (static_cast(m_FormatBG->checkedId())) { case Kompare::Unified : cmdLine += QLatin1String(" -U ") + QString::number(m_ContextLinesSB->value()); break; case Kompare::Context : cmdLine += QLatin1String(" -C ") + QString::number(m_ContextLinesSB->value()); break; case Kompare::RCS : options += QLatin1Char('n'); break; case Kompare::Ed : options += QLatin1Char('e'); break; case Kompare::SideBySide: options += QLatin1Char('y'); break; case Kompare::Normal : case Kompare::UnknownFormat : default: break; } if (m_SmallerChangesCB->isChecked()) { options += QLatin1Char('d'); } if (m_LargeFilesCB->isChecked()) { options += QLatin1Char('H'); } if (m_IgnoreCaseCB->isChecked()) { options += QLatin1Char('i'); } if (m_ExpandTabsCB->isChecked()) { options += QLatin1Char('t'); } if (m_IgnoreEmptyLinesCB->isChecked()) { options += QLatin1Char('B'); } if (m_IgnoreWhiteSpaceCB->isChecked()) { options += QLatin1Char('b'); } if (m_FunctionNamesCB->isChecked()) { options += QLatin1Char('p'); } // if ( ) { // cmdLine += " -w"; // } if (m_RecursiveCB->isChecked()) { options += QLatin1Char('r'); } if (m_NewFilesCB->isChecked()) { options += QLatin1Char('N'); } // if (m_AllTextCB->isChecked()) { // options += QLatin1Char('a'); // } if (options.length() > 0) { cmdLine += QStringLiteral(" -") + options; } QDir dir(directory()); cmdLine += QStringLiteral(" -- "); cmdLine += dir.relativeFilePath(m_source); cmdLine += QLatin1Char(' '); cmdLine += dir.relativeFilePath(m_destination); m_CommandLineLabel->setText(cmdLine); } void KompareSaveOptionsWidget::loadOptions() { m_SmallerChangesCB->setChecked(m_settings->m_createSmallerDiff); m_LargeFilesCB->setChecked(m_settings->m_largeFiles); m_IgnoreCaseCB->setChecked(m_settings->m_ignoreChangesInCase); m_ExpandTabsCB->setChecked(m_settings->m_convertTabsToSpaces); m_IgnoreEmptyLinesCB->setChecked(m_settings->m_ignoreEmptyLines); m_IgnoreWhiteSpaceCB->setChecked(m_settings->m_ignoreWhiteSpace); m_FunctionNamesCB->setChecked(m_settings->m_showCFunctionChange); m_RecursiveCB->setChecked(m_settings->m_recursive); m_NewFilesCB->setChecked(m_settings->m_newFiles); // m_AllTextCB->setChecked( m_settings->m_allText ); m_ContextLinesSB->setValue(m_settings->m_linesOfContext); m_FormatBG->button(m_settings->m_format)->setChecked(true); updateCommandLine(); } void KompareSaveOptionsWidget::saveOptions() { m_settings->m_createSmallerDiff = m_SmallerChangesCB->isChecked(); m_settings->m_largeFiles = m_LargeFilesCB->isChecked(); m_settings->m_ignoreChangesInCase = m_IgnoreCaseCB->isChecked(); m_settings->m_convertTabsToSpaces = m_ExpandTabsCB->isChecked(); m_settings->m_ignoreEmptyLines = m_IgnoreEmptyLinesCB->isChecked(); m_settings->m_ignoreWhiteSpace = m_IgnoreWhiteSpaceCB->isChecked(); m_settings->m_showCFunctionChange = m_FunctionNamesCB->isChecked(); m_settings->m_recursive = m_RecursiveCB->isChecked(); m_settings->m_newFiles = m_NewFilesCB->isChecked(); // m_settings->m_allText = m_AllTextCB->isChecked(); m_settings->m_linesOfContext = m_ContextLinesSB->value(); m_settings->m_format = static_cast(m_FormatBG->checkedId()); }