WebBrowser/WebBrowserWindow.py

changeset 5779
b53fabc86f3c
parent 5777
2c4441d65ee3
child 5780
79d06c98c5c9
equal deleted inserted replaced
5778:1ee0b025691e 5779:b53fabc86f3c
107 _imageSearchEngine = None 107 _imageSearchEngine = None
108 _autoScroller = None 108 _autoScroller = None
109 _tabManager = None 109 _tabManager = None
110 _sessionManager = None 110 _sessionManager = None
111 111
112 _performingShutdown = False
113
112 def __init__(self, home, path, parent, name, fromEric=False, 114 def __init__(self, home, path, parent, name, fromEric=False,
113 initShortcutsOnly=False, searchWord=None, 115 initShortcutsOnly=False, searchWord=None,
114 private=False, qthelp=False, settingsDir=""): 116 private=False, qthelp=False, settingsDir=""):
115 """ 117 """
116 Constructor 118 Constructor
408 self.__virusTotal.urlScanReport.connect( 410 self.__virusTotal.urlScanReport.connect(
409 self.__virusTotalUrlScanReport) 411 self.__virusTotalUrlScanReport)
410 self.__virusTotal.fileScanReport.connect( 412 self.__virusTotal.fileScanReport.connect(
411 self.__virusTotalFileScanReport) 413 self.__virusTotalFileScanReport)
412 414
413 self.__shutdownCalled = False
414
415 self.flashCookieManager() 415 self.flashCookieManager()
416 416
417 if WebBrowserWindow._useQtHelp: 417 if WebBrowserWindow._useQtHelp:
418 QTimer.singleShot(0, self.__lookForNewDocumentation) 418 QTimer.singleShot(0, self.__lookForNewDocumentation)
419 if self.__searchWord is not None: 419 if self.__searchWord is not None:
887 )) 887 ))
888 if not self.__initShortcutsOnly: 888 if not self.__initShortcutsOnly:
889 if self.__fromEric: 889 if self.__fromEric:
890 self.exitAct.triggered.connect(self.close) 890 self.exitAct.triggered.connect(self.close)
891 else: 891 else:
892 self.exitAct.triggered.connect(self.__closeAllWindows) 892 self.exitAct.triggered.connect(self.shutdown)
893 self.__actions.append(self.exitAct) 893 self.__actions.append(self.exitAct)
894 894
895 self.backAct = E5Action( 895 self.backAct = E5Action(
896 self.tr('Backward'), 896 self.tr('Backward'),
897 UI.PixmapCache.getIcon("back.png"), 897 UI.PixmapCache.getIcon("back.png"),
2686 It opens the search dialog in order to perform the various 2686 It opens the search dialog in order to perform the various
2687 search actions and to collect the various search info. 2687 search actions and to collect the various search info.
2688 """ 2688 """
2689 self.__searchWidget.showFind() 2689 self.__searchWidget.showFind()
2690 2690
2691 def __closeAllWindows(self):
2692 """
2693 Private slot to close all windows.
2694 """
2695 for browser in WebBrowserWindow.BrowserWindows:
2696 if browser != self:
2697 browser.close()
2698 self.close()
2699
2700 def closeEvent(self, e): 2691 def closeEvent(self, e):
2701 """ 2692 """
2702 Protected event handler for the close event. 2693 Protected event handler for the close event.
2703 2694
2704 @param e the close event (QCloseEvent) 2695 @param e the close event (QCloseEvent)
2705 <br />This event is simply accepted after the history has been 2696 <br />This event is simply accepted after the history has been
2706 saved and all window references have been deleted. 2697 saved and all window references have been deleted.
2707 """ 2698 """
2708 if not self.__shutdownCalled: 2699 res = self.__shutdownWindow()
2709 res = self.shutdown() 2700
2710 2701 if res:
2711 if res: 2702 e.accept()
2712 e.accept() 2703 self.webBrowserWindowClosed.emit(self)
2713 self.webBrowserWindowClosed.emit(self)
2714 else:
2715 e.ignore()
2716 else: 2704 else:
2717 e.accept() 2705 e.ignore()
2718 2706
2719 def shutdown(self): 2707 def __shutdownWindow(self):
2720 """ 2708 """
2721 Public method to shut down the web browser. 2709 Private method to shut down a web browser window.
2722 2710
2723 @return flag indicating successful shutdown (boolean) 2711 @return flag indicating successful shutdown (boolean)
2724 """ 2712 """
2725 if not self.__tabWidget.shallShutDown(): 2713 if not WebBrowserWindow._performingShutdown:
2726 return False 2714 if not self.__tabWidget.shallShutDown():
2727 2715 return False
2728 if not self.downloadManager().allowQuit():
2729 return False
2730
2731 self.downloadManager().shutdown()
2732
2733 self.cookieJar().close()
2734 2716
2735 self.__bookmarksToolBar.setModel(None) 2717 self.__bookmarksToolBar.setModel(None)
2736 self.bookmarksManager().close()
2737
2738 self.historyManager().close()
2739
2740 self.passwordManager().close()
2741
2742 self.adBlockManager().close()
2743
2744 self.userAgentsManager().close()
2745
2746 self.speedDial().close()
2747
2748 self.syncManager().close()
2749
2750 ZoomManager.instance().close()
2751
2752 WebIconProvider.instance().close()
2753 2718
2754 self.__virusTotal.close() 2719 self.__virusTotal.close()
2755 2720
2756 self.flashCookieManager().shutdown()
2757
2758 self.__navigationBar.searchEdit().openSearchManager().close() 2721 self.__navigationBar.searchEdit().openSearchManager().close()
2759
2760 if len(WebBrowserWindow.BrowserWindows) == 1:
2761 # it is the last window
2762 self.tabManager().close()
2763 2722
2764 if WebBrowserWindow._useQtHelp: 2723 if WebBrowserWindow._useQtHelp:
2765 self.__searchEngine.cancelIndexing() 2724 self.__searchEngine.cancelIndexing()
2766 self.__searchEngine.cancelSearching() 2725 self.__searchEngine.cancelSearching()
2767 2726
2787 del WebBrowserWindow.BrowserWindows[ 2746 del WebBrowserWindow.BrowserWindows[
2788 WebBrowserWindow.BrowserWindows.index(self)] 2747 WebBrowserWindow.BrowserWindows.index(self)]
2789 except ValueError: 2748 except ValueError:
2790 pass 2749 pass
2791 2750
2792 self.networkManager().shutdown()
2793
2794 if not self.__fromEric: 2751 if not self.__fromEric:
2795 Preferences.syncPreferences() 2752 Preferences.syncPreferences()
2796 2753 if not WebBrowserWindow._performingShutdown and \
2797 self.__shutdownCalled = True 2754 len(WebBrowserWindow.BrowserWindows) == 0:
2755 # shut down the browser in case the last window was
2756 # simply closed
2757 self.shutdown()
2758
2759 return True
2760
2761 def __shallShutDown(self):
2762 """
2763 Private method to check, if the application should be shut down.
2764
2765 @return flag indicating a shut down
2766 @rtype bool
2767 """
2768 if Preferences.getWebBrowser("WarnOnMultipleClose"):
2769 windowCount = len(WebBrowserWindow.BrowserWindows)
2770 tabCount = 0
2771 for browser in WebBrowserWindow.BrowserWindows:
2772 tabCount += browser.tabWidget().count()
2773
2774 if windowCount > 1 or tabCount > 1:
2775 mb = E5MessageBox.E5MessageBox(
2776 E5MessageBox.Information,
2777 self.tr("Are you sure you want to close the web browser?"),
2778 self.tr("""Are you sure you want to close the web"""
2779 """ browser?\n"""
2780 """You have {0} windows with {1} tabs open.""")
2781 .format(windowCount, tabCount),
2782 modal=True,
2783 parent=self)
2784 if self.fromEric:
2785 quitButton = mb.addButton(
2786 self.tr("&Close"), E5MessageBox.AcceptRole)
2787 quitButton.setIcon(UI.PixmapCache.getIcon("close.png"))
2788 else:
2789 quitButton = mb.addButton(
2790 self.tr("&Quit"), E5MessageBox.AcceptRole)
2791 quitButton.setIcon(UI.PixmapCache.getIcon("exit.png"))
2792 mb.addButton(E5MessageBox.Cancel)
2793 mb.exec_()
2794 return mb.clickedButton() == quitButton
2795
2796 return True
2797
2798 def shutdown(self):
2799 """
2800 Public method to shut down the web browser.
2801
2802 @return flag indicating successful shutdown (boolean)
2803 """
2804 if not self.__shallShutDown():
2805 return False
2806
2807 if not self.downloadManager().allowQuit():
2808 return False
2809
2810 WebBrowserWindow._performingShutdown = True
2811
2812 self.sessionManager().shutdown()
2813
2814 self.downloadManager().shutdown()
2815
2816 self.cookieJar().close()
2817
2818 self.bookmarksManager().close()
2819
2820 self.historyManager().close()
2821
2822 self.passwordManager().close()
2823
2824 self.adBlockManager().close()
2825
2826 self.userAgentsManager().close()
2827
2828 self.speedDial().close()
2829
2830 self.syncManager().close()
2831
2832 ZoomManager.instance().close()
2833
2834 WebIconProvider.instance().close()
2835
2836 self.flashCookieManager().shutdown()
2837
2838 if len(WebBrowserWindow.BrowserWindows) == 1:
2839 # it is the last window
2840 self.tabManager().close()
2841
2842 self.networkManager().shutdown()
2843
2844
2845 for browser in WebBrowserWindow.BrowserWindows:
2846 if browser != self:
2847 browser.close()
2848 self.close()
2849
2798 return True 2850 return True
2799 2851
2800 def __backward(self): 2852 def __backward(self):
2801 """ 2853 """
2802 Private slot called to handle the backward action. 2854 Private slot called to handle the backward action.

eric ide

mercurial