Added multi-window support
This commit is contained in:
parent
35f61ab771
commit
9083ff3758
1 changed files with 34 additions and 16 deletions
|
@ -20,15 +20,17 @@ import socket
|
||||||
from ESock import ESock
|
from ESock import ESock
|
||||||
import Routing
|
import Routing
|
||||||
from SublimeMenu import *
|
from SublimeMenu import *
|
||||||
|
import Logging
|
||||||
|
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
||||||
def plugin_unloaded():
|
def plugin_unloaded():
|
||||||
observer.stop()
|
observer.stop()
|
||||||
try:
|
try:
|
||||||
fl0w.invoke_disconnect()
|
for window in windows:
|
||||||
|
window.fl0w.invoke_disconnect()
|
||||||
except:
|
except:
|
||||||
pass
|
print("Error while unloading fl0w for %s" % window.folders())
|
||||||
print("Observer stopped!")
|
print("Observer stopped!")
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,13 +115,11 @@ class Fl0w:
|
||||||
debug_menu = Menu(subtitles=False)
|
debug_menu = Menu(subtitles=False)
|
||||||
debug_menu.add(Entry("On", action=self.set_debug, kwargs={"debug" : True}))
|
debug_menu.add(Entry("On", action=self.set_debug, kwargs={"debug" : True}))
|
||||||
debug_menu.add(Entry("Off", action=self.set_debug, kwargs={"debug" : False}))
|
debug_menu.add(Entry("Off", action=self.set_debug, kwargs={"debug" : False}))
|
||||||
debug_menu.add(Entry("Sync Settings", action=self.invoke_sync_settings))
|
|
||||||
|
|
||||||
debug_menu.invoke(self.window, back=self.main_menu)
|
debug_menu.invoke(self.window, back=self.main_menu)
|
||||||
|
|
||||||
|
|
||||||
def set_debug(self, debug):
|
def set_debug(self, debug):
|
||||||
print("Debug now %s" % debug)
|
sublime.status_message("fl0w: Debug now '%s'" % debug)
|
||||||
self.sock.debug = debug
|
self.sock.debug = debug
|
||||||
|
|
||||||
|
|
||||||
|
@ -134,10 +134,10 @@ class Fl0w:
|
||||||
|
|
||||||
|
|
||||||
def invoke_disconnect(self):
|
def invoke_disconnect(self):
|
||||||
self.sock.close()
|
|
||||||
if self.connected:
|
if self.connected:
|
||||||
sublime.message_dialog("Connection closed")
|
sublime.message_dialog("Connection closed ('%s')" % ", ".join(self.window.folders()))
|
||||||
self.connected = False
|
self.connected = False
|
||||||
|
self.sock.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -146,10 +146,13 @@ class Fl0w:
|
||||||
connect_details = connect_details.split(":")
|
connect_details = connect_details.split(":")
|
||||||
if len(connect_details) == 2:
|
if len(connect_details) == 2:
|
||||||
try:
|
try:
|
||||||
self.sock = ESock(socket.create_connection((connect_details[0], int(connect_details[1]))), disconnect_callback=self.invoke_disconnect)
|
# Establish connection to the server
|
||||||
|
self.sock = ESock(socket.create_connection((connect_details[0], int(connect_details[1]))), disconnect_callback=self.invoke_disconnect, debug=True)
|
||||||
sublime.status_message("Connected to %s:%s." % (connect_details[0], connect_details[1]))
|
sublime.status_message("Connected to %s:%s." % (connect_details[0], connect_details[1]))
|
||||||
self.connected = True
|
self.connected = True
|
||||||
_thread.start_new_thread(sock_handler, (self.sock, {"error_report": Fl0w.ErrorReport(), "info" : Fl0w.Info(), "wallaby_control" : Fl0w.WallabyControl()}, self))
|
_thread.start_new_thread(sock_handler, (self.sock, {"error_report": Fl0w.ErrorReport(),
|
||||||
|
"info" : Fl0w.Info(), "wallaby_control" : Fl0w.WallabyControl()}, self))
|
||||||
|
# Saving last server address
|
||||||
sublime.load_settings("fl0w.sublime-setting").set("server_address", connect_details_raw)
|
sublime.load_settings("fl0w.sublime-setting").set("server_address", connect_details_raw)
|
||||||
sublime.save_settings("fl0w.sublime-setting")
|
sublime.save_settings("fl0w.sublime-setting")
|
||||||
self.main_menu.invoke(self.window)
|
self.main_menu.invoke(self.window)
|
||||||
|
@ -162,16 +165,31 @@ class Fl0w:
|
||||||
|
|
||||||
class Fl0wCommand(sublime_plugin.WindowCommand):
|
class Fl0wCommand(sublime_plugin.WindowCommand):
|
||||||
def run(self, menu=None, action=None):
|
def run(self, menu=None, action=None):
|
||||||
if fl0w.window == None:
|
valid_window_setup = True
|
||||||
fl0w.window = self.window
|
folder_count = len(self.window.folders())
|
||||||
if not fl0w.connected:
|
if folder_count > 1:
|
||||||
fl0w.start_menu.invoke(self.window)
|
sublime.error_message("Only one open folder per window is allowed.")
|
||||||
|
valid_window_setup = False
|
||||||
|
elif folder_count == 0:
|
||||||
|
sublime.error_message("No folder open in window.")
|
||||||
|
valid_window_setup = False
|
||||||
|
if valid_window_setup:
|
||||||
|
if not hasattr(self.window, "fl0w"):
|
||||||
|
self.window.fl0w = Fl0w()
|
||||||
|
self.window.fl0w.window = self.window
|
||||||
|
windows.append(self.window)
|
||||||
|
|
||||||
|
if not self.window.fl0w.connected:
|
||||||
|
self.window.fl0w.start_menu.invoke(self.window)
|
||||||
else:
|
else:
|
||||||
fl0w.main_menu.invoke(self.window)
|
self.window.fl0w.main_menu.invoke(self.window)
|
||||||
|
else:
|
||||||
|
if hasattr(self.window, "fl0w"):
|
||||||
|
if self.window.fl0w.connected:
|
||||||
|
self.window.fl0w.invoke_disconnect()
|
||||||
|
|
||||||
|
|
||||||
|
windows = []
|
||||||
fl0w = Fl0w()
|
|
||||||
observer = Observer()
|
observer = Observer()
|
||||||
observer.schedule(ReloadHandler(), path=".", recursive=True)
|
observer.schedule(ReloadHandler(), path=".", recursive=True)
|
||||||
#observer.start()
|
#observer.start()
|
||||||
|
|
Reference in a new issue