##// END OF EJS Templates
Start webbrowser in a thread. Prevents lockup with Chrome....
Start webbrowser in a thread. Prevents lockup with Chrome. If a user has Chrome set as their default browser (system-wide or via the `BROWSER` environment variable), opening the notebook hangs because the chrome call doesn't return immediately. This solves the issue by opening the browser in a thread. Note that there remains an issue where killing the notebook will kill Chrome if the Chrome session was started by us. I haven't found a way to work around that despite attempts by making the webbrowser.open() call in a subprocess.

File last commit:

r3218:401fb37a
r5212:2178365f
Show More
scitedirector.py
26 lines | 780 B | text/x-python | PythonLexer
import win32api
import win32gui
import win32con
import struct
import array
def findWindows():
ret = []
sdi = win32api.RegisterWindowMessage("SciTEDirectorInterface")
w = win32gui.GetWindow(win32gui.GetDesktopWindow(), win32con.GW_CHILD)
while w:
res = win32gui.SendMessage(w, sdi, 0, 0)
if res == sdi:
ret.append(w)
w = win32gui.GetWindow(w, win32con.GW_HWNDNEXT)
return ret
def sendCommand(w, message):
CopyDataStruct = "IIP"
char_buffer = array.array('c', message)
char_buffer_address = char_buffer.buffer_info()[0]
char_buffer_size = char_buffer.buffer_info()[1]
cds = struct.pack(CopyDataStruct, 0, char_buffer_size, char_buffer_address)
win32gui.SendMessage(w, win32con.WM_COPYDATA, 0, cds)