File indexing completed on 2024-04-28 04:38:41

0001 /*
0002     SPDX-FileCopyrightText: 2010 Milian Wolff <mail@milianw.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #ifndef KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTVIEW_H
0008 #define KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTVIEW_H
0009 
0010 #include <QWidget>
0011 
0012 #include "ui_externalscriptview.h"
0013 
0014 class ExternalScriptItem;
0015 class QAction;
0016 
0017 class QSortFilterProxyModel;
0018 
0019 class ExternalScriptPlugin;
0020 
0021 class ExternalScriptView
0022     : public QWidget
0023     , Ui::ExternalScriptViewBase
0024 {
0025     Q_OBJECT
0026 
0027 public:
0028     explicit ExternalScriptView(ExternalScriptPlugin* plugin, QWidget* parent = nullptr);
0029     ~ExternalScriptView() override;
0030 
0031     /// @return Currently selected script item.
0032     ExternalScriptItem* currentItem() const;
0033     /// @return Item for @p index.
0034     ExternalScriptItem* itemForIndex(const QModelIndex& index) const;
0035 
0036 private Q_SLOTS:
0037     void contextMenu (const QPoint& pos);
0038 
0039     void addScript();
0040     void removeScript();
0041     void editScript();
0042 
0043     /// disables or enables available actions based on the currently selected item
0044     void validateActions();
0045 
0046 protected:
0047     /// insert snippet on double click
0048     bool eventFilter(QObject* obj, QEvent* event) override;
0049 
0050 private:
0051     ExternalScriptPlugin* m_plugin;
0052     QSortFilterProxyModel* m_model;
0053     QAction* m_addScriptAction;
0054     QAction* m_editScriptAction;
0055     QAction* m_removeScriptAction;
0056 };
0057 
0058 #endif // KDEVPLATFORM_PLUGIN_EXTERNALSCRIPTVIEW_H