Refactor plugin event API: rename message* to emit* and requests_ui_element to request_ui_element
This commit is contained in:
@@ -37,7 +37,7 @@ class Plugin(PluginCode):
|
||||
]
|
||||
)
|
||||
|
||||
self.message_to("source_views", event)
|
||||
self.emit_to("source_views", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -25,7 +25,7 @@ class Plugin(PluginCode):
|
||||
code_minimap.set_smini_view(event.view)
|
||||
|
||||
def load(self):
|
||||
editors_container = self.requests_ui_element("editors-container")
|
||||
editors_container = self.request_ui_element("editors-container")
|
||||
editors_container.add( code_minimap )
|
||||
|
||||
def run(self):
|
||||
|
||||
@@ -34,7 +34,7 @@ class Plugin(PluginCode):
|
||||
binding = "<Shift><Control>c"
|
||||
)
|
||||
|
||||
self.message_to("source_views", event)
|
||||
self.emit_to("source_views", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -34,7 +34,7 @@ class Plugin(PluginCode):
|
||||
binding = "<Control>slash"
|
||||
)
|
||||
|
||||
self.message_to("source_views", event)
|
||||
self.emit_to("source_views", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -33,7 +33,7 @@ class Plugin(PluginCode):
|
||||
provider = self.provider,
|
||||
language_ids = []
|
||||
)
|
||||
self.message_to("completion", event)
|
||||
self.emit_to("completion", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -33,7 +33,7 @@ class Plugin(PluginCode):
|
||||
provider = self.provider,
|
||||
language_ids = []
|
||||
)
|
||||
self.message_to("completion", event)
|
||||
self.emit_to("completion", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -33,7 +33,7 @@ class Plugin(PluginCode):
|
||||
provider = self.provider,
|
||||
language_ids = []
|
||||
)
|
||||
self.message_to("completion", event)
|
||||
self.emit_to("completion", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -33,7 +33,7 @@ class Plugin(PluginCode):
|
||||
provider = self.provider,
|
||||
language_ids = []
|
||||
)
|
||||
self.message_to("completion", event)
|
||||
self.emit_to("completion", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -33,7 +33,7 @@ class Plugin(PluginCode):
|
||||
provider = self.provider,
|
||||
language_ids = []
|
||||
)
|
||||
self.message_to("completion", event)
|
||||
self.emit_to("completion", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -25,7 +25,7 @@ class Plugin(PluginCode):
|
||||
info_bar_widget._set_info_labels(*event.info)
|
||||
|
||||
def load(self):
|
||||
header = self.requests_ui_element("header-container")
|
||||
header = self.request_ui_element("header-container")
|
||||
header.add( info_bar_widget )
|
||||
|
||||
def run(self):
|
||||
|
||||
@@ -24,7 +24,8 @@ class Plugin(PluginCode):
|
||||
event = Event_Factory.create_event(
|
||||
"get_file", buffer = buffer
|
||||
)
|
||||
self.message_to("files", event)
|
||||
self.emit_to("files", event)
|
||||
|
||||
if not event.response.get_location(): return
|
||||
|
||||
markdown_preview.fpath = event.response.get_location().get_path()
|
||||
@@ -38,7 +39,7 @@ class Plugin(PluginCode):
|
||||
markdown_preview._do_markdown_translate(event.buffer)
|
||||
|
||||
def load(self):
|
||||
separator_right = self.requests_ui_element("separator-right")
|
||||
separator_right = self.request_ui_element("separator-right")
|
||||
markdown_preview.set_relative_to(separator_right)
|
||||
|
||||
event = Event_Factory.create_event("register_command",
|
||||
@@ -48,7 +49,7 @@ class Plugin(PluginCode):
|
||||
binding = "<Shift><Control>m"
|
||||
)
|
||||
|
||||
self.message_to("source_views", event)
|
||||
self.emit_to("source_views", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -37,17 +37,17 @@ class Plugin(PluginCode):
|
||||
)
|
||||
|
||||
def load(self):
|
||||
footer = self.requests_ui_element("footer-container")
|
||||
footer = self.request_ui_element("footer-container")
|
||||
footer.add( search_replace )
|
||||
|
||||
event = Event_Factory.create_event("register_command",
|
||||
command_name = "search_replace",
|
||||
command = Handler,
|
||||
binding_mode = "released",
|
||||
binding = "<Control>f"
|
||||
binding = ["<Control>f", "<Control>r"]
|
||||
)
|
||||
|
||||
self.message_to("source_views", event)
|
||||
self.emit_to("source_views", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
@@ -62,4 +62,5 @@ class Handler:
|
||||
):
|
||||
logger.debug("Command: Search/Replace")
|
||||
|
||||
search_replace.last_key = args[0]
|
||||
search_replace.hide() if search_replace.is_visible() else search_replace.show()
|
||||
|
||||
@@ -19,9 +19,10 @@ class SearchReplace(Gtk.Grid, SearchReplaceMixin):
|
||||
def __init__(self):
|
||||
super(SearchReplace, self).__init__()
|
||||
|
||||
self.active_view = None
|
||||
self.highlight_tag = None
|
||||
self.matches: list[tuple] = []
|
||||
self.active_view = None
|
||||
self.highlight_tag: Gtk.TextTag = None
|
||||
self.matches: list[tuple] = []
|
||||
self.last_key: str = None
|
||||
|
||||
self._setup_styling()
|
||||
self._setup_signals()
|
||||
@@ -112,7 +113,13 @@ class SearchReplace(Gtk.Grid, SearchReplaceMixin):
|
||||
|
||||
def _handle_show(self, widget):
|
||||
self.find_entry.set_text("")
|
||||
self.find_entry.grab_focus()
|
||||
if not self.last_key == "r":
|
||||
self.find_entry.grab_focus()
|
||||
return
|
||||
|
||||
self.replace_entry.grab_focus()
|
||||
# Fake focus call to prompt search
|
||||
self._find_entry_focus_in_event(self.find_entry, None)
|
||||
|
||||
def _handle_hide(self, widget):
|
||||
if not self.active_view: return
|
||||
|
||||
@@ -21,7 +21,7 @@ class Plugin(PluginCode):
|
||||
|
||||
def load(self):
|
||||
tabs_controller = TabsController()
|
||||
code_container = self.requests_ui_element("code-container")
|
||||
code_container = self.request_ui_element("code-container")
|
||||
|
||||
self.register_controller("tabs", tabs_controller)
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class TabsController(ControllerBase):
|
||||
super(TabsController, self).__init__()
|
||||
|
||||
self.tabs_widget: TabsWidget = TabsWidget()
|
||||
self.tabs_widget.message = self.message
|
||||
self.tabs_widget.emit = self.emit
|
||||
|
||||
|
||||
def _controller_message(self, event: Code_Event_Types.CodeEvent):
|
||||
|
||||
@@ -56,7 +56,7 @@ class TabsWidget(Gtk.Notebook):
|
||||
buffer = file.buffer
|
||||
)
|
||||
|
||||
self.message(event)
|
||||
self.emit(event)
|
||||
|
||||
def _switch_page(self, notebook, page_widget, page_num):
|
||||
tab = self.get_tab_label(page_widget)
|
||||
@@ -65,7 +65,7 @@ class TabsWidget(Gtk.Notebook):
|
||||
buffer = tab.file.buffer
|
||||
)
|
||||
|
||||
self.message(event)
|
||||
self.emit(event)
|
||||
|
||||
def _bind_tab_menu(self, tab, page_widget):
|
||||
def do_context_menu(tab, eve, page_widget):
|
||||
|
||||
3
plugins/code/telescope/__init__.py
Normal file
3
plugins/code/telescope/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
Pligin Module
|
||||
"""
|
||||
3
plugins/code/telescope/__main__.py
Normal file
3
plugins/code/telescope/__main__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
Pligin Package
|
||||
"""
|
||||
7
plugins/code/telescope/manifest.json
Normal file
7
plugins/code/telescope/manifest.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "Telescope",
|
||||
"author": "ITDominator",
|
||||
"version": "0.0.1",
|
||||
"support": "",
|
||||
"requests": {}
|
||||
}
|
||||
53
plugins/code/telescope/plugin.py
Normal file
53
plugins/code/telescope/plugin.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# Python imports
|
||||
|
||||
# Lib imports
|
||||
|
||||
# Application imports
|
||||
from libs.event_factory import Event_Factory, Code_Event_Types
|
||||
|
||||
from plugins.plugin_types import PluginCode
|
||||
|
||||
from .telescope import Telescope
|
||||
|
||||
|
||||
|
||||
telescope = Telescope()
|
||||
|
||||
|
||||
|
||||
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):
|
||||
...
|
||||
|
||||
def load(self):
|
||||
window = self.request_ui_element("main-window")
|
||||
telescope.set_transient_for(window)
|
||||
|
||||
event = Event_Factory.create_event("register_command",
|
||||
command_name = "telescope",
|
||||
command = Handler,
|
||||
binding_mode = "released",
|
||||
binding = "<Control>b"
|
||||
)
|
||||
|
||||
self.emit_to("source_views", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
|
||||
class Handler:
|
||||
@staticmethod
|
||||
def execute(
|
||||
view: any,
|
||||
*args,
|
||||
**kwargs
|
||||
):
|
||||
logger.debug("Command: Telescope")
|
||||
|
||||
telescope.hide() if telescope.is_visible() else telescope.show()
|
||||
55
plugins/code/telescope/telescope.py
Normal file
55
plugins/code/telescope/telescope.py
Normal file
@@ -0,0 +1,55 @@
|
||||
# Python imports
|
||||
|
||||
# Lib imports
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import GLib
|
||||
|
||||
# Application imports
|
||||
|
||||
|
||||
|
||||
class Telescope(Gtk.Window):
|
||||
def __init__(self):
|
||||
super(Telescope, self).__init__(Gtk.WindowType.POPUP)
|
||||
|
||||
self._setup_styling()
|
||||
self._setup_signals()
|
||||
self._subscribe_to_events()
|
||||
self._load_widgets()
|
||||
|
||||
|
||||
def _setup_styling(self):
|
||||
self.set_decorated(False)
|
||||
self.set_modal(False)
|
||||
self.set_destroy_with_parent(True)
|
||||
self.set_skip_pager_hint(True)
|
||||
self.set_skip_taskbar_hint(True)
|
||||
self.set_size_request(620, 480)
|
||||
self.set_position(Gtk.WindowPosition.CENTER_ON_PARENT)
|
||||
|
||||
def _setup_signals(self):
|
||||
# self.connect("page-added", self._page_added)
|
||||
...
|
||||
|
||||
def _subscribe_to_events(self):
|
||||
...
|
||||
|
||||
def _load_widgets(self):
|
||||
main_box = Gtk.Box()
|
||||
left_box = Gtk.Box()
|
||||
list_box = Gtk.ListBox()
|
||||
search_entry = Gtk.SearchEntry()
|
||||
|
||||
left_box.set_orientation(Gtk.Orientation.VERTICAL)
|
||||
list_box.set_vexpand(True)
|
||||
list_box.set_size_request(120, -1)
|
||||
|
||||
left_box.add(list_box)
|
||||
left_box.add(search_entry)
|
||||
main_box.add(left_box)
|
||||
self.add(main_box)
|
||||
|
||||
main_box.show_all()
|
||||
|
||||
@@ -24,7 +24,7 @@ class Plugin(PluginCode):
|
||||
binding = "<Shift><Control>h"
|
||||
)
|
||||
|
||||
self.message_to("source_views", event)
|
||||
self.emit_to("source_views", event)
|
||||
|
||||
def run(self):
|
||||
...
|
||||
|
||||
@@ -21,7 +21,7 @@ class Plugin(PluginUI):
|
||||
...
|
||||
|
||||
def load(self):
|
||||
ui_element = self.requests_ui_element("header-container")
|
||||
ui_element = self.request_ui_element("header-container")
|
||||
ui_element.add( self.generate_plugin_element() )
|
||||
|
||||
def run(self):
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
from libs.controllers.controller_base import ControllerBase
|
||||
from libs.event_factory import Event_Factory, Code_Event_Types
|
||||
|
||||
from libs.dto.states import SourceViewStates
|
||||
|
||||
from ...source_view import SourceView
|
||||
|
||||
from .state_manager import SourceViewStateManager
|
||||
@@ -74,8 +76,8 @@ class SourceViewsController(ControllerBase, list):
|
||||
|
||||
source_view.set_buffer(event.next_file.buffer)
|
||||
|
||||
def create_source_view(self):
|
||||
source_view: SourceView = SourceView()
|
||||
def create_source_view(self, state: SourceViewStates = SourceViewStates.INSERT):
|
||||
source_view: SourceView = SourceView(state)
|
||||
source_view.command = self._get_command_system()
|
||||
source_view.command.set_data(source_view)
|
||||
|
||||
|
||||
@@ -76,6 +76,8 @@ class Window(Gtk.ApplicationWindow):
|
||||
event_system.subscribe("load-interactive-debug", self._load_interactive_debug)
|
||||
|
||||
def _load_widgets(self):
|
||||
widget_registery.expose_object("main-window", self)
|
||||
|
||||
if settings_manager.is_debug():
|
||||
self.set_interactive_debugging(True)
|
||||
|
||||
|
||||
@@ -24,3 +24,6 @@ class EmitDispatcher:
|
||||
|
||||
def emit_to(self, controller: str, event: BaseEvent):
|
||||
self.message_to(controller, event)
|
||||
|
||||
def emit_to_selected(self, names: list[str], event: BaseEvent):
|
||||
self.message_to_selected(names, event)
|
||||
|
||||
@@ -56,8 +56,8 @@ class PluginsController(ControllerBase, PluginsControllerMixin, PluginReloadMixi
|
||||
locations.append(path)
|
||||
for file in os.listdir(path):
|
||||
_path = os.path.join(path, file)
|
||||
if os.path.isdir(_path):
|
||||
self._collect_search_locations(_path, locations)
|
||||
if not os.path.isdir(_path): continue
|
||||
self._collect_search_locations(_path, locations)
|
||||
|
||||
def _load_plugins(
|
||||
self,
|
||||
@@ -150,12 +150,10 @@ class PluginsController(ControllerBase, PluginsControllerMixin, PluginReloadMixi
|
||||
def create_plugin_context(self):
|
||||
plugin_context: PluginContext = PluginContext()
|
||||
|
||||
plugin_context.requests_ui_element: callable = self.requests_ui_element
|
||||
plugin_context.message: callable = self.message
|
||||
plugin_context.message_to: callable = self.message_to
|
||||
plugin_context.message_to_selected: callable = self.message_to_selected
|
||||
plugin_context.emit: callable = event_system.emit
|
||||
plugin_context.emit_and_await: callable = event_system.emit_and_await
|
||||
plugin_context.request_ui_element: callable = self.request_ui_element
|
||||
plugin_context.emit: callable = self.emit
|
||||
plugin_context.emit_to: callable = self.emit_to
|
||||
plugin_context.emit_to_selected: callable = self.emit_to_selected
|
||||
plugin_context.register_controller: callable = self.register_controller
|
||||
|
||||
return plugin_context
|
||||
|
||||
@@ -18,26 +18,21 @@ class PluginContext:
|
||||
def __init__(self):
|
||||
super(PluginContext, self).__init__()
|
||||
|
||||
def requests_ui_element(self, element_id: str):
|
||||
raise PluginContextException("Plugin Context 'requests_ui_element' must be overridden...")
|
||||
|
||||
def _controller_message(self, event: BaseEvent):
|
||||
raise PluginContextException("Plugin Context '_controller_message' must be overridden...")
|
||||
|
||||
def message(self, event: BaseEvent):
|
||||
raise PluginContextException("Plugin Context 'message' must be overridden...")
|
||||
def request_ui_element(self, element_id: str):
|
||||
raise PluginContextException("Plugin Context 'request_ui_element' must be overridden...")
|
||||
|
||||
def message_to(self, name: str, event: BaseEvent):
|
||||
raise PluginContextException("Plugin Context 'message_to' must be overridden...")
|
||||
|
||||
def message_to_selected(self, names: list[str], event: BaseEvent):
|
||||
raise PluginContextException("Plugin Context 'message_to_selected' must be overridden...")
|
||||
|
||||
def emit(self, event_type: str, data: tuple = ()):
|
||||
def emit(self, event: BaseEvent):
|
||||
raise PluginContextException("Plugin Context 'emit' must be overridden...")
|
||||
|
||||
def emit_and_await(self, event_type: str, data: tuple = ()):
|
||||
raise PluginContextException("Plugin Context 'emit_and_await' must be overridden...")
|
||||
def emit_to(self, name: str, event: BaseEvent):
|
||||
raise PluginContextException("Plugin Context 'emit_to' must be overridden...")
|
||||
|
||||
def emit_to_selected(self, names: list[str], event: BaseEvent):
|
||||
raise PluginContextException("Plugin Context 'emit_to_selected' must be overridden...")
|
||||
|
||||
def register_controller(self, name: str, controller):
|
||||
raise PluginContextException("Plugin Context 'register_controller' must be overridden...")
|
||||
|
||||
@@ -30,20 +30,14 @@ class PluginBase:
|
||||
def run(self):
|
||||
raise PluginBaseException("Plugin Base 'run' must be overriden by Plugin")
|
||||
|
||||
def requests_ui_element(self, element_id: str):
|
||||
raise PluginBaseException("Plugin Base 'requests_ui_element' must be overriden by Plugin")
|
||||
def request_ui_element(self, element_id: str):
|
||||
raise PluginBaseException("Plugin Base 'request_ui_element' must be overriden by Plugin")
|
||||
|
||||
def message(self, event: BaseEvent):
|
||||
raise PluginBaseException("Plugin Base 'message' must be overriden by Plugin")
|
||||
|
||||
def message_to(self, name: str, event: BaseEvent):
|
||||
raise PluginBaseException("Plugin Base 'message_to' must be overriden by Plugin")
|
||||
|
||||
def message_to_selected(self, names: list[str], event: BaseEvent):
|
||||
raise PluginBaseException("Plugin Base 'message_to_selected' must be overriden by Plugin")
|
||||
|
||||
def emit(self, event_type: str, data: tuple = ()):
|
||||
def emit(self, event: BaseEvent):
|
||||
raise PluginBaseException("Plugin Base 'emit' must be overriden by Plugin")
|
||||
|
||||
def emit_and_await(self, event_type: str, data: tuple = ()):
|
||||
raise PluginBaseException("Plugin Base 'emit_and_await' must be overriden by Plugin")
|
||||
def emit_to(self, name: str, event: BaseEvent):
|
||||
raise PluginBaseException("Plugin Base 'emit_to' must be overriden by Plugin")
|
||||
|
||||
def emit_to_selected(self, names: list[str], event: BaseEvent):
|
||||
raise PluginBaseException("Plugin Base 'emit_to_selected' must be overriden by Plugin")
|
||||
|
||||
@@ -31,17 +31,17 @@ class PluginCode(PluginBase):
|
||||
def run(self):
|
||||
raise PluginCodeException("Plugin Code 'run' must be overriden by Plugin")
|
||||
|
||||
def requests_ui_element(self, element_id: str):
|
||||
return self.plugin_context.requests_ui_element(element_id)
|
||||
|
||||
def message(self, event: BaseEvent):
|
||||
return self.plugin_context.message(event)
|
||||
|
||||
def message_to(self, name: str, event: BaseEvent):
|
||||
return self.plugin_context.message_to(name, event)
|
||||
|
||||
def message_to_selected(self, names: list[str], event: BaseEvent):
|
||||
return self.plugin_context.message_to_selected(names, event)
|
||||
|
||||
def register_controller(self, name: str, controller):
|
||||
return self.plugin_context.register_controller(name, controller)
|
||||
|
||||
def request_ui_element(self, element_id: str):
|
||||
return self.plugin_context.request_ui_element(element_id)
|
||||
|
||||
def emit(self, event: BaseEvent):
|
||||
return self.plugin_context.emit(event)
|
||||
|
||||
def emit_to(self, name: str, event: BaseEvent):
|
||||
return self.plugin_context.emit_to(name, event)
|
||||
|
||||
def emit_to_selected(self, names: list[str], event: BaseEvent):
|
||||
return self.plugin_context.emit_to_selected(names, event)
|
||||
|
||||
@@ -31,20 +31,14 @@ class PluginUI(PluginBase):
|
||||
def run(self):
|
||||
raise PluginCodeException("Plugin UI 'run' must be overriden by Plugin")
|
||||
|
||||
def requests_ui_element(self, element_id: str):
|
||||
return self.plugin_context.requests_ui_element(element_id)
|
||||
def request_ui_element(self, element_id: str):
|
||||
return self.plugin_context.request_ui_element(element_id)
|
||||
|
||||
def message(self, event: BaseEvent):
|
||||
return self.plugin_context.message(event)
|
||||
def emit(self, event: BaseEvent):
|
||||
return self.plugin_context.emit(event)
|
||||
|
||||
def message_to(self, name: str, event: BaseEvent):
|
||||
return self.plugin_context.message_to(name, event)
|
||||
def emit_to(self, name: str, event: BaseEvent):
|
||||
return self.plugin_context.emit_to(name, event)
|
||||
|
||||
def message_to_selected(self, names: list[str], event: BaseEvent):
|
||||
return self.plugin_context.message_to_selected(names, event)
|
||||
|
||||
def emit(self, event_type: str, data: tuple = ()):
|
||||
self.plugin_context.emit(event_type, data)
|
||||
|
||||
def emit_and_await(self, event_type: str, data: tuple = ()):
|
||||
self.plugin_context.emit_and_await(event_type, data)
|
||||
def emit_to_selected(self, names: list[str], event: BaseEvent):
|
||||
return self.plugin_context.emit_to_selected(names, event)
|
||||
|
||||
@@ -13,7 +13,7 @@ class InvalidPluginException(Exception):
|
||||
|
||||
class PluginsControllerMixin:
|
||||
|
||||
def requests_ui_element(self, target_id: str):
|
||||
def request_ui_element(self, target_id: str):
|
||||
if not target_id in widget_registery.objects:
|
||||
raise InvalidPluginException('Unknown UI "target_id" given in requests.')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user