Browse Source
(still quite crude impl, dynamic enable/disable plugin gui is misaligned with backend)patch-4
5 changed files with 101 additions and 35 deletions
@ -0,0 +1,40 @@ |
|||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, pyqtProperty, QObject |
|||
|
|||
from electrum.i18n import _ |
|||
from electrum.logging import get_logger |
|||
|
|||
class PluginQObject(QObject): |
|||
logger = get_logger(__name__) |
|||
|
|||
pluginChanged = pyqtSignal() |
|||
busyChanged = pyqtSignal() |
|||
pluginEnabledChanged = pyqtSignal() |
|||
|
|||
_busy = False |
|||
|
|||
def __init__(self, plugin, parent: 'ElectrumGuiApplication'): |
|||
super().__init__(parent) |
|||
self.plugin = plugin |
|||
self.app = parent |
|||
|
|||
@pyqtProperty(str, notify=pluginChanged) |
|||
def name(self): return self._name |
|||
|
|||
@pyqtProperty(bool, notify=busyChanged) |
|||
def busy(self): return self._busy |
|||
|
|||
@pyqtProperty(bool, notify=pluginEnabledChanged) |
|||
def pluginEnabled(self): return self.plugin.is_enabled() |
|||
|
|||
@pluginEnabled.setter |
|||
def pluginEnabled(self, enabled): |
|||
if enabled != self.plugin.is_enabled(): |
|||
self.logger.debug(f'can {self.plugin.can_user_disable()}, {self.plugin.is_available()}') |
|||
if not self.plugin.can_user_disable() and not enabled: |
|||
return |
|||
if enabled: |
|||
self.app.plugins.enable(self.plugin.name) |
|||
else: |
|||
self.app.plugins.disable(self.plugin.name) |
|||
self.pluginEnabledChanged.emit() |
|||
|
Loading…
Reference in new issue