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