buildstepspage.cpp 16.5 KB
Newer Older
hjk's avatar
hjk committed
1
/****************************************************************************
con's avatar
con committed
2
**
3
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
hjk's avatar
hjk committed
4
** Contact: http://www.qt-project.org/legal
con's avatar
con committed
5
**
hjk's avatar
hjk committed
6
** This file is part of Qt Creator.
con's avatar
con committed
7
**
hjk's avatar
hjk committed
8
9
10
11
12
13
14
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/contact-us.
15
**
16
** GNU Lesser General Public License Usage
hjk's avatar
hjk committed
17
18
19
20
21
22
23
24
25
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights.  These rights are described in the Digia Qt LGPL Exception
con's avatar
con committed
26
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
hjk's avatar
hjk committed
28
****************************************************************************/
hjk's avatar
hjk committed
29

con's avatar
con committed
30
#include "buildstepspage.h"
Tobias Hunger's avatar
Tobias Hunger committed
31

32
#include "buildconfiguration.h"
Tobias Hunger's avatar
Tobias Hunger committed
33
34
#include "buildsteplist.h"
#include "projectexplorerconstants.h"
con's avatar
con committed
35

36
#include <coreplugin/icore.h>
con's avatar
con committed
37
#include <extensionsystem/pluginmanager.h>
hjk's avatar
hjk committed
38
#include <utils/qtcassert.h>
39
#include <utils/detailswidget.h>
40
#include <utils/hostosinfo.h>
con's avatar
con committed
41

42
#include <QSignalMapper>
43

44
45
46
47
48
49
50
#include <QLabel>
#include <QPushButton>
#include <QMenu>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QToolButton>
#include <QMessageBox>
dt's avatar
dt committed
51

con's avatar
con committed
52
53
using namespace ProjectExplorer;
using namespace ProjectExplorer::Internal;
54
using namespace Utils;
con's avatar
con committed
55

Daniel Teske's avatar
Daniel Teske committed
56
ToolWidget::ToolWidget(QWidget *parent)
57
    : Utils::FadingPanel(parent), m_buildStepEnabled(true), m_targetOpacity(1.0f)
Daniel Teske's avatar
Daniel Teske committed
58
59
60
61
62
{
    QHBoxLayout *layout = new QHBoxLayout;
    layout->setMargin(4);
    layout->setSpacing(4);
    setLayout(layout);
Tobias Hunger's avatar
Tobias Hunger committed
63
    m_firstWidget = new Utils::FadingWidget(this);
Daniel Teske's avatar
Daniel Teske committed
64
65
66
67
68
    m_firstWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    QHBoxLayout *hbox = new QHBoxLayout();
    hbox->setContentsMargins(0, 0, 0, 0);
    hbox->setSpacing(0);
    m_firstWidget->setLayout(hbox);
69
    QSize buttonSize(20, HostOsInfo::isMacHost() ? 20 : 26);
Daniel Teske's avatar
Daniel Teske committed
70
71
72
73
74
75
76
77
78
79

    m_disableButton = new QToolButton(m_firstWidget);
    m_disableButton->setAutoRaise(true);
    m_disableButton->setToolTip(BuildStepListWidget::tr("Disable"));
    m_disableButton->setFixedSize(buttonSize);
    m_disableButton->setIcon(QIcon(QLatin1String(":/projectexplorer/images/disabledbuildstep.png")));
    m_disableButton->setCheckable(true);
    hbox->addWidget(m_disableButton);
    layout->addWidget(m_firstWidget);

Tobias Hunger's avatar
Tobias Hunger committed
80
    m_secondWidget = new Utils::FadingWidget(this);
Daniel Teske's avatar
Daniel Teske committed
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
    m_secondWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
    hbox = new QHBoxLayout();
    hbox->setMargin(0);
    hbox->setSpacing(4);
    m_secondWidget->setLayout(hbox);

    m_upButton = new QToolButton(m_secondWidget);
    m_upButton->setAutoRaise(true);
    m_upButton->setToolTip(BuildStepListWidget::tr("Move Up"));
    m_upButton->setFixedSize(buttonSize);
    m_upButton->setIcon(QIcon(QLatin1String(":/core/images/darkarrowup.png")));
    hbox->addWidget(m_upButton);

    m_downButton = new QToolButton(m_secondWidget);
    m_downButton->setAutoRaise(true);
    m_downButton->setToolTip(BuildStepListWidget::tr("Move Down"));
    m_downButton->setFixedSize(buttonSize);
    m_downButton->setIcon(QIcon(QLatin1String(":/core/images/darkarrowdown.png")));
    hbox->addWidget(m_downButton);

    m_removeButton  = new QToolButton(m_secondWidget);
    m_removeButton->setAutoRaise(true);
    m_removeButton->setToolTip(BuildStepListWidget::tr("Remove Item"));
    m_removeButton->setFixedSize(buttonSize);
    m_removeButton->setIcon(QIcon(QLatin1String(":/core/images/darkclose.png")));
    hbox->addWidget(m_removeButton);

    layout->addWidget(m_secondWidget);

    connect(m_disableButton, SIGNAL(clicked()), this, SIGNAL(disabledClicked()));
    connect(m_upButton, SIGNAL(clicked()), this, SIGNAL(upClicked()));
    connect(m_downButton, SIGNAL(clicked()), this, SIGNAL(downClicked()));
    connect(m_removeButton, SIGNAL(clicked()), this, SIGNAL(removeClicked()));
}

void ToolWidget::setOpacity(qreal value)
{
    m_targetOpacity = value;
    if (m_buildStepEnabled)
        m_firstWidget->setOpacity(value);
    m_secondWidget->setOpacity(value);
}

void ToolWidget::fadeTo(qreal value)
{
    m_targetOpacity = value;
    if (m_buildStepEnabled)
        m_firstWidget->fadeTo(value);
    m_secondWidget->fadeTo(value);
}

void ToolWidget::setBuildStepEnabled(bool b)
{
    m_buildStepEnabled = b;
    if (m_buildStepEnabled) {
136
137
138
139
        if (HostOsInfo::isMacHost())
            m_firstWidget->setOpacity(m_targetOpacity);
        else
            m_firstWidget->fadeTo(m_targetOpacity);
Daniel Teske's avatar
Daniel Teske committed
140
    } else {
141
142
143
144
        if (HostOsInfo::isMacHost())
            m_firstWidget->setOpacity(1.0);
        else
            m_firstWidget->fadeTo(1.0);
Daniel Teske's avatar
Daniel Teske committed
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
    }
    m_disableButton->setChecked(!b);
}

void ToolWidget::setUpEnabled(bool b)
{
    m_upButton->setEnabled(b);
}

void ToolWidget::setDownEnabled(bool b)
{
    m_downButton->setEnabled(b);
}

void ToolWidget::setRemoveEnabled(bool b)
{
    m_removeButton->setEnabled(b);
}

void ToolWidget::setUpVisible(bool b)
{
    m_upButton->setVisible(b);
}

void ToolWidget::setDownVisible(bool b)
{
    m_downButton->setVisible(b);
}

174
BuildStepsWidgetData::BuildStepsWidgetData(BuildStep *s) :
Daniel Teske's avatar
Daniel Teske committed
175
    step(s), widget(0), detailsWidget(0)
176
177
178
179
180
181
182
{
    widget = s->createConfigWidget();
    Q_ASSERT(widget);

    detailsWidget = new Utils::DetailsWidget;
    detailsWidget->setWidget(widget);

Daniel Teske's avatar
Daniel Teske committed
183
184
    toolWidget = new ToolWidget(detailsWidget);
    toolWidget->setBuildStepEnabled(step->enabled());
185
186
187
188

    detailsWidget->setToolWidget(toolWidget);
    detailsWidget->setContentsMargins(0, 0, 0, 1);
    detailsWidget->setSummaryText(widget->summaryText());
189
    detailsWidget->setAdditionalSummaryText(widget->additionalSummaryText());
190
191
192
193
194
195
196
197
}

BuildStepsWidgetData::~BuildStepsWidgetData()
{
    delete detailsWidget; // other widgets are children of that!
    // We do not own the step
}

Tobias Hunger's avatar
Tobias Hunger committed
198
199
200
BuildStepListWidget::BuildStepListWidget(QWidget *parent) :
    NamedWidget(parent),
    m_buildStepList(0),
201
    m_addButton(0)
con's avatar
con committed
202
203
204
{
}

Tobias Hunger's avatar
Tobias Hunger committed
205
BuildStepListWidget::~BuildStepListWidget()
con's avatar
con committed
206
{
207
208
    qDeleteAll(m_buildStepsData);
    m_buildStepsData.clear();
con's avatar
con committed
209
210
}

Tobias Hunger's avatar
Tobias Hunger committed
211
void BuildStepListWidget::updateSummary()
dt's avatar
dt committed
212
213
{
    BuildStepConfigWidget *widget = qobject_cast<BuildStepConfigWidget *>(sender());
214
    if (widget) {
215
216
217
        foreach (const BuildStepsWidgetData *s, m_buildStepsData) {
            if (s->widget == widget) {
                s->detailsWidget->setSummaryText(widget->summaryText());
218
219
220
221
                break;
            }
        }
    }
con's avatar
con committed
222
223
}

224
225
226
227
228
229
230
231
232
233
234
235
236
void BuildStepListWidget::updateAdditionalSummary()
{
    BuildStepConfigWidget *widget = qobject_cast<BuildStepConfigWidget *>(sender());
    if (widget) {
        foreach (const BuildStepsWidgetData *s, m_buildStepsData) {
            if (s->widget == widget) {
                s->detailsWidget->setAdditionalSummaryText(widget->additionalSummaryText());
                break;
            }
        }
    }
}

Daniel Teske's avatar
Daniel Teske committed
237
238
239
240
241
242
243
244
245
246
247
248
249
void BuildStepListWidget::updateEnabledState()
{
    BuildStep *step = qobject_cast<BuildStep *>(sender());
    if (step) {
        foreach (const BuildStepsWidgetData *s, m_buildStepsData) {
            if (s->step == step) {
                s->toolWidget->setBuildStepEnabled(step->enabled());
                break;
            }
        }
    }
}

Tobias Hunger's avatar
Tobias Hunger committed
250
void BuildStepListWidget::init(BuildStepList *bsl)
con's avatar
con committed
251
{
Tobias Hunger's avatar
Tobias Hunger committed
252
    Q_ASSERT(bsl);
253
254
    if (bsl == m_buildStepList)
        return;
255
256
257

    setupUi();

258
259
260
261
262
263
    if (m_buildStepList) {
        disconnect(m_buildStepList, SIGNAL(stepInserted(int)), this, SLOT(addBuildStep(int)));
        disconnect(m_buildStepList, SIGNAL(stepRemoved(int)), this, SLOT(removeBuildStep(int)));
        disconnect(m_buildStepList, SIGNAL(stepMoved(int,int)), this, SLOT(stepMoved(int,int)));
    }

264
265
266
267
    connect(bsl, SIGNAL(stepInserted(int)), this, SLOT(addBuildStep(int)));
    connect(bsl, SIGNAL(stepRemoved(int)), this, SLOT(removeBuildStep(int)));
    connect(bsl, SIGNAL(stepMoved(int,int)), this, SLOT(stepMoved(int,int)));

268
269
    qDeleteAll(m_buildStepsData);
    m_buildStepsData.clear();
270

Tobias Hunger's avatar
Tobias Hunger committed
271
272
273
    m_buildStepList = bsl;
    //: %1 is the name returned by BuildStepList::displayName
    setDisplayName(tr("%1 Steps").arg(m_buildStepList->displayName()));
274

275
276
    for (int i = 0; i < bsl->count(); ++i) {
        addBuildStep(i);
277
278
279
        // addBuilStep expands the config widget by default, which we don't want here
        if (m_buildStepsData.at(i)->widget->showWidget())
            m_buildStepsData.at(i)->detailsWidget->setState(Utils::DetailsWidget::Collapsed);
280
    }
281

Tobias Hunger's avatar
Tobias Hunger committed
282
283
284
285
    m_noStepsLabel->setVisible(bsl->isEmpty());
    m_noStepsLabel->setText(tr("No %1 Steps").arg(m_buildStepList->displayName()));

    m_addButton->setText(tr("Add %1 Step").arg(m_buildStepList->displayName()));
con's avatar
con committed
286

287
    updateBuildStepButtonsState();
con's avatar
con committed
288
289
}

Tobias Hunger's avatar
Tobias Hunger committed
290
void BuildStepListWidget::updateAddBuildStepMenu()
con's avatar
con committed
291
{
292
    QMap<QString, QPair<Core::Id, IBuildStepFactory *> > map;
con's avatar
con committed
293
    //Build up a list of possible steps and save map the display names to the (internal) name and factories.
294
    QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::getObjects<IBuildStepFactory>();
295
    foreach (IBuildStepFactory *factory, factories) {
296
297
298
        QList<Core::Id> ids = factory->availableCreationIds(m_buildStepList);
        foreach (Core::Id id, ids)
            map.insert(factory->displayNameForId(id), QPair<Core::Id, IBuildStepFactory *>(id, factory));
con's avatar
con committed
299
300
301
    }

    // Ask the user which one to add
dt's avatar
dt committed
302
    QMenu *menu = m_addButton->menu();
con's avatar
con committed
303
304
    m_addBuildStepHash.clear();
    menu->clear();
hjk's avatar
hjk committed
305
    if (!map.isEmpty()) {
306
        QMap<QString, QPair<Core::Id, IBuildStepFactory *> >::const_iterator it, end;
con's avatar
con committed
307
        end = map.constEnd();
hjk's avatar
hjk committed
308
        for (it = map.constBegin(); it != end; ++it) {
con's avatar
con committed
309
310
            QAction *action = menu->addAction(it.key());
            connect(action, SIGNAL(triggered()),
311
                    this, SLOT(triggerAddBuildStep()));
con's avatar
con committed
312
313
314
315
316
            m_addBuildStepHash.insert(action, it.value());
        }
    }
}

Tobias Hunger's avatar
Tobias Hunger committed
317
void BuildStepListWidget::addBuildStepWidget(int pos, BuildStep *step)
dt's avatar
dt committed
318
319
{
    // create everything
320
321
    BuildStepsWidgetData *s = new BuildStepsWidgetData(step);
    m_buildStepsData.insert(pos, s);
322

323
    m_vbox->insertWidget(pos, s->detailsWidget);
324

325
    connect(s->widget, SIGNAL(updateSummary()),
dt's avatar
dt committed
326
            this, SLOT(updateSummary()));
327
328
    connect(s->widget, SIGNAL(updateAdditionalSummary()),
            this, SLOT(updateAdditionalSummary()));
dt's avatar
dt committed
329

Daniel Teske's avatar
Daniel Teske committed
330
331
332
333
334
335
    connect(s->step, SIGNAL(enabledChanged()),
            this, SLOT(updateEnabledState()));

    connect(s->toolWidget, SIGNAL(disabledClicked()),
            m_disableMapper, SLOT(map()));
    connect(s->toolWidget, SIGNAL(upClicked()),
336
            m_upMapper, SLOT(map()));
Daniel Teske's avatar
Daniel Teske committed
337
    connect(s->toolWidget, SIGNAL(downClicked()),
338
            m_downMapper, SLOT(map()));
Daniel Teske's avatar
Daniel Teske committed
339
    connect(s->toolWidget, SIGNAL(removeClicked()),
340
            m_removeMapper, SLOT(map()));
dt's avatar
dt committed
341
}
con's avatar
con committed
342

343
void BuildStepListWidget::triggerAddBuildStep()
con's avatar
con committed
344
{
hjk's avatar
hjk committed
345
    if (QAction *action = qobject_cast<QAction *>(sender())) {
346
        QPair<Core::Id, IBuildStepFactory *> pair = m_addBuildStepHash.value(action);
Tobias Hunger's avatar
Tobias Hunger committed
347
        BuildStep *newStep = pair.second->create(m_buildStepList, pair.first);
Tobias Hunger's avatar
Tobias Hunger committed
348
        QTC_ASSERT(newStep, return);
Tobias Hunger's avatar
Tobias Hunger committed
349
350
        int pos = m_buildStepList->count();
        m_buildStepList->insertStep(pos, newStep);
con's avatar
con committed
351
    }
352
353
354
355
356
357
}

void BuildStepListWidget::addBuildStep(int pos)
{
    BuildStep *newStep = m_buildStepList->at(pos);
    addBuildStepWidget(pos, newStep);
358
    BuildStepsWidgetData *s = m_buildStepsData.at(pos);
359
360
361
362
363
    // Expand new build steps by default
    if (s->widget->showWidget())
        s->detailsWidget->setState(Utils::DetailsWidget::Expanded);
    else
        s->detailsWidget->setState(Utils::DetailsWidget::OnlySummary);
364

365
    m_noStepsLabel->setVisible(false);
366
    updateBuildStepButtonsState();
con's avatar
con committed
367
368
}

369
void BuildStepListWidget::triggerStepMoveUp(int pos)
con's avatar
con committed
370
{
Tobias Hunger's avatar
Tobias Hunger committed
371
    m_buildStepList->moveStepUp(pos);
372
}
373

374
375
void BuildStepListWidget::stepMoved(int from, int to)
{
376
    m_vbox->insertWidget(to, m_buildStepsData.at(from)->detailsWidget);
377

378
379
380
    Internal::BuildStepsWidgetData *data = m_buildStepsData.at(from);
    m_buildStepsData.removeAt(from);
    m_buildStepsData.insert(to, data);
dt's avatar
dt committed
381

382
    updateBuildStepButtonsState();
con's avatar
con committed
383
384
}

385
void BuildStepListWidget::triggerStepMoveDown(int pos)
con's avatar
con committed
386
{
387
    triggerStepMoveUp(pos + 1);
388
}
dt's avatar
dt committed
389

390
void BuildStepListWidget::triggerRemoveBuildStep(int pos)
391
{
392
    if (!m_buildStepList->removeStep(pos)) {
hjk's avatar
hjk committed
393
        QMessageBox::warning(Core::ICore::mainWindow(),
394
                             tr("Removing Step failed"),
395
                             tr("Cannot remove build step while building"),
396
397
                             QMessageBox::Ok, QMessageBox::Ok);
    }
con's avatar
con committed
398
399
}

400
401
void BuildStepListWidget::removeBuildStep(int pos)
{
402
    delete m_buildStepsData.takeAt(pos);
403
404
405
406
407
408
409

    updateBuildStepButtonsState();

    bool hasSteps = m_buildStepList->isEmpty();
    m_noStepsLabel->setVisible(hasSteps);
}

Daniel Teske's avatar
Daniel Teske committed
410
411
412
413
414
415
416
void BuildStepListWidget::triggerDisable(int pos)
{
    BuildStep *bs = m_buildStepsData.at(pos)->step;
    bs->setEnabled(!bs->enabled());
    m_buildStepsData.at(pos)->toolWidget->setBuildStepEnabled(bs->enabled());
}

Tobias Hunger's avatar
Tobias Hunger committed
417
void BuildStepListWidget::setupUi()
con's avatar
con committed
418
{
419
    if (0 != m_addButton)
con's avatar
con committed
420
        return;
dt's avatar
dt committed
421

Daniel Teske's avatar
Daniel Teske committed
422
423
424
    m_disableMapper = new QSignalMapper(this);
    connect(m_disableMapper, SIGNAL(mapped(int)),
            this, SLOT(triggerDisable(int)));
425
426
    m_upMapper = new QSignalMapper(this);
    connect(m_upMapper, SIGNAL(mapped(int)),
427
            this, SLOT(triggerStepMoveUp(int)));
428
429
    m_downMapper = new QSignalMapper(this);
    connect(m_downMapper, SIGNAL(mapped(int)),
430
            this, SLOT(triggerStepMoveDown(int)));
431
432
    m_removeMapper = new QSignalMapper(this);
    connect(m_removeMapper, SIGNAL(mapped(int)),
433
            this, SLOT(triggerRemoveBuildStep(int)));
con's avatar
con committed
434

435
436
437
    m_vbox = new QVBoxLayout(this);
    m_vbox->setContentsMargins(0, 0, 0, 0);
    m_vbox->setSpacing(0);
con's avatar
con committed
438

439
    m_noStepsLabel = new QLabel(tr("No Build Steps"), this);
440
    m_noStepsLabel->setContentsMargins(0, 0, 0, 0);
441
    m_vbox->addWidget(m_noStepsLabel);
dt's avatar
dt committed
442

443
    QHBoxLayout *hboxLayout = new QHBoxLayout();
444
    hboxLayout->setContentsMargins(0, 4, 0, 0);
445
446
447
448
449
450
    m_addButton = new QPushButton(this);
    m_addButton->setMenu(new QMenu(this));
    hboxLayout->addWidget(m_addButton);

    hboxLayout->addStretch(10);

451
452
    if (HostOsInfo::isMacHost())
        m_addButton->setAttribute(Qt::WA_MacSmallSize);
dt's avatar
dt committed
453

454
455
456
457
    m_vbox->addLayout(hboxLayout);

    connect(m_addButton->menu(), SIGNAL(aboutToShow()),
            this, SLOT(updateAddBuildStepMenu()));
con's avatar
con committed
458
459
}

Tobias Hunger's avatar
Tobias Hunger committed
460
void BuildStepListWidget::updateBuildStepButtonsState()
con's avatar
con committed
461
{
462
463
464
465
    if (m_buildStepsData.count() != m_buildStepList->count())
        return;
    for (int i = 0; i < m_buildStepsData.count(); ++i) {
        BuildStepsWidgetData *s = m_buildStepsData.at(i);
Daniel Teske's avatar
Daniel Teske committed
466
467
468
469
470
471
        m_disableMapper->setMapping(s->toolWidget, i);
        s->toolWidget->setRemoveEnabled(!m_buildStepList->at(i)->immutable());
        m_removeMapper->setMapping(s->toolWidget, i);

        s->toolWidget->setUpEnabled((i > 0)
                                    && !(m_buildStepList->at(i)->immutable()
472
                                         && m_buildStepList->at(i - 1)->immutable()));
Daniel Teske's avatar
Daniel Teske committed
473
474
475
476
477
        m_upMapper->setMapping(s->toolWidget, i);
        s->toolWidget->setDownEnabled((i + 1 < m_buildStepList->count())
                                      && !(m_buildStepList->at(i)->immutable()
                                           && m_buildStepList->at(i + 1)->immutable()));
        m_downMapper->setMapping(s->toolWidget, i);
478
479

        // Only show buttons when needed
Daniel Teske's avatar
Daniel Teske committed
480
481
        s->toolWidget->setDownVisible(m_buildStepList->count() != 1);
        s->toolWidget->setUpVisible(m_buildStepList->count() != 1);
482
    }
con's avatar
con committed
483
}
Tobias Hunger's avatar
Tobias Hunger committed
484

485
BuildStepsPage::BuildStepsPage(BuildConfiguration *bc, Core::Id id) :
486
    NamedWidget(),
Tobias Hunger's avatar
Tobias Hunger committed
487
488
489
490
491
492
493
    m_id(id),
    m_widget(new BuildStepListWidget(this))
{
    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->setMargin(0);
    layout->setSpacing(0);
    layout->addWidget(m_widget);
494
495

    m_widget->init(bc->stepList(m_id));
Tobias Hunger's avatar
Tobias Hunger committed
496

497
    if (m_id == Constants::BUILDSTEPS_BUILD)
498
        setDisplayName(tr("Build Steps"));
499
    if (m_id == Constants::BUILDSTEPS_CLEAN)
500
        setDisplayName(tr("Clean Steps"));
Tobias Hunger's avatar
Tobias Hunger committed
501
}
502
503
504

BuildStepsPage::~BuildStepsPage()
{ }