Changeset View
Changeset View
Standalone View
Standalone View
processui/scripting.h
Show All 28 Lines | |||||
29 | #include <processcore/processes.h> | 29 | #include <processcore/processes.h> | ||
30 | #include "ProcessModel.h" | 30 | #include "ProcessModel.h" | ||
31 | #include "../config-ksysguard.h" | 31 | #include "../config-ksysguard.h" | ||
32 | 32 | | |||
33 | class QAction; | 33 | class QAction; | ||
34 | class ScriptingHtmlDialog; //Defined in scripting.cpp file | 34 | class ScriptingHtmlDialog; //Defined in scripting.cpp file | ||
35 | class KSysGuardProcessList; | 35 | class KSysGuardProcessList; | ||
36 | class ProcessObject; | 36 | class ProcessObject; | ||
37 | class QWebChannel; | ||||
37 | 38 | | |||
38 | class Scripting : public QWidget { | 39 | class Scripting : public QWidget { | ||
39 | Q_OBJECT | 40 | Q_OBJECT | ||
40 | public: | 41 | public: | ||
41 | /** Create a scripting object */ | 42 | /** Create a scripting object */ | ||
42 | Scripting(KSysGuardProcessList *parent); | 43 | Scripting(KSysGuardProcessList *parent); | ||
43 | /** Run the script in the given path */ | 44 | /** Run the script in the given path */ | ||
44 | void runScript(const QString &path, const QString &name); | 45 | void runScript(const QString &path, const QString &name); | ||
45 | /** Read all the script .desktop files and create an action for each one */ | 46 | /** Read all the script .desktop files and create an action for each one */ | ||
46 | void loadContextMenu(); | 47 | void loadContextMenu(); | ||
47 | /** List of context menu actions that are created by loadContextMenu() */ | 48 | /** List of context menu actions that are created by loadContextMenu() */ | ||
48 | QList<QAction *> actions() { return mActions; } | 49 | QList<QAction *> actions() { return mActions; } | ||
49 | /** Create a ScriptingHtmlDialog, if one does not already exist, and display the given html */ | 50 | /** Create a ScriptingHtmlDialog, if one does not already exist, and display the given html */ | ||
50 | void displayHtml(const QString &html); | 51 | void displayHtml(const QString &html); | ||
51 | 52 | | |||
52 | public Q_SLOTS: | 53 | public Q_SLOTS: | ||
53 | /** Stop all scripts and delete the script engine */ | 54 | /** Stop all scripts and delete the script engine */ | ||
54 | void stopAllScripts(); | 55 | void stopAllScripts(); | ||
55 | private Q_SLOTS: | 56 | private Q_SLOTS: | ||
56 | /** Run the script associated with the QAction that called this slot */ | 57 | /** Run the script associated with the QAction that called this slot */ | ||
57 | void runScriptSlot(); | 58 | void runScriptSlot(); | ||
58 | #if HAVE_QTWEBKITWIDGETS | 59 | #if HAVE_QTWEBENGINEWIDGETS | ||
59 | void setupJavascriptObjects(); | 60 | void setupJavascriptObjects(); | ||
60 | void refreshScript(); | 61 | void refreshScript(); | ||
61 | void zoomIn(); | 62 | void zoomIn(); | ||
62 | void zoomOut(); | 63 | void zoomOut(); | ||
63 | #endif | 64 | #endif | ||
64 | private: | 65 | private: | ||
65 | /** This is created on the fly as needed, and deleted when no longer used */ | 66 | /** This is created on the fly as needed, and deleted when no longer used */ | ||
66 | ScriptingHtmlDialog *mScriptingHtmlDialog; | 67 | ScriptingHtmlDialog *mScriptingHtmlDialog; | ||
68 | /** Used to expose mProcessObject to the WebEnginePage */ | ||||
69 | QWebChannel *mWebChannel; | ||||
67 | /** The parent process list to script for */ | 70 | /** The parent process list to script for */ | ||
68 | KSysGuardProcessList * const mProcessList; | 71 | KSysGuardProcessList * const mProcessList; | ||
69 | /** List of context menu actions that are created by loadContextMenu() */ | 72 | /** List of context menu actions that are created by loadContextMenu() */ | ||
70 | QList<QAction *> mActions; | 73 | QList<QAction *> mActions; | ||
71 | QString mScriptPath; | 74 | QString mScriptPath; | ||
72 | QString mScriptName; | 75 | QString mScriptName; | ||
73 | ProcessObject *mProcessObject; | 76 | ProcessObject *mProcessObject; | ||
74 | 77 | | |||
75 | qlonglong mPid; | 78 | qlonglong mPid; | ||
76 | }; | 79 | }; | ||
77 | 80 | | |||
81 | // QWebChannel only reloads properties on demand, so we need a signal. | ||||
82 | #define P_PROPERTY(x) Q_PROPERTY(x NOTIFY anythingChanged) | ||||
78 | #define PROPERTY(Type,Name) Type Name() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->Name(); else return Type();} | 83 | #define PROPERTY(Type,Name) Type Name() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->Name(); else return Type();} | ||
79 | 84 | | |||
80 | class ProcessObject : public QObject { | 85 | class ProcessObject : public QObject { | ||
81 | Q_OBJECT | 86 | Q_OBJECT | ||
82 | public: | 87 | public: | ||
83 | Q_PROPERTY(qlonglong pid READ pid WRITE setPid) /* Add functionality to 'set' the pid to change which process to read from */ | 88 | P_PROPERTY(qlonglong pid READ pid WRITE setPid) /* Add functionality to 'set' the pid to change which process to read from */ | ||
84 | Q_PROPERTY(qlonglong ppid READ parentPid) /* Map 'ppid' to 'parentPid' to give it a nicer scripting name */ | 89 | P_PROPERTY(qlonglong ppid READ parentPid) /* Map 'ppid' to 'parentPid' to give it a nicer scripting name */ | ||
85 | Q_PROPERTY(QString name READ name) /* Defined below to return the first word of the name */ | 90 | P_PROPERTY(QString name READ name) /* Defined below to return the first word of the name */ | ||
86 | Q_PROPERTY(QString fullname READ fullname) /* Defined below to return 'name' */ | 91 | P_PROPERTY(QString fullname READ fullname) /* Defined below to return 'name' */ | ||
87 | Q_PROPERTY(qlonglong rss READ vmRSS) /* Map 'rss' to 'vmRSS' just to give it a nicer scripting name */ | 92 | P_PROPERTY(qlonglong rss READ vmRSS) /* Map 'rss' to 'vmRSS' just to give it a nicer scripting name */ | ||
88 | Q_PROPERTY(qlonglong urss READ vmURSS) /* Map 'urss' to 'vmURSS' just to give it a nicer scripting name */ | 93 | P_PROPERTY(qlonglong urss READ vmURSS) /* Map 'urss' to 'vmURSS' just to give it a nicer scripting name */ | ||
89 | Q_PROPERTY(int numThreads READ numThreads) PROPERTY(int, numThreads) | 94 | P_PROPERTY(int numThreads READ numThreads) PROPERTY(int, numThreads) | ||
90 | Q_PROPERTY(qlonglong fsgid READ fsgid) PROPERTY(qlonglong, fsgid) | 95 | P_PROPERTY(qlonglong fsgid READ fsgid) PROPERTY(qlonglong, fsgid) | ||
91 | Q_PROPERTY(qlonglong parentPid READ parentPid) PROPERTY(qlonglong, parentPid) | 96 | P_PROPERTY(qlonglong parentPid READ parentPid) PROPERTY(qlonglong, parentPid) | ||
92 | Q_PROPERTY(QString login READ login) PROPERTY(QString, login) | 97 | P_PROPERTY(QString login READ login) PROPERTY(QString, login) | ||
93 | Q_PROPERTY(qlonglong uid READ uid) PROPERTY(qlonglong, uid) | 98 | P_PROPERTY(qlonglong uid READ uid) PROPERTY(qlonglong, uid) | ||
94 | Q_PROPERTY(qlonglong euid READ euid) PROPERTY(qlonglong, euid) | 99 | P_PROPERTY(qlonglong euid READ euid) PROPERTY(qlonglong, euid) | ||
95 | Q_PROPERTY(qlonglong suid READ suid) PROPERTY(qlonglong, suid) | 100 | P_PROPERTY(qlonglong suid READ suid) PROPERTY(qlonglong, suid) | ||
96 | Q_PROPERTY(qlonglong fsuid READ fsuid) PROPERTY(qlonglong, fsuid) | 101 | P_PROPERTY(qlonglong fsuid READ fsuid) PROPERTY(qlonglong, fsuid) | ||
97 | Q_PROPERTY(qlonglong gid READ gid) PROPERTY(qlonglong, gid) | 102 | P_PROPERTY(qlonglong gid READ gid) PROPERTY(qlonglong, gid) | ||
98 | Q_PROPERTY(qlonglong egid READ egid) PROPERTY(qlonglong, egid) | 103 | P_PROPERTY(qlonglong egid READ egid) PROPERTY(qlonglong, egid) | ||
99 | Q_PROPERTY(qlonglong sgid READ sgid) PROPERTY(qlonglong, sgid) | 104 | P_PROPERTY(qlonglong sgid READ sgid) PROPERTY(qlonglong, sgid) | ||
100 | Q_PROPERTY(qlonglong tracerpid READ tracerpid) PROPERTY(qlonglong, tracerpid) | 105 | P_PROPERTY(qlonglong tracerpid READ tracerpid) PROPERTY(qlonglong, tracerpid) | ||
101 | Q_PROPERTY(QByteArray tty READ tty) PROPERTY(QByteArray, tty) | 106 | P_PROPERTY(QByteArray tty READ tty) PROPERTY(QByteArray, tty) | ||
102 | Q_PROPERTY(qlonglong userTime READ userTime) PROPERTY(qlonglong, userTime) | 107 | P_PROPERTY(qlonglong userTime READ userTime) PROPERTY(qlonglong, userTime) | ||
103 | Q_PROPERTY(qlonglong sysTime READ sysTime) PROPERTY(qlonglong, sysTime) | 108 | P_PROPERTY(qlonglong sysTime READ sysTime) PROPERTY(qlonglong, sysTime) | ||
104 | Q_PROPERTY(int userUsage READ userUsage) PROPERTY(int, userUsage) | 109 | P_PROPERTY(int userUsage READ userUsage) PROPERTY(int, userUsage) | ||
105 | Q_PROPERTY(int sysUsage READ sysUsage) PROPERTY(int, sysUsage) | 110 | P_PROPERTY(int sysUsage READ sysUsage) PROPERTY(int, sysUsage) | ||
106 | Q_PROPERTY(int totalUserUsage READ totalUserUsage) PROPERTY(int, totalUserUsage) | 111 | P_PROPERTY(int totalUserUsage READ totalUserUsage) PROPERTY(int, totalUserUsage) | ||
107 | Q_PROPERTY(int totalSysUsage READ totalSysUsage) PROPERTY(int, totalSysUsage) | 112 | P_PROPERTY(int totalSysUsage READ totalSysUsage) PROPERTY(int, totalSysUsage) | ||
108 | Q_PROPERTY(int numChildren READ numChildren) PROPERTY(int, numChildren) | 113 | P_PROPERTY(int numChildren READ numChildren) PROPERTY(int, numChildren) | ||
109 | Q_PROPERTY(int niceLevel READ niceLevel) PROPERTY(int, niceLevel) | 114 | P_PROPERTY(int niceLevel READ niceLevel) PROPERTY(int, niceLevel) | ||
110 | Q_PROPERTY(int scheduler READ scheduler) PROPERTY(int, scheduler) | 115 | P_PROPERTY(int scheduler READ scheduler) PROPERTY(int, scheduler) | ||
111 | Q_PROPERTY(int ioPriorityClass READ ioPriorityClass) PROPERTY(int, ioPriorityClass) | 116 | P_PROPERTY(int ioPriorityClass READ ioPriorityClass) PROPERTY(int, ioPriorityClass) | ||
112 | Q_PROPERTY(int ioniceLevel READ ioniceLevel) PROPERTY(int, ioniceLevel) | 117 | P_PROPERTY(int ioniceLevel READ ioniceLevel) PROPERTY(int, ioniceLevel) | ||
113 | Q_PROPERTY(qlonglong vmSize READ vmSize) PROPERTY(qlonglong, vmSize) | 118 | P_PROPERTY(qlonglong vmSize READ vmSize) PROPERTY(qlonglong, vmSize) | ||
114 | Q_PROPERTY(qlonglong vmRSS READ vmRSS) PROPERTY(qlonglong, vmRSS) | 119 | P_PROPERTY(qlonglong vmRSS READ vmRSS) PROPERTY(qlonglong, vmRSS) | ||
115 | Q_PROPERTY(qlonglong vmURSS READ vmURSS) PROPERTY(qlonglong, vmURSS) | 120 | P_PROPERTY(qlonglong vmURSS READ vmURSS) PROPERTY(qlonglong, vmURSS) | ||
116 | Q_PROPERTY(qlonglong pixmapBytes READ pixmapBytes) PROPERTY(qlonglong, pixmapBytes) | 121 | P_PROPERTY(qlonglong pixmapBytes READ pixmapBytes) PROPERTY(qlonglong, pixmapBytes) | ||
117 | Q_PROPERTY(bool hasManagedGuiWindow READ hasManagedGuiWindow) PROPERTY(bool, hasManagedGuiWindow) | 122 | P_PROPERTY(bool hasManagedGuiWindow READ hasManagedGuiWindow) PROPERTY(bool, hasManagedGuiWindow) | ||
118 | Q_PROPERTY(QString command READ command) PROPERTY(QString, command) | 123 | P_PROPERTY(QString command READ command) PROPERTY(QString, command) | ||
119 | Q_PROPERTY(qlonglong status READ status) PROPERTY(qlonglong, status) | 124 | P_PROPERTY(qlonglong status READ status) PROPERTY(qlonglong, status) | ||
120 | Q_PROPERTY(qlonglong ioCharactersRead READ ioCharactersRead) PROPERTY(qlonglong, ioCharactersRead) | 125 | P_PROPERTY(qlonglong ioCharactersRead READ ioCharactersRead) PROPERTY(qlonglong, ioCharactersRead) | ||
121 | Q_PROPERTY(qlonglong ioCharactersWritten READ ioCharactersWritten) PROPERTY(qlonglong, ioCharactersWritten) | 126 | P_PROPERTY(qlonglong ioCharactersWritten READ ioCharactersWritten) PROPERTY(qlonglong, ioCharactersWritten) | ||
122 | Q_PROPERTY(qlonglong ioReadSyscalls READ ioReadSyscalls) PROPERTY(qlonglong, ioReadSyscalls) | 127 | P_PROPERTY(qlonglong ioReadSyscalls READ ioReadSyscalls) PROPERTY(qlonglong, ioReadSyscalls) | ||
123 | Q_PROPERTY(qlonglong ioWriteSyscalls READ ioWriteSyscalls) PROPERTY(qlonglong, ioWriteSyscalls) | 128 | P_PROPERTY(qlonglong ioWriteSyscalls READ ioWriteSyscalls) PROPERTY(qlonglong, ioWriteSyscalls) | ||
124 | Q_PROPERTY(qlonglong ioCharactersActuallyRead READ ioCharactersActuallyRead) PROPERTY(qlonglong, ioCharactersActuallyRead) | 129 | P_PROPERTY(qlonglong ioCharactersActuallyRead READ ioCharactersActuallyRead) PROPERTY(qlonglong, ioCharactersActuallyRead) | ||
125 | Q_PROPERTY(qlonglong ioCharactersActuallyWritten READ ioCharactersActuallyWritten) PROPERTY(qlonglong, ioCharactersActuallyWritten) | 130 | P_PROPERTY(qlonglong ioCharactersActuallyWritten READ ioCharactersActuallyWritten) PROPERTY(qlonglong, ioCharactersActuallyWritten) | ||
126 | Q_PROPERTY(qlonglong ioCharactersReadRate READ ioCharactersReadRate) PROPERTY(qlonglong, ioCharactersReadRate) | 131 | P_PROPERTY(qlonglong ioCharactersReadRate READ ioCharactersReadRate) PROPERTY(qlonglong, ioCharactersReadRate) | ||
127 | Q_PROPERTY(qlonglong ioCharactersWrittenRate READ ioCharactersWrittenRate) PROPERTY(qlonglong, ioCharactersWrittenRate) | 132 | P_PROPERTY(qlonglong ioCharactersWrittenRate READ ioCharactersWrittenRate) PROPERTY(qlonglong, ioCharactersWrittenRate) | ||
128 | Q_PROPERTY(qlonglong ioReadSyscallsRate READ ioReadSyscallsRate) PROPERTY(qlonglong, ioReadSyscallsRate) | 133 | P_PROPERTY(qlonglong ioReadSyscallsRate READ ioReadSyscallsRate) PROPERTY(qlonglong, ioReadSyscallsRate) | ||
129 | Q_PROPERTY(qlonglong ioWriteSyscallsRate READ ioWriteSyscallsRate) PROPERTY(qlonglong, ioWriteSyscallsRate) | 134 | P_PROPERTY(qlonglong ioWriteSyscallsRate READ ioWriteSyscallsRate) PROPERTY(qlonglong, ioWriteSyscallsRate) | ||
130 | Q_PROPERTY(qlonglong ioCharactersActuallyReadRate READ ioCharactersActuallyReadRate) PROPERTY(qlonglong, ioCharactersActuallyReadRate) | 135 | P_PROPERTY(qlonglong ioCharactersActuallyReadRate READ ioCharactersActuallyReadRate) PROPERTY(qlonglong, ioCharactersActuallyReadRate) | ||
131 | Q_PROPERTY(qlonglong ioCharactersActuallyWrittenRate READ ioCharactersActuallyWrittenRate) PROPERTY(qlonglong, ioCharactersActuallyWrittenRate) | 136 | P_PROPERTY(qlonglong ioCharactersActuallyWrittenRate READ ioCharactersActuallyWrittenRate) PROPERTY(qlonglong, ioCharactersActuallyWrittenRate) | ||
132 | 137 | | |||
133 | ProcessObject(ProcessModel * processModel, int pid); | 138 | ProcessObject(ProcessModel * processModel, int pid); | ||
134 | void update(KSysGuard::Process *process); | 139 | void update(KSysGuard::Process *process); | ||
135 | 140 | | |||
136 | int pid() const { return mPid; } | 141 | int pid() const { return mPid; } | ||
137 | void setPid(int pid) { mPid = pid; } | 142 | void setPid(int pid) { mPid = pid; } | ||
138 | QString name() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->name().section(QLatin1Char(' '), 0,0); else return QString(); } | 143 | QString name() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->name().section(QLatin1Char(' '), 0,0); else return QString(); } | ||
139 | QString fullname() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->name(); else return QString(); } | 144 | QString fullname() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->name(); else return QString(); } | ||
140 | 145 | | |||
141 | public Q_SLOTS: | 146 | public Q_SLOTS: | ||
142 | bool fileExists(const QString &filename); | 147 | bool fileExists(const QString &filename); | ||
143 | QString readFile(const QString &filename); | 148 | QString readFile(const QString &filename); | ||
149 | | ||||
150 | Q_SIGNALS: | ||||
151 | void anythingChanged(); | ||||
152 | | ||||
144 | private: | 153 | private: | ||
145 | int mPid; | 154 | int mPid; | ||
146 | ProcessModel *mModel; | 155 | ProcessModel *mModel; | ||
147 | }; | 156 | }; | ||
148 | 157 | | |||
149 | #endif | 158 | #endif |