File indexing completed on 2024-05-12 04:39:38

0001 /*
0002     SPDX-FileCopyrightText: 2014 Sergey Kalinichev <kalinichev.so.0@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #ifndef COMPILERSWIDGET_H
0008 #define COMPILERSWIDGET_H
0009 
0010 #include <QVector>
0011 #include <QWidget>
0012 
0013 #include <interfaces/configpage.h>
0014 
0015 #include "../compilerprovider/icompiler.h"
0016 
0017 namespace Ui
0018 {
0019 class CompilersWidget;
0020 }
0021 
0022 class CompilersModel;
0023 class QMenu;
0024 
0025 class CompilersWidget : public KDevelop::ConfigPage
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030     explicit CompilersWidget(QWidget* parent = nullptr);
0031     ~CompilersWidget() override;
0032 
0033     void setCompilers(const QVector<CompilerPointer>& compilers);
0034     QVector<CompilerPointer> compilers() const;
0035     void clear();
0036 
0037     QString name() const override;
0038     QString fullName() const override;
0039     QIcon icon() const override;
0040 
0041     KDevelop::ConfigPage::ConfigPageType configPageType() const override;
0042 
0043     void apply() override;
0044     void reset() override;
0045     void defaults() override;
0046 
0047 private Q_SLOTS:
0048     void deleteCompiler();
0049     void addCompiler(const QString& factoryName);
0050     void compilerSelected(const QModelIndex& index);
0051     void compilerEdited();
0052 
0053 Q_SIGNALS:
0054     void compilerChanged();
0055 
0056 private:
0057     void enableItems(bool enable);
0058 
0059     QScopedPointer<Ui::CompilersWidget> m_ui;
0060     CompilersModel* m_compilersModel;
0061     QMenu *m_addMenu;
0062 };
0063 
0064 #endif