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

[vidalia-svn] r4016: After extensive revisions, all plugins load dynamically. Cur (in vidalia/branches/extension-api/src: common plugins plugins/HerdictWebReporterPlugin vidalia vidalia/DashboardPlugin vidalia/HomePlugin vidalia/MessageLogPlugin vidalia/NetworkMapPlugin)



Author: tyree731
Date: 2009-08-07 03:48:23 -0400 (Fri, 07 Aug 2009)
New Revision: 4016

Modified:
   vidalia/branches/extension-api/src/common/CMakeLists.txt
   vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/HerdictWebReporterPanel.cpp
   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/vidalia/CMakeLists.txt
   vidalia/branches/extension-api/src/vidalia/DashboardPlugin/CMakeLists.txt
   vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt
   vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt
   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/NetworkMapPlugin/CMakeLists.txt
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CircuitListWidget.cpp
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.cpp
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.h
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.cpp
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.h
   vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetViewer.cpp
Log:
After extensive revisions, all plugins load dynamically. Currently they load in alphabetical order (which makes the home plugin not necessarily first), but that can be dealt with later. Note to self: Make network map logging look nicer

Modified: vidalia/branches/extension-api/src/common/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/common/CMakeLists.txt	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/common/CMakeLists.txt	2009-08-07 07:48:23 UTC (rev 4016)
@@ -37,7 +37,7 @@
 endif(WIN32)
 
 
-add_library(common STATIC ${common_SRCS})
+add_library(common SHARED ${common_SRCS})
 target_link_libraries(common ${QT_LIBRARIES})
 
 if(OPENSSL_LIBRARIES)

Modified: vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/HerdictWebReporterPanel.cpp
===================================================================
--- vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/HerdictWebReporterPanel.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/plugins/HerdictWebReporterPlugin/HerdictWebReporterPanel.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -142,8 +142,7 @@
   QWebView* webView = qobject_cast<QWebView*>(sender());
 
   /* Hide the statusbar */
-  if (webView->page()->networkAccessManager()->proxy() == 
-      QNetworkProxy::DefaultProxy) {
+  if (webView->objectName() == "webViewPlain") {
     ui.progressPlain->hide();
   }
   else {
@@ -310,7 +309,7 @@
   /* Create the request */
   QString requestString;
   /* Hacktastic way of differentiating buttons */
-  if (button->autoRepeatDelay() == 301) {
+  if (button->objectName() == "buttonAccessible") {
     requestString = constructRequest(HerdictWebReporterPanel::Accessible);
   }
   else {

Modified: vidalia/branches/extension-api/src/plugins/PluginManager.cpp
===================================================================
--- vidalia/branches/extension-api/src/plugins/PluginManager.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/plugins/PluginManager.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -72,6 +72,11 @@
 
 }
 
+TorControl*
+PluginManager::torControl() const
+{
+  return _torControl;
+}
 
 QList<VidaliaPluginInterface*> 
 PluginManager::plugins() const

Modified: vidalia/branches/extension-api/src/plugins/PluginManager.h
===================================================================
--- vidalia/branches/extension-api/src/plugins/PluginManager.h	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/plugins/PluginManager.h	2009-08-07 07:48:23 UTC (rev 4016)
@@ -17,7 +17,6 @@
 #ifndef _PLUGINMANAGER_H
 #define _PLUGINMANAGER_H
 
-#include "TorControl.h"
 #include "VidaliaPluginInterface.h"
 #include "plugin_export.h"
 
@@ -25,6 +24,8 @@
 #include <QObject>
 #include <QString>
 
+#include <TorControl.h>
+
 class MainWindow;
 class VidaliaPluginInterface;
 
@@ -53,13 +54,12 @@
   ~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;
-
+  /** Return the torControl object given by mainwindow */
+  TorControl* torControl() const;
 public slots:
   /** Request MainWindow to start using a new Tor identity */
   void newIdentity();
@@ -97,6 +97,8 @@
   void proxyStopped();
 
 private:
+  /** Returns a QList of all loaded plugin instances. */
+  QList<VidaliaPluginInterface*> plugins() const;
   /** Emit proxy status signal based on provided status value */
   void sendProxyStatus(PMStatus status);
   /** Emit tor status signal based on provided status value */

Modified: vidalia/branches/extension-api/src/plugins/VidaliaPanel.h
===================================================================
--- vidalia/branches/extension-api/src/plugins/VidaliaPanel.h	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/plugins/VidaliaPanel.h	2009-08-07 07:48:23 UTC (rev 4016)
@@ -45,8 +45,7 @@
   virtual QIcon tabIcon() const = 0;
   /** Returns the status widget to be displayed when panel is in focus */
   virtual QWidget* statusWidget() const {return 0;}
-
-protected:
+  /** Returns the parent plugin of this panel */
   const VidaliaPluginInterface* const plugin() const {return _parentPlugin;}
 
 private:

Modified: vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp
===================================================================
--- vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -63,3 +63,8 @@
   _pluginManager->showHelpTopic(topic);
 }
 
+PluginManager*
+VidaliaPluginInterface::pluginManager() const
+{
+  return _pluginManager;
+}

Modified: vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h
===================================================================
--- vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/plugins/VidaliaPluginInterface.h	2009-08-07 07:48:23 UTC (rev 4016)
@@ -75,6 +75,9 @@
    */
   void showHelpTopic(const QString &topic) const;
 
+  /** Returns the plugin manager */
+  PluginManager* pluginManager() const;
+
 protected:
   /** A singleton instance of the plugin manager. */
   PluginManager* _pluginManager;

Modified: vidalia/branches/extension-api/src/vidalia/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/CMakeLists.txt	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/CMakeLists.txt	2009-08-07 07:48:23 UTC (rev 4016)
@@ -389,11 +389,6 @@
   common
   torcontrol
   vidaliaplugin
-  homeplugin
-  dashboardplugin
-  messagelogplugin
-  networkmapplugin
-#  herdictwebreporterplugin
 )
 if (USE_MINIUPNPC)
   target_link_libraries(${vidalia_BIN} miniupnpc)

Modified: vidalia/branches/extension-api/src/vidalia/DashboardPlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/DashboardPlugin/CMakeLists.txt	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/DashboardPlugin/CMakeLists.txt	2009-08-07 07:48:23 UTC (rev 4016)
@@ -18,5 +18,7 @@
   DashboardPlugin.h
 )
 
-add_library(dashboardplugin STATIC  ${dashboardplugin_SRCS})
-target_link_libraries(dashboardplugin ${QT_LIBRARIES})
+add_library(dashboardplugin MODULE ${dashboardplugin_SRCS})
+target_link_libraries(dashboardplugin ${QT_LIBRARIES}
+                                      vidaliaplugin
+)

Modified: vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/HomePlugin/CMakeLists.txt	2009-08-07 07:48:23 UTC (rev 4016)
@@ -31,7 +31,7 @@
   HomePanel.ui
 )
 
-add_library(homeplugin STATIC  ${homeplugin_SRCS})
+add_library(homeplugin MODULE ${homeplugin_SRCS})
 target_link_libraries(homeplugin
   ${QT_LIBRARIES}
   vidaliaplugin

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/CMakeLists.txt	2009-08-07 07:48:23 UTC (rev 4016)
@@ -36,9 +36,10 @@
   MessageLog.ui
 )
 
-add_library(messagelogplugin STATIC  ${messagelogplugin_SRCS})
+add_library(messagelogplugin MODULE ${messagelogplugin_SRCS})
 target_link_libraries(messagelogplugin
   ${QT_LIBRARIES}
+  torcontrol
   vidaliaplugin
 )
 

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -16,7 +16,6 @@
 
 #include "MessageLog.h"
 #include "Vidalia.h"
-#include "VMessageBox.h"
 
 #include "html.h"
 
@@ -54,16 +53,14 @@
  * \param parent The parent widget of this MessageLog object.
  * \param flags Any desired window creation flags. 
  */
-MessageLog::MessageLog(MessageLogPlugin *parent)
+MessageLog::MessageLog(MessageLogPlugin *parent, TorControl* torControl)
 : VidaliaPanel(parent),
+  _torControl(torControl),
   _statusWidget(new QLabel("",this))
 {
   /* Invoke Qt Designer generated QObject setup routine */
   ui.setupUi(this);
 
-  /* Create necessary Message Log QObjects */
-  _torControl = Vidalia::torControl();
- 
   /* Bind events to actions */
   createActions();
 
@@ -214,9 +211,9 @@
   QString errmsg;
   _filter = settings->value(SETTING_MSG_FILTER, DEFAULT_MSG_FILTER).toUInt();
   if (!_torControl->setLogEvents(_filter, this, &errmsg)) {
-    VMessageBox::warning(this, tr("Error Setting Filter"),
+    QMessageBox::warning(this, tr("Error Setting Filter"),
       p(tr("Vidalia was unable to register for Tor's log events.")) + p(errmsg),
-      VMessageBox::Ok);
+      QMessageBox::Ok);
   }
 
   /* Remove the settings object. */
@@ -233,9 +230,9 @@
   QString errmsg;
   if (_enableLogging) {
     if (!_logFile.open(filename, &errmsg)) {
-      VMessageBox::warning(this, tr("Error Opening Log File"),
+      QMessageBox::warning(this, tr("Error Opening Log File"),
         p(tr("Vidalia was unable to open the specified log file."))+p(errmsg),
-        VMessageBox::Ok);
+        QMessageBox::Ok);
       return false;
     }
   } else {
@@ -257,9 +254,9 @@
   if (_enableLogging && ui.lineFile->text().isEmpty()) {
     /* The user chose to enable logging messages to a file, but didn't specify
      * a log filename. */
-    VMessageBox::warning(this, tr("Log Filename Required"),
+    QMessageBox::warning(this, tr("Log Filename Required"),
       p(tr("You must enter a filename to be able to save log "
-           "messages to a file.")), VMessageBox::Ok);
+           "messages to a file.")), QMessageBox::Ok);
     return;
   }
   if (rotateLogFile(ui.lineFile->text())) {
@@ -342,11 +339,11 @@
     
     /* If can't write to file, show error message */
     if (!logFile.open(fileName, &errmsg)) {
-      VMessageBox::warning(this, tr("Vidalia"),
+      QMessageBox::warning(this, tr("Vidalia"),
                            p(tr("Cannot write file %1\n\n%2."))
                                                 .arg(fileName)
                                                 .arg(errmsg),
-                           VMessageBox::Ok);
+                           QMessageBox::Ok);
       return;
     }
    
@@ -400,9 +397,9 @@
     /* Search for the user-specified text */
     QList<LogTreeItem *> results = ui.lstMessages->find(text);
     if (!results.size()) {
-      VMessageBox::information(this, tr("Not Found"), 
+      QMessageBox::information(this, tr("Not Found"), 
                                p(tr("Search found 0 matches.")), 
-                               VMessageBox::Ok);
+                               QMessageBox::Ok);
     } else {
       /* Set the focus to the first match */
       ui.lstMessages->scrollToItem(results.at(0));

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.h	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLog.h	2009-08-07 07:48:23 UTC (rev 4016)
@@ -19,16 +19,17 @@
 
 #include "ui_MessageLog.h"
 #include "MessageLogPlugin.h"
-#include "VidaliaPanel.h"
+
 #include "LogFile.h"
 #include "LogTreeItem.h"
-#include "TorControl.h"
-#include "VidaliaSettings.h"
+#include <TorControl.h>
 
 #include <QMainWindow>
 #include <QStringList>
 #include <QResizeEvent>
 
+#include <VidaliaPanel.h>
+
 class MessageLogPlugin;
 
 class MessageLog : public VidaliaPanel
@@ -37,7 +38,7 @@
 
 public:
   /** Default constructor **/
-  MessageLog(MessageLogPlugin* parent);
+  MessageLog(MessageLogPlugin* parent, TorControl* torControl);
   /** Default destructor **/
   ~MessageLog();
 
@@ -92,8 +93,6 @@
 
   /** A pointer to a TorControl object, used to register for log events */
   TorControl* _torControl;
-  /** A VidaliaSettings object that handles getting/saving settings **/
-  VidaliaSettings* _settings;
   /** Stores the current message filter */
   uint _filter;
   /** Set to true if we will log all messages to a file. */  	 

Modified: vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/MessageLogPlugin/MessageLogPlugin.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -56,7 +56,7 @@
 void 
 MessageLogPlugin::setupUI()
 {
-  _messageLog = new MessageLog(this);
+  _messageLog = new MessageLog(this, _pluginManager->torControl());
 }
 
 Q_EXPORT_PLUGIN2(messagelogplugin, MessageLogPlugin)

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CMakeLists.txt
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CMakeLists.txt	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CMakeLists.txt	2009-08-07 07:48:23 UTC (rev 4016)
@@ -74,9 +74,10 @@
   res/NetworkMapPlugin.qrc
 )
 
-add_library(networkmapplugin STATIC  ${networkmapplugin_SRCS})
+add_library(networkmapplugin MODULE ${networkmapplugin_SRCS})
 target_link_libraries(networkmapplugin
   ${QT_LIBRARIES}
+  torcontrol
   vidaliaplugin
 )
 

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CircuitListWidget.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CircuitListWidget.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/CircuitListWidget.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -43,10 +43,13 @@
   connect(this, SIGNAL(customContextMenuRequested(QPoint)),
           this, SLOT(customContextMenuRequested(QPoint)));
 
+#if 0
   /* Respond to the Delete key by closing whatever circuits or streams are
    * selected. */
   vApp->createShortcut(QKeySequence::Delete, this, this,
                        SLOT(closeSelectedConnections()));
+#endif
+
 }
 
 /** Called when the user changes the UI translation. */

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -16,8 +16,10 @@
 
 #include "GeoIpCache.h"
 #include "GeoIpCacheItem.h"
+#include "GeoIpResolver.h"
 #include "GeoIp.h"
-#include "Vidalia.h"
+#include "NetViewer.h"
+#include "NetworkMapPlugin.h"
 
 #include "file.h"
 #include "stringutil.h"
@@ -26,12 +28,14 @@
 #include <QDir>
 #include <QString>
 #include <QDateTime>
+#include <QString>
+#include <QtDebug>
 #include <QTextStream>
 #include <QHostAddress>
 
-
-GeoIpCache::GeoIpCache(QObject *parent)
-  : QObject(parent)
+GeoIpCache::GeoIpCache(QObject *parent, QString dataDirectory)
+  : QObject(parent),
+    _dataDirectory(dataDirectory)
 {
   loadFromDisk();
 }
@@ -39,14 +43,14 @@
 QString
 GeoIpCache::cacheFileName() const
 {
-  return (Vidalia::dataDirectory() + "/geoip-cache");
+  return (_dataDirectory + "/geoip-cache");
 }
 
 bool
 GeoIpCache::saveToDisk(QString *errmsg)
 {
   /* Make sure we have a data directory. */
-  if (!create_path(Vidalia::dataDirectory())) {
+  if (!create_path(_dataDirectory)) {
     return false;
   }
   
@@ -102,8 +106,9 @@
 
       line = cache.readLine();
     }
-    vInfo("Parsed %1 GeoIP entries from '%2'").arg(_cache.size())
-                                              .arg(cacheFileName());
+
+    qDebug() << QString("Parsed %1 GeoIP entries from ").arg(_cache.size()) 
+             << cacheFileName();
   }
   return true;
 }

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.h	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpCache.h	2009-08-07 07:48:23 UTC (rev 4016)
@@ -21,10 +21,11 @@
 
 #include <QObject>
 #include <QMap>
+#include <QString>
 
 class GeoIp;
+class QHostAddress;
 class QString;
-class QHostAddress;
 
 typedef QMap<quint32, GeoIpCacheItem> GeoIpCacheMap;
 
@@ -35,7 +36,7 @@
 
 public:
   /** Default constructor. */
-  GeoIpCache(QObject *parent = 0);
+  GeoIpCache(QObject *parent = 0, QString dataDirectory = QString());
   
   /** Writes the current cache to disk. Returns true if the cache file was
    * successfully saved to disk. Otherwise, returns false and sets
@@ -81,6 +82,9 @@
 
   /**< List of cached GeoIp objects. */
   GeoIpCacheMap _cache;  
+
+  /** The data directory */
+  QString _dataDirectory;
 };
 
 #endif

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -18,8 +18,9 @@
 #include "GeoIpRequest.h"
 #include "GeoIpResponse.h"
 #include "GeoIp.h"
-#include "Vidalia.h"
 
+#include <QtDebug>
+
 #include "stringutil.h"
 #include "TorSslSocket.h"
 
@@ -32,12 +33,12 @@
 
 
 /** Default constructor. */
-GeoIpResolver::GeoIpResolver(QObject *parent)
+GeoIpResolver::GeoIpResolver(QObject *parent, QString dataDirectory)
   : QObject(parent)
 {
   _socksAddr = QHostAddress::LocalHost;
   _socksPort = 9050;
-  _cache = new GeoIpCache(this);
+  _cache = new GeoIpCache(this, dataDirectory);
 }
 
 /** Sets the address and port of Tor, through which GeoIP requests will be
@@ -77,7 +78,7 @@
 
   /* If any were cached, emit their results now */
   if (cached.size() > 0) {
-    vInfo("Resolved %1 GeoIP entries from cache.").arg(cached.size());
+    qDebug() << QString("Resolved %1 GeoIP entries from cache.").arg(cached.size());
     emit resolved(-1, cached);
   }
   return ips;
@@ -101,8 +102,7 @@
   }
   GeoIpRequest *req = static_cast<GeoIpRequest *>(_requestList.value(socket));
 
-  vInfo("Connected to the GeoIP host. Sending request for %1 uncached "
-        "GeoIP entries. (request id %2)").arg(req->size()).arg(req->id());
+  qDebug() << QString("Connected to the GeoIP host. Sending request for %1 uncached GeoIP entries. (request id %2)").arg(req->size()).arg(req->id());
 
   /* Send the request */
   socket->write(req->request());
@@ -130,8 +130,7 @@
   } else {
     /* We failed to get the Geo IP information, so emit resolveFailed and
      * include the HTTP status message. */
-    vWarn("GeoIP resolution failed (request id %1): %2").arg(req->id())
-                                             .arg(response.statusMessage());
+    qWarning() << QString("GeoIP resolution failed (request id %1): %2").arg(req->id()).arg(response.statusMessage());
     emit resolveFailed(req->id(), response.statusMessage());
   }
   /* Close the socket and clean up */
@@ -196,13 +195,12 @@
       continue;
 
 err:
-      vInfo("Ignored improperly formatted GeoIP record (request id %1): %2")
-                                               .arg(line).arg(request->id());
+      qDebug() << QString("Ignored improperly formatted GeoIP record (request id %1): %2").arg(line).arg(request->id());
     } else {
       /* This item wasn't requested, so just log it and ignore. */
-      vWarn("Received a GeoIP entry for IP address %1 that was not included "
-            "in the initial request. (request id %2)").arg(ip)
-                                                      .arg(request->id());
+      qWarning() << (QString("Received a GeoIP entry for IP address %1 that") + 
+                     QString(" was not included in the initial request.") +
+                     QString("request id %2)")).arg(ip.toString()).arg(request->id());
     }
   }
   /* If new results were cached, save them to disk */
@@ -210,8 +208,7 @@
     _cache->saveToDisk();
   
   /* Emit the results */
-  vInfo("Parsed %1 entries from the GeoIP response. (request id %2)")
-                                   .arg(geoIpList.size()).arg(request->id());
+  qDebug() << QString("Parsed %1 entries from the GeoIP response. (request id %2)").arg(geoIpList.size()).arg(request->id());
   emit resolved(request->id(), geoIpList);  
 }
 
@@ -232,8 +229,8 @@
     GeoIpRequest *req = static_cast<GeoIpRequest *>(_requestList.take(socket));
     emit resolveFailed(req->id(), errorString);
     socket->abort();
-    vWarn("GeoIP request socket error (request id %1): %2").arg(req->id())
-                                                           .arg(errorString);
+    qWarning() << (QString("GeoIP request socket error ") + 
+                   QString("(request id %1): %2")).arg(req->id()).arg(errorString);
     delete socket;
     delete req;
   }
@@ -274,7 +271,8 @@
   _requestList.insert(socket, request);
   
   /* Connect so we can send our request and return the request ID. */
-  vInfo("Opening an SSL connection to the GeoIP host at %1:%2 (request id %3)")
+  qDebug() << (QString("Opening an SSL connection to the GeoIP host at ") + 
+               QString("%1:%2 (request id %3)"))
                         .arg(GEOIP_HOST).arg(GEOIP_SSL_PORT).arg(request->id());
   socket->connectToRemoteHost(GEOIP_HOST, GEOIP_SSL_PORT, true);
 

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.h
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.h	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/GeoIpResolver.h	2009-08-07 07:48:23 UTC (rev 4016)
@@ -23,11 +23,11 @@
 #include <QList>
 #include <QHash>
 #include <QHostAddress>
+#include <QString>
 
 class GeoIp;
 class GeoIpRequest;
 class GeoIpResponse;
-class QString;
 class QAbstractSocket;
 
 
@@ -37,7 +37,7 @@
 
 public:
   /** Default constructor. */
-  GeoIpResolver(QObject *parent = 0);
+  GeoIpResolver(QObject *parent = 0, QString dataDirectory = QString());
   
   /** Sets the address and port of Tor, through which GeoIP requests will be
    * made. */

Modified: vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetViewer.cpp
===================================================================
--- vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetViewer.cpp	2009-08-07 00:27:04 UTC (rev 4015)
+++ vidalia/branches/extension-api/src/vidalia/NetworkMapPlugin/NetViewer.cpp	2009-08-07 07:48:23 UTC (rev 4016)
@@ -18,7 +18,6 @@
 #include "RouterInfoDialog.h"
 #include "RouterListItem.h"
 #include "Vidalia.h"
-#include "VMessageBox.h"
 
 #include <QMessageBox>
 #include <QHeaderView>
@@ -40,7 +39,8 @@
  * \param parent The parent widget of this NetViewer object.\
  */
 NetViewer::NetViewer(VidaliaPluginInterface* parent)
-  : VidaliaPanel(parent)
+  : VidaliaPanel(parent),
+    _geoip(this, parent->dataDirectory())
 {
   /* Invoke Qt Designer generated QObject setup routine */
   ui.setupUi(this);
@@ -50,7 +50,7 @@
 #endif
 
   /* Get the TorControl object */
-  _torControl = Vidalia::torControl();
+  _torControl = parent->pluginManager()->torControl();
   _torControl->setEvent(TorEvents::NewDescriptor, this, true);
   _torControl->setEvent(TorEvents::CircuitStatus, this, true);
   _torControl->setEvent(TorEvents::StreamStatus,  this, true);
@@ -71,7 +71,10 @@
           this, SLOT(displayRouterInfo(QString)));
   connect(ui.actionZoomFullScreen, SIGNAL(triggered()),
           this, SLOT(toggleFullScreen()));
+#if 0
   Vidalia::createShortcut("ESC", _map, this, SLOT(toggleFullScreen()));
+#endif
+
 #else
   _map = new TorMapImageView();
   ui.actionZoomFullScreen->setVisible(false);
@@ -456,8 +459,7 @@
      * request is for more than a quarter of the servers in the list. */
     if (isVisible() || 
         (_resolveQueue.size() >= ui.treeRouterList->topLevelItemCount()/4)) {
-      vInfo("Sending GeoIP request for %1 IP addresses.")
-                               .arg(_resolveQueue.size());
+      qDebug() << QString("Sending GeoIP request for %1 IP addresses.").arg(_resolveQueue.size());
       /* Flush the resolve queue and stop the timers */
       _geoip.resolve(_resolveQueue);
       _resolveQueue.clear();
@@ -518,9 +520,9 @@
   /* Fetch the specified router's descriptor */
   QStringList rd = _torControl->getRouterDescriptorText(id);
   if (rd.isEmpty()) {
-    VMessageBox::warning(this, tr("Relay Not Found"),
+    QMessageBox::warning(this, tr("Relay Not Found"),
                          tr("No details on the selected relay are available."),
-                         VMessageBox::Ok);
+                         QMessageBox::Ok);
     return;
   }