src/eric7/WebBrowser/JavaScript/ExternalJsObject.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
23 23
24 class ExternalJsObject(QObject): 24 class ExternalJsObject(QObject):
25 """ 25 """
26 Class implementing the endpoint of our web channel. 26 Class implementing the endpoint of our web channel.
27 """ 27 """
28
28 extraObjects = {} 29 extraObjects = {}
29 30
30 def __init__(self, page): 31 def __init__(self, page):
31 """ 32 """
32 Constructor 33 Constructor
33 34
34 @param page reference to the web page object 35 @param page reference to the web page object
35 @type WebBrowserPage 36 @type WebBrowserPage
36 """ 37 """
37 super().__init__(page) 38 super().__init__(page)
38 39
39 self.__page = page 40 self.__page = page
40 41
41 self.__startPage = None 42 self.__startPage = None
42 self.__passwordManager = None 43 self.__passwordManager = None
43 44
44 def page(self): 45 def page(self):
45 """ 46 """
46 Public method returning a reference to the web page object. 47 Public method returning a reference to the web page object.
47 48
48 @return reference to the web page object 49 @return reference to the web page object
49 @rtype WebBrowserPage 50 @rtype WebBrowserPage
50 """ 51 """
51 return self.__page 52 return self.__page
52 53
53 @pyqtProperty(QObject, constant=True) 54 @pyqtProperty(QObject, constant=True)
54 def passwordManager(self): 55 def passwordManager(self):
55 """ 56 """
56 Public method to get a reference to the password manager JavaScript 57 Public method to get a reference to the password manager JavaScript
57 object. 58 object.
58 59
59 @return reference to the password manager JavaScript object 60 @return reference to the password manager JavaScript object
60 @rtype StartPageJsObject 61 @rtype StartPageJsObject
61 """ 62 """
62 if self.__passwordManager is None: 63 if self.__passwordManager is None:
63 self.__passwordManager = PasswordManagerJsObject(self) 64 self.__passwordManager = PasswordManagerJsObject(self)
64 65
65 return self.__passwordManager 66 return self.__passwordManager
66 67
67 @pyqtProperty(QObject, constant=True) 68 @pyqtProperty(QObject, constant=True)
68 def speedDial(self): 69 def speedDial(self):
69 """ 70 """
70 Public method returning a reference to a speed dial object. 71 Public method returning a reference to a speed dial object.
71 72
72 @return reference to a speed dial object 73 @return reference to a speed dial object
73 @rtype SpeedDial 74 @rtype SpeedDial
74 """ 75 """
75 if self.__page.url().toString() != "eric:speeddial": 76 if self.__page.url().toString() != "eric:speeddial":
76 return None 77 return None
77 78
78 return WebBrowserWindow.speedDial() 79 return WebBrowserWindow.speedDial()
79 80
80 @pyqtProperty(QObject, constant=True) 81 @pyqtProperty(QObject, constant=True)
81 def startPage(self): 82 def startPage(self):
82 """ 83 """
83 Public method to get a reference to the start page JavaScript object. 84 Public method to get a reference to the start page JavaScript object.
84 85
85 @return reference to the start page JavaScript object 86 @return reference to the start page JavaScript object
86 @rtype StartPageJsObject 87 @rtype StartPageJsObject
87 """ 88 """
88 if self.__startPage is None: 89 if self.__startPage is None:
89 self.__startPage = StartPageJsObject(self) 90 self.__startPage = StartPageJsObject(self)
90 91
91 return self.__startPage 92 return self.__startPage
92 93
93 @classmethod 94 @classmethod
94 def setupWebChannel(cls, channel, page): 95 def setupWebChannel(cls, channel, page):
95 """ 96 """
96 Class method to setup the web channel. 97 Class method to setup the web channel.
97 98
98 @param channel reference to the channel 99 @param channel reference to the channel
99 @type QWebChannel 100 @type QWebChannel
100 @param page reference to the web page 101 @param page reference to the web page
101 @type QWebEnginePage 102 @type QWebEnginePage
102 """ 103 """
103 channel.registerObject("eric_object", ExternalJsObject(page)) 104 channel.registerObject("eric_object", ExternalJsObject(page))
104 for jsObject in cls.extraObjects: 105 for jsObject in cls.extraObjects:
105 channel.registerObject("eric_{0}".format(jsObject), 106 channel.registerObject(
106 cls.extraObjects[jsObject]) 107 "eric_{0}".format(jsObject), cls.extraObjects[jsObject]
107 108 )
109
108 @classmethod 110 @classmethod
109 def registerExtraObject(cls, name, jsObject): 111 def registerExtraObject(cls, name, jsObject):
110 """ 112 """
111 Class method to register extra JavaScript objects. 113 Class method to register extra JavaScript objects.
112 114
113 @param name name for the object 115 @param name name for the object
114 @type str 116 @type str
115 @param jsObject reference to the JavaScript object to be registered 117 @param jsObject reference to the JavaScript object to be registered
116 @type QObject 118 @type QObject
117 """ 119 """
118 cls.extraObjects[id] = jsObject 120 cls.extraObjects[id] = jsObject
119 121
120 @classmethod 122 @classmethod
121 def unregisterExtraObject(cls, name): 123 def unregisterExtraObject(cls, name):
122 """ 124 """
123 Class method to unregister extra JavaScript objects. 125 Class method to unregister extra JavaScript objects.
124 126
125 @param name name of the object 127 @param name name of the object
126 @type str 128 @type str
127 """ 129 """
128 if name in cls.extraObjects: 130 if name in cls.extraObjects:
129 del cls.extraObjects[name] 131 del cls.extraObjects[name]

eric ide

mercurial