/usr/include/kdatatool.h is in kdelibs5-dev 4:4.8.5-0ubuntu0.6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 | /* This file is part of the KDE project
Copyright (C) 1998, 1999, 2000 Torben Weis <weis@kde.org>
Copyright (C) 2001 David Faure <faure@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KDATATOOL_H
#define KDATATOOL_H
#include <kio/kio_export.h>
#include <QtCore/QObject>
#include <QtCore/QString>
#include <kaction.h>
#include <kservice.h>
#include <kcomponentdata.h>
class KDataTool;
class QPixmap;
class QStringList;
class KActionCollection;
// If you're only looking at implementing a data-tool, skip directly to the last
// class definition, KDataTool.
/**
* This is a convenience class for KService. You can use it if you have
* a KService describing a KDataTool. In this case the KDataToolInfo class
* is more convenient to work with.
*
* Especially useful is the method createTool which creates the datatool
* described by the service.
* @see KDataTool
*/
class KIO_EXPORT KDataToolInfo
{
public:
/**
* Create an invalid KDataToolInfo.
*/
KDataToolInfo();
/**
* Create a valid KDataToolInfo.
* @param service the corresponding service
* @param instance the instance to use
*/
KDataToolInfo(const KService::Ptr& service, const KComponentData &instance);
/**
* Destructor
*/
~KDataToolInfo();
/**
* Copy constructor.
*/
KDataToolInfo( const KDataToolInfo& info );
/**
* Assignment operator.
*/
KDataToolInfo& operator= ( const KDataToolInfo& info );
/**
* Returns the data type that the DataTool can accept.
* @return the C++ data type that this DataTool accepts.
* For example "QString" or "QImage" or something more
* complicated.
*/
QString dataType() const;
/**
* Returns a list of mime type that will be accepted by the DataTool.
* The mimetypes are only used if the dataType can be used to store
* different mimetypes. For example in a "QString" you could save "text/plain"
* or "text/html" or "text/xml".
*
* @return the mime types accepted by this DataTool. For example
* "image/gif" or "text/plain". In some cases the dataType
* determines the accepted type of data perfectly. In this cases
* this list may be empty.
*/
QStringList mimeTypes() const;
/**
* Checks whether the DataTool is read-only.
* @return true if the DataTool does not modify the data passed to it by KDataTool::run.
*/
bool isReadOnly() const;
/**
* Returns the icon of this data tool.
* @return a large pixmap for the DataTool.
* @deprecated, use iconName()
*/
#ifndef KDE_NO_DEPRECATED
KDE_DEPRECATED QPixmap icon() const;
#endif
/**
* Returns the mini icon of this data tool.
* @return a mini pixmap for the DataTool.
* @deprecated, use iconName()
*/
#ifndef KDE_NO_DEPRECATED
KDE_DEPRECATED QPixmap miniIcon() const;
#endif
/**
* Returns the icon name for this DataTool.
* @return the name of the icon for the DataTool
*/
QString iconName() const;
/**
* Returns a list of strings that you can put in a QPopupMenu item, for example to
* offer the DataTools services to the user. The returned value
* is usually something like "Spell checking", "Shrink Image", "Rotate Image"
* or something like that.
* This list comes from the Comment field of the tool's desktop file
* (so that it can be translated).
*
* Each of the strings returned corresponds to a string in the list returned by
* commands.
*
* @return a list of strings that you can put in a QPopupMenu item
*/
QStringList userCommands() const;
/**
* Returns the list of commands the DataTool can execute. The application
* passes the command to the KDataTool::run method.
*
* This list comes from the Commands field of the tool's desktop file.
*
* Each of the strings returned corresponds to a string in the list returned by
* userCommands.
* @return the list of commands the DataTool can execute, suitable for
* the KDataTool::run method.
*/
QStringList commands() const;
/**
* Creates the data tool described by this KDataToolInfo.
* @param parent the parent of the QObject (or 0 for parent-less KDataTools)
* @return a pointer to the created data tool or 0 on error.
*/
KDataTool* createTool( QObject* parent = 0 ) const;
/**
* The KDataToolInfo's service that is represented by this class.
* @return the service
*/
KService::Ptr service() const;
/**
* The instance of the service.
* @return the instance
*/
KComponentData componentData() const;
/**
* A DataToolInfo may be invalid if the KService passed to its constructor does
* not feature the service type "KDataTool".
* @return true if valid, false otherwise
*/
bool isValid() const;
/**
* Queries the KServiceTypeTrader about installed KDataTool implementations.
* @param datatype a type that the application can 'export' to the tools (e.g. QString)
* @param mimetype the mimetype of the data (e.g. text/plain)
* @param instance the application (or the part)'s instance (to check if a tool is excluded from this part,
* and also used if the tool wants to read its configuration in the app's config file).
* @return the list of results
*/
static QList<KDataToolInfo> query(const QString& datatype, const QString& mimetype, const KComponentData &instance);
private:
class KDataToolInfoPrivate;
KDataToolInfoPrivate * const d;
};
/**
* This class helps applications implement support for KDataTool.
* The steps to follow are simple:
* @li query for the available tools using KDataToolInfo::query
* @li pass the result to KDataToolAction::dataToolActionList (with a slot)
* @li plug the resulting actions, either using KXMLGUIClient::plugActionList, or by hand.
*
* The slot defined for step 2 is called when the action is activated, and
* that's where the tool should be created and run.
*/
class KIO_EXPORT KDataToolAction : public KAction
{
Q_OBJECT
public:
/**
* Constructs a new KDataToolAction.
*
* @param text The text that will be displayed
* @param info The corresponding KDataToolInfo
* @param command The command of the action
* @param parent This action's parent
* @param name The name of the action
*/
KDataToolAction( const QString & text, const KDataToolInfo & info, const QString & command, QObject *parent );
/**
* Destructor
*/
~KDataToolAction();
/**
* Creates a list of actions from a list of information about data-tools.
* The slot must have a signature corresponding to the toolActivated signal.
*
* Note that it's the caller's responsibility to delete the actions when they're not needed anymore.
* @param tools the list of data tool descriptions
* @param receiver the receiver for toolActivated() signals
* @param slot the slot that will receive the toolActivated() signals
* @param parent the parent action collection for the actions to be created
* @return the KActions
*/
static QList<QAction*> dataToolActionList( const QList<KDataToolInfo> & tools, const QObject *receiver, const char* slot, KActionCollection* parent );
Q_SIGNALS:
/**
* Emitted when a tool has been activated.
* @param info a description of the activated tools
* @param command the command for the tool
*/
void toolActivated( const KDataToolInfo & info, const QString & command );
protected:
virtual void slotActivated();
private:
class KDataToolActionPrivate;
KDataToolActionPrivate * const d;
};
/**
* A generic tool that processes data.
*
* A data-tool is a "plugin" for an application, that acts (reads/modifies)
* on a portion of the data present in the document (e.g. a text document,
* a single word or paragraph, a KSpread cell, an image, etc.)
*
* The application has some generic code for presenting the tools in a popupmenu
* @see KDataToolAction, and for activating a tool, passing it the data
* (and possibly getting modified data from it).
*/
class KIO_EXPORT KDataTool : public QObject
{
Q_OBJECT
public:
/**
* Constructor
* The data-tool is only created when a menu-item, that relates to it, is activated.
* @param parent the parent of the QObject (or 0 for parent-less KDataTools)
*/
KDataTool( QObject* parent = 0 );
/**
* Destructor
*/
~KDataTool();
/**
* @internal. Do not use under any circumstance (including bad weather).
*/
void setComponentData(const KComponentData &componentData);
/**
* Returns the instance of the part that created this tool.
* Usually used if the tool wants to read its configuration in the app's config file.
* @return the instance of the part that created this tool.
*/
const KComponentData &componentData() const;
/**
* Interface for 'running' this tool.
* This is the method that the data-tool must implement.
*
* @param command is the command that was selected (see KDataToolInfo::commands())
* @param data the data provided by the application, on which to run the tool.
* The application is responsible for setting that data before running the tool,
* and for getting it back and updating itself with it, after the tool ran.
* @param datatype defines the type of @p data.
* @param mimetype defines the mimetype of the data (for instance datatype may be
* QString, but the mimetype can be text/plain, text/html etc.)
* @return true if successful, false otherwise
*/
virtual bool run( const QString& command, void* data, const QString& datatype, const QString& mimetype) = 0;
private:
class KDataToolPrivate;
KDataToolPrivate * const d;
};
#endif
|