[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r3919: Updated plugin interface a bunch. Message log nearly impleme (in vidalia/branches/extension-api/src/vidalia: . DashboardPlugin HomePlugin MessageLogPlugin NetworkMapPlugin)



Author: tyree731
Date: 2009-06-28 23:32:02 -0400 (Sun, 28 Jun 2009)
New Revision: 3919

Added:
   vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.cpp
Modified:
   vidalia/branches/extension-api/src/vidalia/CMakeLists.txt
   vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.cpp
   vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h
   vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.cpp
   vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h
   vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.cpp
   vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.h
   vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.cpp
   vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.cpp
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h
   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.h
Log:
Updated plugin interface a bunch. Message log nearly implemented, need to finish settings for plugins.


Modified: vidalia/branches/extension-api/src/vidalia/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/CMakeLists.txt	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/CMakeLists.txt	2009-06-29 03:32:02 UTC (rev 3919)
@@ -185,6 +185,7 @@
   HelperProcess.cpp
   ControlPasswordInputDialog.cpp
   PluginManager.cpp
+  VidaliaPluginInterface.cpp
 )
 qt4_wrap_cpp(vidalia_SRCS
   Vidalia.h

Modified: vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.cpp	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.cpp	2009-06-29 03:32:02 UTC (rev 3919)
@@ -24,10 +24,23 @@
 {
 }
 
-QString DashboardPlugin::pluginHumanName() const
+QString 
+DashboardPlugin::name() const
 {
   return QString("Dashboard");
 }
 
+QString
+DashboardPlugin::id() const
+{
+  return QString("dashboard");
+}
+
+QString
+DashboardPlugin::description() const
+{
+  return QString("Vidalia Dashboard. Displays Vidalia Widgets.");
+}
+
 Q_EXPORT_PLUGIN2(dashboardplugin, DashboardPlugin)
 

Modified: vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/DashboardPlugin/DashboardPlugin.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -17,10 +17,11 @@
 #ifndef _DASHBOARDPLUGIN_H
 #define _DASHBOARDPLUGIN_H
 
+#include <vidalia/PluginManager.h>
+#include <vidalia/VidaliaPluginInterface.h>
+
 #include <QObject>
 
-#include <vidalia/VidaliaPluginInterface.h>
-
 class DashboardPlugin : public QObject, public VidaliaPluginInterface
 {
   Q_OBJECT
@@ -30,7 +31,9 @@
   DashboardPlugin();
   ~DashboardPlugin();
 
-  QString pluginHumanName() const;
+  QString name() const;
+  QString id() const;
+  QString description() const;
 };
 
 #endif

Modified: vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.cpp	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.cpp	2009-06-29 03:32:02 UTC (rev 3919)
@@ -25,10 +25,22 @@
 }
 
 QString 
-HomePlugin::pluginHumanName() const
+HomePlugin::name() const
 {
-  return QString("Home Panel");
+  return QString("Home");
 }
 
+QString
+HomePlugin::id() const
+{
+  return QString("home");
+}
+
+QString
+HomePlugin::description() const
+{
+  return QString("The Home Panel. Serves as a hub for the user experience.");
+}
+
 Q_EXPORT_PLUGIN2(homeplugin, HomePlugin)
 

Modified: vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/HomePlugin/HomePlugin.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -17,10 +17,11 @@
 #ifndef _HOMEPLUGIN_H
 #define _HOMEPLUGIN_H
 
+#include <vidalia/VidaliaPluginInterface.h>
+
 #include <QObject>
+#include <QString>
 
-#include <vidalia/VidaliaPluginInterface.h>
-
 class HomePlugin : public QObject, public VidaliaPluginInterface
 {
   Q_OBJECT
@@ -30,7 +31,9 @@
   HomePlugin();
   ~HomePlugin();
 
-  QString pluginHumanName() const;
+  QString name() const;
+  QString id() const;
+  QString description() const;
 };
 
 #endif

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.cpp	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.cpp	2009-06-29 03:32:02 UTC (rev 3919)
@@ -54,7 +54,7 @@
  * \param parent The parent widget of this MessageLog object.
  * \param flags Any desired window creation flags. 
  */
-MessageLog::MessageLog(QWidget *parent)
+MessageLog::MessageLog(MessageLogPlugin *parent)
 : VidaliaPanel(parent)
 {
   /* Invoke Qt Designer generated QObject setup routine */

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -18,6 +18,7 @@
 #define _MESSAGELOG_H
 
 #include "ui_MessageLog.h"
+#include "MessageLogPlugin.h"
 #include "VidaliaPanel.h"
 #include "LogFile.h"
 #include "LogTreeItem.h"
@@ -28,6 +29,7 @@
 #include <QStringList>
 #include <QResizeEvent>
 
+class MessageLogPlugin;
 
 class MessageLog : public VidaliaPanel
 {
@@ -35,7 +37,7 @@
 
 public:
   /** Default constructor **/
-  MessageLog(QWidget *parent = 0);
+  MessageLog(MessageLogPlugin* parent);
   /** Default destructor **/
   ~MessageLog();
 

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.cpp	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.cpp	2009-06-29 03:32:02 UTC (rev 3919)
@@ -27,23 +27,36 @@
     delete _messageLog;
 }
 
-QString MessageLogPlugin::pluginHumanName() const
+QString 
+MessageLogPlugin::name() const
 {
   return QString("Message Log");
 }
 
+QString
+MessageLogPlugin::id() const
+{
+  return QString("messagelog");
+}
+
+QString
+MessageLogPlugin::description() const
+{
+  return QString("The message log displays the output of the tor process.");
+}
+
 VidaliaPanel*
 MessageLogPlugin::panel()
 {
   if (!_messageLog)
-    init();
+    setupUI();
   return _messageLog;
 }
 
 void 
-MessageLogPlugin::init()
+MessageLogPlugin::setupUI()
 {
-  _messageLog = new MessageLog();
+  _messageLog = new MessageLog(this);
 }
 
 Q_EXPORT_PLUGIN2(messagelogplugin, MessageLogPlugin)

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -17,12 +17,14 @@
 #ifndef _MESSAGELOGPLUGIN_H
 #define _MESSAGELOGPLUGIN_H
 
-#include "MessageLog.h"
+#include <vidalia/VidaliaPluginInterface.h>
 
 #include <QObject>
 
-#include <vidalia/VidaliaPluginInterface.h>
+#include "MessageLog.h"
 
+class MessageLog;
+
 class MessageLogPlugin : public QObject, public VidaliaPluginInterface
 {
   Q_OBJECT
@@ -35,12 +37,14 @@
   /** Returns the panel to be displayed in the main window. */
   VidaliaPanel* panel();
   /** Returns the human readable plugin name for adding and removing plugins. */
-  QString pluginHumanName() const;
+  QString name() const;
+  QString id() const;
+  QString description() const;
 
 private:
   /** Bit of hackery to work around static plugin system. Can not instantiate a 
    * VidaliaPanel while qApp doesn't exist. */
-  void init();
+  void setupUI();
 
   /** The message log object. */
   MessageLog* _messageLog;

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.cpp	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.cpp	2009-06-29 03:32:02 UTC (rev 3919)
@@ -28,7 +28,7 @@
 }
 
 void
-NetworkMapPlugin::init()
+NetworkMapPlugin::setupUI()
 {
   _netViewer = new NetViewer();
 }
@@ -37,15 +37,27 @@
 NetworkMapPlugin::panel()
 {
   if (!_netViewer)
-    init();
+    setupUI();
   return _netViewer;
 }
 
 QString 
-NetworkMapPlugin::pluginHumanName() const
+NetworkMapPlugin::name() const
 {
   return QString("Network Map");
 }
 
+QString
+NetworkMapPlugin::id() const
+{
+  return QString("networkmap");
+}
+
+QString
+NetworkMapPlugin::description() const
+{
+  return QString("The network map gives a visual guide to the tor network.");
+}
+
 Q_EXPORT_PLUGIN2(networkmapplugin, NetworkMapPlugin)
 

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetworkMapPlugin.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -37,11 +37,13 @@
   /** Returns the vidalia panel to be displayed in the main window. */
   VidaliaPanel* panel();
   /** Returns the human readable plugin name for adding and removing plugins. */
-  QString pluginHumanName() const;
+  QString name() const;
+  QString id() const;
+  QString description() const;
 private:
   /** Bit of hackery to work around static plugin system. Can not instantiate a 
    * VidaliaPanel while qApp doesn't exist. */
-  void init();
+  void setupUI();
   /** The network map object. */
   NetViewer* _netViewer;
 };

Modified: vidalia/branches/extension-api/src/vidalia/PluginManager.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/PluginManager.cpp	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/PluginManager.cpp	2009-06-29 03:32:02 UTC (rev 3919)
@@ -21,21 +21,25 @@
 #include <QStringList>
 
 PluginManager::PluginManager() 
+  : _dataDirectory(dataDirectory)
 {
 }
 
 PluginManager::~PluginManager() 
 {
+  foreach(VidaliaPluginInstance* plugin, _pluginList) {
+    delete plugin;
+  }
 }
 
 void 
-PluginManager::loadPlugins(QString applicationDirectory, QString dataDirectory)
+PluginManager::loadPlugins(QString applicationDirectory)
 {
   foreach (QObject *plugin, QPluginLoader::staticInstances()) {
     VidaliaPluginInterface* pluginInstance = 
       qobject_cast<VidaliaPluginInterface*>(plugin);
     if (pluginInstance) {
-      vInfo(pluginInstance->pluginHumanName());
+      pluginInstance->setPluginManager(this);
       _pluginList.push_back(pluginInstance);
     } else {
       /* Invalid plugin type? */
@@ -59,6 +63,7 @@
     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 */
@@ -70,6 +75,7 @@
     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 */
@@ -84,3 +90,9 @@
 {
   return _pluginList;
 }
+
+QString
+PluginManager::dataDirectory const
+{
+  return _dataDirectory;
+}

Modified: vidalia/branches/extension-api/src/vidalia/PluginManager.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/PluginManager.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/PluginManager.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -14,13 +14,16 @@
 ** \brief Class for loading and managing plugins within Vidalia.
 */
 
-#include "Vidalia.h"
+#ifndef _PLUGINMANAGER_H
+#define _PLUGINMANAGER_H
 
+#include "VidaliaPluginInterface.h"
+
 #include <QList>
 #include <QObject>
 #include <QString>
 
-#include "VidaliaPluginInterface.h"
+class VidaliaPluginInterface;
 
 /** Class for the loading and managing of dynamic and static plugins from within
  * Vidalia. Provides an interface for plugins to interact with the Vidalia
@@ -30,13 +33,18 @@
 {
 public:
   /** PluginManager constructor. */
-  PluginManager();
+  PluginManager(QString dataDirectory);
   /** PluginManager destructor. */
   ~PluginManager();
   /** Loads all included static and dynamic plugins. */
-  void loadPlugins(QString applicationDirectory, QString dataDirectory);
+  void loadPlugins(QString applicationDirectory);
   /** Returns a QList of all loaded plugin instances. */
   QList<VidaliaPluginInterface*> plugins() const;
+  /** Return the location of the users data directory plugin directory. */
+  QString dataDirectory() const;
 private:
   QList<VidaliaPluginInterface*> _pluginList;
+  QString _dataDirectory;
 };
+
+#endif

Modified: vidalia/branches/extension-api/src/vidalia/VidaliaPanel.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/VidaliaPanel.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/VidaliaPanel.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -17,24 +17,31 @@
 #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
 {
 public:
   /** Constructor for a Vidalia Panel. */
-  VidaliaPanel(QWidget* parent = 0) : QMainWindow(parent) {}
+  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;
+private:
+  VidaliaPluginInterface* _parentPlugin;
 };
 
 #endif

Added: vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.cpp	                        (rev 0)
+++ vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.cpp	2009-06-29 03:32:02 UTC (rev 3919)
@@ -0,0 +1,37 @@
+/*
+**  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"
+
+QString 
+VidaliaPluginInterface::dataDirectory() const
+{
+  QString dir = _pluginManager->dataDirectory() + id();
+  return dir;;
+}
+
+QSettings*
+VidaliaPluginInterface::settings()
+{
+  QSettings* setting = new QSettings(dataDirectory, QSettings::IniFormat);
+  return setting;
+}
+
+void
+VidaliaPluginInterface::setPluginManager(PluginManager* pluginManager)
+{
+  _pluginManager = pluginManager;
+}


Property changes on: vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.cpp
___________________________________________________________________
Added: svn::keywords
   + Id
Added: svn::eol-style
   + native

Modified: vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.h	2009-06-29 03:01:25 UTC (rev 3918)
+++ vidalia/branches/extension-api/src/vidalia/VidaliaPluginInterface.h	2009-06-29 03:32:02 UTC (rev 3919)
@@ -17,14 +17,18 @@
 #ifndef _VIDALIAPLUGININTERFACE_H
 #define _VIDALIAPLUGININTERFACE_H
 
-#include <QtPlugin>
-#include <QString>
-
 #include "config/ConfigPage.h"
+#include "PluginManager.h"
 #include "VidaliaPanel.h"
 #include "VidaliaWidget.h"
 
+#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
@@ -32,6 +36,7 @@
  * not be included for the plugin. */
 class VidaliaPluginInterface
 {
+  friend class PluginManager;
 public:
   /** Virtual destructor */
   virtual ~VidaliaPluginInterface() {}
@@ -48,9 +53,21 @@
   /** Virtual function to allow for UI retranslation. */
   virtual void retranslateUI() {}
   /** Virtual function to return a human readable name for a plugin. */
-  virtual QString pluginHumanName() const = 0;
+  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 pluginDescription() const { return QString(); }
+  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();
+private:
+  /** A singleton instance of the plugin manager. */
+  PluginManager* _pluginManager;
+  /** Allows the Plugin Manager to pass an instance of itself to the plugin. */
+  void setPluginManager(PluginManager* pluginManager);
 };
 
 Q_DECLARE_INTERFACE(VidaliaPluginInterface,