eric7/WebBrowser/GreaseMonkey/GreaseMonkeyJsObject.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/WebBrowser/GreaseMonkey/GreaseMonkeyJsObject.py	Sat May 15 18:45:04 2021 +0200
@@ -0,0 +1,126 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Python side for GreaseMonkey scripts.
+"""
+
+from PyQt5.QtCore import pyqtSlot, QObject, QSettings
+from PyQt5.QtGui import QGuiApplication
+
+
+class GreaseMonkeyJsObject(QObject):
+    """
+    Class implementing the Python side for GreaseMonkey scripts.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent object
+        @type QObject
+        """
+        super().__init__(parent)
+        
+        self.__settings = None
+    
+    def setSettingsFile(self, name):
+        """
+        Public method to set the settings file for the GreaseMonkey parameters.
+        
+        @param name name of the settings file
+        @type str
+        """
+        if self.__settings is not None:
+            self.__settings.sync()
+            self.__settings = None
+        
+        self.__settings = QSettings(name, QSettings.Format.IniFormat)
+    
+    @pyqtSlot(str, str, str)
+    def getValue(self, nspace, name, dValue):
+        """
+        Public slot to get the value for the named variable for the identified
+        script.
+        
+        @param nspace unique script id
+        @type str
+        @param name name of the variable
+        @type str
+        @param dValue default value
+        @type str
+        @return value for the named variable
+        @rtype str
+        """
+        vName = "GreaseMonkey-{0}/{1}".format(nspace, name)
+        sValue = self.__settings.value(vName, dValue)
+        if not sValue:
+            return dValue
+        
+        return sValue
+    
+    @pyqtSlot(str, str, str)
+    def setValue(self, nspace, name, value):
+        """
+        Public slot to set the value for the named variable for the identified
+        script.
+        
+        @param nspace unique script id
+        @type str
+        @param name name of the variable
+        @type str
+        @param value value to be set
+        @type str
+        @return flag indicating success
+        @rtype bool
+        """
+        vName = "GreaseMonkey-{0}/{1}".format(nspace, name)
+        self.__settings.setValue(vName, value)
+        self.__settings.sync()
+        return True
+    
+    @pyqtSlot(str, str)
+    def deleteValue(self, nspace, name):
+        """
+        Public slot to set delete the named variable for the identified script.
+        
+        @param nspace unique script id
+        @type str
+        @param name name of the variable
+        @type str
+        @return flag indicating success
+        @rtype bool
+        """
+        vName = "GreaseMonkey-{0}/{1}".format(nspace, name)
+        self.__settings.remove(vName)
+        self.__settings.sync()
+        return True
+    
+    @pyqtSlot(str)
+    def listValues(self, nspace):
+        """
+        Public slot to list the stored variables for the identified script.
+        
+        @param nspace unique script id
+        @type str
+        @return list of stored variables
+        @rtype list of str
+        """
+        nspaceName = "GreaseMonkey-{0}".format(nspace)
+        self.__settings.beginGroup(nspaceName)
+        keys = self.__settings.allKeys()
+        self.__settings.endGroup()
+        
+        return keys
+    
+    @pyqtSlot(str)
+    def setClipboard(self, text):
+        """
+        Public slot to set some clipboard text.
+        
+        @param text text to be copied to the clipboard
+        @type str
+        """
+        QGuiApplication.clipboard().setText(text)

eric ide

mercurial