91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
import re, time, cgi, os, sys
|
|
from Plugin import PluginManager
|
|
from Config import config
|
|
import atexit
|
|
|
|
allow_reload = False # No reload supported
|
|
|
|
@PluginManager.registerTo("Actions")
|
|
class ActionsPlugin(object):
|
|
def main(self):
|
|
global notificationicon, winfolders
|
|
from lib import notificationicon, winfolders
|
|
import gevent.threadpool
|
|
|
|
self.main = sys.modules["main"]
|
|
|
|
icon = notificationicon.NotificationIcon(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'trayicon.ico'), "ZeroNet %s" % config.version)
|
|
self.icon = icon
|
|
|
|
if not config.debug: # Hide console if not in debug mode
|
|
notificationicon.hideConsole()
|
|
self.console = False
|
|
else:
|
|
self.console = True
|
|
|
|
@atexit.register
|
|
def hideIcon():
|
|
icon.die()
|
|
|
|
icon.items = (
|
|
(self.titleIp, False),
|
|
(self.titleConnections, False),
|
|
(self.titleTransfer, False),
|
|
(self.titleConsole, self.toggleConsole),
|
|
"--",
|
|
("ZeroNet Twitter", lambda: self.opensite("https://twitter.com/HelloZeroNet") ),
|
|
("ZeroNet Reddit", lambda: self.opensite("http://www.reddit.com/r/zeronet/") ),
|
|
("ZeroNet Github", lambda: self.opensite("https://github.com/HelloZeroNet/ZeroNet") ),
|
|
("Report bug/request feature", lambda: self.opensite("https://github.com/HelloZeroNet/ZeroNet/issues") ),
|
|
"--",
|
|
("!Open ZeroNet", lambda: self.opensite("http://%s:%s" % (config.ui_ip, config.ui_port)) ),
|
|
#"--",
|
|
#("Start ZeroNet when Windows starts", quit),
|
|
"--",
|
|
("Quit", self.quit),
|
|
|
|
)
|
|
|
|
icon.clicked = lambda: self.opensite("http://%s:%s" % (config.ui_ip, config.ui_port))
|
|
gevent.threadpool.start_new_thread(icon._run, ()) # Start in real thread (not gevent compatible)
|
|
super(ActionsPlugin, self).main()
|
|
icon._die = True
|
|
|
|
def quit(self):
|
|
self.icon.die()
|
|
time.sleep(0.1)
|
|
self.main.ui_server.stop()
|
|
self.main.file_server.stop()
|
|
#sys.exit()
|
|
|
|
def opensite(self, url):
|
|
import webbrowser
|
|
webbrowser.open(url, new=2)
|
|
|
|
def titleIp(self):
|
|
title = "!IP: %s" % config.ip_external
|
|
if self.main.file_server.port_opened:
|
|
title += " (active)"
|
|
else:
|
|
title += " (passive)"
|
|
return title
|
|
|
|
def titleConnections(self):
|
|
title = "Connections: %s" % len(self.main.file_server.connections)
|
|
return title
|
|
|
|
def titleTransfer(self):
|
|
title = "Received: %.2f MB | Sent: %.2f MB" % (float(self.main.file_server.bytes_recv)/1024/1024, float(self.main.file_server.bytes_sent)/1024/1024)
|
|
return title
|
|
|
|
def titleConsole(self):
|
|
if self.console: return "+Show console window"
|
|
else: return "Show console window"
|
|
|
|
def toggleConsole(self):
|
|
if self.console:
|
|
notificationicon.hideConsole()
|
|
self.console = False
|
|
else:
|
|
notificationicon.showConsole()
|
|
self.console = True
|