Skip to content

Commit 4707716

Browse files
committed
Renamer 1.3.1 (Aug / 29 / 2009)
* Bound the primary Enter/Return key to the Search and Replace function * MinGW and Qt dependancies now statically compiled into the executable on Windows platforms
1 parent bbcd4a1 commit 4707716

File tree

5 files changed

+163
-162
lines changed

5 files changed

+163
-162
lines changed

listwidget.cpp

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -5,86 +5,86 @@
55
cListWidget::cListWidget(QWidget *parent) : QTableWidget(parent)
66
{
77
#ifdef Q_OS_WIN32
8-
rxPath = new QRegExp(tr("^/(.*/)([^/]+)$"));
8+
rxPath = new QRegExp(tr("^/(.*/)([^/]+)$"));
99
#else
10-
rxPath = new QRegExp(tr("^(.*/)([^/]+)$"));
10+
rxPath = new QRegExp(tr("^(.*/)([^/]+)$"));
1111
#endif
1212

13-
QStringList labels;
14-
labels << tr("Filename") << tr("Path");
13+
QStringList labels;
14+
labels << tr("Filename") << tr("Path");
1515

16-
setAcceptDrops(true);
17-
setAlternatingRowColors(true);
18-
setColumnCount(2);
19-
setEditTriggers(QAbstractItemView::NoEditTriggers);
20-
setHorizontalHeaderLabels(labels);
21-
setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
22-
setSelectionBehavior(QAbstractItemView::SelectRows);
23-
setShowGrid(false);
24-
setTabKeyNavigation(false);
25-
setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
16+
setAcceptDrops(true);
17+
setAlternatingRowColors(true);
18+
setColumnCount(2);
19+
setEditTriggers(QAbstractItemView::NoEditTriggers);
20+
setHorizontalHeaderLabels(labels);
21+
setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
22+
setSelectionBehavior(QAbstractItemView::SelectRows);
23+
setShowGrid(false);
24+
setTabKeyNavigation(false);
25+
setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
2626

27-
horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
28-
horizontalHeader()->setHighlightSections(false);
29-
horizontalHeader()->setStretchLastSection(true);
30-
resizeColumnsToContents();
31-
verticalHeader()->hide();
27+
horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
28+
horizontalHeader()->setHighlightSections(false);
29+
horizontalHeader()->setStretchLastSection(true);
30+
resizeColumnsToContents();
31+
verticalHeader()->hide();
3232
}
3333

3434
void cListWidget::removeAll()
3535
{
36-
setRowCount(0);
37-
resizeColumnsToContents();
38-
resizeRowsToContents();
39-
horizontalHeader()->setStretchLastSection(true);
36+
setRowCount(0);
37+
resizeColumnsToContents();
38+
resizeRowsToContents();
39+
horizontalHeader()->setStretchLastSection(true);
4040
}
4141

4242
void cListWidget::removeSelected()
4343
{
44-
int i, size = rowCount();
45-
for (i = 0; i < size; ++i) {
46-
if (item(i, 0)->isSelected()) {
47-
removeRow(i);
48-
--i;
49-
--size;
50-
} // if
51-
} // for
44+
int i, size = rowCount();
45+
for (i = 0; i < size; ++i) {
46+
if (item(i, 0)->isSelected()) {
47+
removeRow(i);
48+
--i;
49+
--size;
50+
} // if
51+
} // for
5252
}
5353

5454
void cListWidget::dragEnterEvent(QDragEnterEvent *event)
5555
{
56-
event->acceptProposedAction();
56+
event->acceptProposedAction();
5757
}
5858

5959
void cListWidget::dragMoveEvent(QDragMoveEvent *event)
6060
{
61-
event->acceptProposedAction();
61+
event->acceptProposedAction();
6262
}
6363

6464
void cListWidget::dragLeaveEvent(QDragLeaveEvent *event)
6565
{
66-
event->accept();
66+
event->accept();
6767
}
6868

6969
void cListWidget::dropEvent(QDropEvent *event)
7070
{
71-
const QMimeData *mimeData = event->mimeData();
71+
const QMimeData *mimeData = event->mimeData();
7272

73-
if (mimeData->hasUrls()) {
74-
QList<QUrl> urlList = mimeData->urls();
75-
int row;
76-
for (int i = 0; i < urlList.size(); ++i) {
77-
if (rxPath->indexIn(urlList.at(i).path()) < 0)
78-
continue;
79-
row = rowCount();
80-
insertRow(row);
81-
setItem(row, 0, new QTableWidgetItem(rxPath->cap(2)));
82-
setItem(row, 1, new QTableWidgetItem(rxPath->cap(1)));
83-
} // for
84-
} // if
85-
resizeColumnsToContents();
86-
resizeRowsToContents();
87-
horizontalHeader()->setStretchLastSection(true);
73+
if (mimeData->hasUrls()) {
74+
QList<QUrl> urlList = mimeData->urls();
75+
int row;
76+
for (int i = 0; i < urlList.size(); ++i) {
77+
if (rxPath->indexIn(urlList.at(i).path()) < 0)
78+
continue;
79+
row = rowCount();
80+
insertRow(row);
81+
setItem(row, 0, new QTableWidgetItem(rxPath->cap(2)));
82+
setItem(row, 1, new QTableWidgetItem(rxPath->cap(1)));
83+
} // for
84+
} // if
85+
resizeColumnsToContents();
86+
resizeRowsToContents();
87+
horizontalHeader()->setStretchLastSection(true);
8888

89-
event->acceptProposedAction();
89+
event->acceptProposedAction();
9090
}

listwidget.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,23 @@ class QMimeData;
77

88
class cListWidget : public QTableWidget
99
{
10-
Q_OBJECT
10+
Q_OBJECT
1111

1212
public:
13-
cListWidget(QWidget *parent = 0);
13+
cListWidget(QWidget *parent = 0);
1414

1515
public slots:
16-
void removeAll();
17-
void removeSelected();
16+
void removeAll();
17+
void removeSelected();
1818

1919
protected:
20-
void dragEnterEvent(QDragEnterEvent *event);
21-
void dragMoveEvent(QDragMoveEvent *event);
22-
void dragLeaveEvent(QDragLeaveEvent *event);
23-
void dropEvent(QDropEvent *event);
20+
void dragEnterEvent(QDragEnterEvent *event);
21+
void dragMoveEvent(QDragMoveEvent *event);
22+
void dragLeaveEvent(QDragLeaveEvent *event);
23+
void dropEvent(QDropEvent *event);
2424

25-
private:
26-
QRegExp *rxPath;
25+
private:
26+
QRegExp *rxPath;
2727
};
2828

2929
#endif // LISTWIDGET_H

main.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
int main(int argc, char *argv[])
66
{
7-
QApplication app(argc, argv);
8-
cRenamerWindow window;
9-
window.show();
10-
return app.exec();
7+
QApplication app(argc, argv);
8+
cRenamerWindow window;
9+
window.show();
10+
return app.exec();
1111
}

renamerwindow.cpp

Lines changed: 83 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -4,98 +4,99 @@
44

55
cRenamerWindow::cRenamerWindow()
66
{
7-
lstFiles = new cListWidget;
8-
ckbRegex = new QCheckBox(tr("Use Regex"));
9-
ckbRegex->setChecked(true);
10-
layMain = new QGridLayout;
11-
layBtns = new QHBoxLayout;
12-
lblReplace = new QLabel(tr("Replace:"));
13-
lblSearch = new QLabel(tr("Search:"));
14-
lblStatus = new QLabel(tr("Drag and drop files/folders into the area above"
15-
" to add them to your selection."));
16-
lblStatus->setWordWrap(true);
17-
lblStatus->setAlignment(Qt::AlignHCenter);
18-
txtReplace = new QLineEdit;
19-
txtReplace->setAcceptDrops(false);
20-
txtSearch = new QLineEdit;
21-
txtSearch->setAcceptDrops(false);
22-
btnClear = new QPushButton(tr("Clear List"));
23-
btnReplace = new QPushButton(tr("Search and Replace"));
7+
lstFiles = new cListWidget;
8+
ckbRegex = new QCheckBox(tr("Use Regex"));
9+
ckbRegex->setChecked(true);
10+
layMain = new QGridLayout;
11+
layBtns = new QHBoxLayout;
12+
lblReplace = new QLabel(tr("Replace:"));
13+
lblSearch = new QLabel(tr("Search:"));
14+
lblStatus = new QLabel(tr("Drag and drop files/folders into the area above"
15+
" to add them to your selection."));
16+
lblStatus->setWordWrap(true);
17+
lblStatus->setAlignment(Qt::AlignHCenter);
18+
txtReplace = new QLineEdit;
19+
txtReplace->setAcceptDrops(false);
20+
txtSearch = new QLineEdit;
21+
txtSearch->setAcceptDrops(false);
22+
btnClear = new QPushButton(tr("Clear List"));
23+
btnReplace = new QPushButton(tr("Search and Replace"));
2424

25-
connect(btnClear, SIGNAL(pressed()), lstFiles, SLOT(removeAll()));
26-
connect(btnReplace, SIGNAL(pressed()), this, SLOT(replace()));
25+
connect(btnClear, SIGNAL(pressed()), lstFiles, SLOT(removeAll()));
26+
connect(btnReplace, SIGNAL(pressed()), this, SLOT(replace()));
2727

28-
layBtns->addWidget(ckbRegex);
29-
layBtns->addStretch();
30-
layBtns->addWidget(btnClear);
31-
layBtns->addWidget(btnReplace);
28+
layBtns->addWidget(ckbRegex);
29+
layBtns->addStretch();
30+
layBtns->addWidget(btnClear);
31+
layBtns->addWidget(btnReplace);
3232

33-
layMain->addWidget(lstFiles, 0, 0, 1, 2);
34-
layMain->addWidget(lblStatus, 1, 0, 1, 2);
35-
layMain->addWidget(lblSearch);
36-
layMain->addWidget(txtSearch);
37-
layMain->addWidget(lblReplace);
38-
layMain->addWidget(txtReplace);
39-
layMain->addLayout(layBtns, 4, 0, 1, 2);
33+
layMain->addWidget(lstFiles, 0, 0, 1, 2);
34+
layMain->addWidget(lblStatus, 1, 0, 1, 2);
35+
layMain->addWidget(lblSearch);
36+
layMain->addWidget(txtSearch);
37+
layMain->addWidget(lblReplace);
38+
layMain->addWidget(txtReplace);
39+
layMain->addLayout(layBtns, 4, 0, 1, 2);
4040

41-
setLayout(layMain);
42-
setWindowTitle(tr("Multi-File Renamer - v1.3"));
43-
this->resize(600, 420);
41+
setLayout(layMain);
42+
setWindowTitle(tr("Multi-File Renamer - v1.3.1"));
43+
this->resize(600, 420);
4444
}
4545

4646
void cRenamerWindow::replace()
4747
{
48-
QRegExp rxReplace(txtSearch->text(), Qt::CaseSensitive, QRegExp::RegExp);
49-
if (!ckbRegex->checkState())
50-
rxReplace.setPatternSyntax(QRegExp::FixedString);
51-
else if (!rxReplace.isValid()) {
52-
lblStatus->setText(tr("There was an error in your regular expression"
53-
" syntax. Please review it, and try again."));
54-
return;
55-
} // if / else/if
56-
QDir dir(tr("/"));
57-
QString path, name, name2;
58-
int i, size = lstFiles->rowCount(), errors = 0;
59-
for (i = 0; i < size; ++i) {
60-
name = name2 = lstFiles->item(i, 0)->text();
61-
if (rxReplace.indexIn(name) < 0)
62-
continue;
63-
path = lstFiles->item(i, 1)->text();
64-
name2.replace(rxReplace, txtReplace->text());
65-
if (name == name2)
66-
continue;
67-
dir.setPath(path);
68-
if (dir.rename(path + name, path + name2))
69-
lstFiles->item(i, 0)->setText(name2); // also check if flagged for errors?
70-
else {
71-
++errors;
72-
// set error color/status
73-
} // if / else
74-
} // for
75-
if (errors > 0)
76-
lblStatus->setText(tr("There were unspecified errors durring the rename"
77-
" process."));
78-
else
79-
lblStatus->setText(tr("Rename operation completed successfully."));
80-
lstFiles->resizeColumnsToContents();
81-
lstFiles->resizeRowsToContents();
82-
lstFiles->horizontalHeader()->setStretchLastSection(true);
48+
QRegExp rxReplace(txtSearch->text(), Qt::CaseSensitive, QRegExp::RegExp);
49+
if (!ckbRegex->checkState())
50+
rxReplace.setPatternSyntax(QRegExp::FixedString);
51+
else if (!rxReplace.isValid()) {
52+
lblStatus->setText(tr("There was an error in your regular expression"
53+
" syntax. Please review it, and try again."));
54+
return;
55+
} // if / else/if
56+
QDir dir(tr("/"));
57+
QString path, name, name2;
58+
int i, size = lstFiles->rowCount(), errors = 0;
59+
for (i = 0; i < size; ++i) {
60+
name = name2 = lstFiles->item(i, 0)->text();
61+
if (rxReplace.indexIn(name) < 0)
62+
continue;
63+
path = lstFiles->item(i, 1)->text();
64+
name2.replace(rxReplace, txtReplace->text());
65+
if (name == name2)
66+
continue;
67+
dir.setPath(path);
68+
if (dir.rename(path + name, path + name2))
69+
lstFiles->item(i, 0)->setText(name2); // also check if flagged for errors?
70+
else {
71+
++errors;
72+
// set error color/status
73+
} // if / else
74+
} // for
75+
if (errors > 0)
76+
lblStatus->setText(tr("There were unspecified errors durring the rename"
77+
" process."));
78+
else
79+
lblStatus->setText(tr("Rename operation completed successfully."));
80+
lstFiles->resizeColumnsToContents();
81+
lstFiles->resizeRowsToContents();
82+
lstFiles->horizontalHeader()->setStretchLastSection(true);
8383
}
8484

8585
void cRenamerWindow::keyPressEvent(QKeyEvent *event)
8686
{
87-
switch (event->key()) {
88-
case Qt::Key_Enter:
89-
replace();
90-
break;
91-
case Qt::Key_Delete:
92-
lstFiles->removeSelected();
93-
break;
94-
case Qt::Key_Escape:
95-
close();
96-
break;
97-
default:
98-
return;
99-
} // switch
100-
event->accept();
87+
switch (event->key()) {
88+
case Qt::Key_Enter: // enter key on number pad
89+
case Qt::Key_Return: // main enter/return key
90+
replace();
91+
break;
92+
case Qt::Key_Delete:
93+
lstFiles->removeSelected();
94+
break;
95+
case Qt::Key_Escape:
96+
close();
97+
break;
98+
default:
99+
return;
100+
} // switch
101+
event->accept();
101102
}

0 commit comments

Comments
 (0)