[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)