Fixed some errors with plugins.
This commit is contained in:
parent
dfe20fca30
commit
d6a373c726
@ -149,19 +149,31 @@ class PluginSystemManager:
|
||||
def _scan_plugins_in_directory(self, directory):
|
||||
"""Scan for plugins in a directory."""
|
||||
if not os.path.exists(directory) or not os.path.isdir(directory):
|
||||
logger.warning(f"Plugin directory not found or not a directory: {directory}")
|
||||
return
|
||||
|
||||
logger.info(f"Scanning for plugins in directory: {directory}")
|
||||
for item in os.listdir(directory):
|
||||
plugin_dir = os.path.join(directory, item)
|
||||
if not os.path.isdir(plugin_dir):
|
||||
continue
|
||||
|
||||
# Check for the traditional structure first (plugin.py & plugin.info)
|
||||
plugin_file = os.path.join(plugin_dir, "plugin.py")
|
||||
metadata_file = os.path.join(plugin_dir, "plugin.info")
|
||||
|
||||
# Fall back to [PluginName].py if plugin.py doesn't exist
|
||||
if not os.path.isfile(plugin_file):
|
||||
alternative_plugin_file = os.path.join(plugin_dir, f"{item}.py")
|
||||
if os.path.isfile(alternative_plugin_file):
|
||||
plugin_file = alternative_plugin_file
|
||||
logger.info(f"Using alternative plugin file: {alternative_plugin_file}")
|
||||
|
||||
# Check if we have any valid plugin file
|
||||
if os.path.isfile(plugin_file):
|
||||
# Extract plugin info
|
||||
module_name = os.path.basename(plugin_dir)
|
||||
logger.info(f"Found plugin: {module_name} in {plugin_dir}")
|
||||
metadata = self._load_plugin_metadata(metadata_file)
|
||||
|
||||
plugin_info = PluginInfo(
|
||||
@ -175,7 +187,10 @@ class PluginSystemManager:
|
||||
plugin_info.builtin = metadata.get('builtin', 'false').lower() == 'true'
|
||||
plugin_info.hidden = metadata.get('hidden', 'false').lower() == 'true'
|
||||
|
||||
logger.info(f"Adding plugin to registry: {module_name}")
|
||||
self._plugins[module_name] = plugin_info
|
||||
else:
|
||||
logger.warning(f"No plugin file found in directory: {plugin_dir}")
|
||||
|
||||
def _load_plugin_metadata(self, metadata_file):
|
||||
"""Load plugin metadata from a file."""
|
||||
@ -254,9 +269,23 @@ class PluginSystemManager:
|
||||
logger.debug(f"Plugin {module_name} is already loaded, considered active")
|
||||
return True
|
||||
|
||||
# Check if plugin is in the active plugins list
|
||||
is_active = module_name in self.getActivePlugins()
|
||||
logger.debug(f"Plugin {module_name} active status: {is_active}")
|
||||
# Check case-insensitive match in active plugins list
|
||||
active_plugins = self.getActivePlugins()
|
||||
|
||||
# Try exact match first
|
||||
if module_name in active_plugins:
|
||||
logger.debug(f"Plugin {module_name} found in active plugins list")
|
||||
return True
|
||||
|
||||
# Try case-insensitive match
|
||||
module_name_lower = module_name.lower()
|
||||
is_active = any(plugin.lower() == module_name_lower for plugin in active_plugins)
|
||||
|
||||
if is_active:
|
||||
logger.debug(f"Plugin {module_name} found in active plugins list (case-insensitive match)")
|
||||
else:
|
||||
logger.debug(f"Plugin {module_name} not found in active plugins list")
|
||||
|
||||
return is_active
|
||||
|
||||
def syncAllPluginsActive(self):
|
||||
@ -305,8 +334,20 @@ class PluginSystemManager:
|
||||
logger.info(f"Plugin {module_name} already loaded, skipping")
|
||||
return True
|
||||
|
||||
# Import plugin module
|
||||
plugin_file = os.path.join(pluginInfo.get_module_dir(), "plugin.py")
|
||||
# Try to find the plugin file
|
||||
module_name = pluginInfo.get_module_name()
|
||||
plugin_dir = pluginInfo.get_module_dir()
|
||||
|
||||
# Check for plugin.py first (standard format)
|
||||
plugin_file = os.path.join(plugin_dir, "plugin.py")
|
||||
|
||||
# Fall back to [PluginName].py if plugin.py doesn't exist
|
||||
if not os.path.exists(plugin_file):
|
||||
alternative_plugin_file = os.path.join(plugin_dir, f"{module_name}.py")
|
||||
if os.path.exists(alternative_plugin_file):
|
||||
plugin_file = alternative_plugin_file
|
||||
logger.info(f"Using alternative plugin file: {alternative_plugin_file}")
|
||||
|
||||
if not os.path.exists(plugin_file):
|
||||
logger.error(f"Plugin file not found: {plugin_file}")
|
||||
return False
|
||||
|
@ -37,7 +37,8 @@ class ByeCthulhu(Plugin):
|
||||
signal_manager = self.app.getSignalManager()
|
||||
self._signal_handler_id = signal_manager.connectSignal(
|
||||
"stop-application-completed",
|
||||
self.process
|
||||
self.process,
|
||||
"default" # Add profile parameter
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Error activating ByeCthulhu plugin: {e}")
|
||||
@ -54,9 +55,9 @@ class ByeCthulhu(Plugin):
|
||||
# Disconnect signal if we have an ID
|
||||
if self._signal_handler_id is not None:
|
||||
signal_manager = self.app.getSignalManager()
|
||||
signal_manager.disconnectSignal(
|
||||
"stop-application-completed",
|
||||
self._signal_handler_id
|
||||
# Use disconnectSignalByFunction instead since disconnectSignal doesn't exist
|
||||
signal_manager.disconnectSignalByFunction(
|
||||
self.process
|
||||
)
|
||||
self._signal_handler_id = None
|
||||
except Exception as e:
|
||||
|
Loading…
x
Reference in New Issue
Block a user