Advance Wayland and KDE package bring-up
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
/*
|
||||
This file is part of the KDE libraries
|
||||
SPDX-FileCopyrightText: 2020 David Faure <faure@kde.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
|
||||
*/
|
||||
|
||||
#ifndef KIO_COMMANDLAUNCHERJOB_H
|
||||
#define KIO_COMMANDLAUNCHERJOB_H
|
||||
|
||||
#include "kiogui_export.h"
|
||||
#include <KJob>
|
||||
|
||||
class KRunPrivate; // KF6 REMOVE
|
||||
class CommandLauncherJobTest; // KF6 REMOVE
|
||||
|
||||
class QProcessEnvironment;
|
||||
namespace KIO
|
||||
{
|
||||
class CommandLauncherJobPrivate;
|
||||
|
||||
/**
|
||||
* @class CommandLauncherJob commandlauncherjob.h <KIO/CommandLauncherJob>
|
||||
*
|
||||
* @brief CommandLauncherJob runs a command and watches it while running.
|
||||
*
|
||||
* It creates a startup notification and finishes it on success or on error (for the taskbar).
|
||||
* It also emits a "program not found" error message if the requested command did not exist.
|
||||
*
|
||||
* The job finishes when the command is successfully started; at that point you can
|
||||
* query the PID with pid(). Note that no other errors are handled automatically after the
|
||||
* command starts running. As far as CommandLauncherJob is concerned, if the command was
|
||||
* launched, the result is a success. If you need to query the command for its exit status
|
||||
* or error text later, it is recommended to use QProcess instead.
|
||||
*
|
||||
* For error handling, either connect to the result() signal, or for a simple messagebox on error,
|
||||
* you can do
|
||||
* @code
|
||||
* job->setUiDelegate(new KDialogJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
|
||||
* @endcode
|
||||
*
|
||||
* @since 5.69
|
||||
*/
|
||||
class KIOGUI_EXPORT CommandLauncherJob : public KJob
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Creates a CommandLauncherJob.
|
||||
* @param command the shell command to run
|
||||
* The command is given "as is" to the shell, it must already be quoted if necessary.
|
||||
* If @p command is instead a filename, consider using the other constructor, even if no args are present.
|
||||
* @param parent the parent QObject
|
||||
*
|
||||
* Please consider also calling setDesktopName() for better startup notification.
|
||||
*/
|
||||
explicit CommandLauncherJob(const QString &command, QObject *parent = nullptr);
|
||||
|
||||
/**
|
||||
* Creates a CommandLauncherJob.
|
||||
* @param executable the name of the executable
|
||||
* @param args the commandline arguments to pass to the executable
|
||||
* @param parent the parent QObject
|
||||
*
|
||||
* Please consider also calling setDesktopName() for better startup notification.
|
||||
*/
|
||||
explicit CommandLauncherJob(const QString &executable, const QStringList &args, QObject *parent = nullptr);
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*
|
||||
* Note that jobs auto-delete themselves after emitting result
|
||||
*/
|
||||
~CommandLauncherJob() override;
|
||||
|
||||
/**
|
||||
* Sets the command to execute, this will change the command that was set by any of the constructors.
|
||||
* @since 5.83
|
||||
*/
|
||||
void setCommand(const QString &command);
|
||||
|
||||
/**
|
||||
* Returns the command executed by this job.
|
||||
* @since 5.83
|
||||
*/
|
||||
QString command() const;
|
||||
|
||||
/**
|
||||
* Sets the name of the executable, used in the startup notification
|
||||
* (see KStartupInfoData::setBin()).
|
||||
* @param executable executable name, with or without a path
|
||||
*
|
||||
* Alternatively, use setDesktopName().
|
||||
*/
|
||||
void setExecutable(const QString &executable);
|
||||
|
||||
/**
|
||||
* Set the name of the desktop file (e.g.\ "org.kde.dolphin", without the ".desktop" filename extension).
|
||||
*
|
||||
* This is necessary for startup notification to work.
|
||||
*/
|
||||
void setDesktopName(const QString &desktopName);
|
||||
|
||||
/**
|
||||
* Sets the platform-specific startup id of the command launch.
|
||||
* @param startupId startup id, if any (otherwise "").
|
||||
* For X11, this would be the id for the Startup Notification protocol.
|
||||
* For Wayland, this would be the token for the XDG Activation protocol.
|
||||
*/
|
||||
void setStartupId(const QByteArray &startupId);
|
||||
|
||||
/**
|
||||
* Sets the working directory from which to run the command.
|
||||
* @param workingDirectory path of a local directory
|
||||
*/
|
||||
void setWorkingDirectory(const QString &workingDirectory);
|
||||
|
||||
/**
|
||||
* Returns the working directory, which was previously set with @c setWorkingDirectory().
|
||||
* @since 5.83
|
||||
*/
|
||||
QString workingDirectory() const;
|
||||
|
||||
/**
|
||||
* Can be used to pass environment variables to the child process.
|
||||
* @param environment set of environment variables to pass to the child process
|
||||
* @see QProcessEnvironment
|
||||
* @since 5.82
|
||||
*/
|
||||
void setProcessEnvironment(const QProcessEnvironment &environment);
|
||||
|
||||
/**
|
||||
* Starts the job.
|
||||
* You must call this, after having called all the necessary setters.
|
||||
*/
|
||||
void start() override;
|
||||
|
||||
/**
|
||||
* @return the PID of the command that was started
|
||||
*
|
||||
* Available after the job emits result().
|
||||
*/
|
||||
qint64 pid() const;
|
||||
|
||||
private:
|
||||
friend class ::KRunPrivate; // KF6 REMOVE
|
||||
friend class ::CommandLauncherJobTest; // KF6 REMOVE
|
||||
/**
|
||||
* Blocks until the process has started. Only exists for KRun, will disappear in KF6.
|
||||
*/
|
||||
bool waitForStarted();
|
||||
|
||||
friend class CommandLauncherJobPrivate;
|
||||
QScopedPointer<CommandLauncherJobPrivate> d;
|
||||
};
|
||||
|
||||
} // namespace KIO
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user