"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/replacedialog.cpp" between
krename-4.0.9.tar.gz and krename-4.90.90.tar.gz

About: KRename is a batch file-renamer (KDE).

replacedialog.cpp  (krename-4.0.9):replacedialog.cpp  (krename-4.90.90)
skipping to change at line 20 skipping to change at line 20
* * * *
* This program is free software; you can redistribute it and/or modify * * 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 * * it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
***************************************************************************/ ***************************************************************************/
#include "replacedialog.h" #include "replacedialog.h"
#include <QFileDialog>
#include <QTextStream>
#include <QMessageBox>
#include <QDomDocument>
#include <QDomElement>
#include <KLocalizedString>
#include <KMessageBox>
#include <iostream>
#include "ui_replaceitemdlg.h" #include "ui_replaceitemdlg.h"
#include "batchrenamer.h" #include "batchrenamer.h"
ReplaceDialog::ReplaceDialog( const QList<TReplaceItem> & items, QWidget* parent ReplaceDialog::ReplaceDialog(const QList<TReplaceItem> &items, QWidget *parent)
) : QDialog(parent)
: QDialog( parent )
{ {
m_widget.setupUi( this ); m_widget.setupUi(this);
connect(m_widget.buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(m_widget.buttonBox, &QDialogButtonBox::accepted,
connect(m_widget.buttonBox, SIGNAL(rejected()), this, SLOT(reject())); this, &ReplaceDialog::accept);
connect(m_widget.buttonBox, &QDialogButtonBox::rejected,
this, &ReplaceDialog::reject);
connect(m_widget.buttonAdd, &QPushButton::clicked,
this, &ReplaceDialog::slotAdd);
connect(m_widget.buttonRemove, &QPushButton::clicked,
this, &ReplaceDialog::slotRemove);
connect(m_widget.buttonEdit, &QPushButton::clicked,
this, &ReplaceDialog::slotEdit);
connect(m_widget.buttonLoadList, &QPushButton::clicked,
this, &ReplaceDialog::slotLoadList);
connect(m_widget.buttonSaveList, &QPushButton::clicked,
this, &ReplaceDialog::slotSaveList);
connect(m_widget.buttonAdd, SIGNAL(clicked(bool)), SLOT(slotAdd( connect(m_widget.list, &QTableWidget::itemSelectionChanged,
))); this, &ReplaceDialog::slotEnableControls);
connect(m_widget.buttonRemove, SIGNAL(clicked(bool)), SLOT(slotRemo
ve()));
connect(m_widget.buttonEdit, SIGNAL(clicked(bool)), SLOT(slotEdit
()));
connect(m_widget.list, SIGNAL(itemSelectionChanged()), SLOT(slotEnab
leControls()));
this->slotEnableControls(); this->slotEnableControls();
QList<TReplaceItem>::const_iterator it = items.begin(); QList<TReplaceItem>::const_iterator it = items.begin();
while( it != items.end() ) while (it != items.end()) {
{
int row = m_widget.list->rowCount(); int row = m_widget.list->rowCount();
m_widget.list->setRowCount( row + 1 ); m_widget.list->setRowCount(row + 1);
m_widget.list->setItem( row, 0, this->createTableItem( "", true ) ); m_widget.list->setItem(row, 0, this->createTableItem("", true));
m_widget.list->item( row, 0 )->setCheckState( (*it).reg ? Qt::Checked : m_widget.list->item(row, 0)->setCheckState((*it).reg ? Qt::Checked : Qt:
Qt::Unchecked ); :Unchecked);
m_widget.list->setItem( row, 1, this->createTableItem( (*it).find ) ); m_widget.list->setItem(row, 1, this->createTableItem((*it).find));
m_widget.list->setItem( row, 2, this->createTableItem( (*it).replace ) ) m_widget.list->setItem(row, 2, this->createTableItem((*it).replace));
; m_widget.list->setItem(row, 3, this->createTableItem("", true));
m_widget.list->setItem( row, 3, this->createTableItem( "", true ) ); m_widget.list->item(row, 3)->setCheckState((*it).doProcessTokens ? Qt::C
m_widget.list->item( row, 3 )->setCheckState( (*it).doProcessTokens ? Qt hecked : Qt::Unchecked);
::Checked : Qt::Unchecked );
++it; ++it;
} }
} }
void ReplaceDialog::slotSaveList()
{
QTableWidget *table = m_widget.list;
QString fileName = QFileDialog::getSaveFileName(this, i18n("Save Find & Repl
ace Settings as:"),
QDir::currentPath(), i18n("KRename Find & Replace Setting
s XML (*.xml)"));
if (fileName.isEmpty()) {
return;
}
QFile f(fileName);
if (!f.open(QIODevice::WriteOnly | QIODevice::Text)) {
KMessageBox::sorry(this, i18n("Failed to save the Find & Replace Setting
s File."));
return;
}
QTextStream data(&f);
QDomDocument xmlDocument("KRename");
QDomElement root = xmlDocument.createElement("KRename");
root.setAttribute("version", "1.0");
QDomElement frElement = xmlDocument.createElement("FindReplaceList");
frElement.setAttribute("rows", table->rowCount());
root.appendChild(frElement);
for (int r = 0; r < table->rowCount(); ++r) {
QDomElement RegExpElement = xmlDocument.createElement("RegularExpression
");
QDomElement FindElement = xmlDocument.createElement("Find");
QDomElement ReplaceWithElement = xmlDocument.createElement("ReplaceWith"
);
QDomElement ProcessTokensElement = xmlDocument.createElement("ProcessTok
ens");
QDomElement RowElement = xmlDocument.createElement("Row");
RowElement.setAttribute("num", r);
int RegExpCheck = static_cast<int>(table->item(r, 0)->checkState());
QString RegExpCheckStr = QString::number(RegExpCheck, 10);
RegExpElement.appendChild(xmlDocument.createTextNode(RegExpCheckStr));
RowElement.appendChild(RegExpElement);
FindElement.appendChild(xmlDocument.createTextNode(table->item(r, 1)->da
ta(Qt::EditRole).toString()));
RowElement.appendChild(FindElement);
ReplaceWithElement.appendChild(xmlDocument.createTextNode(table->item(r,
2)->data(Qt::EditRole).toString()));
RowElement.appendChild(ReplaceWithElement);
int ProcessTokensCheck = static_cast<int>(table->item(r, 3)->checkState(
));
QString ProcessTokensCheckStr = QString::number(ProcessTokensCheck, 10);
ProcessTokensElement.appendChild(xmlDocument.createTextNode(ProcessToken
sCheckStr));
RowElement.appendChild(ProcessTokensElement);
frElement.appendChild(RowElement);
}
xmlDocument.appendChild(root);
data << xmlDocument.toString(-1);
f.close();
}
void ReplaceDialog::slotLoadList()
{
QTableWidget *table = m_widget.list;
QString fileName = QFileDialog::getOpenFileName(this, i18n("Save Find and R
eplace Settings File"),
QDir::currentPath(),
i18n("KRename Find and Replace Settings XML (*.xml)"));
if (fileName.isEmpty()) {
return;
}
//open file
QFile f(fileName);
if (!f.open(QFile::ReadOnly | QFile::Text)) {
KMessageBox::sorry(this,
i18n("Failed to open the Find and Replace Settings Fi
le. Cannot read file %1:\n%2.", fileName, f.errorString()));
return;
}
//load XML
QIODevice *device = &f;
QDomDocument xmlDocument;
QString errorStr;
int errorLine;
int errorColumn;
if (!xmlDocument.setContent(device, true, &errorStr, &errorLine, &errorColum
n)) {
KMessageBox::information(window(), i18n("KRename Find and Replace Settin
gs XML File"),
i18n("Parse error at line %1, column %2:\n%3",
errorLine, errorColumn, errorStr));
return;
}
QDomElement root = xmlDocument.documentElement();
// check if valid
if (root.tagName() != "KRename") {
KMessageBox::information(window(),
i18n("The file is not a KRename XML file."),
i18n("KRename Find and Replace Settings XML Fil
e"));
return;
} else if (root.hasAttribute("version") && root.attribute("version") != "1.0
") {
KMessageBox::information(window(),
i18n("The file is not an KRename XML version 1.
0 file."),
i18n("KRename Find and Replace Settings XML Fil
e"));
return;
}
//parse XML file
QDomElement frElement = root.firstChild().toElement();
int Rows;
bool ok;
Rows = frElement.attribute("rows").toInt(&ok, 10);
table->setRowCount(Rows);
int rc;
rc = 0;
QDomElement RowElement = frElement.firstChildElement("Row");
while (!RowElement.isNull()) {
QString RegExpCheckStr = RowElement.firstChildElement("RegularExpression
").text();
int RegExpCheck = RegExpCheckStr.toInt();
switch (RegExpCheck) {
case 0 :
table->setItem(rc, 0, this->createTableItem("", true));
table->item(rc, 0)->setCheckState(Qt::Unchecked);
break;
case 1 :
table->setItem(rc, 0, this->createTableItem("", true));
table->item(rc, 0)->setCheckState(Qt::PartiallyChecked);
break;
case 2 :
table->setItem(rc, 0, this->createTableItem("", true));
table->item(rc, 0)->setCheckState(Qt::Checked);
break;
default :
break;
}
table->setItem(rc, 1, this->createTableItem(RowElement.firstChildElement
("Find").text()));
table->setItem(rc, 2, this->createTableItem(RowElement.firstChildElement
("ReplaceWith").text()));
QString ProcessTokensCheckStr = RowElement.firstChildElement("ProcessTok
ens").text();
int ProcessTokensCheck = ProcessTokensCheckStr.toInt();
switch (ProcessTokensCheck) {
case 0 :
table->setItem(rc, 3, this->createTableItem("", true));
table->item(rc, 3)->setCheckState(Qt::Unchecked);
break;
case 1 :
table->setItem(rc, 3, this->createTableItem("", true));
table->item(rc, 3)->setCheckState(Qt::PartiallyChecked);
break;
case 2 :
table->setItem(rc, 3, this->createTableItem("", true));
table->item(rc, 3)->setCheckState(Qt::Checked);
break;
default :
break;
}
RowElement = RowElement.nextSiblingElement("Row");
rc = rc + 1;
}
if (rc != Rows) {
KMessageBox::information(window(),
i18n("Problem with loading KRename XML file."),
i18n("KRename Find and Replace Settings XML Fil
e"));
return;
}
}
void ReplaceDialog::slotAdd() void ReplaceDialog::slotAdd()
{ {
QDialog dlg; QDialog dlg;
Ui::ReplaceItemDlg replace; Ui::ReplaceItemDlg replace;
replace.setupUi( &dlg ); replace.setupUi(&dlg);
if( dlg.exec() == QDialog::Accepted ) if (dlg.exec() == QDialog::Accepted) {
{
int row = m_widget.list->rowCount(); int row = m_widget.list->rowCount();
m_widget.list->setRowCount( row + 1 ); m_widget.list->setRowCount(row + 1);
m_widget.list->setItem( row, 0, this->createTableItem( "", true ) ); m_widget.list->setItem(row, 0, this->createTableItem("", true));
m_widget.list->item( row, 0 )->setCheckState( replace.checkRegular->isCh m_widget.list->item(row, 0)->setCheckState(replace.checkRegular->isCheck
ecked() ? Qt::Checked : Qt::Unchecked ); ed() ? Qt::Checked : Qt::Unchecked);
m_widget.list->setItem( row, 1, this->createTableItem( replace.lineFind- m_widget.list->setItem(row, 1, this->createTableItem(replace.lineFind->t
>text() ) ); ext()));
m_widget.list->setItem( row, 2, this->createTableItem( replace.lineRepla m_widget.list->setItem(row, 2, this->createTableItem(replace.lineReplace
ce->text() ) ); ->text()));
m_widget.list->setItem( row, 3, this->createTableItem( "", true ) ); m_widget.list->setItem(row, 3, this->createTableItem("", true));
m_widget.list->item( row, 3 )->setCheckState( replace.checkProcess->isCh m_widget.list->item(row, 3)->setCheckState(replace.checkProcess->isCheck
ecked() ? Qt::Checked : Qt::Unchecked ); ed() ? Qt::Checked : Qt::Unchecked);
} }
int row = m_widget.list->rowCount();
m_widget.buttonSaveList->setEnabled(row);
} }
void ReplaceDialog::slotEdit() void ReplaceDialog::slotEdit()
{ {
QDialog dlg; QDialog dlg;
Ui::ReplaceItemDlg replace; Ui::ReplaceItemDlg replace;
replace.setupUi( &dlg ); replace.setupUi(&dlg);
int row = m_widget.list->currentRow(); int row = m_widget.list->currentRow();
replace.checkRegular->setChecked( m_widget.list->item( row, 0 )->checkState( replace.checkRegular->setChecked(m_widget.list->item(row, 0)->checkState() =
) == Qt::Checked ); = Qt::Checked);
replace.lineFind->setText( m_widget.list->item( row, 1 )->text() ); replace.lineFind->setText(m_widget.list->item(row, 1)->text());
replace.lineReplace->setText( m_widget.list->item( row, 2 )->text() ); replace.lineReplace->setText(m_widget.list->item(row, 2)->text());
replace.checkProcess->setChecked( m_widget.list->item( row, 3 )->checkState( replace.checkProcess->setChecked(m_widget.list->item(row, 3)->checkState() =
) == Qt::Checked ); = Qt::Checked);
if( dlg.exec() == QDialog::Accepted ) if (dlg.exec() == QDialog::Accepted) {
{ m_widget.list->setItem(row, 0, this->createTableItem("", true));
m_widget.list->setItem( row, 0, this->createTableItem( "", true ) ); m_widget.list->item(row, 0)->setCheckState(replace.checkRegular->isCheck
m_widget.list->item( row, 0 )->setCheckState( replace.checkRegular->isCh ed() ? Qt::Checked : Qt::Unchecked);
ecked() ? Qt::Checked : Qt::Unchecked ); m_widget.list->setItem(row, 1, this->createTableItem(replace.lineFind->t
m_widget.list->setItem( row, 1, this->createTableItem( replace.lineFind- ext()));
>text() ) ); m_widget.list->setItem(row, 2, this->createTableItem(replace.lineReplace
m_widget.list->setItem( row, 2, this->createTableItem( replace.lineRepla ->text()));
ce->text() ) ); m_widget.list->setItem(row, 3, this->createTableItem("", true));
m_widget.list->setItem( row, 3, this->createTableItem( "", true ) ); m_widget.list->item(row, 3)->setCheckState(replace.checkProcess->isCheck
m_widget.list->item( row, 3 )->setCheckState( replace.checkProcess->isCh ed() ? Qt::Checked : Qt::Unchecked);
ecked() ? Qt::Checked : Qt::Unchecked );
} }
} }
void ReplaceDialog::slotRemove() void ReplaceDialog::slotRemove()
{ {
m_widget.list->removeRow( m_widget.list->currentRow() ); m_widget.list->removeRow(m_widget.list->currentRow());
int row = m_widget.list->rowCount();
m_widget.buttonSaveList->setEnabled(row);
} }
void ReplaceDialog::slotEnableControls() void ReplaceDialog::slotEnableControls()
{ {
QList<QTableWidgetItem*> selected = m_widget.list->selectedItems(); QList<QTableWidgetItem *> selected = m_widget.list->selectedItems();
m_widget.buttonEdit->setEnabled( selected.count() ); m_widget.buttonEdit->setEnabled(selected.count());
m_widget.buttonRemove->setEnabled( selected.count() ); m_widget.buttonRemove->setEnabled(selected.count());
m_widget.buttonLoadList->setEnabled(true);
int row = m_widget.list->rowCount();
m_widget.buttonSaveList->setEnabled(row);
} }
QTableWidgetItem* ReplaceDialog::createTableItem( const QString & text, bool isC heckable ) QTableWidgetItem *ReplaceDialog::createTableItem(const QString &text, bool isChe ckable)
{ {
// TODO: Enclose text in quotes, but remove them before the item is edited b y the user directly in the table // TODO: Enclose text in quotes, but remove them before the item is edited b y the user directly in the table
// and add them again if the user presses enter. // and add them again if the user presses enter.
QString t = text; // text.isEmpty() ? QString::null : "\"" + text + "\""; QString t = text; // text.isEmpty() ? QString::null : "\"" + text + "\"";
QTableWidgetItem* item = new QTableWidgetItem( t ); QTableWidgetItem *item = new QTableWidgetItem(t);
if( isCheckable ) if (isCheckable) {
item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUse item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUser
rCheckable ); Checkable);
else } else {
item->setFlags( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEn item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEna
abled ); bled);
}
return item; return item;
} }
QList<TReplaceItem> ReplaceDialog::replaceList() const QList<TReplaceItem> ReplaceDialog::replaceList() const
{ {
QList<TReplaceItem> items; QList<TReplaceItem> items;
for( int i=0;i<m_widget.list->rowCount(); i++ ) for (int i = 0; i < m_widget.list->rowCount(); i++) {
{
TReplaceItem item; TReplaceItem item;
item.reg = m_widget.list->item( i, 0 )->checkState() == Qt::Checked; item.reg = m_widget.list->item(i, 0)->checkState() == Qt::Checked;
item.find = m_widget.list->item( i, 1 )->text(); item.find = m_widget.list->item(i, 1)->text();
item.replace = m_widget.list->item( i, 2 )->text(); item.replace = m_widget.list->item(i, 2)->text();
item.doProcessTokens = m_widget.list->item( i, 3 )->checkState() == Qt:: item.doProcessTokens = m_widget.list->item(i, 3)->checkState() == Qt::Ch
Checked; ecked;
items.append( item ); items.append(item);
} }
return items; return items;
} }
#include "replacedialog.moc"
 End of changes. 24 change blocks. 
81 lines changed or deleted 300 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)