37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
# Python imports
|
|
|
|
# Lib imports
|
|
import gi
|
|
from gi.repository import Gio
|
|
|
|
# Application imports
|
|
|
|
|
|
|
|
class PluginReloadMixin:
|
|
_plugins_dir_watcher = None
|
|
|
|
def _set_plugins_watcher(self) -> None:
|
|
self._plugins_dir_watcher = Gio.File.new_for_path(
|
|
self._plugins_path
|
|
).monitor_directory(
|
|
Gio.FileMonitorFlags.WATCH_MOVES,
|
|
Gio.Cancellable()
|
|
)
|
|
|
|
self._plugins_dir_watcher.connect("changed", self._on_plugins_changed, ())
|
|
|
|
def _on_plugins_changed(self,
|
|
file_monitor, file,
|
|
other_file = None,
|
|
eve_type = None,
|
|
data = None
|
|
):
|
|
if eve_type in [Gio.FileMonitorEvent.CREATED, Gio.FileMonitorEvent.DELETED,
|
|
Gio.FileMonitorEvent.RENAMED, Gio.FileMonitorEvent.MOVED_IN,
|
|
Gio.FileMonitorEvent.MOVED_OUT]:
|
|
self.reload_plugins(file)
|
|
|
|
def reload_plugins(self, file: str = None) -> None:
|
|
logger.info(f"Reloading plugins... stub.")
|