/usr/include/k3bprojectplugin.h is in libk3b-dev 17.12.3-0ubuntu3.
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 | /*
*
* Copyright (C) 2004-2009 Sebastian Trueg <trueg@k3b.org>
*
* This file is part of the K3b project.
* Copyright (C) 1998-2009 Sebastian Trueg <trueg@k3b.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* See the file "COPYING" for the exact licensing terms.
*/
#ifndef _K3B_PROJECT_PLUGIN_H_
#define _K3B_PROJECT_PLUGIN_H_
#include "k3bdoc.h"
#include "k3bplugin.h"
#include <QtCore/QFlags>
#include <QtGui/QIcon>
#include "k3b_export.h"
class KConfigGroup;
namespace K3b {
/**
* In case your plugin provides a GUI it is recommended to use the
* ProjectPluginGUIBase interface. That way K3b can embed the GUI into
* a fancy dialog which fits the overall look.
*
* This is not derived from QWidget to make it possible to inherit
* from other QWidget derivates.
*/
class ProjectPluginGUIBase
{
public:
ProjectPluginGUIBase() {}
virtual ~ProjectPluginGUIBase() {}
virtual QWidget* qWidget() = 0;
/**
* Title used for the GUI
*/
virtual QString title() const = 0;
virtual QString subTitle() const { return QString(); }
/**
* Used to read settings and defaults.
*/
virtual void readSettings( const KConfigGroup& ) {}
virtual void saveSettings( KConfigGroup ) {}
/**
* Start the plugin. This method should do the actual work.
*/
virtual void activate() = 0;
};
/**
* A ProjectPlugin is supposed to modify a k3b project in some way or
* create additional data based on the project.
*
* Reimplement createGUI or activate and use setText, setToolTip, setWhatsThis, and setIcon
* to specify the gui elements used when presenting the plugin to the user.
*/
class LIBK3B_EXPORT ProjectPlugin : public Plugin
{
Q_OBJECT
public:
Q_DECLARE_FLAGS( Type, Doc::Type )
/**
* @param type The type of the plugin which can be a combination of @see Doc::Type
* @param gui If true the plugin is supposed to provide a widget via @p createGUI(). In that case
* @p activate() will not be used. A plugin has a GUI if it's functionality is started
* by some user input.
*/
ProjectPlugin( Type type, bool gui = false, QObject* parent = 0 );
virtual ~ProjectPlugin() {
}
// TODO: maybe we should use something like "ProjectPlugin/AudioCD" based on the type?
QString category() const { return "ProjectPlugin"; }
QString categoryName() const;
/**
* audio, data, videocd, or videodvd
* Needs to return a proper type. The default implementation returns the type specified
* in the constructor.
*/
virtual Type type() const { return m_type; }
/**
* Text used for menu entries and the like.
*/
QString text() const { return m_text; }
QString toolTip() const { return m_toolTip; }
QString whatsThis() const { return m_whatsThis; }
QIcon icon() const { return m_icon; }
bool hasGUI() const { return m_hasGUI; }
/**
* Create the GUI which provides the features for the plugin.
* This only needs to be implemented in case hasGUI returns true.
* The returned object has to be a QWidget based class.
*
* @param doc based on the type returned by the factory
* this will be the doc to work on. It should
* be dynamically casted to the needed project type.
*/
virtual ProjectPluginGUIBase* createGUI( Doc* doc, QWidget* = 0 ) { Q_UNUSED(doc); return 0; }
/**
* This is where the action happens.
* There is no need to implement this in case hasGUI returns true.
*
* @param doc based on the type returned by the factory
* this will be the doc to work on. It should
* be dynamically casted to the needed project type.
*
* @param parent the parent widget to be used for things like progress dialogs.
*/
virtual void activate( Doc* doc, QWidget* parent ) { Q_UNUSED(doc); Q_UNUSED(parent); }
protected:
void setText( const QString& s ) { m_text = s; }
void setToolTip( const QString& s ) { m_toolTip = s; }
void setWhatsThis( const QString& s ) { m_whatsThis = s; }
void setIcon( const QIcon& i ) { m_icon = i; }
private:
Type m_type;
bool m_hasGUI;
QString m_text;
QString m_toolTip;
QString m_whatsThis;
QIcon m_icon;
};
}
Q_DECLARE_OPERATORS_FOR_FLAGS( K3b::ProjectPlugin::Type )
#endif
|