Hopefully fixed an error in simple plugin system.
This commit is contained in:
parent
35a83327ac
commit
1b4c4916e3
@ -1,6 +1,9 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
#
|
#
|
||||||
# Copyright (c) 2024 Stormux
|
# Copyright (c) 2024 Stormux
|
||||||
|
# Copyright (c) 2010-2012 The Orca Team
|
||||||
|
# Copyright (c) 2012 Igalia, S.L.
|
||||||
|
# Copyright (c) 2005-2010 Sun Microsystems Inc.
|
||||||
#
|
#
|
||||||
# This library is free software; you can redistribute it and/or
|
# This library is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Lesser General Public
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
@ -17,6 +20,8 @@
|
|||||||
# Free Software Foundation, Inc., Franklin Street, Fifth Floor,
|
# Free Software Foundation, Inc., Franklin Street, Fifth Floor,
|
||||||
# Boston MA 02110-1301 USA.
|
# Boston MA 02110-1301 USA.
|
||||||
#
|
#
|
||||||
|
# Fork of Orca Screen Reader (GNOME)
|
||||||
|
# Original source: https://gitlab.gnome.org/GNOME/orca
|
||||||
|
|
||||||
"""Simple Plugin System for Cthulhu."""
|
"""Simple Plugin System for Cthulhu."""
|
||||||
|
|
||||||
@ -28,9 +33,13 @@ import string
|
|||||||
import _thread
|
import _thread
|
||||||
import logging
|
import logging
|
||||||
from subprocess import Popen, PIPE
|
from subprocess import Popen, PIPE
|
||||||
|
import gettext
|
||||||
|
|
||||||
from cthulhu.plugin import Plugin, cthulhu_hookimpl
|
from cthulhu.plugin import Plugin, cthulhu_hookimpl
|
||||||
|
|
||||||
|
# Set up translation function
|
||||||
|
_ = gettext.gettext
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# Global variables for API access
|
# Global variables for API access
|
||||||
@ -128,7 +137,15 @@ class SimplePluginSystem(Plugin):
|
|||||||
if shortcut != '':
|
if shortcut != '':
|
||||||
logger.debug(f"Registering shortcut: {shortcut}")
|
logger.debug(f"Registering shortcut: {shortcut}")
|
||||||
currPluginSetting['shortcut'] = shortcut
|
currPluginSetting['shortcut'] = shortcut
|
||||||
self.registerGestureByString(currPluginSetting['function'], _(currPluginSetting['pluginname']), shortcut)
|
try:
|
||||||
|
# Try to use the translation function, fall back to plain text if it fails
|
||||||
|
plugin_name = _(currPluginSetting['pluginname'])
|
||||||
|
except Exception:
|
||||||
|
# If translation fails, use the original name
|
||||||
|
plugin_name = currPluginSetting['pluginname']
|
||||||
|
logger.warning(f"Translation failed for plugin: {currPluginSetting['pluginname']}")
|
||||||
|
|
||||||
|
self.registerGestureByString(currPluginSetting['function'], plugin_name, shortcut)
|
||||||
return currPluginSetting
|
return currPluginSetting
|
||||||
|
|
||||||
def id_generator(self, size=7, chars=string.ascii_letters):
|
def id_generator(self, size=7, chars=string.ascii_letters):
|
||||||
@ -298,6 +315,38 @@ class SimplePluginSystem(Plugin):
|
|||||||
currPluginSetting['functionname'] = self.id_generator()
|
currPluginSetting['functionname'] = self.id_generator()
|
||||||
return currPluginSetting
|
return currPluginSetting
|
||||||
|
|
||||||
|
def registerGestureByString(self, function, description, shortcut):
|
||||||
|
"""Register a keyboard shortcut for a function.
|
||||||
|
|
||||||
|
This is a compatibility wrapper for the new plugin system.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Try to get the InputEventManager and register the shortcut
|
||||||
|
input_manager = self.app.getDynamicApiManager().getAPI('InputEventManager')
|
||||||
|
if input_manager:
|
||||||
|
input_manager.registerGestureByString(function, description, shortcut)
|
||||||
|
logger.debug(f"Registered shortcut {shortcut} for {description}")
|
||||||
|
else:
|
||||||
|
logger.error("Could not get InputEventManager API")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error registering shortcut {shortcut}: {e}")
|
||||||
|
|
||||||
|
def unregisterShortcut(self, function, shortcut):
|
||||||
|
"""Unregister a keyboard shortcut for a function.
|
||||||
|
|
||||||
|
This is a compatibility wrapper for the new plugin system.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Try to get the InputEventManager and unregister the shortcut
|
||||||
|
input_manager = self.app.getDynamicApiManager().getAPI('InputEventManager')
|
||||||
|
if input_manager:
|
||||||
|
input_manager.unregisterGestureByString(shortcut)
|
||||||
|
logger.debug(f"Unregistered shortcut {shortcut}")
|
||||||
|
else:
|
||||||
|
logger.error("Could not get InputEventManager API")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error unregistering shortcut {shortcut}: {e}")
|
||||||
|
|
||||||
def load_plugins(self):
|
def load_plugins(self):
|
||||||
"""Load and setup all plugins in the plugin repository."""
|
"""Load and setup all plugins in the plugin repository."""
|
||||||
if not self.loaded:
|
if not self.loaded:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user