KParts

kde_terminal_interface.h
1 /*
2  interface.h
3  SPDX-FileCopyrightText: 2002 Dominique Devriese <[email protected]>
4 
5  SPDX-License-Identifier: LGPL-2.1-or-later
6 */
7 
8 #ifndef KDELIBS_KDE_TERMINAL_INTERFACE_H
9 #define KDELIBS_KDE_TERMINAL_INTERFACE_H
10 
11 #include <QObject>
12 #include <QStringList>
13 
14 /**
15  * TerminalInterface is an interface implemented by KonsolePart to
16  * allow developers access to the KonsolePart in ways that are not
17  * possible through the normal KPart interface.
18  *
19  * Note that besides the functions below here, KonsolePart also has
20  * some signals you can connect to. They aren't in this class cause
21  * we can't have signals without having a QObject, which
22  * TerminalInterface is not.
23  *
24  * These are some signals you can connect to:
25  * void currentDirectoryChanged(const QString& dir);
26  *
27  * See the example code below for how to connect to these.
28  *
29  * Use it like this:
30  * \code
31  * // Query the .desktop file to get service information about konsolepart
32  * KService::Ptr service = KService::serviceByDesktopName("konsolepart");
33  *
34  * if (!service) {
35  * QMessageBox::critical(this, tr("Konsole not installed"), tr("Please install the kde konsole and try again!"), QMessageBox::Ok);
36  * return ;
37  * }
38  *
39  * // Create one instance of konsolepart
40  * KParts::ReadOnlyPart *part = service->createInstance<KParts::ReadOnlyPart>(parent, parentWidget, QVariantList());
41  *
42  * if (!part) {
43  * return;
44  * }
45  *
46  * // Cast the konsolepart to the TerminalInterface..
47  * TerminalInterface *terminalIface = qobject_cast<TerminalInterface *>(part);
48  *
49  * if (!terminalIface) {
50  * return;
51  * }
52  *
53  * // Now use the interface in all sorts of ways, e.g.
54  * // terminalIface->showShellInDir(QDir::home().path());
55  * // Or:
56  * // QStringList list;
57  * // list.append("python");
58  * // terminalIface->startProgram( QString::fromUtf8( "/usr/bin/python" ), list);
59  * // Or connect to one of the signals. Connect to the Part object,
60  * // not to the TerminalInterface, since the latter is not a QObject,
61  * // and as such does not have signals..:
62  * connect(part, &KParts::ReadOnlyPart::currentDirectoryChanged, this, [this](const QString &dirPath) {
63  * currentDirectoryChanged(dirPath);
64  * });
65  * // etc.
66  *
67  * \endcode
68  *
69  * @author Dominique Devriese <[email protected]>
70  */
72 {
73 public:
74  virtual ~TerminalInterface()
75  {
76  }
77  /**
78  * This starts @p program, with arguments @p args
79  */
80  virtual void startProgram(const QString &program, const QStringList &args) = 0;
81  /**
82  * If no shell is running, this starts a shell with the
83  * @dir as the starting directory.
84  * If a shell is already running, nothing is done.
85  */
86  virtual void showShellInDir(const QString &dir) = 0;
87 
88  /**
89  * This sends @param text as input to the currently running
90  * program..
91  */
92  virtual void sendInput(const QString &text) = 0;
93 
94  /**
95  * Return terminal PID. If no process is currently running, returns 0.
96  */
97  virtual int terminalProcessId() = 0;
98 
99  /**
100  * Return foregound PID, If there is no foreground process running, returns -1
101  */
102  virtual int foregroundProcessId() = 0;
103 
104  /**
105  * Returns sub process name. If there is no sub process running, returns empty QString
106  */
107  virtual QString foregroundProcessName() = 0;
108 
109  /**
110  * Returns the current working directory
111  */
112  virtual QString currentWorkingDirectory() const = 0;
113 };
114 
115 class TerminalInterfaceV2 : public TerminalInterface
116 {
117 public:
118  /**
119  * Returns the names of available profiles.
120  */
121  virtual QStringList availableProfiles() const = 0;
122 
123  /**
124  * Returns the name of the currently active profile.
125  */
126  virtual QString currentProfileName() const = 0;
127 
128  /**
129  * Changes the currently active profile to @p profileName.
130  * @returns Returns true if setting the profile was successful
131  */
132  virtual bool setCurrentProfile(const QString &profileName) = 0;
133 
134  /**
135  * Returns the property @p profileProperty of the currently active profile.
136  */
137  virtual QVariant profileProperty(const QString &profileProperty) const = 0;
138 };
139 
140 Q_DECLARE_INTERFACE(TerminalInterfaceV2, "org.kde.TerminalInterfaceV2")
141 Q_DECLARE_INTERFACE(TerminalInterface, "org.kde.TerminalInterface")
142 
143 #endif
virtual int foregroundProcessId()=0
Return foregound PID, If there is no foreground process running, returns -1.
virtual void sendInput(const QString &text)=0
This sends.
virtual void startProgram(const QString &program, const QStringList &args)=0
This starts program, with arguments args.
virtual QString currentWorkingDirectory() const =0
Returns the current working directory.
virtual int terminalProcessId()=0
Return terminal PID.
TerminalInterface is an interface implemented by KonsolePart to allow developers access to the Konsol...
virtual QString foregroundProcessName()=0
Returns sub process name.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon May 8 2023 03:53:51 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.