diff --git a/plugins/code/code_minimap/__init__.py b/plugins/code/code_minimap/__init__.py new file mode 100644 index 0000000..d36fa8c --- /dev/null +++ b/plugins/code/code_minimap/__init__.py @@ -0,0 +1,3 @@ +""" + Pligin Module +""" diff --git a/plugins/code/code_minimap/__main__.py b/plugins/code/code_minimap/__main__.py new file mode 100644 index 0000000..a576329 --- /dev/null +++ b/plugins/code/code_minimap/__main__.py @@ -0,0 +1,3 @@ +""" + Pligin Package +""" diff --git a/plugins/code/code_minimap/code_minimap.py b/plugins/code/code_minimap/code_minimap.py new file mode 100644 index 0000000..14c1415 --- /dev/null +++ b/plugins/code/code_minimap/code_minimap.py @@ -0,0 +1,50 @@ +# 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 CodeMiniMap(Map): + def __init__(self): + super(CodeMiniMap, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + self.show() + + + 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) \ No newline at end of file diff --git a/plugins/code/code_minimap/manifest.json b/plugins/code/code_minimap/manifest.json new file mode 100644 index 0000000..fc18ca7 --- /dev/null +++ b/plugins/code/code_minimap/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "Code MiniMap", + "author": "ITDominator", + "version": "0.0.1", + "support": "", + "requests": {} +} diff --git a/plugins/code/code_minimap/plugin.py b/plugins/code/code_minimap/plugin.py new file mode 100644 index 0000000..a37db78 --- /dev/null +++ b/plugins/code/code_minimap/plugin.py @@ -0,0 +1,32 @@ +# Python imports + +# Lib imports + +# Application imports +from libs.event_factory import Event_Factory, Code_Event_Types + +from plugins.plugin_types import PluginCode + +from .code_minimap import CodeMiniMap + + + +code_minimap = CodeMiniMap() + + + +class Plugin(PluginCode): + def __init__(self): + super(Plugin, self).__init__() + + + def _controller_message(self, event: Code_Event_Types.CodeEvent): + if isinstance(event, Code_Event_Types.FocusedViewEvent): + code_minimap.set_smini_view(event.view) + + def load(self): + editors_container = self.requests_ui_element("editors-container") + editors_container.add( code_minimap ) + + def run(self): + ... diff --git a/plugins/code/info_bar/__init__.py b/plugins/code/info_bar/__init__.py new file mode 100644 index 0000000..d36fa8c --- /dev/null +++ b/plugins/code/info_bar/__init__.py @@ -0,0 +1,3 @@ +""" + Pligin Module +""" diff --git a/plugins/code/info_bar/__main__.py b/plugins/code/info_bar/__main__.py new file mode 100644 index 0000000..a576329 --- /dev/null +++ b/plugins/code/info_bar/__main__.py @@ -0,0 +1,3 @@ +""" + Pligin Package +""" diff --git a/src/core/widgets/code/info_bar_widget.py b/plugins/code/info_bar/info_bar_widget.py similarity index 84% rename from src/core/widgets/code/info_bar_widget.py rename to plugins/code/info_bar/info_bar_widget.py index a4da54c..40c48ed 100644 --- a/src/core/widgets/code/info_bar_widget.py +++ b/plugins/code/info_bar/info_bar_widget.py @@ -33,11 +33,7 @@ class InfoBarWidget(Gtk.Box): ... def _subscribe_to_events(self): - event_system.subscribe("set-info-labels", self._set_info_labels) - event_system.subscribe("set-path-label", self._set_path_label) - event_system.subscribe("set-encoding-label", self._set_encoding_label) - event_system.subscribe("set-line-char-label", self._set_line_char_label) - event_system.subscribe("set-file-type-label", self._set_file_type_label) + ... def _load_widgets(self): @@ -63,9 +59,9 @@ class InfoBarWidget(Gtk.Box): def _set_info_labels( self, path: Gio.File or str = None, - line_char: str = None, - file_type: str = None, - encoding_type: str = None + line_char: str = None, + file_type: str = None, + encoding_type: str = None ): self._set_path_label(path) self._set_line_char_label(line_char) diff --git a/plugins/code/info_bar/manifest.json b/plugins/code/info_bar/manifest.json new file mode 100644 index 0000000..26546b5 --- /dev/null +++ b/plugins/code/info_bar/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "Info Bar", + "author": "ITDominator", + "version": "0.0.1", + "support": "", + "requests": {} +} diff --git a/plugins/code/info_bar/plugin.py b/plugins/code/info_bar/plugin.py new file mode 100644 index 0000000..594569b --- /dev/null +++ b/plugins/code/info_bar/plugin.py @@ -0,0 +1,32 @@ +# Python imports + +# Lib imports + +# Application imports +from libs.event_factory import Event_Factory, Code_Event_Types + +from plugins.plugin_types import PluginCode + +from .info_bar_widget import InfoBarWidget + + + +info_bar_widget = InfoBarWidget() + + + +class Plugin(PluginCode): + def __init__(self): + super(Plugin, self).__init__() + + + def _controller_message(self, event: Code_Event_Types.CodeEvent): + if isinstance(event, Code_Event_Types.SetInfoLabelsEvent): + info_bar_widget._set_info_labels(*event.info) + + def load(self): + header = self.requests_ui_element("header-container") + header.add( info_bar_widget ) + + def run(self): + ... diff --git a/src/core/containers/base_container.py b/src/core/containers/base_container.py index 588265e..56525d7 100644 --- a/src/core/containers/base_container.py +++ b/src/core/containers/base_container.py @@ -29,6 +29,7 @@ class BaseContainer(Gtk.Box): self.ctx.add_class("base-container") self.set_orientation(Gtk.Orientation.VERTICAL) + self._update_transparency() def _setup_signals(self): ... diff --git a/src/core/containers/code/code_container.py b/src/core/containers/code/code_container.py index 16b8ddf..04598e0 100644 --- a/src/core/containers/code/code_container.py +++ b/src/core/containers/code/code_container.py @@ -9,7 +9,6 @@ from gi.repository import Gtk from ...widgets.code.code_base import CodeBase from ...widgets.separator_widget import Separator -from ...widgets.code.mini_view_widget import MiniViewWidget from .editors_container import EditorsContainer @@ -48,9 +47,11 @@ class CodeContainer(Gtk.Box): def _create_editor_widget(self, code_base: CodeBase): editors_container = Gtk.Box() + widget_registery.expose_object("code-container", self) + widget_registery.expose_object("editors-container", editors_container) + editors_container.add( Separator("separator_left") ) editors_container.add( EditorsContainer(code_base) ) editors_container.add( Separator("separator_right") ) - editors_container.add( code_base.get_mini_view_widget() ) return editors_container diff --git a/src/core/containers/code/editors_container.py b/src/core/containers/code/editors_container.py index c9350fe..06409a7 100644 --- a/src/core/containers/code/editors_container.py +++ b/src/core/containers/code/editors_container.py @@ -26,7 +26,6 @@ class EditorsContainer(Gtk.Paned): self.ctx = self.get_style_context() self.ctx.add_class("paned-editors-container") - self.set_size_request(-1, 300) self.set_hexpand(True) self.set_vexpand(True) self.set_wide_handle(True) diff --git a/src/core/widgets/code/command_system/command_system.py b/src/core/widgets/code/command_system/command_system.py index 0dd0e65..d5bcdc3 100644 --- a/src/core/widgets/code/command_system/command_system.py +++ b/src/core/widgets/code/command_system/command_system.py @@ -47,6 +47,14 @@ class CommandSystem: ... + def set_info_labels(self, data: tuple[str]): + event = Event_Factory.create_event( + "set_info_labels", + info = data + ) + + self.emit_to("plugins", event) + def get_file(self, view: SourceView): event = Event_Factory.create_event( "get_file", diff --git a/src/core/widgets/code/command_system/commands/update_info_bar.py b/src/core/widgets/code/command_system/commands/update_info_bar.py index 6776247..f83a102 100644 --- a/src/core/widgets/code/command_system/commands/update_info_bar.py +++ b/src/core/widgets/code/command_system/commands/update_info_bar.py @@ -27,7 +27,6 @@ def execute( column = iter.get_line_offset() ftype = file.ftype.get_id() if hasattr(file.ftype, "get_id") else file.ftype - event_system.emit( - "set-info-labels", + view.command.set_info_labels( (file.fpath, f"{line}:{column}", ftype, file.encoding) ) diff --git a/src/core/widgets/code/mixins/source_view_dnd_mixin.py b/src/core/widgets/code/mixins/source_view_dnd_mixin.py index bbfed59..72d47c8 100644 --- a/src/core/widgets/code/mixins/source_view_dnd_mixin.py +++ b/src/core/widgets/code/mixins/source_view_dnd_mixin.py @@ -37,4 +37,4 @@ class SourceViewDnDMixin: if not uris: return - self.command.exec_with_args("dnd_load_files", (self, uris)) + self.command.exec_with_args("dnd_load_files", self, uris) diff --git a/src/core/widgets/code/tabs_widget.py b/src/core/widgets/code/tabs_widget.py index 3f7487f..067a2ac 100644 --- a/src/core/widgets/code/tabs_widget.py +++ b/src/core/widgets/code/tabs_widget.py @@ -116,6 +116,8 @@ class TabsWidget(Gtk.Notebook): self.handler_unblock(self.switch_page_id) + break + def modified_changed(self, buffer): for page_widget in self.get_children(): tab = self.get_tab_label(page_widget) @@ -128,12 +130,16 @@ class TabsWidget(Gtk.Notebook): else: ctx.remove_class("file-changed") + break + def externally_deleted(self, buffer): for page_widget in self.get_children(): tab = self.get_tab_label(page_widget) if not buffer == tab.file.buffer: continue ctx = tab.label.get_style_context() ctx.add_class("file-deleted") + break + def close_item(self, menu_item, page_widget): tab = self.get_tab_label(page_widget) diff --git a/src/libs/dto/code/__init__.py b/src/libs/dto/code/__init__.py index 0616520..fbba5b7 100644 --- a/src/libs/dto/code/__init__.py +++ b/src/libs/dto/code/__init__.py @@ -6,8 +6,9 @@ from .code_event import CodeEvent from .register_provider_event import RegisterProviderEvent from .register_command_event import RegisterCommandEvent -from .file_externally_modified_event import FileExternallyModifiedEvent -from .file_externally_deleted_event import FileExternallyDeletedEvent +from .file_externally_modified_event import FileExternallyModifiedEvent +from .file_externally_deleted_event import FileExternallyDeletedEvent +from .set_info_labels_event import SetInfoLabelsEvent from .get_new_command_system_event import GetNewCommandSystemEvent from .request_completion_event import RequestCompletionEvent diff --git a/src/libs/dto/code/set_info_labels_event.py b/src/libs/dto/code/set_info_labels_event.py new file mode 100644 index 0000000..d12a889 --- /dev/null +++ b/src/libs/dto/code/set_info_labels_event.py @@ -0,0 +1,15 @@ +# Python imports +from dataclasses import dataclass, field + +# Lib imports +import gi +from gi.repository import Gio + +# Application imports +from .code_event import CodeEvent + + + +@dataclass +class SetInfoLabelsEvent(CodeEvent): + info: tuple[str or Gio.File] = None