~ubuntu-branches/ubuntu/utopic/kde-workspace/utopic-proposed

« back to all changes in this revision

Viewing changes to libs/ksysguard/processui/scripting.h

  • Committer: Bazaar Package Importer
  • Author(s): Michał Zając
  • Date: 2011-07-09 08:31:15 UTC
  • Revision ID: james.westby@ubuntu.com-20110709083115-ohyxn6z93mily9fc
Tags: upstream-4.6.90
Import upstream version 4.6.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    KSysGuard, the KDE System Guard
 
3
 
 
4
    Copyright (c) 2009 John Tapsell <john.tapsell@kde.org>
 
5
 
 
6
    This library is free software; you can redistribute it and/or
 
7
    modify it under the terms of the GNU Library General Public
 
8
    License as published by the Free Software Foundation; either
 
9
    version 2 of the License, or (at your option) any later version.
 
10
 
 
11
    This library is distributed in the hope that it will be useful,
 
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
14
    Library General Public License for more details.
 
15
 
 
16
    You should have received a copy of the GNU Library General Public License
 
17
    along with this library; see the file COPYING.LIB.  If not, write to
 
18
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
19
    Boston, MA 02110-1301, USA.
 
20
 
 
21
*/
 
22
 
 
23
#ifndef KSYSGUARDSCRIPTING_H
 
24
#define KSYSGUARDSCRIPTING_H
 
25
 
 
26
#include <QList>
 
27
#include <QString>
 
28
#include <QWidget>
 
29
#include "processes.h"
 
30
#include "ProcessModel.h"
 
31
 
 
32
class QAction;
 
33
class ScriptingHtmlDialog; //Defined in scripting.cpp file
 
34
class KSysGuardProcessList;
 
35
class ProcessObject;
 
36
 
 
37
class Scripting : public QWidget {
 
38
  Q_OBJECT
 
39
  public:
 
40
    /** Create a scripting object */
 
41
    Scripting(KSysGuardProcessList *parent);
 
42
    /** Run the script in the given path */
 
43
    void runScript(const QString &path, const QString &name);
 
44
    /** Read all the script .desktop files and create an action for each one */
 
45
    void loadContextMenu();
 
46
    /** List of context menu actions that are created by loadContextMenu() */
 
47
    QList<QAction *> actions() { return mActions; }
 
48
    /** Create a ScriptingHtmlDialog, if one does not already exist, and display the given html */
 
49
    void displayHtml(const QString &html);
 
50
 
 
51
  public Q_SLOTS:
 
52
    /** Stop all scripts and delete the script engine */
 
53
    void stopAllScripts();
 
54
  private Q_SLOTS:
 
55
    /** Run the script associated with the QAction that called this slot */
 
56
    void runScriptSlot();
 
57
    void setupJavascriptObjects();
 
58
    void refreshScript();
 
59
    void zoomIn();
 
60
    void zoomOut();
 
61
  private:
 
62
    /** This is created on the fly as needed, and deleted when no longer used */
 
63
    ScriptingHtmlDialog *mScriptingHtmlDialog;
 
64
    /** The parent process list to script for */
 
65
    KSysGuardProcessList * const mProcessList;
 
66
    /** List of context menu actions that are created by loadContextMenu() */
 
67
    QList<QAction *> mActions;
 
68
    QString mScriptPath;
 
69
    QString mScriptName;
 
70
    ProcessObject *mProcessObject;
 
71
 
 
72
    qlonglong mPid;
 
73
};
 
74
#define PROPERTY(Type,Name) Type Name() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->Name; else return Type();}
 
75
 
 
76
class ProcessObject : public QObject {
 
77
    Q_OBJECT
 
78
    public:
 
79
       Q_PROPERTY(qlonglong pid READ pid WRITE setPid)                 /* Add functionality to 'set' the pid to change which process to read from */
 
80
       Q_PROPERTY(qlonglong ppid READ parent_pid)                      /* Map 'ppid' to 'parent_pid' to give it a nicer scripting name */
 
81
       Q_PROPERTY(QString name READ name)                              /* Defined below to return the first word of the name */
 
82
       Q_PROPERTY(QString fullname READ fullname)                      /* Defined below to return 'name' */
 
83
       Q_PROPERTY(qlonglong rss READ vmRSS)                            /* Map 'rss' to 'vmRSS' just to give it a nicer scripting name */
 
84
       Q_PROPERTY(qlonglong urss READ vmURSS)                          /* Map 'urss' to 'vmURSS' just to give it a nicer scripting name */
 
85
       Q_PROPERTY(int numThreads READ numThreads)                      PROPERTY(int, numThreads)
 
86
       Q_PROPERTY(qlonglong fsgid READ fsgid)                          PROPERTY(qlonglong, fsgid)
 
87
       Q_PROPERTY(qlonglong parent_pid READ parent_pid)                PROPERTY(qlonglong, parent_pid)
 
88
       Q_PROPERTY(QString login READ login)                            PROPERTY(QString, login)
 
89
       Q_PROPERTY(qlonglong uid READ uid)                              PROPERTY(qlonglong, uid)
 
90
       Q_PROPERTY(qlonglong euid READ euid)                            PROPERTY(qlonglong, euid)
 
91
       Q_PROPERTY(qlonglong suid READ suid)                            PROPERTY(qlonglong, suid)
 
92
       Q_PROPERTY(qlonglong fsuid READ fsuid)                          PROPERTY(qlonglong, fsuid)
 
93
       Q_PROPERTY(qlonglong gid READ gid)                              PROPERTY(qlonglong, gid)
 
94
       Q_PROPERTY(qlonglong egid READ egid)                            PROPERTY(qlonglong, egid)
 
95
       Q_PROPERTY(qlonglong sgid READ sgid)                            PROPERTY(qlonglong, sgid)
 
96
       Q_PROPERTY(qlonglong tracerpid READ tracerpid)                  PROPERTY(qlonglong, tracerpid)
 
97
       Q_PROPERTY(QByteArray tty READ tty)                             PROPERTY(QByteArray, tty)
 
98
       Q_PROPERTY(qlonglong userTime READ userTime)                    PROPERTY(qlonglong, userTime)
 
99
       Q_PROPERTY(qlonglong sysTime READ sysTime)                      PROPERTY(qlonglong, sysTime)
 
100
       Q_PROPERTY(int userUsage READ userUsage)                        PROPERTY(int, userUsage)
 
101
       Q_PROPERTY(int sysUsage READ sysUsage)                          PROPERTY(int, sysUsage)
 
102
       Q_PROPERTY(int totalUserUsage READ totalUserUsage)              PROPERTY(int, totalUserUsage)
 
103
       Q_PROPERTY(int totalSysUsage READ totalSysUsage)                PROPERTY(int, totalSysUsage)
 
104
       Q_PROPERTY(int numChildren READ numChildren)                    PROPERTY(int, numChildren)
 
105
       Q_PROPERTY(int niceLevel READ niceLevel)                        PROPERTY(int, niceLevel)
 
106
       Q_PROPERTY(int scheduler READ scheduler)                        PROPERTY(int, scheduler)
 
107
       Q_PROPERTY(int ioPriorityClass READ ioPriorityClass)            PROPERTY(int, ioPriorityClass)
 
108
       Q_PROPERTY(int ioniceLevel READ ioniceLevel)                    PROPERTY(int, ioniceLevel)
 
109
       Q_PROPERTY(qlonglong vmSize READ vmSize)                        PROPERTY(qlonglong, vmSize)
 
110
       Q_PROPERTY(qlonglong vmRSS READ vmRSS)                          PROPERTY(qlonglong, vmRSS)
 
111
       Q_PROPERTY(qlonglong vmURSS READ vmURSS)                        PROPERTY(qlonglong, vmURSS)
 
112
       Q_PROPERTY(qlonglong pixmapBytes READ pixmapBytes)              PROPERTY(qlonglong, pixmapBytes)
 
113
       Q_PROPERTY(bool hasManagedGuiWindow READ hasManagedGuiWindow)   PROPERTY(bool, hasManagedGuiWindow)
 
114
       Q_PROPERTY(QString command READ command)                        PROPERTY(QString, command)
 
115
       Q_PROPERTY(qlonglong status READ status)                        PROPERTY(qlonglong, status)
 
116
       Q_PROPERTY(qlonglong ioCharactersRead READ ioCharactersRead)    PROPERTY(qlonglong, ioCharactersRead)
 
117
       Q_PROPERTY(qlonglong ioCharactersWritten READ ioCharactersWritten)  PROPERTY(qlonglong, ioCharactersWritten)
 
118
       Q_PROPERTY(qlonglong ioReadSyscalls READ ioReadSyscalls)        PROPERTY(qlonglong, ioReadSyscalls)
 
119
       Q_PROPERTY(qlonglong ioWriteSyscalls READ ioWriteSyscalls)      PROPERTY(qlonglong, ioWriteSyscalls)
 
120
       Q_PROPERTY(qlonglong ioCharactersActuallyRead READ ioCharactersActuallyRead)        PROPERTY(qlonglong, ioCharactersActuallyRead)
 
121
       Q_PROPERTY(qlonglong ioCharactersActuallyWritten READ ioCharactersActuallyWritten)  PROPERTY(qlonglong, ioCharactersActuallyWritten)
 
122
       Q_PROPERTY(qlonglong ioCharactersReadRate READ ioCharactersReadRate)                PROPERTY(qlonglong, ioCharactersReadRate)
 
123
       Q_PROPERTY(qlonglong ioCharactersWrittenRate READ ioCharactersWrittenRate)          PROPERTY(qlonglong, ioCharactersWrittenRate)
 
124
       Q_PROPERTY(qlonglong ioReadSyscallsRate READ ioReadSyscallsRate)                    PROPERTY(qlonglong, ioReadSyscallsRate)
 
125
       Q_PROPERTY(qlonglong ioWriteSyscallsRate READ ioWriteSyscallsRate)                  PROPERTY(qlonglong, ioWriteSyscallsRate)
 
126
       Q_PROPERTY(qlonglong ioCharactersActuallyReadRate READ ioCharactersActuallyReadRate)          PROPERTY(qlonglong, ioCharactersActuallyReadRate)
 
127
       Q_PROPERTY(qlonglong ioCharactersActuallyWrittenRate READ ioCharactersActuallyWrittenRate)    PROPERTY(qlonglong, ioCharactersActuallyWrittenRate)
 
128
 
 
129
        ProcessObject(ProcessModel * processModel, int pid);
 
130
        void update(KSysGuard::Process *process);
 
131
 
 
132
        int pid() const { return mPid; }
 
133
        void setPid(int pid) { mPid = pid; }
 
134
        QString name() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->name.section(' ', 0,0); else return QString(); }
 
135
        QString fullname() const { KSysGuard::Process *process = mModel->getProcess(mPid); if(process) return process->name; else return QString(); }
 
136
 
 
137
        public Q_SLOTS:
 
138
        bool fileExists(const QString &filename);
 
139
        QString readFile(const QString &filename);
 
140
    private:
 
141
        int mPid;
 
142
        ProcessModel *mModel;
 
143
};
 
144
 
 
145
#endif