299 registeredInterfaces = {} |
299 registeredInterfaces = {} |
300 for interfaceName in self.__debuggerInterfaces: |
300 for interfaceName in self.__debuggerInterfaces: |
301 registeredInterfaces[interfaceName] = \ |
301 registeredInterfaces[interfaceName] = \ |
302 self.__debuggerInterfaces[interfaceName] |
302 self.__debuggerInterfaces[interfaceName] |
303 |
303 |
304 self.__debuggerInterfaces = {} |
|
305 self.__debuggerInterfaceRegistry = {} |
304 self.__debuggerInterfaceRegistry = {} |
306 for interfaceName, getRegistryData in registeredInterfaces.items(): |
305 for interfaceName, getRegistryData in registeredInterfaces.items(): |
307 self.registerDebuggerInterface(interfaceName, getRegistryData) |
306 self.registerDebuggerInterface(interfaceName, getRegistryData, |
|
307 reregister=True) |
308 |
308 |
309 self.__maxVariableSize = Preferences.getDebugger("MaxVariableSize") |
309 self.__maxVariableSize = Preferences.getDebugger("MaxVariableSize") |
310 |
310 |
311 def registerDebuggerInterface(self, interfaceName, getRegistryData): |
311 def registerDebuggerInterface(self, interfaceName, getRegistryData, |
|
312 reregister=False): |
312 """ |
313 """ |
313 Public method to register a debugger interface. |
314 Public method to register a debugger interface. |
314 |
315 |
315 @param interfaceName name of the debugger interface |
316 @param interfaceName name of the debugger interface |
316 @type str |
317 @type str |
318 to get the debugger interface details. This method shall |
319 to get the debugger interface details. This method shall |
319 return the client language, the client capabilities, the |
320 return the client language, the client capabilities, the |
320 list of associated file extensions and a function reference |
321 list of associated file extensions and a function reference |
321 to create the debugger interface (see __createDebuggerInterface()) |
322 to create the debugger interface (see __createDebuggerInterface()) |
322 @type function |
323 @type function |
323 """ |
324 @param reregister flag indicating to re-register the interface |
324 if interfaceName in self.__debuggerInterfaces: |
325 @type bool |
|
326 """ |
|
327 if interfaceName in self.__debuggerInterfaces and not reregister: |
325 E5MessageBox.warning( |
328 E5MessageBox.warning( |
326 None, |
329 None, |
327 self.tr("Register Debugger Interface"), |
330 self.tr("Register Debugger Interface"), |
328 self.tr("""<p>The debugger interface <b>{0}</b> has already""" |
331 self.tr("""<p>The debugger interface <b>{0}</b> has already""" |
329 """ been registered. Ignoring this request.</p>""")) |
332 """ been registered. Ignoring this request.</p>""")) |
330 return |
333 return |
331 |
334 |
|
335 if not reregister: |
|
336 self.__debuggerInterfaces[interfaceName] = getRegistryData |
332 registryDataList = getRegistryData() |
337 registryDataList = getRegistryData() |
333 if registryDataList: |
338 if registryDataList: |
334 self.__debuggerInterfaces[interfaceName] = getRegistryData |
|
335 for clientLanguage, clientCapabilities, clientExtensions, \ |
339 for clientLanguage, clientCapabilities, clientExtensions, \ |
336 interfaceCreator in registryDataList: |
340 interfaceCreator in registryDataList: |
337 self.__debuggerInterfaceRegistry[clientLanguage] = [ |
341 self.__debuggerInterfaceRegistry[clientLanguage] = [ |
338 clientCapabilities, clientExtensions, interfaceCreator, |
342 clientCapabilities, clientExtensions, interfaceCreator, |
339 interfaceName] |
343 interfaceName] |