Helpviewer/HelpIndexWidget.py

changeset 113
33afff70d8ee
parent 13
1af94a91f439
child 482
4650a72c307a
child 792
a13346916170
--- a/Helpviewer/HelpIndexWidget.py	Sat Feb 13 17:07:34 2010 +0000
+++ b/Helpviewer/HelpIndexWidget.py	Sun Feb 14 11:28:47 2010 +0000
@@ -16,7 +16,9 @@
     """
     Class implementing a window for showing the QtHelp index.
     
-    @signal linkActivated(const QUrl&) emitted when an index  entry is activated
+    @signal linkActivated(const QUrl&) emitted when an index entry is activated
+    @signal linksActivated(links, keyword) emitted when an index entry referencing
+            multiple targets is activated
     @signal escapePressed() emitted when the ESC key was pressed
     """
     def __init__(self, engine, mainWindow, parent = None):
@@ -52,18 +54,30 @@
                      self.__disableSearchEdit)
         self.connect(self.__engine.indexModel(), SIGNAL("indexCreated()"), 
                      self.__enableSearchEdit)
-        self.connect(self.__index, SIGNAL("linkActivated(const QUrl&, const QString&)"), 
-                     self, SIGNAL("linkActivated(const QUrl&)"))
-        self.connect(self.__index, 
-                     SIGNAL("linksActivated(const QMap<QString, QUrl>&, const QString&)"),
-                     self, 
-                     SIGNAL("linksActivated(const QMap<QString, QUrl>&, const QString&)"))
+        self.connect(self.__index, SIGNAL("activated(const QModelIndex&)"), 
+                     self.__activated)
         self.connect(self.__searchEdit, SIGNAL("returnPressed()"), 
                      self.__index, SLOT("activateCurrentItem()"))
         self.__layout.addWidget(self.__index)
         
         self.__index.viewport().installEventFilter(self)
     
+    def __activated(self, idx):
+        """
+        Private slot to handle the activation of a keyword entry.
+        
+        @param idx index of the activated entry (QModelIndex)
+        """
+        model = self.__index.model()
+        if model is not None:
+            keyword = model.data(idx, Qt.DisplayRole)
+            links = model.linksForKeyword(keyword)
+            if len(links) == 1:
+                self.emit(SIGNAL("linkActivated(const QUrl&)"), 
+                          QUrl(links[list(links.keys())[0]]))
+            else:
+                self.emit(SIGNAL("linksActivated"), links, keyword)
+    
     def __filterIndices(self, filter):
         """
         Private slot to filter the indices according to the given filter.
@@ -132,7 +146,7 @@
                 
                 act = menu.exec_()
                 if act == curTab:
-                    self.__index.activateCurrentItem()
+                    self.__activated(idx)
                 elif act == newTab:
                     model = self.__index.model()
                     if model is not None:

eric ide

mercurial