Added peer list and hostname changer, enabled piping
Basic controller interactions now avaliable!
This commit is contained in:
parent
4319c2d194
commit
cbc1976308
1 changed files with 20 additions and 4 deletions
|
@ -17,7 +17,7 @@ from watchdog.events import FileSystemEventHandler
|
||||||
import sublime
|
import sublime
|
||||||
import sublime_plugin
|
import sublime_plugin
|
||||||
|
|
||||||
from Highway import Client, Route
|
from Highway import Client, Route, DummyPipe
|
||||||
|
|
||||||
from SublimeMenu import *
|
from SublimeMenu import *
|
||||||
import Logging
|
import Logging
|
||||||
|
@ -36,7 +36,7 @@ def plugin_unloaded():
|
||||||
|
|
||||||
class Fl0wClient(Client):
|
class Fl0wClient(Client):
|
||||||
def setup(self, routes, fl0w, debug=False):
|
def setup(self, routes, fl0w, debug=False):
|
||||||
super().setup(routes, debug=debug)
|
super().setup(routes, piping=True, debug=debug)
|
||||||
self.fl0w = fl0w
|
self.fl0w = fl0w
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,8 +61,21 @@ class Fl0wClient(Client):
|
||||||
handler.fl0w.meta.invoke(handler.fl0w.window, back=handler.fl0w.main_menu)
|
handler.fl0w.meta.invoke(handler.fl0w.window, back=handler.fl0w.main_menu)
|
||||||
|
|
||||||
|
|
||||||
|
class Peers(Route):
|
||||||
|
def run(self, data, handler):
|
||||||
|
controller_menu = Menu()
|
||||||
|
for id_ in data:
|
||||||
|
action_menu = Menu(subtitles=False)
|
||||||
|
action_menu += Entry("Set Name", action=lambda: Input("New Hostname:",
|
||||||
|
initial_text=data[id_]["name"], on_done=self.set_hostname,
|
||||||
|
kwargs={"id_" : id_, "handler" : handler}).invoke(handler.fl0w.window))
|
||||||
|
controller_menu += Entry(data[id_]["name"], id_, sub_menu=action_menu)
|
||||||
|
controller_menu.invoke(handler.fl0w.window, back=handler.fl0w.main_menu)
|
||||||
|
|
||||||
|
|
||||||
|
def set_hostname(self, hostname, id_, handler):
|
||||||
|
handler.pipe({"set" : hostname}, "hostname", id_)
|
||||||
|
|
||||||
|
|
||||||
class Fl0w:
|
class Fl0w:
|
||||||
def __init__(self, window, debug=False):
|
def __init__(self, window, debug=False):
|
||||||
|
@ -98,6 +111,8 @@ class Fl0w:
|
||||||
|
|
||||||
|
|
||||||
self.main_menu = Menu()
|
self.main_menu = Menu()
|
||||||
|
self.main_menu += Entry("Controllers", "All connected controllers.",
|
||||||
|
action=lambda: self.ws.send({"channel" : 2}, "peers"))
|
||||||
self.main_menu += Entry("Settings", "General purpose settings",
|
self.main_menu += Entry("Settings", "General purpose settings",
|
||||||
sub_menu=self.settings)
|
sub_menu=self.settings)
|
||||||
self.main_menu += Entry("Disconnect", "Disconnect from server",
|
self.main_menu += Entry("Disconnect", "Disconnect from server",
|
||||||
|
@ -143,7 +158,8 @@ class Fl0w:
|
||||||
def connect(self, connect_details):
|
def connect(self, connect_details):
|
||||||
try:
|
try:
|
||||||
self.ws = Fl0wClient('ws://%s' % connect_details)
|
self.ws = Fl0wClient('ws://%s' % connect_details)
|
||||||
self.ws.setup({"info" : Fl0wClient.Info()}, self, debug=False)
|
self.ws.setup({"info" : Fl0wClient.Info(), "peers" : Fl0wClient.Peers()},
|
||||||
|
self, debug=True)
|
||||||
self.ws.connect()
|
self.ws.connect()
|
||||||
sublime.set_timeout_async(self.ws.run_forever, 0)
|
sublime.set_timeout_async(self.ws.run_forever, 0)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
|
@ -160,7 +176,7 @@ class Fl0w:
|
||||||
if self.connected:
|
if self.connected:
|
||||||
self.ws.close()
|
self.ws.close()
|
||||||
self.window.active_view().set_status(FL0W_STATUS,
|
self.window.active_view().set_status(FL0W_STATUS,
|
||||||
"Connection closed ('%s')" % self.folder)
|
"Connection closed '%s'" % self.folder)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in a new issue