From b7bac2d5ae5c03b6347415dc6bfd470171928da2 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sat, 7 Sep 2024 15:40:07 -0500 Subject: [PATCH] Improved log view usability --- src/core/widgets/log_list.py | 43 +++++++++++++++++++---------- src/core/widgets/lsp_message_box.py | 5 ++-- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/core/widgets/log_list.py b/src/core/widgets/log_list.py index 9104930..f8d1825 100644 --- a/src/core/widgets/log_list.py +++ b/src/core/widgets/log_list.py @@ -30,9 +30,15 @@ class LogList(Gtk.ListBox): self.set_selection_mode(Gtk.SelectionMode.NONE) def _setup_signals(self): - # self.connect("row-activated", sink_call) - # self.connect("row-selected", sink_call) - ... + def tggl_row_view(lb, row): + frame = row.get_child() + revealer = frame.get_children()[0] + revealer.set_reveal_child(not revealer.get_reveal_child()) + + del frame + del revealer + + self.connect("row-activated", tggl_row_view) def _subscribe_to_events(self): ... @@ -40,26 +46,35 @@ class LogList(Gtk.ListBox): def _load_widgets(self): ... - def add_log_entry(self, data: str or dict): - message = None + def add_log_entry(self, m_type: str, data: str or dict): + message = None + json_data = None + if isinstance(data, str): parts = data.split("\n", 2) jsonStr = parts[2] - messageStr = json.dumps(json.loads(jsonStr), separators = (',', ':'), indent = 4) + json_data = json.loads(jsonStr) + messageStr = json.dumps(json_data, separators = (',', ':'), indent = 4) message = f"{parts[0]}\r\n\r\n{messageStr}" if isinstance(data, dict): - message = json.dumps(data, separators = (',', ':'), indent = 4) + json_data = data + message = json.dumps(data, separators = (',', ':'), indent = 4) - box = Gtk.Frame() - label = Gtk.Label(label=message) + frame = Gtk.Frame() + revealer = Gtk.Revealer() + label = Gtk.Label(label=message) label.set_xalign(0.010) + frame.set_label( f"> {m_type}: {json_data['id']}" if "id" in json_data.keys() else f"> {m_type}" ) + frame.set_label_align(0.010, 0.5) + revealer.set_reveal_child(False) - box.set_label(">") - box.set_label_align(0.010, 0.5) + revealer.add(label) + frame.add(revealer) + self.add(frame) - box.add(label) - self.add(box) + frame.show_all() - box.show_all() + del message + del json_data diff --git a/src/core/widgets/lsp_message_box.py b/src/core/widgets/lsp_message_box.py index 5c79b94..f826357 100644 --- a/src/core/widgets/lsp_message_box.py +++ b/src/core/widgets/lsp_message_box.py @@ -154,8 +154,7 @@ class LSPMessageBox(Gtk.Box): message_size = len(message_str) message = f"Content-Length: {message_size}\r\n\r\n{message_str}" - self.get_parent().log_list.add_log_entry(message) - event_system.subscribe("add-log-entry", message) + self.get_parent().log_list.add_log_entry("Client Message", message) with self.write_lock: self.lsp_process.stdin.write( message.encode("utf-8") ) @@ -261,7 +260,7 @@ class LSPMessageBox(Gtk.Box): GLib.idle_add(self.handle_lsp_response, response_id, lsp_result) def handle_lsp_response(self, id: int, lsp_result: {}): - self.get_parent().log_list.add_log_entry(lsp_result) + self.get_parent().log_list.add_log_entry("LSP Response Message", lsp_result) keys = lsp_result.keys() if "error" in keys: