This repository has been archived by the owner on Dec 11, 2023. It is now read-only.
/
systrayosx.py
81 lines (62 loc) · 2.42 KB
/
systrayosx.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# -*- coding: utf-8 -*-
import objc
from Foundation import *
from AppKit import *
from PyObjCTools import NibClassBuilder, AppHelper
import time
import sys
class Backup(NSObject):
statusbar = None
status_images = {'init':'icons/systrayicon.png'}
images = {}
def applicationDidFinishLaunching_(self, notification):
pass
def initWithMenus(self, menus):
self = super(self.__class__, self).init()
statusbar = NSStatusBar.systemStatusBar()
self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
#self.statusitem.setHighlightMode_(1)
self.statusitem.setToolTip_('MyVault')
self.statusitem.setEnabled_(YES)
# to signal what is going on
for i in self.status_images.keys():
self.images[i] = NSImage.alloc().initByReferencingFile_(self.status_images[i])
# Set initial image
self.statusitem.setImage_(self.images['init'])
#self.statusitem.setAlternateImage_(self.icons['clicked'])
self.menu = NSMenu.alloc().init()
self.menu.setDelegate_(self)
#self.menu.setAutoenablesItems_(NO)
for m_item, m_sel in menus:
objc.classAddMethods(Backup, [m_sel])
menuitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(*m_item)
self.menu.addItem_(menuitem)
self.statusitem.setMenu_(self.menu)
return self
def applicationShouldTerminate_(self, notification):
"""
Put cleanup routine here.
"""
#print time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime())
return YES
def validateMenuItem_(self, menuitem):
if menuitem.performSelector_('title') in self.disabled_menuitems:
return NO
return YES
def startServer_(self, notification):
print "starting server"
def stopServer_(self, notification):
print "stopping server"
def quitApp_(self, notification):
print "quitting"
NSApp().terminate_(self)
if __name__ == "__main__":
app = NSApplication.sharedApplication()
menus = [
(('Start', 'startServer:', ''), startServer_),
(('Stop', 'stopServer:', ''), stopServer_),
(('Quit', 'quitApp:', ''), quitApp_),
]
delegate = Backup.alloc().initWithMenus(menus)
app.setDelegate_(delegate)
AppHelper.runEventLoop()