File indexing completed on 2024-05-12 05:43:20
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Pablo Rauzy <r .at. uzy.me> 0003 * SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef MAKEFILEACTIONS_H 0007 #define MAKEFILEACTIONS_H 0008 0009 #include <QAction> 0010 #include <QFileInfo> 0011 #include <QList> 0012 #include <QMenu> 0013 #include <QObject> 0014 #include <QPointer> 0015 #include <QProcess> 0016 #include <QString> 0017 #include <QVariantList> 0018 #include <QWidget> 0019 0020 #include <KAbstractFileItemActionPlugin> 0021 #include <KFileItemListProperties> 0022 0023 #include "targettree.h" 0024 0025 /** 0026 * File item action plugin to execute Makefile targets. 0027 * 0028 * This class adds a "Makeā¦" submenu to Makefiles' context menu which contains one action per target to launch it. 0029 */ 0030 class MakefileActions : public KAbstractFileItemActionPlugin 0031 { 0032 Q_OBJECT 0033 0034 public: 0035 MakefileActions(QObject *parent, const QVariantList &args); 0036 QList<QAction *> actions(const KFileItemListProperties &fileItemInfos, QWidget *mainWindow) override; 0037 0038 private: 0039 QStringList m_trustedFiles; 0040 QString m_file; 0041 bool m_openTerminal; 0042 QPointer<QProcess> m_proc; 0043 QString m_runningTarget; 0044 bool m_isMaking; 0045 0046 static bool isGNUMake(); 0047 QStringList listTargets_GNU(QProcess &proc, const QString &file) const; 0048 QStringList listTargets_BSD(QProcess &proc, const QString &file) const; 0049 0050 TargetTree targetTree() const; 0051 void buildMenu(QMenu *menu, const TargetTree &targets, QWidget *mainWindow); 0052 void addTarget(QMenu *menu, const TargetTree &target, const QString &title, QWidget *mainWindow); 0053 0054 public Q_SLOTS: 0055 void makeTarget(const QString &target, QWidget *mainWindow); 0056 }; 0057 0058 #endif