From 01f4d17ccc51a8575284b93f53fb7a3192b40624 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sun, 24 Mar 2024 17:43:29 -0500 Subject: [PATCH] Added traceback on log output entry; changed js method call --- src/core/controllers/bridge_controller.py | 2 ++ src/core/controllers/files_controller.py | 13 +++++++++++++ src/core/widgets/base/webkit/ace_editor.py | 10 ++++++++-- src/core/widgets/base/webkit/editor.py | 2 +- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/core/controllers/bridge_controller.py b/src/core/controllers/bridge_controller.py index b2daecb..6ee6216 100644 --- a/src/core/controllers/bridge_controller.py +++ b/src/core/controllers/bridge_controller.py @@ -96,6 +96,8 @@ class BridgeController: file_type = event.ftype encoding_type = "utf-8" event_system.emit(f"set_info_labels", (path, line_char, file_type, encoding_type,)) + case "load_javascript": + event_system.emit(f"handle_file_event_{event.originator}", (event,)) case "error": content = base64.b64decode( event.content.encode() ).decode("utf-8") logger.info(content) diff --git a/src/core/controllers/files_controller.py b/src/core/controllers/files_controller.py index 0af5f52..6c96deb 100644 --- a/src/core/controllers/files_controller.py +++ b/src/core/controllers/files_controller.py @@ -94,6 +94,19 @@ class FilesController: _gfiles, ) ) + case "load_javascript": + gfile = Gio.File.new_for_uri(event.fpath) + + result, \ + data, \ + etag_out = gfile.load_contents(None) + + if result: + content = base64.b64encode( data ).decode("utf-8") + event_system.emit( + f"send_script_data_{self.INDEX}", + (gfile.get_basename(), content,) + ) case _: return diff --git a/src/core/widgets/base/webkit/ace_editor.py b/src/core/widgets/base/webkit/ace_editor.py index 07cd7c7..05872a4 100644 --- a/src/core/widgets/base/webkit/ace_editor.py +++ b/src/core/widgets/base/webkit/ace_editor.py @@ -1,5 +1,6 @@ # Python imports import json +import traceback # Lib imports import gi @@ -45,6 +46,7 @@ class AceEditor(WebKit2.WebView): def _subscribe_to_events(self): event_system.subscribe(f"load_file_{self.INDEX}", self.load_file) + event_system.subscribe(f"send_script_data_{self.INDEX}", self.send_script_data) event_system.subscribe(f"new_session_{self.INDEX}", self.new_session) event_system.subscribe(f"switch_session_{self.INDEX}", self.switch_session) event_system.subscribe(f"updated_session_{self.INDEX}", self.updated_session) @@ -87,12 +89,16 @@ class AceEditor(WebKit2.WebView): event.originator = self.INDEX event_system.emit("handle_bridge_event", (event,)) except Exception as e: - logger.info(e) + logger.info(traceback.format_exc()) def load_file(self, ftype: str, fname: str, fpath: str, content: str, line: int = 0): command = f"loadFile('{ftype}', '{fname}', '{fpath}', '{content}', '{line}')" self.run_javascript(command, None, None) + def send_script_data(self, fname, content): + command = f"importScriptFromBackendResponse('{fname}','{content}')" + self.run_javascript(command, None, None) + def new_session(self): command = f"newSession()" self.run_javascript(command, None, None) @@ -153,4 +159,4 @@ class AceEditor(WebKit2.WebView): def run_javascript(self, script, cancellable, callback): logger.debug(script) - super().run_javascript(script, cancellable, callback) + super().run_javascript(script, cancellable, callback) \ No newline at end of file diff --git a/src/core/widgets/base/webkit/editor.py b/src/core/widgets/base/webkit/editor.py index 5e6c120..c2a5a56 100644 --- a/src/core/widgets/base/webkit/editor.py +++ b/src/core/widgets/base/webkit/editor.py @@ -43,4 +43,4 @@ class Editor(Gtk.Box): FilesController(self.INDEX) def _load_widgets(self): - self.add( FixedBox(self.INDEX) ) \ No newline at end of file + self.add( FixedBox(self.INDEX) )