1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7
8 #include "smreplacedia.h"
9
10 #include <QLabel>
11 #include <QComboBox>
12
13
SMRowWidget(const QString & toBeDeleted,const QStringList & replaceOptions,QWidget * parent)14 SMRowWidget::SMRowWidget(const QString &toBeDeleted, const QStringList& replaceOptions, QWidget *parent)
15 : QWidget(parent)
16 {
17 layout = new QHBoxLayout(this);
18 layout->setContentsMargins(0, 0, 0, 0);
19 layout->setSpacing(6);
20 deleteLabel = new QLabel(toBeDeleted, this);
21 layout->addWidget(deleteLabel);
22 optionsCombo = new QComboBox(this);
23 optionsCombo->addItem( tr("No Style"));
24 optionsCombo->addItems(replaceOptions);
25 layout->addWidget(optionsCombo);
26 }
27
toBeDeleted()28 QString SMRowWidget::toBeDeleted()
29 {
30 return deleteLabel->text();
31 }
32
replaceWith()33 QString SMRowWidget::replaceWith()
34 {
35 return optionsCombo->currentIndex() == 0 ? "" : optionsCombo->currentText();
36 }
37
~SMRowWidget()38 SMRowWidget::~SMRowWidget()
39 {
40 delete deleteLabel;
41 delete optionsCombo;
42 delete layout;
43 }
44
45 /*************************************************************************/
46 /*************************************************************************/
47
SMReplaceDia(const QStringList & toBeDeleted,const QStringList & replaceOptions,QWidget * parent)48 SMReplaceDia::SMReplaceDia(const QStringList &toBeDeleted, const QStringList &replaceOptions, QWidget *parent) : QDialog(parent)
49 {
50 setupUi(this);
51
52 QStringList options;
53
54 for (int i = 0; i < replaceOptions.count(); ++i)
55 {
56 if (!toBeDeleted.contains(replaceOptions[i]))
57 options << replaceOptions[i];
58 }
59
60 layout = new QVBoxLayout(mainFrame);
61 layout->setContentsMargins(0, 0, 0, 0);
62 layout->setSpacing(6);
63 headerLayout = new QHBoxLayout();
64 headerLayout->setContentsMargins(0, 0, 0, 0);
65 deleteHeader = new QLabel("<b>" + tr("Remove") + "</b>", mainFrame);
66 optionsHeader = new QLabel("<b>" + tr("Replace with") + "</b>", mainFrame);
67 headerLayout->addWidget(deleteHeader);
68 headerLayout->addWidget(optionsHeader);
69 layout->addLayout(headerLayout);
70
71 for (int i = 0; i < toBeDeleted.count(); ++i)
72 {
73 SMRowWidget *tmp = new SMRowWidget(toBeDeleted[i], options, mainFrame);
74 layout->addWidget(tmp);
75 rowWidgets.append(tmp);
76 }
77 layout->addStretch(10);
78 }
79
items()80 QList<RemoveItem> SMReplaceDia::items()
81 {
82 QList<RemoveItem> tmp;
83 for (int i = 0; i < rowWidgets.count(); ++i)
84 {
85 QString s1 = rowWidgets.at(i)->toBeDeleted();
86 QString s2 = rowWidgets.at(i)->replaceWith();
87 tmp.append(RemoveItem(s1, s2));
88 }
89 return tmp;
90 }
91
~SMReplaceDia()92 SMReplaceDia::~SMReplaceDia()
93 {
94 while (!rowWidgets.isEmpty())
95 delete rowWidgets.takeFirst();
96 delete optionsHeader;
97 delete deleteHeader;
98 delete headerLayout;
99 delete layout;
100 }
101