@@ -191,7 +191,8 @@ def addItem(self, pluginClass, nameSaved = None, setCurrent = False, connsConfig
191191 item = PluginItem (name , pluginClass ,
192192 conns , connsConfigs ,
193193 self .config , pluginConfig ,
194- self .hintSignal , self .reloadWindowSignal )
194+ self .hintSignal , self .reloadWindowSignal ,
195+ self .onConnChnaged )
195196 self .tabAddItem (item )
196197 self .items .append (item )
197198 if setCurrent :
@@ -211,6 +212,23 @@ def tabAddItem(self, item):
211212 self .tabWidget .addTab (item .widget , item .name )
212213 self .tabWidget .setTabToolTip (self .tabWidget .count () - 1 , item .name + _ (", Double click to detach as a window" ))
213214
215+ def onConnChnaged (self , plugin , status :ConnectionStatus , msg ):
216+ for item in self .items :
217+ if item .plugin == plugin :
218+ for i in range (self .tabWidget .count ()):
219+ if self .tabWidget .widget (i ) == item .widget :
220+ self .setTabIcon (status , i )
221+ break
222+ item .widget .setWindowTitle (item .name + " - {}" .format (_ ("Connected" if status == ConnectionStatus .CONNECTED else _ ("Connection lose" ) if status == ConnectionStatus .LOSE else _ ("Disconnected" ))))
223+
224+ def setTabIcon (self , status :ConnectionStatus , i :int ):
225+ if status == ConnectionStatus .CONNECTED :
226+ self .tabWidget .setTabIcon (i , qta .icon ("fa.circle" , color = "#4caf50" ))
227+ elif status == ConnectionStatus .LOSE :
228+ self .tabWidget .setTabIcon (i , qta .icon ("fa.circle" , color = "orange" ))
229+ else :
230+ self .tabWidget .setTabIcon (i , QIcon ())
231+
214232 def addPluginInfo (self , pluginClass ):
215233 self .pluginsSelector .insertItem (self .pluginsSelector .count () - 1 ,
216234 f'{ pluginClass .name } - { pluginClass .id } ' )
@@ -459,11 +477,19 @@ def onTabDoubleClicked(self, idx):
459477
460478 def recoverTab (self , item , parent ):
461479 # prevent close and add this widget to tab
462- for i , _item in enumerate (self .items ):
463- if _item == item :
480+ idx = self .items .index (item )
481+ for i in range (self .tabWidget .count ()):
482+ widget = self .tabWidget .widget (i )
483+ for _item in self .items :
484+ if _item .widget == widget :
485+ idx2 = self .items .index (_item )
486+ break
487+ if idx2 > idx :
464488 self .tabWidget .insertTab (i , item .widget , item .name )
465489 self .tabWidget .setCurrentIndex (i )
466490 item .widget .setWindowFlag (Qt .Window , False )
491+ status = item .plugin .getConnStatus ()
492+ self .setTabIcon (status , i )
467493 break
468494
469495
@@ -567,10 +593,12 @@ def keyReleaseEvent(self,event):
567593 item = self .getCurrentItem ()
568594 item .onKeyReleaseEvent (event )
569595
570- def getCurrentItem (self ):
596+ def getCurrentItem (self , idx = False ):
571597 widget = self .tabWidget .currentWidget ()
572598 for item in self .items :
573599 if item .widget == widget :
600+ if idx :
601+ return self .tabWidget .indexOf (widget ), item
574602 return item
575603
576604 def toggleSettings (self ):
0 commit comments