Helpviewer/HelpTabWidget.py

changeset 653
0540f3c52b46
parent 646
aa422d7436a7
child 717
3ebae1fae98d
equal deleted inserted replaced
651:e8020b9ac2b9 653:0540f3c52b46
13 from PyQt4.QtGui import QWidget, QHBoxLayout, QMenu, QToolButton, QPrinter, \ 13 from PyQt4.QtGui import QWidget, QHBoxLayout, QMenu, QToolButton, QPrinter, \
14 QPrintDialog, QDialog, QIcon 14 QPrintDialog, QDialog, QIcon
15 15
16 from E5Gui.E5TabWidget import E5TabWidget 16 from E5Gui.E5TabWidget import E5TabWidget
17 from E5Gui import E5MessageBox 17 from E5Gui import E5MessageBox
18 from E5Gui.E5Application import e5App
18 19
19 from .HelpTabBar import HelpTabBar 20 from .HelpTabBar import HelpTabBar
20 from .HelpBrowserWV import HelpBrowser 21 from .HelpBrowserWV import HelpBrowser
21 import Helpviewer 22 import Helpviewer
22 23
24 from .History.HistoryCompleter import HistoryCompletionModel, HistoryCompleter
25
26 from .UrlBar.StackedUrlBar import StackedUrlBar
27 from .UrlBar.UrlBar import UrlBar
28
23 import UI.PixmapCache 29 import UI.PixmapCache
24 30
31 import Utilities
25 import Preferences 32 import Preferences
26 33
27 from eric5config import getConfig 34 from eric5config import getConfig
28 35
29 class HelpTabWidget(E5TabWidget): 36 class HelpTabWidget(E5TabWidget):
39 Constructor 46 Constructor
40 47
41 @param parent reference to the parent widget (QWidget) 48 @param parent reference to the parent widget (QWidget)
42 """ 49 """
43 E5TabWidget.__init__(self, parent, dnd = True) 50 E5TabWidget.__init__(self, parent, dnd = True)
44 self.setCustomTabBar(True, HelpTabBar(self)) 51 self.__tabBar = HelpTabBar(self)
52 self.setCustomTabBar(True, self.__tabBar)
45 53
46 self.__mainWindow = parent 54 self.__mainWindow = parent
47 55
56 self.__stackedUrlBar = StackedUrlBar(self)
57 self.__tabBar.tabMoved.connect(self.__stackedUrlBar.moveBar)
58
48 self.__tabContextMenuIndex = -1 59 self.__tabContextMenuIndex = -1
49 ## self.currentChanged[int].connect(self.__currentChanged) 60 self.currentChanged[int].connect(self.__currentChanged)
50 self.setTabContextMenuPolicy(Qt.CustomContextMenu) 61 self.setTabContextMenuPolicy(Qt.CustomContextMenu)
51 self.customTabContextMenuRequested.connect(self.__showContextMenu) 62 self.customTabContextMenuRequested.connect(self.__showContextMenu)
52 63
53 self.__rightCornerWidget = QWidget(self) 64 self.__rightCornerWidget = QWidget(self)
54 self.__rightCornerWidgetLayout = QHBoxLayout(self.__rightCornerWidget) 65 self.__rightCornerWidgetLayout = QHBoxLayout(self.__rightCornerWidget)
87 self.__newTabButton.setToolTip(self.trUtf8("Open a new help window tab")) 98 self.__newTabButton.setToolTip(self.trUtf8("Open a new help window tab"))
88 self.setCornerWidget(self.__newTabButton, Qt.TopLeftCorner) 99 self.setCornerWidget(self.__newTabButton, Qt.TopLeftCorner)
89 self.__newTabButton.clicked[bool].connect(self.newBrowser) 100 self.__newTabButton.clicked[bool].connect(self.newBrowser)
90 101
91 self.__initTabContextMenu() 102 self.__initTabContextMenu()
103
104 self.__historyCompleter = None
92 105
93 def __initTabContextMenu(self): 106 def __initTabContextMenu(self):
94 """ 107 """
95 Private mezhod to create the tab context menu. 108 Private method to create the tab context menu.
96 """ 109 """
97 self.__tabContextMenu = QMenu(self) 110 self.__tabContextMenu = QMenu(self)
98 self.tabContextNewAct = \ 111 self.tabContextNewAct = \
99 self.__tabContextMenu.addAction(UI.PixmapCache.getIcon("tabNew.png"), 112 self.__tabContextMenu.addAction(UI.PixmapCache.getIcon("tabNew.png"),
100 self.trUtf8('New Tab'), self.newBrowser) 113 self.trUtf8('New Tab'), self.newBrowser)
216 elif isinstance(link, QUrl): 229 elif isinstance(link, QUrl):
217 linkName = link.toString() 230 linkName = link.toString()
218 else: 231 else:
219 linkName = link 232 linkName = link
220 233
234 urlbar = UrlBar(self.__mainWindow, self)
235 if self.__historyCompleter is None:
236 self.__historyCompletionModel = HistoryCompletionModel(self)
237 self.__historyCompletionModel.setSourceModel(
238 Helpviewer.HelpWindow.HelpWindow.historyManager().historyFilterModel())
239 self.__historyCompleter = HistoryCompleter(
240 self.__historyCompletionModel, self)
241 self.__historyCompleter.activated[str].connect(self.__pathSelected)
242 urlbar.setCompleter(self.__historyCompleter)
243 urlbar.returnPressed.connect(self.__lineEditReturnPressed)
244 self.__stackedUrlBar.addWidget(urlbar)
245
221 browser = HelpBrowser(self.__mainWindow, self) 246 browser = HelpBrowser(self.__mainWindow, self)
247 urlbar.setBrowser(browser)
222 248
223 browser.sourceChanged.connect(self.__sourceChanged) 249 browser.sourceChanged.connect(self.__sourceChanged)
224 browser.titleChanged.connect(self.__titleChanged) 250 browser.titleChanged.connect(self.__titleChanged)
225 browser.highlighted.connect(self.showMessage) 251 browser.highlighted.connect(self.showMessage)
226 browser.backwardAvailable.connect(self.__mainWindow.setBackwardAvailable) 252 browser.backwardAvailable.connect(self.__mainWindow.setBackwardAvailable)
305 """ 331 """
306 Public slot to close a browser based on it's index. 332 Public slot to close a browser based on it's index.
307 333
308 @param index index of browser to close (integer) 334 @param index index of browser to close (integer)
309 """ 335 """
336 urlbar = self.__stackedUrlBar.widget(index)
337 self.__stackedUrlBar.removeWidget(urlbar)
338 del urlbar
339
310 browser = self.widget(index) 340 browser = self.widget(index)
311 self.removeTab(index) 341 self.removeTab(index)
312 del browser 342 del browser
343
313 if self.count() == 0: 344 if self.count() == 0:
314 self.newBrowser() 345 self.newBrowser()
315 else: 346 else:
316 self.currentChanged[int].emit(self.currentIndex()) 347 self.currentChanged[int].emit(self.currentIndex())
317 348
512 """ 543 """
513 Public slot to handle a change of preferences. 544 Public slot to handle a change of preferences.
514 """ 545 """
515 for browser in self.browsers(): 546 for browser in self.browsers():
516 browser.preferencesChanged() 547 browser.preferencesChanged()
548
549 for urlbar in self.__stackedUrlBar.urlBars():
550 urlbar.preferencesChanged()
517 551
518 def __loadStarted(self): 552 def __loadStarted(self):
519 """ 553 """
520 Private method to handle the loadStarted signal. 554 Private method to handle the loadStarted signal.
521 """ 555 """
556 Private slot to handle the icon change. 590 Private slot to handle the icon change.
557 """ 591 """
558 browser = self.sender() 592 browser = self.sender()
559 593
560 if browser is not None: 594 if browser is not None:
561 self.__mainWindow.iconChanged(browser.icon())
562 self.setTabIcon(self.indexOf(browser), browser.icon()) 595 self.setTabIcon(self.indexOf(browser), browser.icon())
563 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().iconChanged(browser.url()) 596 Helpviewer.HelpWindow.HelpWindow.bookmarksManager().iconChanged(browser.url())
564 597
565 def getSourceFileList(self): 598 def getSourceFileList(self):
566 """ 599 """
607 if mb.clickedButton() == closeTabButton: 640 if mb.clickedButton() == closeTabButton:
608 self.closeBrowser() 641 self.closeBrowser()
609 return False 642 return False
610 643
611 return True 644 return True
645
646 def stackedUrlBar(self):
647 """
648 Public method to get a reference to the stacked url bar.
649
650 @return reference to the stacked url bar (StackedUrlBar)
651 """
652 return self.__stackedUrlBar
653
654 def currentUrlBar(self):
655 """
656 Public method to get a reference to the current url bar.
657
658 @return reference to the current url bar (UrlBar)
659 """
660 return self.__stackedUrlBar.currentWidget()
661
662 def __lineEditReturnPressed(self):
663 """
664 Private slot to handle the entering of an URL.
665 """
666 edit = self.sender()
667 if e5App().keyboardModifiers() == Qt.AltModifier:
668 self.newBrowser(edit.text())
669 else:
670 self.currentBrowser().setSource(QUrl(edit.text()))
671 self.currentBrowser().setFocus()
672
673 def __pathSelected(self, path):
674 """
675 Private slot called when a URL is selected from the completer.
676
677 @param path path to be shown (string)
678 """
679 url = self.__guessUrlFromPath(path)
680 self.currentBrowser().setSource(url)
681
682 def __guessUrlFromPath(self, path):
683 """
684 Private method to guess an URL given a path string.
685
686 @param path path string to guess an URL for (string)
687 @return guessed URL (QUrl)
688 """
689 manager = self.__mainWindow.openSearchManager()
690 path = Utilities.fromNativeSeparators(path)
691 url = manager.convertKeywordSearchToUrl(path)
692 if url.isValid():
693 return url
694
695 try:
696 return QUrl.fromUserInput(path)
697 except AttributeError:
698 return QUrl(path)
699
700 def __currentChanged(self, index):
701 """
702 Private slot to handle an index change.
703
704 @param index new index (integer)
705 """
706 self.__stackedUrlBar.setCurrentIndex(index)
707
708 browser = self.browserAt(index)
709 if browser.url() == "" and browser.hasFocus():
710 self.__stackedUrlBar.currentWidget.setFocus()
711 elif browser.url() != "":
712 browser.setFocus()

eric ide

mercurial