diff --git a/src/core/containers/header_container.py b/src/core/containers/header_container.py index 9c8956f..7b40abc 100644 --- a/src/core/containers/header_container.py +++ b/src/core/containers/header_container.py @@ -6,7 +6,6 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from ..widgets.buttons.open_files_button import OpenFilesButton from ..widgets.controls.transparency_scale import TransparencyScale @@ -38,7 +37,6 @@ class HeaderContainer(Gtk.Box): button = Gtk.Button(label = "Interactive Debug") button.connect("clicked", self._interactive_debug) - self.add( OpenFilesButton() ) self.add( TransparencyScale() ) self.add(button) diff --git a/src/core/widgets/buttons/bottom_button_box.py b/src/core/widgets/buttons/bottom_button_box.py index 0aa94c5..76e3c60 100644 --- a/src/core/widgets/buttons/bottom_button_box.py +++ b/src/core/widgets/buttons/bottom_button_box.py @@ -35,7 +35,7 @@ class BottomButtonBox(Gtk.Box): def _load_buttons(self): self.initialize_btn = Gtk.Button(label = "Initialize Message") - self.initialized_btn = Gtk.Button(label = "Initialized Message") + self.initialized_btn = Gtk.Button(label = "Initialized Notification") self.notification_btn = Gtk.Button(label = "Send Notification") self.request_btn = Gtk.Button(label = "Send Request") self.full_init_btn = Gtk.Button(label = "Full Init") @@ -101,6 +101,9 @@ class BottomButtonBox(Gtk.Box): self.rest_buttons() self.get_parent().start_stop_lsp() + if not hasattr(self.get_parent(), "lsp_process"): + self.rest_buttons() + return def full_init(self, button, eve = None): button.hide() diff --git a/src/core/widgets/buttons/open_files_button.py b/src/core/widgets/buttons/open_files_button.py deleted file mode 100644 index 06e6a9f..0000000 --- a/src/core/widgets/buttons/open_files_button.py +++ /dev/null @@ -1,86 +0,0 @@ -# Python imports -import os - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -gi.require_version('Gdk', '3.0') -from gi.repository import Gtk -from gi.repository import Gdk -from gi.repository import Gio - -# Application imports - - - -class OpenFilesButton(Gtk.Button): - """docstring for OpenFilesButton.""" - - def __init__(self): - super(OpenFilesButton, self).__init__() - - self._setup_styling() - self._setup_signals() - self._subscribe_to_events() - self._load_widgets() - - - def _setup_styling(self): - self.set_label("Open File(s)...") - self.set_image( Gtk.Image.new_from_icon_name("gtk-open", 4) ) - self.set_always_show_image(True) - self.set_image_position(1) # Left - 0, Right = 1 - self.set_hexpand(False) - - def _setup_signals(self): - self.connect("button-release-event", self._open_files) - - def _subscribe_to_events(self): - event_system.subscribe("open_files", self._open_files) - - def _load_widgets(self): - ... - - def _open_files(self, widget = None, eve = None, gfile = None): - start_dir = None - _gfiles = [] - - if gfile and gfile.query_exists(): - start_dir = gfile.get_parent() - - chooser = Gtk.FileChooserDialog("Open File(s)...", None, - Gtk.FileChooserAction.OPEN, - ( - Gtk.STOCK_CANCEL, - Gtk.ResponseType.CANCEL, - Gtk.STOCK_OPEN, - Gtk.ResponseType.OK - ) - ) - - chooser.set_select_multiple(True) - - try: - folder = widget.get_current_file().get_parent() if not start_dir else start_dir - chooser.set_current_folder( folder.get_path() ) - except Exception as e: - ... - - response = chooser.run() - if not response == Gtk.ResponseType.OK: - chooser.destroy() - return _gfiles - - filenames = chooser.get_filenames() - if not filenames: - chooser.destroy() - return _gfiles - - for file in filenames: - path = file if os.path.isabs(file) else os.path.abspath(file) - _gfiles.append( Gio.File.new_for_path(path) ) - - chooser.destroy() - - logger.debug(_gfiles) - return _gfiles \ No newline at end of file diff --git a/src/core/widgets/buttons/top_button_box.py b/src/core/widgets/buttons/top_button_box.py index 1835196..334ef40 100644 --- a/src/core/widgets/buttons/top_button_box.py +++ b/src/core/widgets/buttons/top_button_box.py @@ -6,7 +6,7 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from .folder_choser_button import FolderChoserButton +from .workspace_folder_choser_button import WorkspaceFolderChoserButton @@ -32,17 +32,17 @@ class TopButtonBox(Gtk.ButtonBox): ... def _subscribe_to_events(self): - ... + event_system.subscribe("update-message-id-lbl", self.update_message_id_lbl) def _load_widgets(self): - box = Gtk.Box() - self.message_id_lbl = Gtk.Label(label = "Message ID: 0") - self.folder_choser_lbl = Gtk.Label(label = "Workspace Folder: ") - self.folder_choser_btn = FolderChoserButton() + box = Gtk.Box() + self.message_id_lbl = Gtk.Label(label = "Message ID: 0") + self.folder_choser_lbl = Gtk.Label(label = "Workspace Folder: ") + self.workspace_choser_btn = WorkspaceFolderChoserButton() self.add(self.message_id_lbl) box.add(self.folder_choser_lbl) - box.add(self.folder_choser_btn) + box.add(self.workspace_choser_btn) self.add(box) def update_message_id_lbl(self, id: int): diff --git a/src/core/widgets/buttons/folder_choser_button.py b/src/core/widgets/buttons/workspace_folder_choser_button.py similarity index 64% rename from src/core/widgets/buttons/folder_choser_button.py rename to src/core/widgets/buttons/workspace_folder_choser_button.py index 78fa782..b823199 100644 --- a/src/core/widgets/buttons/folder_choser_button.py +++ b/src/core/widgets/buttons/workspace_folder_choser_button.py @@ -9,9 +9,9 @@ from gi.repository import Gtk -class FolderChoserButton(Gtk.FileChooserButton): +class WorkspaceFolderChoserButton(Gtk.FileChooserButton): def __init__(self): - super(FolderChoserButton, self).__init__() + super(WorkspaceFolderChoserButton, self).__init__() self._setup_styling() self._setup_signals() @@ -34,7 +34,14 @@ class FolderChoserButton(Gtk.FileChooserButton): ... def _subscribe_to_events(self): - ... + event_system.subscribe("get-workspace-path", self.get_workspace_path) + event_system.subscribe("get-workspace-uri", self.get_workspace_uri) def _load_widgets(self): ... + + def get_workspace_path(self): + return self.get_file().get_path() + + def get_workspace_uri(self): + return self.get_uri() diff --git a/src/core/widgets/log_list.py b/src/core/widgets/log_list.py index f5a4eca..f3d7627 100644 --- a/src/core/widgets/log_list.py +++ b/src/core/widgets/log_list.py @@ -71,6 +71,7 @@ class LogList(Gtk.ListBox): frame.show_all() + logger.debug(f"{lbl_str}:\n{message}") del message del lbl_str diff --git a/src/core/widgets/lsp_message_box.py b/src/core/widgets/lsp_message_box.py index 4c1dc84..3999811 100644 --- a/src/core/widgets/lsp_message_box.py +++ b/src/core/widgets/lsp_message_box.py @@ -66,27 +66,25 @@ class LSPMessageBox(Gtk.Box): def _load_widgets(self): scrolled_win = Gtk.ScrolledWindow() self.lsp_msg_src_vw = LspMessageSourceView() - self.top_buttons = TopButtonBox() - self.bottom_buttons = BottomButtonBox() + top_buttons = TopButtonBox() + bottom_buttons = BottomButtonBox() scrolled_win.show_all() scrolled_win.add(self.lsp_msg_src_vw) - self.add(self.top_buttons) + self.add(top_buttons) self.add(scrolled_win) - self.add(self.bottom_buttons) + self.add(bottom_buttons) def update_message_id_label(self): - self.top_buttons.update_message_id_lbl(self._message_id) + event_system.emit("update-message-id-lbl", (self._message_id,)) def send_initialize_message(self): - parent = self.get_parent() - folder_choser_btn = self.top_buttons.folder_choser_btn - - init_ops = parent.init_ops_src_vw.get_text_str() - workspace_file = folder_choser_btn.get_file().get_path() - workspace_uri = folder_choser_btn.get_uri() - folder_name = os.path.basename(workspace_file) + parent = self.get_parent() + init_ops = parent.init_ops_src_vw.get_text_str() + workspace_file = event_system.emit_and_await("get-workspace-path") + workspace_uri = event_system.emit_and_await("get-workspace-uri") + folder_name = os.path.basename(workspace_file) self._lsp_init_ops["processId"] = settings_manager.get_app_pid() self._lsp_init_ops["rootPath"] = workspace_file @@ -115,9 +113,10 @@ class LSPMessageBox(Gtk.Box): def send_request(self, method: str, params: {} = {}): self._monitor_lsp_response() + self._send_message( LSPRequest(self._message_id, method, params) ) self._message_id += 1 - self._send_message( LSPRequest(self._message_id, method, params) ) + self.update_message_id_label() def _send_message(self, data: LSPRequest or LSPNotification): if not data or not hasattr(self, "lsp_process"): return @@ -132,8 +131,6 @@ class LSPMessageBox(Gtk.Box): self.lsp_process.stdin.write( message.encode("utf-8") ) self.lsp_process.stdin.flush() - self.update_message_id_label() - del message_str del message_size del message @@ -170,7 +167,6 @@ class LSPMessageBox(Gtk.Box): stdin = subprocess.PIPE ) except Exception as e: - self.bottom_buttons.rest_buttons() self.get_parent().log_list.add_log_entry( "LSP Client Error", LSPResponse( @@ -180,6 +176,7 @@ class LSPMessageBox(Gtk.Box): } ) ) + return return self.lsp_process.pid @@ -259,7 +256,7 @@ class LSPMessageBox(Gtk.Box): if isinstance(result, dict): keys = result.keys() if "capabilities" in keys: - logger.debug(f"LSP Capabilities Response:\n{result}") + ... if isinstance(result, list): ...