Improved log view usability
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user