Fixed multi file ipc load speeds
This commit is contained in:
15
src/app.py
15
src/app.py
@@ -2,6 +2,7 @@
|
|||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
import signal
|
import signal
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
# Lib imports
|
# Lib imports
|
||||||
|
|
||||||
@@ -44,25 +45,25 @@ class Application:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
logger.warning(f"{APP_NAME} IPC Server Exists: Have sent path(s) to it and closing...")
|
logger.warning(f"{APP_NAME} IPC Server Exists: Have sent path(s) to it and closing...")
|
||||||
|
files: list = []
|
||||||
for arg in unknownargs + [args.new_tab,]:
|
for arg in unknownargs + [args.new_tab,]:
|
||||||
if os.path.isfile(arg):
|
if os.path.isfile(arg):
|
||||||
message = f"FILE|{arg}"
|
files.append(f"file://{arg}")
|
||||||
ipc_server.send_ipc_message(message)
|
|
||||||
|
|
||||||
if os.path.isdir(arg):
|
if os.path.isdir(arg):
|
||||||
message = f"DIR|{arg}"
|
message = f"DIR|{arg}"
|
||||||
ipc_server.send_ipc_message(message)
|
ipc_server.send_ipc_message(message)
|
||||||
|
|
||||||
|
if files:
|
||||||
|
message = f"FILES|{json.dumps(files)}"
|
||||||
|
ipc_server.send_ipc_message(message)
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def ipc_realization_check(self, ipc_server):
|
def ipc_realization_check(self, ipc_server):
|
||||||
try:
|
try:
|
||||||
ipc_server.create_ipc_listener()
|
ipc_server.create_ipc_listener()
|
||||||
except (OSError, PermissionError) as e:
|
except Exception:
|
||||||
logger.info(f"IPC listener creation failed: {e}, falling back to test message")
|
|
||||||
ipc_server.send_test_ipc_message()
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Unexpected IPC setup error: {e}")
|
|
||||||
ipc_server.send_test_ipc_message()
|
ipc_server.send_test_ipc_message()
|
||||||
|
|
||||||
def setup_debug_hook(self):
|
def setup_debug_hook(self):
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ class BaseController(IPCSignalsMixin, KeyboardSignalsMixin, BaseControllerMixin)
|
|||||||
def _subscribe_to_events(self):
|
def _subscribe_to_events(self):
|
||||||
event_system.subscribe("shutting-down", lambda: print("Shutting down..."))
|
event_system.subscribe("shutting-down", lambda: print("Shutting down..."))
|
||||||
event_system.subscribe("handle-file-from-ipc", self.handle_file_from_ipc)
|
event_system.subscribe("handle-file-from-ipc", self.handle_file_from_ipc)
|
||||||
|
event_system.subscribe("handle-files-from-ipc", self.handle_files_from_ipc)
|
||||||
event_system.subscribe("handle-dir-from-ipc", self.handle_dir_from_ipc)
|
event_system.subscribe("handle-dir-from-ipc", self.handle_dir_from_ipc)
|
||||||
event_system.subscribe("tggl-top-main-menubar", self._tggl_top_main_menubar)
|
event_system.subscribe("tggl-top-main-menubar", self._tggl_top_main_menubar)
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ from .controllers.commands_controller import CommandsController
|
|||||||
from .controllers.completion_controller import CompletionController
|
from .controllers.completion_controller import CompletionController
|
||||||
from .controllers.views.source_views_controller import SourceViewsController
|
from .controllers.views.source_views_controller import SourceViewsController
|
||||||
|
|
||||||
from .mini_view_widget import MiniViewWidget
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CodeBase:
|
class CodeBase:
|
||||||
@@ -22,7 +20,6 @@ class CodeBase:
|
|||||||
super(CodeBase, self).__init__()
|
super(CodeBase, self).__init__()
|
||||||
|
|
||||||
self.controller_manager: ControllerManager = ControllerManager()
|
self.controller_manager: ControllerManager = ControllerManager()
|
||||||
self.miniview_widget: MiniViewWidget = MiniViewWidget()
|
|
||||||
|
|
||||||
self._subscribe_to_events()
|
self._subscribe_to_events()
|
||||||
self._load_controllers()
|
self._load_controllers()
|
||||||
@@ -30,6 +27,7 @@ class CodeBase:
|
|||||||
|
|
||||||
def _subscribe_to_events(self):
|
def _subscribe_to_events(self):
|
||||||
event_system.subscribe("handle-file", self._load_ipc_file)
|
event_system.subscribe("handle-file", self._load_ipc_file)
|
||||||
|
event_system.subscribe("handle-files", self._load_ipc_files)
|
||||||
|
|
||||||
def _load_controllers(self):
|
def _load_controllers(self):
|
||||||
files_controller = FilesController()
|
files_controller = FilesController()
|
||||||
@@ -50,9 +48,6 @@ class CodeBase:
|
|||||||
def get_tabs_widget(self):
|
def get_tabs_widget(self):
|
||||||
return self.controller_manager["tabs"].get_tabs_widget()
|
return self.controller_manager["tabs"].get_tabs_widget()
|
||||||
|
|
||||||
def get_mini_view_widget(self):
|
|
||||||
return self.miniview_widget
|
|
||||||
|
|
||||||
def create_source_view(self):
|
def create_source_view(self):
|
||||||
source_view = self.controller_manager["source_views"].create_source_view()
|
source_view = self.controller_manager["source_views"].create_source_view()
|
||||||
self.controller_manager["completion"].register_completer(
|
self.controller_manager["completion"].register_completer(
|
||||||
@@ -68,3 +63,7 @@ class CodeBase:
|
|||||||
active_view = self.controller_manager["source_views"].signal_mapper.active_view
|
active_view = self.controller_manager["source_views"].signal_mapper.active_view
|
||||||
uris = [ f"file://{fpath}" ]
|
uris = [ f"file://{fpath}" ]
|
||||||
active_view._on_uri_data_received(uris)
|
active_view._on_uri_data_received(uris)
|
||||||
|
|
||||||
|
def _load_ipc_files(self, uris: list):
|
||||||
|
active_view = self.controller_manager["source_views"].signal_mapper.active_view
|
||||||
|
active_view._on_uri_data_received(uris)
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
# Python imports
|
|
||||||
|
|
||||||
# Lib imports
|
|
||||||
import gi
|
|
||||||
gi.require_version('GtkSource', '4')
|
|
||||||
from gi.repository.GtkSource import Map
|
|
||||||
from gi.repository import Pango
|
|
||||||
|
|
||||||
# Application imports
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class MiniViewWidget(Map):
|
|
||||||
def __init__(self):
|
|
||||||
super(MiniViewWidget, self).__init__()
|
|
||||||
|
|
||||||
self._setup_styling()
|
|
||||||
self._setup_signals()
|
|
||||||
self._subscribe_to_events()
|
|
||||||
self._load_widgets()
|
|
||||||
|
|
||||||
|
|
||||||
def _setup_styling(self):
|
|
||||||
ctx = self.get_style_context()
|
|
||||||
ctx.add_class("mini-view")
|
|
||||||
|
|
||||||
self.set_hexpand(False)
|
|
||||||
self._set_font_desc()
|
|
||||||
|
|
||||||
def _setup_signals(self):
|
|
||||||
...
|
|
||||||
|
|
||||||
def _subscribe_to_events(self):
|
|
||||||
event_system.subscribe(f"set-mini-view", self.set_smini_view)
|
|
||||||
|
|
||||||
def _load_widgets(self):
|
|
||||||
...
|
|
||||||
|
|
||||||
def _set_font_desc(self):
|
|
||||||
default_font = 'Monospace 1'
|
|
||||||
desc = Pango.FontDescription(default_font)
|
|
||||||
|
|
||||||
desc.set_size(Pango.SCALE) # Set size to 1pt
|
|
||||||
desc.set_family('BuilderBlocks,' + desc.get_family())
|
|
||||||
self.set_property('font-desc', desc)
|
|
||||||
|
|
||||||
def set_smini_view(self, source_view):
|
|
||||||
self.set_view(source_view)
|
|
||||||
@@ -33,6 +33,7 @@ class SourceViewDnDMixin:
|
|||||||
|
|
||||||
def _on_uri_data_received(self, uris: []):
|
def _on_uri_data_received(self, uris: []):
|
||||||
uri = uris.pop(0)
|
uri = uris.pop(0)
|
||||||
|
|
||||||
self.command.exec_with_args("dnd_load_file_to_buffer", self, uri)
|
self.command.exec_with_args("dnd_load_file_to_buffer", self, uri)
|
||||||
|
|
||||||
if not uris: return
|
if not uris: return
|
||||||
|
|||||||
@@ -87,6 +87,16 @@ class IPCServer(Singleton):
|
|||||||
conn.close()
|
conn.close()
|
||||||
break
|
break
|
||||||
|
|
||||||
|
if "FILES|" in msg:
|
||||||
|
import json
|
||||||
|
data = msg.split("FILES|")[1].strip()
|
||||||
|
files = json.loads(data)
|
||||||
|
if files:
|
||||||
|
event_system.emit("handle-files-from-ipc", (files,))
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
break
|
||||||
|
|
||||||
if "DIR|" in msg:
|
if "DIR|" in msg:
|
||||||
file = msg.split("DIR|")[1].strip()
|
file = msg.split("DIR|")[1].strip()
|
||||||
if file:
|
if file:
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ class IPCSignalsMixin:
|
|||||||
self.broadcast_message, "handle-file", (fpath,)
|
self.broadcast_message, "handle-file", (fpath,)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def handle_files_from_ipc(self, uris: list) -> None:
|
||||||
|
logger.debug(f"Files From IPC: {uris}")
|
||||||
|
GLib.idle_add(
|
||||||
|
self.broadcast_message, "handle-files", (uris,)
|
||||||
|
)
|
||||||
|
|
||||||
def handle_dir_from_ipc(self, fpath: str) -> None:
|
def handle_dir_from_ipc(self, fpath: str) -> None:
|
||||||
logger.debug(f"Dir From IPC: {fpath}")
|
logger.debug(f"Dir From IPC: {fpath}")
|
||||||
GLib.idle_add(
|
GLib.idle_add(
|
||||||
|
|||||||
Reference in New Issue
Block a user