| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # A simple native messaging host. Shows a Tkinter dialog with incoming messages | 6 # A simple native messaging host. Shows a Tkinter dialog with incoming messages |
| 7 # that also allows to send message back to the webapp. | 7 # that also allows to send message back to the webapp. |
| 8 | 8 |
| 9 import struct | 9 import struct |
| 10 import sys | 10 import sys |
| 11 import threading | 11 import threading |
| 12 import Queue | 12 import Queue |
| 13 | 13 |
| 14 try: | 14 try: |
| 15 import Tkinter | 15 import Tkinter |
| 16 import tkMessageBox | 16 import tkMessageBox |
| 17 except ImportError: | 17 except ImportError: |
| 18 Tkinter = None | 18 Tkinter = None |
| 19 | 19 |
| 20 # On Windows, the default I/O mode is O_TEXT. Set this to O_BINARY |
| 21 # to avoid unwanted modifications of the input/output streams. |
| 22 if sys.platform == "win32": |
| 23 import os, msvcrt |
| 24 msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) |
| 25 msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) |
| 26 |
| 20 # Helper function that sends a message to the webapp. | 27 # Helper function that sends a message to the webapp. |
| 21 def send_message(message): | 28 def send_message(message): |
| 22 # Write message size. | 29 # Write message size. |
| 23 sys.stdout.write(struct.pack('I', len(message))) | 30 sys.stdout.write(struct.pack('I', len(message))) |
| 24 # Write the message itself. | 31 # Write the message itself. |
| 25 sys.stdout.write(message) | 32 sys.stdout.write(message) |
| 26 sys.stdout.flush() | 33 sys.stdout.flush() |
| 27 | 34 |
| 28 # Thread that reads messages from the webapp. | 35 # Thread that reads messages from the webapp. |
| 29 def read_thread_func(queue): | 36 def read_thread_func(queue): |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 thread.daemon = True | 119 thread.daemon = True |
| 113 thread.start() | 120 thread.start() |
| 114 | 121 |
| 115 main_window.mainloop() | 122 main_window.mainloop() |
| 116 | 123 |
| 117 sys.exit(0) | 124 sys.exit(0) |
| 118 | 125 |
| 119 | 126 |
| 120 if __name__ == '__main__': | 127 if __name__ == '__main__': |
| 121 Main() | 128 Main() |
| OLD | NEW |