diff --git a/ui/tor_button.js b/ui/tor_button.js index 3d53b2d..20cf542 100644 --- a/ui/tor_button.js +++ b/ui/tor_button.js @@ -24,6 +24,9 @@ const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const St = imports.gi.St; +const Me = imports.misc.extensionUtils.getCurrentExtension(); +const TorPopupMenu = Me.imports.ui.tor_popup_menu.TorPopupMenu; + const TorIcon = 'tor'; const TorButton = new Lang.Class({ @@ -42,19 +45,7 @@ const TorButton = new Lang.Class({ this.actor.add_child(this._icon); - this.menu.addAction('Switch Tor Identity', Lang.bind(this, function(event) { - this._switchTorIdentity(); - log('Switched to a new Tor identity!'); - })); - }, - - _switchTorIdentity: function() { - try { - this._torControlClient.switchIdentity(); - Main.notify('Switched to a new Tor identity! EEEEE'); - } catch (e) { - log(e); - Main.notifyError('Could not switch Tor identity: ' + e); - } + this._menu = new TorPopupMenu(this.actor, this._torControlClient); + this.setMenu(this._menu); } }); diff --git a/ui/tor_popup_menu.js b/ui/tor_popup_menu.js new file mode 100644 index 0000000..0f931ab --- /dev/null +++ b/ui/tor_popup_menu.js @@ -0,0 +1,51 @@ +// vim: set sw=4:ts=4 +/* +Copyright 2015 Frank Ploss . + +This file is part of gnome-shell-extension-tor. + +gnome-shell-extension-tor is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +gnome-shell-extension-tor is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with gnome-shell-extension-tor. If not, see ./ +*/ +'use strict'; + +const Lang = imports.lang; +const Main = imports.ui.main; +const PopupMenu = imports.ui.popupMenu; +const St = imports.gi.St; + +const TorPopupMenu = new Lang.Class({ + Name: 'TorPopupMenu', + Extends: PopupMenu.PopupMenu, + + _init: function(actor, torControlClient) { + this._torControlClient = torControlClient; + this.parent(actor, 0.25, St.Side.TOP); + + this._addActions(); + }, + + _addActions: function() { + this.addAction('Switch Tor Identity', Lang.bind(this, this._switchTorIdentity)); + }, + + _switchTorIdentity: function() { + try { + this._torControlClient.switchIdentity(); + Main.notify('Switched to a new Tor identity!'); + } catch (e) { + log(e); + Main.notifyError('Could not switch Tor identity: ' + e); + } + } +});