1313 pass
1414import webbrowser
1515
16+ try :
17+ import objc
18+ import Cocoa
19+ import Foundation
20+ except ImportError :
21+ objc = None
22+
1623from PyQt4 .QtCore import *
1724from PyQt4 .QtGui import *
1825from PyQt4 .QtNetwork import *
@@ -73,7 +80,7 @@ class MainWindow(QMainWindow):
7380 def __init__ (self ):
7481 super (MainWindow , self ).__init__ ()
7582
76- # self._okToClose = False
83+ self ._okToClose = False
7784 #systray = QSystemTrayIcon(self)
7885 #systray.setIcon(QIcon(":/icons/icon.png"))
7986 #systray.show()
@@ -94,7 +101,6 @@ def __init__(self):
94101 # Lazy-loaded objects
95102 self ._lazy = {}
96103
97-
98104 # Setup
99105 self ._setup_ui ()
100106 self ._restore_from_config ()
@@ -138,25 +144,37 @@ def _makeSingleShotTimer(slot):
138144 # Show
139145 self .show ()
140146
147+ # Click on the dock icon (OS X)
148+ if objc :
149+ def applicationShouldHandleReopen_hasVisibleWindows_ (s , a , f ):
150+ self .show ()
151+
152+ objc .classAddMethods (
153+ Cocoa .NSApplication .sharedApplication ().delegate ().class__ (),
154+ [applicationShouldHandleReopen_hasVisibleWindows_ ])
155+
141156
142157 def close (self ):
143- # self._okToClose = True
158+ self ._okToClose = True
144159 super (MainWindow , self ).close ()
145160
146161
147162 def closeEvent (self , event ):
148- lazy = self ._lazy
149- #if self._okToClose:
163+ if not objc :
164+ self ._okToClose = True
165+
166+ lazy = self ._lazy
167+ if self ._okToClose :
150168 if _LAZY_ADVSEARCH_WINDOW in lazy :
151169 lazy [_LAZY_ADVSEARCH_WINDOW ].close ()
152170 self ._save_to_configfile ()
153171 self ._unload_searchers ()
154172 if _LAZY_SOUNDPLAYER in lazy :
155173 lazy [_LAZY_SOUNDPLAYER ].close ()
156174 super (MainWindow , self ).closeEvent (event )
157- # else:
158- # self.hide()
159- # event.ignore()
175+ else :
176+ self .hide ()
177+ event .ignore ()
160178
161179
162180 def resizeEvent (self , event ):
0 commit comments