kio Library API Documentation

KRun Class Reference

To open files with their associated applications in KDE, use KRun.Opens files with their associated applications in KDE. More...

#include <krun.h>

Inheritance diagram for KRun:

Inheritance graph
[legend]
Collaboration diagram for KRun:

Collaboration graph
[legend]
List of all members.

Signals

void finished ()
void error ()

Public Member Functions

 KRun (const KURL &url, mode_t mode=0, bool isLocalFile=false, bool showProgressInfo=true)
 KRun (const KURL &url, QWidget *window, mode_t mode=0, bool isLocalFile=false, bool showProgressInfo=true)
virtual ~KRun ()
void abort ()
bool hasError () const
bool hasFinished () const
bool autoDelete () const
void setAutoDelete (bool b)
void setPreferredService (const QString &desktopEntryName)
void setRunExecutables (bool b)
void setEnableExternalBrowser (bool b)

Static Public Member Functions

static pid_t run (const KService &_service, const KURL::List &_urls, bool tempFiles)
static pid_t run (const KService &_service, const KURL::List &_urls)
static pid_t run (const QString &_exec, const KURL::List &_urls, const QString &_name=QString::null, const QString &_icon=QString::null, const QString &_obsolete1=QString::null, const QString &_obsolete2=QString::null)
static pid_t runURL (const KURL &_url, const QString &_mimetype, bool tempFile, bool runExecutables)
static pid_t runURL (const KURL &_url, const QString &_mimetype, bool tempFile)
static pid_t runURL (const KURL &_url, const QString &_mimetype)
static pid_t runCommand (QString cmd)
static pid_t runCommand (const QString &cmd, const QString &execName, const QString &icon)
static bool displayOpenWithDialog (const KURL::List &lst, bool tempFiles)
static bool displayOpenWithDialog (const KURL::List &lst)
static void shellQuote (QString &_str)
static QStringList processDesktopExec (const KService &_service, const KURL::List &_urls, bool has_shell, bool tempFiles)
static QStringList processDesktopExec (const KService &_service, const KURL::List &_urls, bool has_shell)
static QString binaryName (const QString &execLine, bool removePath)
static bool isExecutable (const QString &serviceType)
static bool isExecutableFile (const KURL &url, const QString &mimetype)
static bool checkStartupNotify (const QString &binName, const KService *service, bool *silent_arg, QCString *wmclass_arg)

Protected Slots

void slotTimeout ()
void slotScanFinished (KIO::Job *)
void slotScanMimeType (KIO::Job *, const QString &type)
virtual void slotStatResult (KIO::Job *)

Protected Member Functions

virtual void init ()
virtual void scanFile ()
virtual void foundMimeType (const QString &_type)
virtual void killJob ()
virtual void virtual_hook (int id, void *data)

Protected Attributes

KURL m_strURL
bool m_bFault
bool m_bAutoDelete
bool m_bProgressInfo
bool m_bFinished
KIO::Jobm_job
QTimer m_timer
bool m_bScanFile
bool m_bIsDirectory
bool m_bInit
bool m_bIsLocalFile
mode_t m_mode

Detailed Description

To open files with their associated applications in KDE, use KRun.Opens files with their associated applications in KDE.

It can execute any desktop entry, as well as any file, using the default application or another application "bound" to the file type (or URL protocol).

In that example, the mimetype of the file is not known by the application, so a KRun instance must be created. It will determine the mimetype by itself. If the mimetype is known, or if you even know the service (application) to use for this file, use one of the static methods.

By default KRun uses auto deletion. It causes the KRun instance to delete itself when the it finished its task. If you allocate the KRun object on the stack you must disable auto deletion, otherwise it will crash.

Definition at line 57 of file krun.h.


Constructor & Destructor Documentation

KRun::KRun const KURL url,
mode_t  mode = 0,
bool  isLocalFile = false,
bool  showProgressInfo = true
 

Create a KRun object to run the preferred application for a file/URL.

KRun will first determine the type of the file, and will then run the associated application.

Parameters:
url the URL of the file or directory to 'run'
mode The st_mode field of struct stat. If you don't know this set it to 0.
isLocalFile If this parameter is set to false then url is examined to find out whether it is a local URL or not. This flag is just used to improve speed, since the function KURL::isLocalFile is a bit slow.
showProgressInfo Whether to show progress information when determining the type of the file (i.e. when using KIO::stat and KIO::mimetype) Before you set this to false to avoid a dialog box, think about a very slow FTP server... It is always better to provide progress info in such cases.

Definition at line 736 of file krun.cpp.

References init().

KRun::KRun const KURL url,
QWidget window,
mode_t  mode = 0,
bool  isLocalFile = false,
bool  showProgressInfo = true
 

BIC: Combine with the above ctor for KDE 4.0.

Parameters:
window The top-level widget of the app that invoked this object. It is used to make sure private information like passwords are properly handled per application.
url the URL of the file or directory to 'run'
mode The st_mode field of struct stat. If you don't know this set it to 0.
isLocalFile If this parameter is set to false then url is examined to find out whether it is a local URL or not. This flag is just used to improve speed, since the function KURL::isLocalFile is a bit slow.
showProgressInfo Whether to show progress information when determining the type of the file (i.e. when using KIO::stat and KIO::mimetype) Before you set this to false to avoid a dialog box, think about a very slow FTP server... It is always better to provide progress info in such cases.

Definition at line 742 of file krun.cpp.

References init().

KRun::~KRun  )  [virtual]
 

Destructor.

Don't call it yourself, since a KRun object auto-deletes itself.

Definition at line 907 of file krun.cpp.

References kdDebug(), killJob(), m_timer, and QTimer::stop().


Member Function Documentation

void KRun::abort  ) 
 

Abort this KRun.

This kills any jobs launched by it, and leads to deletion if auto-deletion is on. This is much safer than deleting the KRun (in case it's currently showing an error dialog box, for instance)

Definition at line 1176 of file krun.cpp.

References kdDebug(), killJob(), m_bFault, m_bFinished, m_bInit, m_bScanFile, m_timer, and QTimer::start().

bool KRun::hasError  )  const [inline]
 

Returns true if the KRun instance has an error.

Returns:
true when an error occurred
See also:
error()

Definition at line 133 of file krun.h.

bool KRun::hasFinished  )  const [inline]
 

Returns true if the KRun instance has finished.

Returns:
true if the KRun instance has finished
See also:
finished()

Definition at line 140 of file krun.h.

bool KRun::autoDelete  )  const [inline]
 

Checks whether auto delete is activated.

Auto-deletion causes the KRun instance to delete itself when it finished its task. By default auto deletion is on.

Returns:
true if auto deletion is on, false otherwise

Definition at line 149 of file krun.h.

void KRun::setAutoDelete bool  b  )  [inline]
 

Enables or disabled auto deletion.

Auto deletion causes the KRun instance to delete itself when it finished its task. If you allocate the KRun object on the stack you must disable auto deletion. By default auto deletion is on.

Parameters:
b true to enable auto deletion, false to disable

Definition at line 159 of file krun.h.

void KRun::setPreferredService const QString desktopEntryName  ) 
 

Set the preferred service for opening this URL, after its mimetype will have been found by KRun.

IMPORTANT: the service is only used if its configuration says it can handle this mimetype. This is used for instance for the X-KDE-LastOpenedWith key, for the recent documents list.

Parameters:
desktopEntryName the desktopEntryName of the service, e.g. "kate".

Definition at line 1201 of file krun.cpp.

Referenced by KDEDesktopMimeType::runLink().

void KRun::setRunExecutables bool  b  ) 
 

Sets whether executables, .desktop files or shell scripts should be run by KRun.

This is enabled by default.

Parameters:
b whether to run executable files or not.
See also:
isExecutable()
Since:
3.2

Definition at line 1206 of file krun.cpp.

void KRun::setEnableExternalBrowser bool  b  ) 
 

Sets whether the external webbrowser setting should be honoured.

This is enabled by default. This should only be disabled in webbrowser applications.

Parameters:
b whether to enable the external browser or not.
Since:
3.4

Definition at line 1193 of file krun.cpp.

References KGlobal::config().

pid_t KRun::run const KService _service,
const KURL::List _urls,
bool  tempFiles
[static]
 

Open a list of URLs with a certain service (application).

Parameters:
_service the service to run
_urls the list of URLs, can be empty (app launched without argument)
tempFiles if true and _urls are local files, they will be deleted when the application exits.
Returns:
the process id, or 0 on error

Definition at line 663 of file krun.cpp.

References KRecentDocument::add(), QValueList::begin(), QValueList< KURL >::ConstIterator(), KService::desktopEntryName(), KService::desktopEntryPath(), QValueList::end(), error(), QValueList::first(), KDesktopFile::isAuthorizedDesktopFile(), QValueList::isEmpty(), QString::isEmpty(), kdDebug(), kdWarning(), KMessageBox::sorry(), KApplication::startServiceByDesktopPath(), and KURL::List::toStringList().

Referenced by displayOpenWithDialog(), KFileOpenWithHandler::displayOpenWithDialog(), KDEDesktopMimeType::executeService(), foundMimeType(), init(), run(), KDEDesktopMimeType::runApplication(), and runURL().

pid_t KRun::run const QString _exec,
const KURL::List _urls,
const QString _name = QString::null,
const QString _icon = QString::null,
const QString _obsolete1 = QString::null,
const QString _obsolete2 = QString::null
[static]
 

Open a list of URLs with.

Parameters:
_exec The name of the executable, for example "/usr/bin/netscape".
_name The logical name of the application, for example "Netscape 4.06".
_icon The icon which should be used by the application.
_obsolete1 Do not use!
_obsolete2 Do not use!
Returns:
the process id, or 0 on error

Definition at line 713 of file krun.cpp.

References run().

pid_t KRun::runURL const KURL _url,
const QString _mimetype,
bool  tempFile,
bool  runExecutables
[static]
 

Open the given URL.

This function is used after the mime type is found out. It will search for all services which can handle the mime type and call run() afterwards.

Parameters:
_url the URL to open
_mimetype the mime type of the resource
tempFile if true and _url is a local file, it will be deleted when the launched application exits.
runExecutables if false then local .desktop files, executables and shell scripts will not be run. See also isExecutable().
Returns:
the process id, or 0 on error

Definition at line 104 of file krun.cpp.

References QValueList::append(), displayOpenWithDialog(), KMessageBoxWrapper::error(), KURL::htmlURL(), isExecutable(), isExecutableFile(), KURL::isLocalFile(), KURL::path(), KServiceTypeProfile::preferredService(), run(), KDEDesktopMimeType::run(), runCommand(), shellQuote(), KMessageBox::sorry(), and KGlobal::staticQString().

Referenced by foundMimeType(), KDEDesktopMimeType::runFSDevice(), and runURL().

pid_t KRun::runCommand QString  cmd  )  [static]
 

Run the given shell command and notifies kicker of the starting of the application.

If the program to be called doesn't exist, an error box will be displayed.

Use only when you know the full command line. Otherwise use the other static methods, or KRun's constructor.

_cmd must be a shell command. You must not append "&" to it, since the function will do that for you.

Returns:
PID of running command, 0 if it could not be started, 0 - (PID of running command) if command was unsafe for map notification.

Definition at line 721 of file krun.cpp.

Referenced by KMimeTypeChooser::editMimeType(), runURL(), and KFilePropsPlugin::slotEditFileType().

pid_t KRun::runCommand const QString cmd,
const QString execName,
const QString icon
[static]
 

Same as the other runCommand(), but it also takes the name of the binary, to display an error message in case it couldn't find it.

_cmd must be a shell command. You must not append "&" to it, since the function will do that for you.

Parameters:
execName the name of the executable
icon icon for app starting notification
Returns:
PID of running command, 0 if it could not be started, 0 - (PID of running command) if command was unsafe for map notification.

Definition at line 726 of file krun.cpp.

References binaryName(), KSharedPtr< T >::data(), kdDebug(), KService::serviceByDesktopName(), and KProcess::setUseShell().

bool KRun::displayOpenWithDialog const KURL::List lst,
bool  tempFiles
[static]
 

Display the Open-With dialog for those URLs, and run the chosen application.

Parameters:
lst the list of applications to run
tempFiles if true and lst are local files, they will be deleted when the application exits.
Returns:
false if the dialog was canceled

Definition at line 184 of file krun.cpp.

References endl(), QDialog::exec(), kdDebug(), run(), KOpenWithDlg::service(), KMessageBox::sorry(), and KOpenWithDlg::text().

Referenced by displayOpenWithDialog(), and runURL().

void KRun::shellQuote QString _str  )  [static]
 

Quotes a string for the shell.

Parameters:
_str the string to quote. The quoted string will be written here

Definition at line 206 of file krun.cpp.

References QString::isEmpty(), and QString::replace().

Referenced by processDesktopExec(), runURL(), KExecPropsPlugin::slotBrowseExec(), and KDesktopPropsPlugin::slotBrowseExec().

QStringList KRun::processDesktopExec const KService _service,
const KURL::List _urls,
bool  has_shell,
bool  tempFiles
[static]
 

Processes a Exec= line as found in .desktop files.

Parameters:
_service the service to extract information from.
_urls The urls the service should open.
has_shell If true, the arguments are going to be fed into a shell e.g by using system(). If false, the arguments are going to be fed into a exec() kind call. If the arguments are intended for an exec() kind of call and the Exec line contains shell commands then "/bin/sh -c" is added.
tempFiles if true and _urls are local files, they will be deleted when the application exits.
Returns:
a list of arguments suitable for either system() or exec().

Definition at line 344 of file krun.cpp.

References KShell::AbortOnMeta, QValueList::begin(), QRegExp::cap(), KGlobal::config(), QValueList< KURL >::ConstIterator(), QValueList::end(), KService::exec(), QString::find(), KStandardDirs::findExe(), KShell::FoundMeta, QString::isEmpty(), KProtocolInfo::isHelperProtocol(), KShell::joinArgs(), kdWarning(), QString::length(), KService::name(), KShell::NoError, KService::property(), KConfigBase::readPathEntry(), QString::remove(), QRegExp::search(), shellQuote(), KShell::splitArgs(), KService::substituteUid(), KService::terminal(), KService::terminalOptions(), KShell::TildeExpand, QVariant::toBool(), KURL::List::toStringList(), QString::unicode(), and KService::username().

Referenced by processDesktopExec(), and KIOExec::slotRunApp().

QString KRun::binaryName const QString execLine,
bool  removePath
[static]
 

Given a full command line (e.g.

the Exec= line from a .desktop file), extract the name of the binary being run.

Parameters:
execLine the full command line
removePath if true, remove a (relative or absolute) path. E.g. /usr/bin/ls becomes ls.
Returns:
the name of the binary to run
Since:
3.1

Definition at line 511 of file krun.cpp.

References KShell::splitArgs().

Referenced by runCommand(), and KOpenWithDlg::slotOK().

bool KRun::isExecutable const QString serviceType  )  [static]
 

Returns whether serviceType refers to an executable program instead of a data file.

Since:
3.2

Definition at line 1211 of file krun.cpp.

Referenced by runURL().

bool KRun::isExecutableFile const KURL url,
const QString mimetype
[static]
 

Returns wether the url of mimetype is executable.

To be executable the file must pass the following rules:

  1. Must reside on the local filesystem.
  2. Must be marked as executable for the user by the filesystem.
  3. The mime type must inherit application/x-executable or application/x-executable-script. To allow a script to run when the above rules are satisfied add the entry
     X-KDE-IsAlso=application/x-executable-script
    
    to the mimetype's desktop file.
    Since:
    3.3

Definition at line 88 of file krun.cpp.

References QFileInfo::isExecutable(), KURL::isLocalFile(), KMimeType::mimeType(), and KURL::path().

Referenced by runURL().

void KRun::finished  )  [signal]
 

Emitted when the operation finished.

See also:
hasFinished()

Referenced by slotTimeout().

void KRun::error  )  [signal]
 

Emitted when the operation had an error.

See also:
hasError()

Referenced by run(), and slotTimeout().

void KRun::foundMimeType const QString _type  )  [protected, virtual]
 

Called if the mimetype has been detected.

The function checks whether the document and appends the gzip protocol to the URL. Otherwise runURL is called to finish the job.

Definition at line 1073 of file krun.cpp.

References QValueList::append(), QObject::inherits(), kdDebug(), m_bFault, m_bFinished, m_job, m_strURL, m_timer, KIO::Scheduler::publishSlaveOnHold(), KIO::SimpleJob::putOnHold(), run(), runURL(), KService::serviceByDesktopName(), and QTimer::start().

Referenced by init(), scanFile(), slotScanMimeType(), slotStatResult(), and slotTimeout().


Member Data Documentation

bool KRun::m_bScanFile [protected]
 

Used to indicate that the next action is to scan the file.

This action is invoked from slotTimeout.

Definition at line 389 of file krun.h.

Referenced by abort(), slotStatResult(), and slotTimeout().

bool KRun::m_bInit [protected]
 

USed to indicate that the next action is to initialize.

This action is invoked from slotTimeout

Definition at line 396 of file krun.h.

Referenced by abort(), and slotTimeout().


The documentation for this class was generated from the following files:
KDE Logo
This file is part of the documentation for kio Library Version 3.4.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Jul 20 12:40:38 2006 by doxygen 1.4.4 written by Dimitri van Heesch, © 1997-2003