[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[vidalia-svn] r3990: Re-org the plugin stuff a bit: separate the plugin API into (in vidalia/branches/extension-api/src: . plugins plugins/HerdictWebReporterPlugin plugins/WebBrowserPlugin vidalia vidalia/DashboardPlugin vidalia/HomePlugin vidalia/MessageLogPlugin vidalia/NetworkMapPlugin vidalia/config)
Author: edmanm
Date: 2009-08-02 18:36:39 -0400 (Sun, 02 Aug 2009)
New Revision: 3990
Added:
vidalia/branches/extension-api/src/plugins/CMakeLists.txt
vidalia/branches/extension-api/src/plugins/ConfigPage.h
vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/
vidalia/branches/extension-api/src/plugins/PluginManager.cpp
vidalia/branches/extension-api/src/plugins/PluginManager.h
vidalia/branches/extension-api/src/plugins/VidaliaPanel.h
vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp
vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h
vidalia/branches/extension-api/src/plugins/VidaliaWidget.h
vidalia/branches/extension-api/src/plugins/WebBrowserPlugin/
Removed:
vidalia/branches/extension-api/src/WebBrowserPlugin/
vidalia/branches/extension-api/src/vidalia/HerdictWebReporterPlugin/
vidalia/branches/extension-api/src/vidalia/PluginManager.cpp
vidalia/branches/extension-api/src/vidalia/PluginManager.h
vidalia/branches/extension-api/src/vidalia/VidaliaPanel.h
vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.cpp
vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.h
vidalia/branches/extension-api/src/vidalia/VidaliaWidget.h
vidalia/branches/extension-api/src/vidalia/config/ConfigPage.h
Modified:
vidalia/branches/extension-api/src/CMakeLists.txt
vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/CMakeLists.txt
vidalia/branches/extension-api/src/vidalia/CMakeLists.txt
vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h
vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt
vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePanel.h
vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h
vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt
vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h
vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CMakeLists.txt
vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h
vidalia/branches/extension-api/src/vidalia/main.cpp
Log:
Re-org the plugin stuff a bit: separate the plugin API into its own
library (still currently static-linked in though), and move the dynamic
plugins that are not actually part of Vidalia into the src/plugins/ directory.
Modified: vidalia/branches/extension-api/src/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/CMakeLists.txt 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/CMakeLists.txt 2009-08-02 22:36:39 UTC (rev 3990)
@@ -43,8 +43,8 @@
endif(USE_MINIUPNPC)
add_subdirectory(common)
-#add_subdirectory(plugins)
+add_subdirectory(plugins)
add_subdirectory(tools)
add_subdirectory(torcontrol)
add_subdirectory(vidalia)
-#add_subdirectory(WebBrowserPlugin)
+
Added: vidalia/branches/extension-api/src/plugins/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/plugins/CMakeLists.txt (rev 0)
+++ vidalia/branches/extension-api/src/plugins/CMakeLists.txt 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,31 @@
+##
+## $Id$
+##
+## This file is part of Vidalia, and is subject to the license terms in the
+## LICENSE file, found in the top level directory of this distribution. If
+## you did not receive the LICENSE file with this file, you may obtain it
+## from the Vidalia source package distributed by the Vidalia Project at
+## http://www.vidalia-project.net/. No part of Vidalia, including this file,
+## may be copied, modified, propagated, or distributed except according to
+## the terms described in the LICENSE file.
+##
+
+
+set(plugin_SRCS
+ PluginManager.cpp
+ VidaliaPluginInterface.cpp
+)
+qt4_wrap_cpp(plugin_SRCS
+ PluginManager.h
+ VidaliaPanel.h
+ VidaliaPluginInterface.h
+ ConfigPage.h
+)
+
+add_library(vidaliaplugin STATIC ${plugin_SRCS})
+target_link_libraries(vidaliaplugin ${QT_LIBRARIES})
+
+if (WITH_HERDICT_PLUGIN)
+ add_subdirectory(HerdictWebReporterPlugin)
+endif(WITH_HERDICT_PLUGIN)
+
Property changes on: vidalia/branches/extension-api/src/plugins/CMakeLists.txt
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Copied: vidalia/branches/extension-api/src/plugins/ConfigPage.h (from rev 3989, vidalia/branches/extension-api/src/vidalia/config/ConfigPage.h)
===================================================================
--- vidalia/branches/extension-api/src/plugins/ConfigPage.h (rev 0)
+++ vidalia/branches/extension-api/src/plugins/ConfigPage.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,71 @@
+/*
+** This file is part of Vidalia, and is subject to the license terms in the
+** LICENSE file, found in the top level directory of this distribution. If you
+** did not receive the LICENSE file with this file, you may obtain it from the
+** Vidalia source package distributed by the Vidalia Project at
+** http://www.vidalia-project.net/. No part of Vidalia, including this file,
+** may be copied, modified, propagated, or distributed except according to the
+** terms described in the LICENSE file.
+*/
+
+/*
+** \file ConfigPage.h
+** \version $Id$
+** \brief Pure-virtual class for a configuration page
+*/
+
+#ifndef _CONFIGPAGE_H
+#define _CONFIGPAGE_H
+
+#include <QWidget>
+
+
+class ConfigPage : public QWidget
+{
+ Q_OBJECT
+
+public:
+ /** Default Constructor */
+ ConfigPage(QWidget *parent = 0, const QString title = QString())
+ : QWidget(parent), _title(title) {}
+
+ /** Returns the title of this configuration page. */
+ QString title() const { return _title; }
+
+ /** Pure virtual method. Subclassed pages load their config settings here. */
+ virtual void load() = 0;
+ /** Pure virtual method. Subclassed pages save their config settings here
+ * and return true if everything was saved successfully. */
+ virtual bool save(QString &errmsg) = 0;
+
+ /** Subclassed pages can overload this method to return true if they
+ * contain settings that have been modified since they were last applied to
+ * Tor. The default implementation always returns false. */
+ virtual bool changedSinceLastApply() {
+ return false;
+ }
+ /** Subclassed pages can overload this method to apply any settings to
+ * Tor that have been modified since they were last applied (e.g., the
+ * changes were made while Tor was not running). Returns true if the changes
+ * were applied successfully. */
+ virtual bool apply(QString &errmsg) {
+ Q_UNUSED(errmsg);
+ return true;
+ }
+ /** Subclassed pages can overload this method to revert any cancelled
+ * settings. */
+ virtual void revert() {}
+
+ virtual void retranslateUi() {}
+
+signals:
+ /** Signal emitted when a ConfigPage requests help information on a given
+ * <b>topic</b>. */
+ void helpRequested(const QString &topic);
+
+private:
+ QString _title; /**< Title of this configuration page. */
+};
+
+#endif
+
Property changes on: vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin
___________________________________________________________________
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/vidalia/HerdictWebReporterPlugin:3435-3484
/vidalia/trunk/src/vidalia/HerdictWebReporterPlugin:3787-3820
Modified: vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/HerdictWebReporterPlugin/CMakeLists.txt 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/CMakeLists.txt 2009-08-02 22:36:39 UTC (rev 3990)
@@ -38,4 +38,8 @@
)
add_library(herdictwebreporterplugin STATIC ${herdictwebreporterplugin_SRCS})
-target_link_libraries(herdictwebreporterplugin ${QT_LIBRARIES})
+target_link_libraries(herdictwebreporterplugin
+ ${QT_LIBRARIES}
+ vidaliaplugin
+)
+
Copied: vidalia/branches/extension-api/src/plugins/PluginManager.cpp (from rev 3989, vidalia/branches/extension-api/src/vidalia/PluginManager.cpp)
===================================================================
--- vidalia/branches/extension-api/src/plugins/PluginManager.cpp (rev 0)
+++ vidalia/branches/extension-api/src/plugins/PluginManager.cpp 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,173 @@
+/*
+** This file is part of Vidalia, and is subject to the license terms in the
+** LICENSE file, found in the top level directory of this distribution. If you
+** did not receive the LICENSE file with this file, you may obtain it from the
+** Vidalia source package distributed by the Vidalia Project at
+** http://www.vidalia-project.net/. No part of Vidalia, including this file,
+** may be copied, modified, propagated, or distributed except according to the
+** terms described in the LICENSE file.
+*/
+
+/*
+** \file PluginManager.cpp
+** \version $Id$
+** \brief Class for loading and managing plugins within Vidalia.
+*/
+
+#include "PluginManager.h"
+
+#include <QDir>
+#include <QPluginLoader>
+#include <QStringList>
+
+PluginManager::PluginManager(TorControl* torControl,
+ const QString& dataDirectory)
+: _dataDirectory(dataDirectory),
+ _torControl(torControl)
+{
+#if 0
+ _torControl->setEvent(TorEvents::ClientStatus, this, true);
+ _torControl->setEvent(TorEvents::GeneralStatus, this, true);
+ _torControl->setEvent(TorEvents::ServerStatus, this, true);
+#endif
+}
+
+PluginManager::~PluginManager()
+{
+ foreach(VidaliaPluginInterface* plugin, _pluginList) {
+ delete plugin;
+ }
+}
+
+void
+PluginManager::loadPlugins(const QString& applicationDirectory)
+{
+ foreach (QObject *plugin, QPluginLoader::staticInstances()) {
+ VidaliaPluginInterface* pluginInstance =
+ qobject_cast<VidaliaPluginInterface*>(plugin);
+ if (pluginInstance) {
+ pluginInstance->setPluginManager(this);
+ _pluginList.push_back(pluginInstance);
+ } else {
+ /* Invalid plugin type? */
+ }
+ }
+#if 0
+ QDir dataPluginsDir = QDir(dataDirectory);
+ QDir applicationPluginsDir = QDir(applicationDirectory);
+#if defined(Q_OS_WIN)
+#elif defined(Q_OS_OSX)
+ applicationPluginsDir.cdup();
+ applicationPluginsDir.cd("Resources");
+#else
+ // *nix's
+#endif
+ applicationPluginsDir.cd("Plugins");
+
+ /* I'll fix the copy-paste later. */
+ foreach (QString fileName, applicationPluginsDir.entryList(QDir::Files)) {
+ QPluginLoader loader(applicationPluginsDir.absoluteFilePath(fileName));
+ VidaliaPluginInterface* pluginInstance =
+ qobject_cast<VidaliaPluginInterface*>(loader.instance());
+ if (pluginInstance) {
+ pluginInstance->setPluginManager(this);
+ _pluginList.push_back(pluginInstance);
+ } else {
+ /* Either not a plugin file or not a vidaliaplugininterface plugin */
+ }
+ }
+
+ foreach (QString fileName, dataPluginsDir.entryList(QDir::Files)) {
+ QPluginLoader loader(dataPluginsDir.absoluteFilePath(fileName));
+ VidaliaPluginInterface* pluginInstance =
+ qobject_cast<VidaliaPluginInterface*>(loader.instance());
+ if (pluginInstance) {
+ pluginInstance->setPluginManager(this);
+ _pluginList.push_back(pluginInstance);
+ } else {
+ /* Either not a plugin file or not a vidaliaplugininterface plugin */
+ }
+ }
+#endif
+}
+
+
+QList<VidaliaPluginInterface*>
+PluginManager::plugins() const
+{
+ return _pluginList;
+}
+
+VidaliaPluginInterface*
+PluginManager::getPluginById(const QString& id) const
+{
+ foreach(VidaliaPluginInterface* plugin, _pluginList) {
+ if (id == plugin->id())
+ return plugin;
+ }
+ return 0;
+}
+
+QString
+PluginManager::dataDirectory() const
+{
+ return _dataDirectory;
+}
+
+void
+PluginManager::showHelpTopic(const QString &topic)
+{
+ emit helpRequested(topic);
+}
+
+void
+PluginManager::newIdentity()
+{
+ emit newIdentityRequest();
+}
+
+void
+PluginManager::startProxy()
+{
+ emit startProxyRequest();
+}
+
+void
+PluginManager::stopProxy()
+{
+ emit stopProxyRequest();
+}
+
+void
+PluginManager::sendProxyStatus(PMStatus status)
+{
+ switch(status) {
+ case pmStarting:
+ case pmStarted:
+ emit proxyStarted();
+ break;
+ case pmStopping:
+ case pmStopped:
+ emit proxyStopped();
+ break;
+ }
+}
+
+void
+PluginManager::sendTorStatus(PMStatus status)
+{
+ switch(status) {
+ case pmStarting:
+ emit torStarting();
+ break;
+ case pmStarted:
+ emit torStarted();
+ break;
+ case pmStopping:
+ emit torStopping();
+ break;
+ case pmStopped:
+ emit torStopped();
+ break;
+ }
+}
Property changes on: vidalia/branches/extension-api/src/plugins/PluginManager.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/vidalia/PluginManager.cpp:3435-3484
/vidalia/trunk/src/vidalia/PluginManager.cpp:3787-3820
Added: svn:eol-style
+ native
Copied: vidalia/branches/extension-api/src/plugins/PluginManager.h (from rev 3989, vidalia/branches/extension-api/src/vidalia/PluginManager.h)
===================================================================
--- vidalia/branches/extension-api/src/plugins/PluginManager.h (rev 0)
+++ vidalia/branches/extension-api/src/plugins/PluginManager.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,109 @@
+/*
+** This file is part of Vidalia, and is subject to the license terms in the
+** LICENSE file, found in the top level directory of this distribution. If you
+** did not receive the LICENSE file with this file, you may obtain it from the
+** Vidalia source package distributed by the Vidalia Project at
+** http://www.vidalia-project.net/. No part of Vidalia, including this file,
+** may be copied, modified, propagated, or distributed except according to the
+** terms described in the LICENSE file.
+*/
+
+/*
+** \file PluginManager.h
+** \version $Id$
+** \brief Class for loading and managing plugins within Vidalia.
+*/
+
+#ifndef _PLUGINMANAGER_H
+#define _PLUGINMANAGER_H
+
+#include "TorControl.h"
+#include "VidaliaPluginInterface.h"
+
+#include <QList>
+#include <QObject>
+#include <QString>
+
+class MainWindow;
+class VidaliaPluginInterface;
+
+/** Used to simply signal emission for PluginManager */
+enum PMStatus {
+ pmStarting = 0,
+ pmStarted,
+ pmStopping,
+ pmStopped
+};
+
+/** Class for the loading and managing of dynamic and static plugins from within
+ * Vidalia. Provides an interface for plugins to interact with the Vidalia
+ * application as well providing a number of useful functions for interplugin
+ * communication. */
+class PluginManager : public QObject
+{
+ Q_OBJECT
+
+ friend class MainWindow;
+
+public:
+ /** PluginManager constructor. */
+ PluginManager(TorControl* torControl, const QString& dataDirectory);
+ /** PluginManager destructor. */
+ ~PluginManager();
+ /** Loads all included static and dynamic plugins. */
+ void loadPlugins(const QString& applicationDirectory);
+ /** Returns a QList of all loaded plugin instances. */
+ QList<VidaliaPluginInterface*> plugins() const;
+ /** Returns the specified plugin for 0 if not found. */
+ VidaliaPluginInterface* getPluginById(const QString& id) const;
+ /** Return the location of the users data directory plugin directory. */
+ QString dataDirectory() const;
+
+public slots:
+ /** Request MainWindow to start using a new Tor identity */
+ void newIdentity();
+ void startProxy();
+ void stopProxy();
+ /** Displays the Vidalia help viewer with the current page set to
+ * <b>topic</b>. */
+ void showHelpTopic(const QString &topic);
+
+signals:
+ /** Sends a signal to MainWindow requesting the Vidalia Help Dialog */
+ void helpRequested(const QString& topic);
+ /** Sends a signal to MainWindow requesting a NEWNYM message be sent to Tor */
+ void newIdentityRequest();
+ /** Sends a signal to MainWindow requesting the Proxy Server be started */
+ void startProxyRequest();
+ /** Sends a signal to MainWindow requesting the Proxy server be stopped */
+ void stopProxyRequest();
+
+ /** Send a signal signifying that Tor is starting */
+ void torStarting();
+ /** Send a signal signifying that Tor is started */
+ void torStarted();
+ /** Send a signal signifying that Tor is stopping */
+ void torStopping();
+ /** Send a signal signifying that Tor is stopped */
+ void torStopped();
+ /** Send a signal signifying that the Proxy server is starting */
+ void proxyStarting();
+ /** Send a signal signifying that the Proxy server is started */
+ void proxyStarted();
+ /** Send a signal signifying that the Proxy server is stopping */
+ void proxyStopping();
+ /** Send a signal signifying that the Proxy server is stopped */
+ void proxyStopped();
+
+private:
+ /** Emit proxy status signal based on provided status value */
+ void sendProxyStatus(PMStatus status);
+ /** Emit tor status signal based on provided status value */
+ void sendTorStatus(PMStatus status);
+
+ QList<VidaliaPluginInterface*> _pluginList;
+ const QString _dataDirectory;
+ TorControl* _torControl;
+};
+
+#endif
Property changes on: vidalia/branches/extension-api/src/plugins/PluginManager.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/vidalia/PluginManager.h:3435-3484
/vidalia/trunk/src/vidalia/PluginManager.h:3787-3820
Added: svn:eol-style
+ native
Copied: vidalia/branches/extension-api/src/plugins/VidaliaPanel.h (from rev 3989, vidalia/branches/extension-api/src/vidalia/VidaliaPanel.h)
===================================================================
--- vidalia/branches/extension-api/src/plugins/VidaliaPanel.h (rev 0)
+++ vidalia/branches/extension-api/src/plugins/VidaliaPanel.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,56 @@
+/*
+** This file is part of Vidalia, and is subject to the license terms in the
+** LICENSE file, found in the top level directory of this distribution. If you
+** did not receive the LICENSE file with this file, you may obtain it from the
+** Vidalia source package distributed by the Vidalia Project at
+** http://www.vidalia-project.net/. No part of Vidalia, including this file,
+** may be copied, modified, propagated, or distributed except according to the
+** terms described in the LICENSE file.
+*/
+
+/*
+** \file VidaliaPanel.h
+** \version $Id$
+** \brief Defines the Vidalia panel containing a tab and corresponding panel.
+*/
+
+#ifndef _VIDALIAPANEL_H
+#define _VIDALIAPANEL_H
+
+#include "VidaliaPluginInterface.h"
+
+#include <QIcon>
+#include <QMainWindow>
+#include <QString>
+#include <QWidget>
+
+class VidaliaPluginInterface;
+
+/** A Vidalia Panel. Includes a tab entry on the main window and a displayable
+ * panel for when the tab is highlighted. */
+class VidaliaPanel : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ /** Constructor for a Vidalia Panel. */
+ VidaliaPanel(VidaliaPluginInterface* parent) : QMainWindow(),
+ _parentPlugin(parent) {}
+ /** Destructor for a Vidalia Panel. */
+ virtual ~VidaliaPanel() {}
+ /** Returns the label to be displayed on the panel's tab. */
+ virtual QString tabLabel() const = 0;
+ /** Returns the icon to be displayed adjacent to the tabLabel. */
+ virtual QIcon tabIcon() const = 0;
+ /** Returns the status widget to be displayed when panel is in focus */
+ virtual QWidget* statusWidget() const {return 0;}
+
+protected:
+ const VidaliaPluginInterface* const plugin() const {return _parentPlugin;}
+
+private:
+ VidaliaPluginInterface* _parentPlugin;
+};
+
+#endif
+
Property changes on: vidalia/branches/extension-api/src/plugins/VidaliaPanel.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/vidalia/VidaliaPanel.h:3435-3484
/vidalia/trunk/src/vidalia/VidaliaPanel.h:3787-3820
Added: svn:eol-style
+ native
Copied: vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp (from rev 3989, vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.cpp)
===================================================================
--- vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp (rev 0)
+++ vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,48 @@
+/*
+** This file is part of Vidalia, and is subject to the license terms in the
+** LICENSE file, found in the top level directory of this distribution. If you
+** did not receive the LICENSE file with this file, you may obtain it from the
+** Vidalia source package distributed by the Vidalia Project at
+** http://www.vidalia-project.net/. No part of Vidalia, including this file,
+** may be copied, modified, propagated, or distributed except according to the
+** terms described in the LICENSE file.
+*/
+
+/*
+** \file VidaliaPluginInterface.cpp
+** \version $Id$
+** \brief Defines the Vidalia plugin interface.
+*/
+
+#include "VidaliaPluginInterface.h"
+
+VidaliaPluginInterface::VidaliaPluginInterface()
+{
+}
+
+QString
+VidaliaPluginInterface::dataDirectory() const
+{
+ QString dir = _pluginManager->dataDirectory() + id();
+ return dir;
+}
+
+QSettings*
+VidaliaPluginInterface::settings() const
+{
+ QSettings* setting = new QSettings(dataDirectory(), QSettings::IniFormat);
+ return setting;
+}
+
+void
+VidaliaPluginInterface::setPluginManager(PluginManager* pluginManager)
+{
+ _pluginManager = pluginManager;
+}
+
+void
+VidaliaPluginInterface::showHelpTopic(const QString &topic) const
+{
+ _pluginManager->showHelpTopic(topic);
+}
+
Property changes on: vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp
___________________________________________________________________
Added: svn::keywords
+ Id
Added: svn::eol-style
+ native
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/vidalia/VidaliaPluginInterface.cpp:3435-3484
/vidalia/trunk/src/vidalia/VidaliaPluginInterface.cpp:3787-3820
Copied: vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h (from rev 3989, vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.h)
===================================================================
--- vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h (rev 0)
+++ vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,93 @@
+/*
+** This file is part of Vidalia, and is subject to the license terms in the
+** LICENSE file, found in the top level directory of this distribution. If you
+** did not receive the LICENSE file with this file, you may obtain it from the
+** Vidalia source package distributed by the Vidalia Project at
+** http://www.vidalia-project.net/. No part of Vidalia, including this file,
+** may be copied, modified, propagated, or distributed except according to the
+** terms described in the LICENSE file.
+*/
+
+/*
+** \file VidaliaPluginInterface.h
+** \version $Id$
+** \brief Defines the Vidalia plugin interface.
+*/
+
+#ifndef _VIDALIAPLUGININTERFACE_H
+#define _VIDALIAPLUGININTERFACE_H
+
+#include "PluginManager.h"
+#include "VidaliaPanel.h"
+#include "VidaliaWidget.h"
+#include "ConfigPage.h"
+
+#include <QObject>
+#include <QtPlugin>
+#include <QSettings>
+#include <QString>
+
+class PluginManager;
+class QAction;
+class VidaliaPanel;
+
+/** API for vidalia plugins. Plugins have the ability to implement the various
+ * included functions in order to display themselves and have menu entries. If
+ * a plugin does not implement a given function then that functionality will
+ * not be included for the plugin. */
+class VidaliaPluginInterface : public QObject
+{
+ Q_OBJECT
+
+ friend class PluginManager;
+
+public:
+ /** Superclass constructor for plugins */
+ VidaliaPluginInterface();
+ /** Virtual destructor */
+ virtual ~VidaliaPluginInterface() {}
+ /** Virtual class to allow for display of a panel name */
+ virtual VidaliaPanel* panel() { return 0; }
+ /** Virtual function to return a plugin's widget. */
+ virtual VidaliaWidget* widget() { return 0; }
+ /** Virtual function to return any file menu entries a plugin has. */
+ virtual QAction* fileMenuEntry() const { return 0; }
+ /** Virtual function to return any tray menu entries a plugin has. */
+ virtual QAction* trayMenuEntry() const { return 0; }
+ /** Virtual function return a configuration page for a plugin. */
+ virtual ConfigPage* preferenceMenuEntry() const { return 0; }
+ /** Virtual function to allow for UI retranslation. */
+ virtual void retranslateUi() {}
+ /** Virtual function to return a human readable name for a plugin. */
+ virtual QString name() const = 0;
+ /** Virtual function return a unique (spaceless) name for a plugin */
+ virtual QString id() const = 0;
+ /** Virtual function to return a plugin's description. */
+ virtual QString description() const { return QString(); }
+ /** Returns a plugins data directory. */
+ QString dataDirectory() const;
+
+ /** Returns a QSettings object for plugins to load and save configurations.
+ * Plugin is responsible for managing the QSettings object.
+ */
+ QSettings* settings() const;
+
+ /** Displays Vidalia's Help dialog with the focus set to the specified
+ * <b>topic</b>.
+ */
+ void showHelpTopic(const QString &topic) const;
+
+protected:
+ /** A singleton instance of the plugin manager. */
+ PluginManager* _pluginManager;
+
+private:
+ /** Allows the Plugin Manager to pass an instance of itself to the plugin. */
+ void setPluginManager(PluginManager* pluginManager);
+};
+
+Q_DECLARE_INTERFACE(VidaliaPluginInterface,
+ "net.vidalia-project.vidalia.VidaliaPluginInterface/1.0")
+
+#endif
+
Property changes on: vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/vidalia/VidaliaPluginInterface.h:3435-3484
/vidalia/trunk/src/vidalia/VidaliaPluginInterface.h:3787-3820
Added: svn:eol-style
+ native
Copied: vidalia/branches/extension-api/src/plugins/VidaliaWidget.h (from rev 3989, vidalia/branches/extension-api/src/vidalia/VidaliaWidget.h)
===================================================================
--- vidalia/branches/extension-api/src/plugins/VidaliaWidget.h (rev 0)
+++ vidalia/branches/extension-api/src/plugins/VidaliaWidget.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -0,0 +1,28 @@
+/*
+** This file is part of Vidalia, and is subject to the license terms in the
+** LICENSE file, found in the top level directory of this distribution. If you
+** did not receive the LICENSE file with this file, you may obtain it from the
+** Vidalia source package distributed by the Vidalia Project at
+** http://www.vidalia-project.net/. No part of Vidalia, including this file,
+** may be copied, modified, propagated, or distributed except according to the
+** terms described in the LICENSE file.
+*/
+
+/*
+** \file VidaliaWidget.h
+** \version $Id$
+** \brief Defines the Vidalia widget, a displayable entity living on the dashboard.
+*/
+
+#include <QWidget>
+
+/** A Vidalia Widget. A displayable entity that lives on a user's dashboard.
+ * Typically "lighter" than a VidaliaPanel. */
+class VidaliaWidget : public QWidget
+{
+public:
+ /** Constructor for a Vidalia Widget. */
+ VidaliaWidget();
+ /** Destructor for a Vidalia Widget. */
+ ~VidaliaWidget();
+};
Property changes on: vidalia/branches/extension-api/src/plugins/VidaliaWidget.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/vidalia/VidaliaWidget.h:3435-3484
/vidalia/trunk/src/vidalia/VidaliaWidget.h:3787-3820
Added: svn:eol-style
+ native
Property changes on: vidalia/branches/extension-api/src/plugins/WebBrowserPlugin
___________________________________________________________________
Added: svn:mergeinfo
+ /vidalia/branches/marble/src/WebBrowserPlugin:3435-3484
/vidalia/trunk/src/WebBrowserPlugin:3787-3820
Modified: vidalia/branches/extension-api/src/vidalia/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/CMakeLists.txt 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/CMakeLists.txt 2009-08-02 22:36:39 UTC (rev 3990)
@@ -20,6 +20,7 @@
${CMAKE_CURRENT_SOURCE_DIR}/help/browser
${CMAKE_CURRENT_SOURCE_DIR}/log
${CMAKE_CURRENT_SOURCE_DIR}/tray
+ ${Vidalia_SOURCE_DIR}/src/plugins
${MARBLE_INCLUDE_DIR}
)
if (APPLE OR WIN32)
@@ -50,16 +51,15 @@
## Search for plugin libraries
link_directories(
- DashboardPlugin
HomePlugin
+ DashboardPlugin
MessageLogPlugin
NetworkMapPlugin
)
## Process the static plugins
-add_subdirectory(DashboardPlugin)
-add_subdirectory(HerdictWebReporterPlugin)
add_subdirectory(HomePlugin)
+add_subdirectory(DashboardPlugin)
add_subdirectory(MessageLogPlugin)
add_subdirectory(NetworkMapPlugin)
@@ -123,7 +123,6 @@
config/BridgeDownloaderProgressDialog.h
config/BridgeUsageDialog.h
config/ConfigDialog.h
- config/ConfigPage.h
config/ConfigPageStack.h
config/DomainValidator.h
config/GeneralPage.h
@@ -184,8 +183,6 @@
VMessageBox.cpp
HelperProcess.cpp
ControlPasswordInputDialog.cpp
- PluginManager.cpp
- VidaliaPluginInterface.cpp
)
qt4_wrap_cpp(vidalia_SRCS
Vidalia.h
@@ -194,9 +191,6 @@
VMessageBox.h
HelperProcess.h
ControlPasswordInputDialog.h
- PluginManager.h
- VidaliaPanel.h
- VidaliaPluginInterface.h
)
## Specify all the Qt Designer .ui files
@@ -393,12 +387,11 @@
${QT_LIBRARIES}
${MARBLE_LIBRARIES}
common
- dashboardplugin
- herdictwebreporterplugin
+ torcontrol
homeplugin
+ dashboardplugin
messagelogplugin
networkmapplugin
- torcontrol
)
if (USE_MINIUPNPC)
target_link_libraries(${vidalia_BIN} miniupnpc)
Modified: vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -17,8 +17,8 @@
#ifndef _DASHBOARDPLUGIN_H
#define _DASHBOARDPLUGIN_H
-#include <vidalia/PluginManager.h>
-#include <vidalia/VidaliaPluginInterface.h>
+#include <PluginManager.h>
+#include <VidaliaPluginInterface.h>
#include <QObject>
Modified: vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt 2009-08-02 22:36:39 UTC (rev 3990)
@@ -32,4 +32,8 @@
)
add_library(homeplugin STATIC ${homeplugin_SRCS})
-target_link_libraries(homeplugin ${QT_LIBRARIES})
+target_link_libraries(homeplugin
+ ${QT_LIBRARIES}
+ vidaliaplugin
+)
+
Modified: vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePanel.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePanel.h 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePanel.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -17,7 +17,7 @@
#ifndef _HOMEPANEL_H
#define _HOMEPANEL_H
-#include <vidalia/VidaliaPanel.h>
+#include <VidaliaPanel.h>
#include <QIcon>
#include <QString>
Modified: vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -17,7 +17,7 @@
#ifndef _HOMEPLUGIN_H
#define _HOMEPLUGIN_H
-#include <vidalia/VidaliaPluginInterface.h>
+#include <VidaliaPluginInterface.h>
#include <QObject>
#include <QString>
Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt 2009-08-02 22:36:39 UTC (rev 3990)
@@ -37,4 +37,8 @@
)
add_library(messagelogplugin STATIC ${messagelogplugin_SRCS})
-target_link_libraries(messagelogplugin ${QT_LIBRARIES})
+target_link_libraries(messagelogplugin
+ ${QT_LIBRARIES}
+ vidaliaplugin
+)
+
Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -17,7 +17,7 @@
#ifndef _MESSAGELOGPLUGIN_H
#define _MESSAGELOGPLUGIN_H
-#include <vidalia/VidaliaPluginInterface.h>
+#include <VidaliaPluginInterface.h>
#include <QObject>
Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CMakeLists.txt 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CMakeLists.txt 2009-08-02 22:36:39 UTC (rev 3990)
@@ -75,4 +75,8 @@
)
add_library(networkmapplugin STATIC ${networkmapplugin_SRCS})
-target_link_libraries(networkmapplugin ${QT_LIBRARIES})
+target_link_libraries(networkmapplugin
+ ${QT_LIBRARIES}
+ vidaliaplugin
+)
+
Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h 2009-08-02 22:36:39 UTC (rev 3990)
@@ -21,7 +21,7 @@
#include <QObject>
-#include <vidalia/VidaliaPluginInterface.h>
+#include <VidaliaPluginInterface.h>
/** Plugin for viewer the user's network panel, containing a visual display of
* the Tor network. */
Modified: vidalia/branches/extension-api/src/vidalia/main.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/main.cpp 2009-07-31 02:02:03 UTC (rev 3989)
+++ vidalia/branches/extension-api/src/vidalia/main.cpp 2009-08-02 22:36:39 UTC (rev 3990)
@@ -37,7 +37,6 @@
Q_IMPORT_PLUGIN(dashboardplugin)
Q_IMPORT_PLUGIN(networkmapplugin)
Q_IMPORT_PLUGIN(messagelogplugin)
-Q_IMPORT_PLUGIN(herdictwebreporterplugin)
extern "C" void
signal_handler(int signal)