Clean up deprecated code and fix multiple issues

- Remove deprecated markdown_preview plugin and re-wrote
- Renamed alt_provider.py under words completer
- Fix words completion provider logic and cache handling
- Fix container orientations (VERTICAL -> HORIZONTAL) and add Separators
- Remove unused Gtk imports from search_replace plugin
- Fix event creation parameter order in source_file.py
- Fix typo in source_view.py (_load_pretify_json -> _load_prettify_json)
- Refactor webkit_ui with new load methods and enhanced settings
This commit is contained in:
2026-02-20 00:10:15 -06:00
parent 3e920291a0
commit aaadba3812
58 changed files with 366 additions and 275 deletions

View File

@@ -6,6 +6,7 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from ..widgets.separator_widget import Separator
from ..widgets.vte_widget import VteWidget
@@ -42,4 +43,6 @@ class FooterContainer(Gtk.Box):
vte_widget = VteWidget()
vte_widget.hide()
self.add( vte_widget )
self.add( vte_widget )
self.add( Separator("separator-footer", 0) )

View File

@@ -6,6 +6,7 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from ..widgets.separator_widget import Separator
from ..widgets.controls.transparency_scale import TransparencyScale
@@ -36,6 +37,7 @@ class HeaderContainer(Gtk.Box):
def _load_widgets(self):
widget_registery.expose_object("header-container", self)
self.add( Separator("separator-header", 0) )
self.add( TransparencyScale() )
def tggl_top_main_menubar(self):

View File

@@ -6,6 +6,7 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from ..widgets.separator_widget import Separator
@@ -25,7 +26,7 @@ class LeftContainer(Gtk.Box):
self.ctx = self.get_style_context()
self.ctx.add_class("left-container")
self.set_orientation(Gtk.Orientation.VERTICAL)
self.set_orientation(Gtk.Orientation.HORIZONTAL)
self.set_vexpand(True)
def _setup_signals(self):
@@ -36,4 +37,5 @@ class LeftContainer(Gtk.Box):
def _load_widgets(self):
widget_registery.expose_object("left-container", self)
self.add( Separator("separator-left", 1) )

View File

@@ -6,6 +6,7 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from ..widgets.separator_widget import Separator
@@ -25,7 +26,7 @@ class RightContainer(Gtk.Box):
self.ctx = self.get_style_context()
self.ctx.add_class("right-container")
self.set_orientation(Gtk.Orientation.VERTICAL)
self.set_orientation(Gtk.Orientation.HORIZONTAL)
self.set_vexpand(True)
def _setup_signals(self):
@@ -36,4 +37,4 @@ class RightContainer(Gtk.Box):
def _load_widgets(self):
widget_registery.expose_object("right-container", self)
self.add( Separator("separator-right", 1) )

View File

@@ -11,6 +11,7 @@ from gi.repository import Gtk
from gi.repository import GtkSource
# Application imports
from libs.event_factory import Code_Event_Types
@@ -26,16 +27,16 @@ class ProviderResponseCacheBase:
self._icon_theme = Gtk.IconTheme.get_default()
def process_file_load(self, buffer: GtkSource.Buffer):
def process_file_load(self, event: Code_Event_Types.AddedNewFileEvent):
raise ProviderResponseCacheException("ProviderResponseCacheBase 'process_file_load' not implemented...")
def process_file_close(self, buffer: GtkSource.Buffer):
def process_file_close(self, event: Code_Event_Types.RemovedFileEvent):
raise ProviderResponseCacheException("ProviderResponseCacheBase 'process_file_close' not implemented...")
def process_file_save(self, buffer: GtkSource.Buffer):
def process_file_save(self, event: Code_Event_Types.SavedFileEvent):
raise ProviderResponseCacheException("ProviderResponseCacheBase 'process_file_save' not implemented...")
def process_file_change(self, buffer: GtkSource.Buffer):
def process_file_change(self, event: Code_Event_Types.TextChangedEvent):
raise ProviderResponseCacheException("ProviderResponseCacheBase 'process_change' not implemented...")
def filter(self, word: str) -> list[dict]:

View File

@@ -45,8 +45,11 @@ class SourceFile(GtkSource.File):
def _changed(self, buffer: SourceBuffer):
self.check_file_on_disk()
event = Event_Factory.create_event("text_changed", buffer = buffer)
event.file = self
event = Event_Factory.create_event(
"text_changed",
file = self,
buffer = buffer
)
self.emit(event)
if self.is_deleted():

View File

@@ -82,7 +82,7 @@ class SourceView(GtkSource.View, SourceViewDnDMixin):
language = buffer.get_language()
if language.get_id() == "json":
self._load_pretify_json(view, menu)
self._load_prettify_json(view, menu)
menu.show_all()

View File

@@ -19,7 +19,6 @@ class WebkitUI(WebKit2.WebView):
self._setup_styling()
self._subscribe_to_events()
self._load_view()
self._setup_content_manager()
self.show_all()
@@ -36,15 +35,6 @@ class WebkitUI(WebKit2.WebView):
def _load_settings(self):
self.set_settings( WebkitUISettings() )
def _load_view(self):
path = settings_manager.get_context_path()
data = None
with open(f"{path}/index.html", "r") as f:
data = f.read()
self.load_html(content = data, base_uri = f"file://{path}/")
def _setup_content_manager(self):
content_manager = self.get_user_content_manager()
content_manager.connect("script-message-received", self._process_js_message)
@@ -60,6 +50,22 @@ class WebkitUI(WebKit2.WebView):
except Exception as e:
logger.info(e)
def load_url(self, url: str = ""):
if not url:
url = "https://duckduckgo.com/"
self.load_uri(url)
def load_context_base_path(self, path: str = ""):
if not path:
path = settings_manager.path_manager.get_context_path()
data = None
with open(f"{path}/index.html", "r") as f:
data = f.read()
self.load_html(content = data, base_uri = f"file://{path}")
def ui_message(self, message, mtype):
command = f"displayMessage('{message}', '{mtype}', '3')"
self.run_javascript(command, None, None)

View File

@@ -39,4 +39,64 @@ class WebkitUISettings(WebKit2.Settings):
self.set_enable_webaudio(True)
self.set_enable_accelerated_2d_canvas(True)
self.set_user_agent(f"{APP_NAME}")
self.set_user_agent(
f"Mozilla/5.0 (macOS, AArch64) {APP_NAME}/1.0 Chrome/140.0.0 AppleWebKit/537.36 Safari/537.36"
)
# Note: Most "browser" like setup I could think of.
def other_set_default_settings(self):
# Usability
self.set_property('enable-fullscreen', True)
self.set_property('print-backgrounds', True)
self.set_property('enable-frame-flattening', False)
self.set_property('enable-plugins', True)
self.set_property('enable-java', False)
self.set_property('enable-resizable-text-areas', True)
self.set_property('zoom-text-only', False)
self.set_property('enable-smooth-scrolling', True)
self.set_property('enable-back-forward-navigation-gestures', False)
self.set_property('media-playback-requires-user-gesture', False)
self.set_property('enable-tabs-to-links', True)
self.set_property('enable-caret-browsing', False)
# Security
# self.set_property('user-agent', 'Mozilla/5.0 (X11; Generic; Linux x86-64) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Safari/605.1.15')
self.set_property('user-agent', f"Mozilla/5.0 (macOS, AArch64) {APP_NAME}/1.0 Chrome/140.0.0 AppleWebKit/537.36 Safari/537.36")
self.set_property('enable-private-browsing', False)
self.set_property('enable-xss-auditor', True)
self.set_property('enable-hyperlink-auditing', False)
self.set_property('enable-site-specific-quirks', True)
self.set_property('enable-offline-web-application-cache', True)
self.set_property('enable-page-cache', True)
self.set_property('allow-modal-dialogs', True)
self.set_property('enable-html5-local-storage', True)
self.set_property('enable-html5-database', True)
self.set_property('allow-file-access-from-file-urls', True)
self.set_property('allow-universal-access-from-file-urls', False)
self.set_property('enable-dns-prefetching', False)
# Media stuff
self.set_hardware_acceleration_policy(0)
# self.set_property('hardware-acceleration-policy', 'on-demand')
self.set_property('enable-webgl', True)
self.set_property('enable-webaudio', True)
self.set_property('enable-accelerated-2d-canvas', True)
self.set_property('auto-load-images', True)
self.set_property('enable-media-capabilities', True)
self.set_property('enable-media-stream', True)
self.set_property('enable-mediasource', True)
self.set_property('enable-encrypted-media', True)
self.set_property('media-playback-allows-inline', True)
# JS
self.set_property('enable-javascript', True)
self.set_property('enable-javascript-markup', True)
self.set_property('javascript-can-access-clipboard', False)
self.set_property('javascript-can-open-windows-automatically', False)
# Debugging
self.set_property('enable-developer-extras', False)
self.set_property('enable-write-console-messages-to-stdout', False)
self.set_property('draw-compositing-indicators', False)
self.set_property('enable-mock-capture-devices', False)
self.set_property('enable-spatial-navigation', False)