From aaf80f4e2d7370b9a08375b76364c450448a85b3 Mon Sep 17 00:00:00 2001 From: Joseph Coffland Date: Fri, 16 Dec 2016 10:33:29 -0800 Subject: [PATCH] Force shutdown, fix cx_Freeze startup --- FAHControl | 77 +++++++++++++++++++++---------------------- fah/FAHControl.py | 6 ++-- fah/util/SingleApp.py | 6 ++-- setup.py | 1 + 4 files changed, 45 insertions(+), 45 deletions(-) diff --git a/FAHControl b/FAHControl index a58a344..3705dfa 100755 --- a/FAHControl +++ b/FAHControl @@ -36,47 +36,46 @@ def set_proc_name(name): libc.prctl(15, byref(buff), 0, 0, 0) -if __name__ == '__main__': - if sys.platform.startswith('linux'): set_proc_name('FAHControl') +if sys.platform.startswith('linux'): set_proc_name('FAHControl') - # If present, remove the Launch Services -psn_xxx_xxx argument - if len(sys.argv) > 1 and sys.argv[1][:4] == '-psn': - del sys.argv[1] +# If present, remove the Launch Services -psn_xxx_xxx argument +if len(sys.argv) > 1 and sys.argv[1][:4] == '-psn': + del sys.argv[1] - parser = OptionParser(usage = 'Usage: %prog [options]') +parser = OptionParser(usage = 'Usage: %prog [options]') - parser.add_option('--exit', help = 'Tell the running application to exit', - action = 'store_true', dest = 'exit') - options, args = parser.parse_args() - - # Tell app to exit - if options.exit: - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect(single_app_addr) - sock.send('EXIT') - if sock.recv(1024).strip() == 'OK': print 'Ok' - except Exception, e: pass - - sys.exit(0) - - # Add executable path to PATH - if getattr(sys, 'frozen', False): path = os.path.dirname(sys.executable) - else: path = os.path.dirname(__file__) - path = os.path.realpath(path) - os.environ['PATH'] = path + os.pathsep + os.environ['PATH'] - - # Load Glade - dir = os.path.dirname(inspect.getfile(inspect.currentframe())) - if not dir: dir = '.' - glade = dir + '/fah/FAHControl.glade' - - if os.path.exists(glade): app = FAHControl(glade) - else: - from fah.FAHControl_glade import glade_data - app = FAHControl(glade_data) +parser.add_option('--exit', help = 'Tell the running application to exit', + action = 'store_true', dest = 'exit') +options, args = parser.parse_args() +# Tell app to exit +if options.exit: try: - app.run() - except Exception, e: - print e + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect(single_app_addr) + sock.send('EXIT') + if sock.recv(1024).strip() == 'OK': print 'Ok' + except Exception, e: pass + + sys.exit(0) + +# Add executable path to PATH +if getattr(sys, 'frozen', False): path = os.path.dirname(sys.executable) +else: path = os.path.dirname(__file__) +path = os.path.realpath(path) +os.environ['PATH'] = path + os.pathsep + os.environ['PATH'] + +# Load Glade +dir = os.path.dirname(inspect.getfile(inspect.currentframe())) +if not dir: dir = '.' +glade = dir + '/fah/FAHControl.glade' + +if os.path.exists(glade): app = FAHControl(glade) +else: + from fah.FAHControl_glade import glade_data + app = FAHControl(glade_data) + +try: + app.run() +except Exception, e: + print e diff --git a/fah/FAHControl.py b/fah/FAHControl.py index ba23d60..0bcc856 100644 --- a/fah/FAHControl.py +++ b/fah/FAHControl.py @@ -534,10 +534,10 @@ class FAHControl(SingleAppServer): self.window_accel_group = ag key, mod = gtk.accelerator_parse("w") ag.connect_group(key, mod, gtk.ACCEL_VISIBLE, - osx_accel_window_close) + osx_accel_window_close) key, mod = gtk.accelerator_parse("m") ag.connect_group(key, mod, gtk.ACCEL_VISIBLE, - osx_accel_window_minimize) + osx_accel_window_minimize) self.window.add_accel_group(ag) except Exception, e: print e @@ -710,7 +710,7 @@ class FAHControl(SingleAppServer): self.db.flush_queued() except Exception, e: print e - self.shutdown() # Shutdown SingleAppServer + sys.exit(0) # Force shutdown def set_status(self, text): diff --git a/fah/util/SingleApp.py b/fah/util/SingleApp.py index 29d5ead..b89ec4b 100644 --- a/fah/util/SingleApp.py +++ b/fah/util/SingleApp.py @@ -58,9 +58,9 @@ class SingleAppServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): self, single_app_addr, SingleAppRequestHandler) thread = threading.Thread(target = self.serve_forever) - # Exit the server thread when the main thread terminates - thread.setDaemon(True) - thread.start() + # Exit the server thread when the main thread terminates + thread.setDaemon(True) + thread.start() def check_for_instance(self): diff --git a/setup.py b/setup.py index 5fa0476..1598b5c 100644 --- a/setup.py +++ b/setup.py @@ -67,6 +67,7 @@ if sys.platform == 'darwin': elif sys.platform == 'win32': from cx_Freeze import setup, Executable + # Change base to 'Console' for debugging e = Executable(app, base = 'Win32GUI', icon = 'images/FAHControl.ico') options = { 'build_exe': {