17 from os.path
import basename
20 from threading
import Thread, Lock
45 bus.on(
'mycroft.gui.port', handle_gui_ready)
46 bus.emit(
Message(
"mycroft.gui.connected",
47 {
"gui_id":
"cli_" + str(getpid())}))
64 buffer.append(
"Active Skill: {}".format(skill))
65 buffer.append(
"Page: {}".format(basename(page)))
66 buffer.append(
"vars: ")
68 buffer.append(
" {}: {}".format(v, vars[skill][v]))
69 except Exception
as e:
70 buffer.append(repr(e))
71 buffer.append(
"-----------------")
72 buffer.append(
"MESSAGES")
73 buffer.append(
"-----------------")
82 gui_id = msg.data.get(
"gui_id")
83 if not gui_id ==
"cli_" + str(getpid()):
88 port = msg.data.get(
"port")
91 ws = websocket.WebSocketApp(
"ws://0.0.0.0:" + str(port) +
"/gui",
92 on_message=on_gui_message,
93 on_error=on_gui_error,
94 on_close=on_gui_close)
97 event_thread = Thread(target=gui_connect, args=[ws])
98 event_thread.setDaemon(
True)
105 ws.on_open = on_gui_open
119 msg = json.loads(payload)
121 type = msg.get(
"type")
122 if type ==
"mycroft.session.set":
123 skill = msg.get(
"namespace")
124 data = msg.get(
"data")
125 if skill
not in vars:
128 vars[skill][d] = data[d]
129 elif type ==
"mycroft.session.list.insert":
131 skill = msg.get(
'data')[0][
'skill_id']
132 loaded.insert(0, [skill, []])
133 elif type ==
"mycroft.gui.list.insert":
135 page = msg[
'data'][0][
'url']
136 pos = msg.get(
'position')
137 loaded[0][1].insert(pos, page)
139 elif type ==
"mycroft.session.list.move":
141 pos = msg.get(
'from')
142 loaded.insert(0, loaded.pop(pos))
143 elif type ==
"mycroft.events.triggered":
145 skill = msg[
'namespace']
146 pos = msg[
'data'][
'number']
152 except Exception
as e:
def handle_gui_ready(msg)
def start_qml_gui(messagebus, output_buf)
def build_output_buffer()
def on_gui_message(ws, payload)
def on_gui_error(ws, err)