File indexing completed on 2024-05-19 11:21:40

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2010 Alexander Rieder <alexanderrieder@gmail.com>
0004     SPDX-FileCopyrightText: 2021-2022 Alexander Semke <alexander.semke@web.de>
0005 */
0006 
0007 #ifndef _VARIABLEMANAGERWIDGET_H
0008 #define _VARIABLEMANAGERWIDGET_H
0009 
0010 #include <QWidget>
0011 
0012 namespace Cantor{
0013     class Session;
0014 }
0015 
0016 class QAbstractItemModel;
0017 class QLineEdit;
0018 class QToolButton;
0019 class QTreeView;
0020 
0021 class VariableManagerWidget : public QWidget
0022 {
0023   Q_OBJECT
0024 public:
0025     VariableManagerWidget(Cantor::Session*, QWidget*);
0026     ~VariableManagerWidget() override = default;
0027 
0028     void setSession(Cantor::Session*);
0029 
0030 public Q_SLOTS:
0031     void clearVariables();
0032 
0033     void save();
0034     void load();
0035     void newVariable();
0036 
0037 Q_SIGNALS:
0038     void runCommand(const QString&);
0039 
0040 private:
0041     Cantor::Session* m_session{nullptr};
0042     QAbstractItemModel* m_model{nullptr};
0043     QTreeView* m_treeView{nullptr};
0044     QToolButton* m_newBtn{nullptr};
0045     QToolButton* m_loadBtn{nullptr};
0046     QToolButton* m_saveBtn{nullptr};
0047     QToolButton* m_clearBtn{nullptr};
0048     QLineEdit* m_leFilter{nullptr};
0049     QToolButton* m_bFilterOptions{nullptr};
0050     QAction* m_caseSensitiveAction{nullptr};
0051     QAction* m_matchCompleteWordAction{nullptr};
0052     QAction* m_copyNameAction{nullptr};
0053     QAction* m_copyValueAction{nullptr};
0054     QAction* m_copyNameValueAction{nullptr};
0055 
0056     void contextMenuEvent(QContextMenuEvent*) override;
0057 
0058 private Q_SLOTS:
0059     void filterTextChanged(const QString&);
0060     void toggleFilterOptionsMenu(bool);
0061     void updateButtons();
0062     void copy(const QAction*) const;
0063 };
0064 
0065 #endif /* _VARIABLEMANAGERWIDGET_H */