/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include #include #include #include #include #include "ui_EnvironmentDialog.h" class EnvironmentItemModel : public QStandardItemModel { Q_OBJECT public: EnvironmentItemModel(QProcessEnvironment const& environment, QObject* parent = nullptr); QProcessEnvironment environment() const; void clear(); QModelIndex buddy(QModelIndex const& index) const override; public slots: void appendVariable(QString const& key, QString const& value); void insertVariable(int row, QString const& key, QString const& value); }; class EnvironmentSearchFilter : public QSortFilterProxyModel { Q_OBJECT public: EnvironmentSearchFilter(QObject* parent = nullptr); protected: bool filterAcceptsRow(int row, QModelIndex const& parent) const override; }; class EnvironmentDialog : public QDialog , public Ui::EnvironmentDialog { Q_OBJECT public: EnvironmentDialog(QProcessEnvironment const& environment, QWidget* parent = nullptr); QProcessEnvironment environment() const; protected slots: void addEntry(); void removeSelectedEntries(); void selectionChanged(); private: EnvironmentItemModel* m_model; EnvironmentSearchFilter* m_filter; };