UI/CodeDocumentationViewer.py

changeset 6266
c7bc0e516cd6
parent 6048
82ad8ec9548c
child 6372
ae44c83fccab
equal deleted inserted replaced
6265:56bd09c4c297 6266:c7bc0e516cd6
12 try: 12 try:
13 basestring # __IGNORE_WARNING__ 13 basestring # __IGNORE_WARNING__
14 except NameError: 14 except NameError:
15 basestring = str 15 basestring = str
16 16
17 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QUrl 17 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QUrl, QTimer
18 from PyQt5.QtGui import QCursor 18 from PyQt5.QtGui import QCursor
19 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, \ 19 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, \
20 QComboBox, QSizePolicy, QLineEdit, QTextEdit, QToolTip, QToolButton, \ 20 QComboBox, QSizePolicy, QLineEdit, QTextEdit, QToolTip, QToolButton, \
21 QActionGroup, QMenu 21 QActionGroup, QMenu
22 22
208 self.__shuttingDown = False 208 self.__shuttingDown = False
209 self.__startingUp = True 209 self.__startingUp = True
210 210
211 self.__lastDocumentation = None 211 self.__lastDocumentation = None
212 self.__requestingEditor = None 212 self.__requestingEditor = None
213
214 self.__unregisterTimer = QTimer(self)
215 self.__unregisterTimer.setInterval(30000) # 30 seconds
216 self.__unregisterTimer.setSingleShot(True)
217 self.__unregisterTimer.timeout.connect(self.__unregisterTimerTimeout)
218 self.__mostRecentlyUnregisteredProvider = None
213 219
214 def __setupUi(self): 220 def __setupUi(self):
215 """ 221 """
216 Private method to generate the UI layout. 222 Private method to generate the UI layout.
217 """ 223 """
340 346
341 self.__providers[providerName] = (provider, supported) 347 self.__providers[providerName] = (provider, supported)
342 self.providerComboBox.addItem(providerDisplay, providerName) 348 self.providerComboBox.addItem(providerDisplay, providerName)
343 349
344 self.providerAdded.emit() 350 self.providerAdded.emit()
351
352 if self.__unregisterTimer.isActive():
353 if providerName == self.__mostRecentlyUnregisteredProvider:
354 # this is assumed to be a plug-in reload
355 self.__unregisterTimer.stop()
356 self.__mostRecentlyUnregisteredProvider = None
357 self.__selectProvider(providerName)
345 358
346 def unregisterProvider(self, providerName): 359 def unregisterProvider(self, providerName):
347 """ 360 """
348 Public method register a source docu provider. 361 Public method register a source docu provider.
349 362
351 @type str 364 @type str
352 """ 365 """
353 if providerName in self.__providers: 366 if providerName in self.__providers:
354 if providerName == self.__selectedProvider: 367 if providerName == self.__selectedProvider:
355 self.providerComboBox.setCurrentIndex(0) 368 self.providerComboBox.setCurrentIndex(0)
369
370 # in case this is just a temporary unregistration (< 30s)
371 # e.g. when the plug-in is re-installed or updated
372 self.__mostRecentlyUnregisteredProvider = providerName
373 self.__unregisterTimer.start()
356 374
357 del self.__providers[providerName] 375 del self.__providers[providerName]
358 index = self.providerComboBox.findData(providerName) 376 index = self.providerComboBox.findData(providerName)
359 self.providerComboBox.removeItem(index) 377 self.providerComboBox.removeItem(index)
360 378
361 self.providerRemoved.emit() 379 self.providerRemoved.emit()
380
381 @pyqtSlot()
382 def __unregisterTimerTimeout(self):
383 """
384 Private slot handling the timeout signal of the unregister timer.
385 """
386 self.__mostRecentlyUnregisteredProvider = None
362 387
363 def isSupportedLanguage(self, language): 388 def isSupportedLanguage(self, language):
364 """ 389 """
365 Public method to check, if the given language is supported by the 390 Public method to check, if the given language is supported by the
366 selected provider. 391 selected provider.
579 showMarkdown = Preferences.getDocuViewer("ShowInfoAsRichText") 604 showMarkdown = Preferences.getDocuViewer("ShowInfoAsRichText")
580 if showMarkdown != self.__showMarkdown: 605 if showMarkdown != self.__showMarkdown:
581 self.__showTextViewer(showMarkdown) 606 self.__showTextViewer(showMarkdown)
582 607
583 provider = Preferences.getDocuViewer("Provider") 608 provider = Preferences.getDocuViewer("Provider")
609 self.__selectProvider(provider)
610
611 def __selectProvider(self, provider):
612 """
613 Private method to select a provider programmatically.
614
615 @param provider name of the provider to be selected
616 @type str
617 """
584 if provider != self.__selectedProvider: 618 if provider != self.__selectedProvider:
585 index = self.providerComboBox.findData(provider) 619 index = self.providerComboBox.findData(provider)
586 if index < 0: 620 if index < 0:
587 index = 0 621 index = 0
588 self.providerComboBox.setCurrentIndex(index) 622 self.providerComboBox.setCurrentIndex(index)

eric ide

mercurial