[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[vidalia-svn] r1511: Add an option to the circuit context menu to zoom in on a ci (trunk/src/gui/network)
Author: edmanm
Date: 2006-12-09 22:57:08 -0500 (Sat, 09 Dec 2006)
New Revision: 1511
Modified:
trunk/src/gui/network/circuitlistwidget.cpp
trunk/src/gui/network/circuitlistwidget.h
trunk/src/gui/network/netviewer.cpp
trunk/src/gui/network/tormapwidget.cpp
trunk/src/gui/network/tormapwidget.h
Log:
Add an option to the circuit context menu to zoom in on a circuit, like we do
for servers in the server list.
Modified: trunk/src/gui/network/circuitlistwidget.cpp
===================================================================
--- trunk/src/gui/network/circuitlistwidget.cpp 2006-12-09 21:37:59 UTC (rev 1510)
+++ trunk/src/gui/network/circuitlistwidget.cpp 2006-12-10 03:57:08 UTC (rev 1511)
@@ -31,6 +31,7 @@
#include "circuitlistwidget.h"
#define IMG_CLOSE ":/images/16x16/network-offline.png"
+#define IMG_ZOOM ":/images/16x16/zoom.png"
#define CLOSED_CIRCUIT_REMOVE_DELAY 3000
#define FAILED_CIRCUIT_REMOVE_DELAY 5000
@@ -51,7 +52,10 @@
/* Set up the circuit item context menu */
_circuitContextMenu = new QMenu(this);
+ _zoomCircuitAct = new QAction(QIcon(IMG_ZOOM), tr("Zoom to Circuit"), this);
_closeCircuitAct = new QAction(QIcon(IMG_CLOSE), tr("Close Circuit"), this);
+ _circuitContextMenu->addAction(_zoomCircuitAct);
+ _circuitContextMenu->addSeparator();
_circuitContextMenu->addAction(_closeCircuitAct);
/* Set up the stream item context menu */
_streamContextMenu = new QMenu(this);
@@ -75,10 +79,15 @@
QPoint pos = e->globalPos();
if (!item->parent()) {
/* Circuit was right-clicked */
- quint64 circid = ((CircuitItem *)item)->id();
+ Circuit circ = ((CircuitItem *)item)->circuit();
+ quint64 circid = circ.id();
+ _zoomCircuitAct->setEnabled((circ.status() == Circuit::Built));
+
QAction* action = _circuitContextMenu->exec(pos);
if (action == _closeCircuitAct) {
emit closeCircuit(circid);
+ } else if (action == _zoomCircuitAct) {
+ emit zoomToCircuit(circid);
}
} else {
/* Stream was right-clicked */
Modified: trunk/src/gui/network/circuitlistwidget.h
===================================================================
--- trunk/src/gui/network/circuitlistwidget.h 2006-12-09 21:37:59 UTC (rev 1510)
+++ trunk/src/gui/network/circuitlistwidget.h 2006-12-10 03:57:08 UTC (rev 1511)
@@ -71,7 +71,9 @@
void closeCircuit(quint64 circid);
/** Emitted when the user selects a stream to be closed. */
void closeStream(quint64 streamid);
-
+ /** Emitted when the user selects a circuit to zoom to. */
+ void zoomToCircuit(quint64 circid);
+
public slots:
/** Clears all circuits and streams from the list. */
void clearCircuits();
@@ -105,6 +107,7 @@
/* Circuit and stream context menus and items */
QMenu* _circuitContextMenu; /**< Context menu for circuit items. */
QAction* _closeCircuitAct; /**< Closes a circuit. */
+ QAction* _zoomCircuitAct; /**< Zoom to a circuit. */
QMenu* _streamContextMenu; /**< Context menu for stream items. */
QAction* _closeStreamAct; /**< Closes a stream. */
Modified: trunk/src/gui/network/netviewer.cpp
===================================================================
--- trunk/src/gui/network/netviewer.cpp 2006-12-09 21:37:59 UTC (rev 1510)
+++ trunk/src/gui/network/netviewer.cpp 2006-12-10 03:57:08 UTC (rev 1511)
@@ -107,6 +107,8 @@
this, SLOT(circuitSelected(Circuit)));
connect(ui.treeCircuitList, SIGNAL(circuitRemoved(quint64)),
_map, SLOT(removeCircuit(quint64)));
+ connect(ui.treeCircuitList, SIGNAL(zoomToCircuit(quint64)),
+ _map, SLOT(zoomToCircuit(quint64)));
connect(ui.treeCircuitList, SIGNAL(closeCircuit(quint64)),
this, SLOT(closeCircuit(quint64)));
connect(ui.treeCircuitList, SIGNAL(closeStream(quint64)),
Modified: trunk/src/gui/network/tormapwidget.cpp
===================================================================
--- trunk/src/gui/network/tormapwidget.cpp 2006-12-09 21:37:59 UTC (rev 1510)
+++ trunk/src/gui/network/tormapwidget.cpp 2006-12-10 03:57:08 UTC (rev 1511)
@@ -284,6 +284,22 @@
}
}
+/** Zoom to the circuit on the map with the given <b>circid</b>. */
+void
+TorMapWidget::zoomToCircuit(quint64 circid)
+{
+ if (_circuits.contains(circid)) {
+ QPair<QPainterPath*,bool> *pair = _circuits.value(circid);
+ QRectF rect = ((QPainterPath *)pair->first)->boundingRect();
+ if (!rect.isNull()) {
+ float zoomLevel = 1.0 - qMax(rect.height()/float(MAP_HEIGHT),
+ rect.width()/float(MAP_WIDTH));
+
+ zoom(rect.center().toPoint(), zoomLevel+0.2);
+ }
+ }
+}
+
/** Zooms in on the router with the given <b>id</b>. */
void
TorMapWidget::zoomToRouter(QString id)
Modified: trunk/src/gui/network/tormapwidget.h
===================================================================
--- trunk/src/gui/network/tormapwidget.h 2006-12-09 21:37:59 UTC (rev 1510)
+++ trunk/src/gui/network/tormapwidget.h 2006-12-10 03:57:08 UTC (rev 1511)
@@ -68,6 +68,8 @@
void zoomToFit();
/** Zoom to a particular router on the map. */
void zoomToRouter(QString id);
+ /** Zoom to the circuit on the map with the given <b>circid</b>. */
+ void zoomToCircuit(quint64 circid);
protected:
/** Paints the current circuits and streams on the image. */