File indexing completed on 2024-04-28 05:48:39

0001 //
0002 // Description: Widget for configuring build targets
0003 //
0004 // SPDX-FileCopyrightText: 2011-2022 Kåre Särs <kare.sars@iki.fi>
0005 //
0006 //  SPDX-License-Identifier: LGPL-2.0-only
0007 
0008 #pragma once
0009 
0010 #include "TargetFilterProxyModel.h"
0011 #include "TargetHtmlDelegate.h"
0012 #include "TargetModel.h"
0013 #include <QComboBox>
0014 #include <QGridLayout>
0015 #include <QLabel>
0016 #include <QLineEdit>
0017 #include <QToolButton>
0018 #include <QTreeView>
0019 #include <QWidget>
0020 
0021 class TargetsUi : public QWidget
0022 {
0023     Q_OBJECT
0024 
0025 public:
0026     explicit TargetsUi(QObject *view, QWidget *parent = nullptr);
0027 
0028     QLabel *targetLabel = nullptr;
0029     QComboBox *targetCombo = nullptr;
0030     QLineEdit *targetFilterEdit = nullptr;
0031     QToolButton *newTarget = nullptr;
0032     QToolButton *copyTarget = nullptr;
0033     QToolButton *moveTargetUp = nullptr;
0034     QToolButton *moveTargetDown = nullptr;
0035     QToolButton *deleteTarget = nullptr;
0036 
0037     QTreeView *targetsView = nullptr;
0038     TargetModel targetsModel;
0039     TargetFilterProxyModel proxyModel;
0040 
0041     QToolButton *addButton = nullptr;
0042     QToolButton *buildButton = nullptr;
0043     QToolButton *runButton = nullptr;
0044 
0045     void updateTargetsButtonStates();
0046 
0047 public Q_SLOTS:
0048     void targetActivated(const QModelIndex &index);
0049 
0050 Q_SIGNALS:
0051     void enterPressed();
0052 
0053 protected:
0054     bool eventFilter(QObject *obj, QEvent *event) override;
0055 
0056 private:
0057 
0058     TargetHtmlDelegate *m_delegate = nullptr;
0059 };