1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights. These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
32 **************************************************************************/
34 #ifndef GENERICMAKESTEP_H
35 #define GENERICMAKESTEP_H
37 #include <projectexplorer/abstractprocessstep.h>
40 class QListWidgetItem;
43 class GenericMakeStep;
47 namespace GenericProjectManager {
50 class GenericBuildConfiguration;
51 class GenericMakeStepConfigWidget;
52 class GenericMakeStepFactory;
54 class GenericMakeStep : public ProjectExplorer::AbstractProcessStep
57 friend class GenericMakeStepConfigWidget; // TODO remove again?
58 friend class GenericMakeStepFactory;
61 GenericMakeStep(ProjectExplorer::BuildStepList *parent);
62 virtual ~GenericMakeStep();
64 GenericBuildConfiguration *genericBuildConfiguration() const;
68 virtual void run(QFutureInterface<bool> &fi);
70 virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
71 virtual bool immutable() const;
72 bool buildsTarget(const QString &target) const;
73 void setBuildTarget(const QString &target, bool on);
74 QString allArguments() const;
75 QString makeCommand() const;
77 QVariantMap toMap() const;
80 GenericMakeStep(ProjectExplorer::BuildStepList *parent, GenericMakeStep *bs);
81 GenericMakeStep(ProjectExplorer::BuildStepList *parent, const QString &id);
82 virtual bool fromMap(const QVariantMap &map);
87 QStringList m_buildTargets;
88 QString m_makeArguments;
89 QString m_makeCommand;
92 class GenericMakeStepConfigWidget :public ProjectExplorer::BuildStepConfigWidget
96 GenericMakeStepConfigWidget(GenericMakeStep *makeStep);
97 virtual QString displayName() const;
99 virtual QString summaryText() const;
101 void itemChanged(QListWidgetItem*);
102 void makeLineEditTextEdited();
103 void makeArgumentsLineEditTextEdited();
104 void updateMakeOverrrideLabel();
105 void updateDetails();
107 Ui::GenericMakeStep *m_ui;
108 GenericMakeStep *m_makeStep;
109 QString m_summaryText;
112 class GenericMakeStepFactory : public ProjectExplorer::IBuildStepFactory
117 explicit GenericMakeStepFactory(QObject *parent = 0);
118 virtual ~GenericMakeStepFactory();
120 virtual bool canCreate(ProjectExplorer::BuildStepList *parent,
121 const QString &id) const;
122 virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent,
124 virtual bool canClone(ProjectExplorer::BuildStepList *parent,
125 ProjectExplorer::BuildStep *source) const;
126 virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent,
127 ProjectExplorer::BuildStep *source);
128 virtual bool canRestore(ProjectExplorer::BuildStepList *parent,
129 const QVariantMap &map) const;
130 virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent,
131 const QVariantMap &map);
133 virtual QStringList availableCreationIds(ProjectExplorer::BuildStepList *bc) const;
134 virtual QString displayNameForId(const QString &id) const;
137 } // namespace Internal
138 } // namespace GenericProjectManager
140 #endif // GENERICMAKESTEP_H