Fix path for the fl0w Sublime-settings file.

Also, some minor cleanups.
This commit is contained in:
Christoph Heiss 2016-04-15 10:09:08 +02:00
parent edd404beef
commit dce28928cc

View file

@ -14,7 +14,7 @@ if shared_path not in path:
from watchdog.observers import Observer from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler from watchdog.events import FileSystemEventHandler
import sublime import sublime
import sublime_plugin import sublime_plugin
import socket import socket
@ -31,9 +31,8 @@ CHANNEL = "s"
def plugin_unloaded(): def plugin_unloaded():
for window in windows: for window in windows:
if hasattr(window, "fl0w"): if hasattr(window, "fl0w") and window.fl0w.connected:
if window.fl0w.connected: window.fl0w.invoke_disconnect()
window.fl0w.invoke_disconnect()
@ -58,7 +57,7 @@ class ReloadHandler(FileSystemEventHandler):
print("Created: %s" % event) print("Created: %s" % event)
def on_deleted(self, event): def on_deleted(self, event):
print("Deleted: %s" % event) print("Deleted: %s" % event)
class Fl0w: class Fl0w:
@ -82,7 +81,7 @@ class Fl0w:
def invoke_about(self): def invoke_about(self):
if sublime.ok_cancel_dialog("fl0w by @robot0nfire", "robot0nfire.com"): if sublime.ok_cancel_dialog("fl0w by @robot0nfire", "robot0nfire.com"):
webbrowser.open("http://robot0nfire.com") webbrowser.open("http://robot0nfire.com")
@ -101,7 +100,7 @@ class Fl0w:
if data == "": if data == "":
handler.sock.send({"type" : CHANNEL}, "get_info") handler.sock.send({"type" : CHANNEL}, "get_info")
class ErrorReport(Routing.ClientRoute): class ErrorReport(Routing.ClientRoute):
def run(self, data, handler): def run(self, data, handler):
sublime.error_message(data) sublime.error_message(data)
@ -135,7 +134,7 @@ class Fl0w:
self.view.settings().set("draw_white_space", "none") self.view.settings().set("draw_white_space", "none")
self.view.settings().set("draw_indent_guides", False) self.view.settings().set("draw_indent_guides", False)
self.view.settings().set("gutter", False) self.view.settings().set("gutter", False)
self.view.settings().set("line_numbers", False) self.view.settings().set("line_numbers", False)
def run(self, data, handler): def run(self, data, handler):
self.setup_view(handler) self.setup_view(handler)
@ -171,14 +170,14 @@ class Fl0w:
std_stream = Fl0w.StdStream() std_stream = Fl0w.StdStream()
self.s_sync = SyncClient(self.sock, self.folder, "s_sync") self.s_sync = SyncClient(self.sock, self.folder, "s_sync")
compile = Fl0w.Compile() compile = Fl0w.Compile()
_thread.start_new_thread(sock_handler, (self.sock, {"error_report": error_report, _thread.start_new_thread(sock_handler, (self.sock, {"error_report": error_report,
"info" : info, "wallaby_control" : wallaby_control, "get_info" : get_info, "info" : info, "wallaby_control" : wallaby_control, "get_info" : get_info,
"s_sync" : self.s_sync, "compile" : compile, "std_stream" : std_stream}, self)) "s_sync" : self.s_sync, "compile" : compile, "std_stream" : std_stream}, self))
self.s_sync.start() self.s_sync.start()
self.connected = True self.connected = True
# Saving last server address # Saving last server address
sublime.load_settings("fl0w.sublime-setting").set("server_address", connect_details_raw) sublime.load_settings("fl0w.sublime-settings").set("server_address", connect_details_raw)
sublime.save_settings("fl0w.sublime-setting") sublime.save_settings("fl0w.sublime-settings")
except OSError as e: except OSError as e:
sublime.error_message("Error during connection creation:\n %s" % str(e)) sublime.error_message("Error during connection creation:\n %s" % str(e))
else: else:
@ -187,7 +186,7 @@ class Fl0w:
# Input invokers # Input invokers
def invoke_connect(self): def invoke_connect(self):
address = sublime.load_settings("fl0w.sublime-setting").get("server_address") address = sublime.load_settings("fl0w.sublime-settings").get("server_address")
address = "" if type(address) is not str else address address = "" if type(address) is not str else address
Input("Address:Port", initial_text=address, on_done=self.connect).invoke(self.window) Input("Address:Port", initial_text=address, on_done=self.connect).invoke(self.window)
@ -198,14 +197,14 @@ class Fl0w:
sublime.message_dialog("Connection closed ('%s')" % self.folder) sublime.message_dialog("Connection closed ('%s')" % self.folder)
self.s_sync.observer.stop() self.s_sync.observer.stop()
self.sock.close() self.sock.close()
def invoke_wallaby_control(self): def invoke_wallaby_control(self):
self.sock.send("list_wallaby_controllers", "wallaby_control") self.sock.send("list_wallaby_controllers", "wallaby_control")
def invoke_run_menu(self): def invoke_run_menu(self):
self.sock.send("list_programs", "wallaby_control") self.sock.send("list_programs", "wallaby_control")
class WallabyControl(Routing.ClientRoute): class WallabyControl(Routing.ClientRoute):
@ -229,7 +228,7 @@ class Fl0w:
if entry_count != 0: if entry_count != 0:
run_menu.invoke(handler.window, back=handler.main_menu) run_menu.invoke(handler.window, back=handler.main_menu)
else: else:
sublime.error_message("No programs avaliable.") sublime.error_message("No programs avaliable.")
def run_program(self, program): def run_program(self, program):
self.sock.send({self.selected_wallaby : {"run" : program}}, "wallaby_control") self.sock.send({self.selected_wallaby : {"run" : program}}, "wallaby_control")
@ -255,12 +254,12 @@ class Fl0w:
def set_debug(self, debug): def set_debug(self, debug):
sublime.status_message("fl0w: Debug now '%s'" % debug) sublime.status_message("fl0w: Debug now '%s'" % debug)
self.sock.debug = debug self.sock.debug = debug
sublime.load_settings("fl0w.sublime-setting").set("debug", debug) sublime.load_settings("fl0w.sublime-settings").set("debug", debug)
sublime.save_settings("fl0w.sublime-setting") sublime.save_settings("fl0w.sublime-settings")
class Fl0wCommand(sublime_plugin.WindowCommand): class Fl0wCommand(sublime_plugin.WindowCommand):
def run(self): def run(self):
valid_window_setup = True valid_window_setup = True
folder_count = len(self.window.folders()) folder_count = len(self.window.folders())
if folder_count > 1: if folder_count > 1:
@ -268,7 +267,7 @@ class Fl0wCommand(sublime_plugin.WindowCommand):
valid_window_setup = False valid_window_setup = False
elif folder_count == 0: elif folder_count == 0:
sublime.error_message("No folder open in window.") sublime.error_message("No folder open in window.")
valid_window_setup = False valid_window_setup = False
if valid_window_setup: if valid_window_setup:
if not hasattr(self.window, "fl0w"): if not hasattr(self.window, "fl0w"):
folder = self.window.folders()[0] folder = self.window.folders()[0]
@ -276,8 +275,8 @@ class Fl0wCommand(sublime_plugin.WindowCommand):
if not ".no-fl0w" in files: if not ".no-fl0w" in files:
if not ".fl0w" in files: if not ".fl0w" in files:
if sublime.ok_cancel_dialog("""We've detected that this is your first time using fl0w in your current directory. if sublime.ok_cancel_dialog("""We've detected that this is your first time using fl0w in your current directory.
We don't want to be responsible for any lost work so please backup your files before proceding. We don't want to be responsible for any lost work so please backup your files before proceding.
(An empty project directory is recommended but not necessary.)""", "Yes"): (An empty project directory is recommended but not necessary.)""", "Yes"):
open(folder + "/.fl0w", 'a').close() open(folder + "/.fl0w", 'a').close()
self.window.fl0w = Fl0w(self.window) self.window.fl0w = Fl0w(self.window)
windows.append(self.window) windows.append(self.window)
@ -289,7 +288,7 @@ class Fl0wCommand(sublime_plugin.WindowCommand):
windows.append(self.window) windows.append(self.window)
self.window.fl0w.start_menu.invoke(self.window) self.window.fl0w.start_menu.invoke(self.window)
else: else:
sublime.error_message("fl0w can't be opened in your current directory (.no-fl0w file exists)") sublime.error_message("fl0w can't be opened in your current directory (.no-fl0w file exists)")
else: else:
if not self.window.fl0w.connected: if not self.window.fl0w.connected:
self.window.fl0w.start_menu.invoke(self.window) self.window.fl0w.start_menu.invoke(self.window)
@ -303,4 +302,4 @@ class Fl0wCommand(sublime_plugin.WindowCommand):
windows = [] windows = []