WebBrowser/WebBrowserWindow.py

changeset 6627
acd62f281a99
parent 6625
a67fee7bc09c
child 6630
bddd12f27a4c
equal deleted inserted replaced
6626:9a9e485949a4 6627:acd62f281a99
16 import os 16 import os
17 import shutil 17 import shutil
18 import sys 18 import sys
19 19
20 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \ 20 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \
21 QUrl, QTextCodec, QProcess, QEvent 21 QUrl, QTextCodec, QProcess, QEvent, QFileInfo
22 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics 22 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics
23 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \ 23 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \
24 QComboBox, QLabel, QMenu, QLineEdit, QApplication, \ 24 QComboBox, QLabel, QMenu, QLineEdit, QApplication, \
25 QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QInputDialog, QAction 25 QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QInputDialog, QAction
26 from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEnginePage, \ 26 from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEnginePage, \
114 _performingStartup = True 114 _performingStartup = True
115 _performingShutdown = False 115 _performingShutdown = False
116 _lastActiveWindow = None 116 _lastActiveWindow = None
117 117
118 def __init__(self, home, path, parent, name, 118 def __init__(self, home, path, parent, name,
119 initShortcutsOnly=False, searchWord=None, 119 searchWord=None, private=False, qthelp=False, settingsDir="",
120 private=False, qthelp=False, settingsDir="",
121 restoreSession=False, single=False, saname=""): 120 restoreSession=False, single=False, saname=""):
122 """ 121 """
123 Constructor 122 Constructor
124 123
125 @param home the URL to be shown 124 @param home the URL to be shown
128 @type str 127 @type str
129 @param parent parent widget of this window 128 @param parent parent widget of this window
130 @type QWidget 129 @type QWidget
131 @param name name of this window 130 @param name name of this window
132 @type str 131 @type str
133 @keyparam initShortcutsOnly flag indicating to just initialize the
134 keyboard shortcuts
135 @type bool
136 @keyparam searchWord word to search for 132 @keyparam searchWord word to search for
137 @type str 133 @type str
138 @keyparam private flag indicating a private browsing window 134 @keyparam private flag indicating a private browsing window
139 @type bool 135 @type bool
140 @keyparam qthelp flag indicating to enable the QtHelp support 136 @keyparam qthelp flag indicating to enable the QtHelp support
156 self.setWindowTitle(self.tr("eric6 Web Browser (Private Mode)")) 152 self.setWindowTitle(self.tr("eric6 Web Browser (Private Mode)"))
157 else: 153 else:
158 self.setWindowTitle(self.tr("eric6 Web Browser")) 154 self.setWindowTitle(self.tr("eric6 Web Browser"))
159 155
160 self.__settingsDir = settingsDir 156 self.__settingsDir = settingsDir
161 self.__initShortcutsOnly = initShortcutsOnly
162 self.setWindowIcon(UI.PixmapCache.getIcon("ericWeb.png")) 157 self.setWindowIcon(UI.PixmapCache.getIcon("ericWeb.png"))
163 158
164 self.__mHistory = [] 159 self.__mHistory = []
165 self.__lastConfigurationPageName = "" 160 self.__lastConfigurationPageName = ""
166 161
169 self.__shortcutsDialog = None 164 self.__shortcutsDialog = None
170 165
171 self.__eventMouseButtons = Qt.NoButton 166 self.__eventMouseButtons = Qt.NoButton
172 self.__eventKeyboardModifiers = Qt.NoModifier 167 self.__eventKeyboardModifiers = Qt.NoModifier
173 168
174 if self.__initShortcutsOnly: 169 if qVersionTuple() < (5, 11, 0) and \
175 WebBrowserWindow.setUseQtHelp(qthelp or bool(searchWord)) 170 Preferences.getWebBrowser("WebInspectorEnabled"):
176 self.__initActions() 171 os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = \
172 str(Preferences.getWebBrowser("WebInspectorPort"))
173
174 WebBrowserWindow.setUseQtHelp(qthelp or bool(searchWord))
175
176 self.webProfile(private)
177 self.networkManager()
178
179 self.__htmlFullScreen = False
180 self.__windowStates = Qt.WindowNoState
181 self.__isClosing = False
182
183 from .SearchWidget import SearchWidget
184 from .QtHelp.HelpTocWidget import HelpTocWidget
185 from .QtHelp.HelpIndexWidget import HelpIndexWidget
186 from .QtHelp.HelpSearchWidget import HelpSearchWidget
187 from .WebBrowserView import WebBrowserView
188 from .WebBrowserTabWidget import WebBrowserTabWidget
189 from .AdBlock.AdBlockIcon import AdBlockIcon
190 from .StatusBar.JavaScriptIcon import JavaScriptIcon
191 from .StatusBar.ImagesIcon import ImagesIcon
192 from .VirusTotal.VirusTotalApi import VirusTotalAPI
193 from .Navigation.NavigationBar import NavigationBar
194 from .Navigation.NavigationContainer import NavigationContainer
195 from .Bookmarks.BookmarksToolBar import BookmarksToolBar
196
197 self.setStyle(Preferences.getUI("Style"),
198 Preferences.getUI("StyleSheet"))
199
200 # initialize some SSL stuff
201 from E5Network.E5SslUtilities import initSSL
202 initSSL()
203
204 if WebBrowserWindow._useQtHelp:
205 self.__helpEngine = QHelpEngine(
206 WebBrowserWindow.getQtHelpCollectionFileName(),
207 self)
208 self.__removeOldDocumentation()
209 self.__helpEngine.warning.connect(self.__warning)
177 else: 210 else:
178 if qVersionTuple() < (5, 11, 0) and \ 211 self.__helpEngine = None
179 Preferences.getWebBrowser("WebInspectorEnabled"): 212 self.__helpInstaller = None
180 os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = \ 213
181 str(Preferences.getWebBrowser("WebInspectorPort")) 214 self.__zoomWidget = E5ZoomWidget(
215 UI.PixmapCache.getPixmap("zoomOut.png"),
216 UI.PixmapCache.getPixmap("zoomIn.png"),
217 UI.PixmapCache.getPixmap("zoomReset.png"), self)
218 self.statusBar().addPermanentWidget(self.__zoomWidget)
219 self.__zoomWidget.setMapping(
220 WebBrowserView.ZoomLevels, WebBrowserView.ZoomLevelDefault)
221 self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged)
222
223 self.__tabWidget = WebBrowserTabWidget(self)
224 self.__tabWidget.currentChanged[int].connect(self.__currentChanged)
225 self.__tabWidget.titleChanged.connect(self.__titleChanged)
226 self.__tabWidget.showMessage.connect(self.statusBar().showMessage)
227 self.__tabWidget.browserZoomValueChanged.connect(
228 self.__zoomWidget.setValue)
229 self.__tabWidget.browserClosed.connect(self.webBrowserClosed)
230 self.__tabWidget.browserOpened.connect(self.webBrowserOpened)
231
232 self.__searchWidget = SearchWidget(self, self)
233
234 self.__setIconDatabasePath()
235
236 bookmarksModel = self.bookmarksManager().bookmarksModel()
237 self.__bookmarksToolBar = BookmarksToolBar(self, bookmarksModel,
238 self)
239 self.__bookmarksToolBar.setIconSize(UI.Config.ToolBarIconSize)
240 self.__bookmarksToolBar.openUrl.connect(self.openUrl)
241 self.__bookmarksToolBar.newTab.connect(self.openUrlNewTab)
242 self.__bookmarksToolBar.newWindow.connect(self.openUrlNewWindow)
243
244 self.__navigationBar = NavigationBar(self)
245
246 self.__navigationContainer = NavigationContainer(self)
247 self.__navigationContainer.addWidget(self.__navigationBar)
248 self.__navigationContainer.addWidget(self.__bookmarksToolBar)
249
250 centralWidget = QWidget()
251 layout = QVBoxLayout()
252 layout.setContentsMargins(1, 1, 1, 1)
253 layout.setSpacing(0)
254 layout.addWidget(self.__navigationContainer)
255 layout.addWidget(self.__tabWidget)
256 layout.addWidget(self.__searchWidget)
257 self.__tabWidget.setSizePolicy(
258 QSizePolicy.Preferred, QSizePolicy.Expanding)
259 centralWidget.setLayout(layout)
260 self.setCentralWidget(centralWidget)
261 self.__searchWidget.hide()
262
263 if WebBrowserWindow._useQtHelp:
264 # setup the TOC widget
265 self.__tocWindow = HelpTocWidget(self.__helpEngine)
266 self.__tocDock = QDockWidget(self.tr("Contents"), self)
267 self.__tocDock.setObjectName("TocWindow")
268 self.__tocDock.setWidget(self.__tocWindow)
269 self.addDockWidget(Qt.LeftDockWidgetArea, self.__tocDock)
182 270
183 WebBrowserWindow.setUseQtHelp(qthelp or bool(searchWord)) 271 # setup the index widget
272 self.__indexWindow = HelpIndexWidget(self.__helpEngine)
273 self.__indexDock = QDockWidget(self.tr("Index"), self)
274 self.__indexDock.setObjectName("IndexWindow")
275 self.__indexDock.setWidget(self.__indexWindow)
276 self.addDockWidget(Qt.LeftDockWidgetArea, self.__indexDock)
184 277
185 self.webProfile(private) 278 # setup the search widget
186 self.networkManager() 279 self.__searchWord = searchWord
280 self.__indexing = False
281 self.__indexingProgress = None
282 self.__searchEngine = self.__helpEngine.searchEngine()
283 self.__searchEngine.indexingStarted.connect(
284 self.__indexingStarted)
285 self.__searchEngine.indexingFinished.connect(
286 self.__indexingFinished)
287 self.__searchWindow = HelpSearchWidget(self.__searchEngine)
288 self.__searchDock = QDockWidget(self.tr("Search"), self)
289 self.__searchDock.setObjectName("SearchWindow")
290 self.__searchDock.setWidget(self.__searchWindow)
291 self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock)
292
293 # JavaScript Console window
294 from .WebBrowserJavaScriptConsole import \
295 WebBrowserJavaScriptConsole
296 self.__javascriptConsole = WebBrowserJavaScriptConsole(self)
297 self.__javascriptConsoleDock = QDockWidget(
298 self.tr("JavaScript Console"))
299 self.__javascriptConsoleDock.setObjectName("JavascriptConsole")
300 self.__javascriptConsoleDock.setAllowedAreas(
301 Qt.BottomDockWidgetArea | Qt.TopDockWidgetArea)
302 self.__javascriptConsoleDock.setWidget(self.__javascriptConsole)
303 self.addDockWidget(Qt.BottomDockWidgetArea,
304 self.__javascriptConsoleDock)
305
306 if Preferences.getWebBrowser("SaveGeometry"):
307 g = Preferences.getGeometry("WebBrowserGeometry")
308 else:
309 g = QByteArray()
310 if g.isEmpty():
311 s = QSize(800, 800)
312 self.resize(s)
313 else:
314 self.restoreGeometry(g)
315
316 WebBrowserWindow.BrowserWindows.append(self)
317
318 self.__initWebEngineSettings()
319
320 # initialize some of our class objects
321 self.passwordManager()
322 self.historyManager()
323 self.greaseMonkeyManager()
324
325 # initialize the actions
326 self.__initActions()
327
328 # initialize the menus
329 self.__initMenus()
330 self.__initSuperMenu()
331 if Preferences.getWebBrowser("MenuBarVisible"):
332 self.__navigationBar.superMenuButton().hide()
333 else:
334 self.menuBar().hide()
335
336 # save references to toolbars in order to hide them
337 # when going full screen
338 self.__toolbars = {}
339 # initialize toolbars
340 if Preferences.getWebBrowser("ShowToolbars"):
341 self.__initToolbars()
342 self.__bookmarksToolBar.setVisible(
343 Preferences.getWebBrowser("BookmarksToolBarVisible"))
344
345 syncMgr = self.syncManager()
346 syncMgr.syncMessage.connect(self.statusBar().showMessage)
347 syncMgr.syncError.connect(self.statusBar().showMessage)
348
349 restoreSessionData = {}
350 if WebBrowserWindow._performingStartup and not home and \
351 not WebBrowserWindow.isPrivate():
352 startupBehavior = Preferences.getWebBrowser("StartupBehavior")
353 if not private and startupBehavior in [3, 4]:
354 if startupBehavior == 3:
355 # restore last session
356 restoreSessionFile = \
357 self.sessionManager().lastActiveSessionFile()
358 elif startupBehavior == 4:
359 # select session
360 restoreSessionFile = \
361 self.sessionManager().selectSession()
362 sessionData = \
363 self.sessionManager().readSessionFromFile(
364 restoreSessionFile)
365 if self.sessionManager().isValidSession(sessionData):
366 restoreSessionData = sessionData
367 restoreSession = True
368 else:
369 if Preferences.getWebBrowser("StartupBehavior") == 0:
370 home = "about:blank"
371 elif Preferences.getWebBrowser("StartupBehavior") == 1:
372 home = Preferences.getWebBrowser("HomePage")
373 elif Preferences.getWebBrowser("StartupBehavior") == 2:
374 home = "eric:speeddial"
375
376 if not restoreSession:
377 self.__tabWidget.newBrowser(QUrl.fromUserInput(home))
378 self.__tabWidget.currentBrowser().setFocus()
379 WebBrowserWindow._performingStartup = False
380
381 self.__imagesIcon = ImagesIcon(self)
382 self.statusBar().addPermanentWidget(self.__imagesIcon)
383 self.__javaScriptIcon = JavaScriptIcon(self)
384 self.statusBar().addPermanentWidget(self.__javaScriptIcon)
385
386 self.__adBlockIcon = AdBlockIcon(self)
387 self.statusBar().addPermanentWidget(self.__adBlockIcon)
388 self.__adBlockIcon.setEnabled(
389 Preferences.getWebBrowser("AdBlockEnabled"))
390 self.__tabWidget.currentChanged[int].connect(
391 self.__adBlockIcon.currentChanged)
392 self.__tabWidget.sourceChanged.connect(
393 self.__adBlockIcon.sourceChanged)
394
395 self.__tabManagerIcon = self.tabManager().createStatusBarIcon()
396 self.statusBar().addPermanentWidget(self.__tabManagerIcon)
397
398 self.networkIcon = E5NetworkIcon(self)
399 self.statusBar().addPermanentWidget(self.networkIcon)
400
401 if not Preferences.getWebBrowser("StatusBarVisible"):
402 self.statusBar().hide()
403
404 if len(WebBrowserWindow.BrowserWindows):
405 QDesktopServices.setUrlHandler(
406 "http", WebBrowserWindow.BrowserWindows[0].urlHandler)
407 QDesktopServices.setUrlHandler(
408 "https", WebBrowserWindow.BrowserWindows[0].urlHandler)
409
410 # setup connections
411 self.__activating = False
412 if WebBrowserWindow._useQtHelp:
413 # TOC window
414 self.__tocWindow.escapePressed.connect(
415 self.__activateCurrentBrowser)
416 self.__tocWindow.openUrl.connect(self.openUrl)
417 self.__tocWindow.newTab.connect(self.openUrlNewTab)
418 self.__tocWindow.newBackgroundTab.connect(
419 self.openUrlNewBackgroundTab)
420 self.__tocWindow.newWindow.connect(self.openUrlNewWindow)
187 421
188 self.__htmlFullScreen = False 422 # index window
189 self.__windowStates = Qt.WindowNoState 423 self.__indexWindow.escapePressed.connect(
190 self.__isClosing = False 424 self.__activateCurrentBrowser)
425 self.__indexWindow.openUrl.connect(self.openUrl)
426 self.__indexWindow.newTab.connect(self.openUrlNewTab)
427 self.__indexWindow.newBackgroundTab.connect(
428 self.openUrlNewBackgroundTab)
429 self.__indexWindow.newWindow.connect(self.openUrlNewWindow)
191 430
192 from .SearchWidget import SearchWidget 431 # search window
193 from .QtHelp.HelpTocWidget import HelpTocWidget 432 self.__searchWindow.escapePressed.connect(
194 from .QtHelp.HelpIndexWidget import HelpIndexWidget 433 self.__activateCurrentBrowser)
195 from .QtHelp.HelpSearchWidget import HelpSearchWidget 434 self.__searchWindow.openUrl.connect(self.openUrl)
196 from .WebBrowserView import WebBrowserView 435 self.__searchWindow.newTab.connect(self.openUrlNewTab)
197 from .WebBrowserTabWidget import WebBrowserTabWidget 436 self.__searchWindow.newBackgroundTab.connect(
198 from .AdBlock.AdBlockIcon import AdBlockIcon 437 self.openUrlNewBackgroundTab)
199 from .StatusBar.JavaScriptIcon import JavaScriptIcon 438 self.__searchWindow.newWindow.connect(self.openUrlNewWindow)
200 from .StatusBar.ImagesIcon import ImagesIcon 439
201 from .VirusTotal.VirusTotalApi import VirusTotalAPI 440 state = Preferences.getWebBrowser("WebBrowserState")
202 from .Navigation.NavigationBar import NavigationBar 441 self.restoreState(state)
203 from .Navigation.NavigationContainer import NavigationContainer 442
204 from .Bookmarks.BookmarksToolBar import BookmarksToolBar 443 self.__initHelpDb()
205 444
206 self.setStyle(Preferences.getUI("Style"), 445 self.__virusTotal = VirusTotalAPI(self)
207 Preferences.getUI("StyleSheet")) 446 self.__virusTotal.submitUrlError.connect(
208 447 self.__virusTotalSubmitUrlError)
209 # initialize some SSL stuff 448 self.__virusTotal.urlScanReport.connect(
210 from E5Network.E5SslUtilities import initSSL 449 self.__virusTotalUrlScanReport)
211 initSSL() 450 self.__virusTotal.fileScanReport.connect(
212 451 self.__virusTotalFileScanReport)
213 if WebBrowserWindow._useQtHelp: 452
214 self.__helpEngine = QHelpEngine( 453 self.flashCookieManager()
215 WebBrowserWindow.getQtHelpCollectionFileName(), 454
216 self) 455 e5App().focusChanged.connect(self.__appFocusChanged)
217 self.__removeOldDocumentation() 456
218 self.__helpEngine.warning.connect(self.__warning) 457 self.__toolbarStates = self.saveState()
219 else: 458
220 self.__helpEngine = None 459 if single:
221 self.__helpInstaller = None 460 self.SAServer = WebBrowserSingleApplicationServer(saname)
222 461 self.SAServer.loadUrl.connect(self.__saLoadUrl)
223 self.__zoomWidget = E5ZoomWidget( 462 self.SAServer.newTab.connect(self.__saNewTab)
224 UI.PixmapCache.getPixmap("zoomOut.png"), 463 self.SAServer.search.connect(self.__saSearchWord)
225 UI.PixmapCache.getPixmap("zoomIn.png"), 464 self.SAServer.shutdown.connect(self.shutdown)
226 UI.PixmapCache.getPixmap("zoomReset.png"), self) 465 else:
227 self.statusBar().addPermanentWidget(self.__zoomWidget) 466 self.SAServer = None
228 self.__zoomWidget.setMapping( 467
229 WebBrowserView.ZoomLevels, WebBrowserView.ZoomLevelDefault) 468 self.__hideNavigationTimer = QTimer(self)
230 self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged) 469 self.__hideNavigationTimer.setInterval(1000)
231 470 self.__hideNavigationTimer.setSingleShot(True)
232 self.__tabWidget = WebBrowserTabWidget(self) 471 self.__hideNavigationTimer.timeout.connect(self.__hideNavigation)
233 self.__tabWidget.currentChanged[int].connect(self.__currentChanged) 472
234 self.__tabWidget.titleChanged.connect(self.__titleChanged) 473 self.__forcedClose = False
235 self.__tabWidget.showMessage.connect(self.statusBar().showMessage) 474
236 self.__tabWidget.browserZoomValueChanged.connect( 475 if restoreSessionData and not WebBrowserWindow.isPrivate():
237 self.__zoomWidget.setValue) 476 self.sessionManager().restoreSessionFromData(
238 self.__tabWidget.browserClosed.connect(self.webBrowserClosed) 477 self, restoreSessionData)
239 self.__tabWidget.browserOpened.connect(self.webBrowserOpened) 478
240 479 if not WebBrowserWindow.isPrivate():
241 self.__searchWidget = SearchWidget(self, self) 480 self.sessionManager().activateTimer()
242 481
243 self.__setIconDatabasePath() 482 QTimer.singleShot(0, syncMgr.loadSettings)
244 483
245 bookmarksModel = self.bookmarksManager().bookmarksModel() 484 if WebBrowserWindow._useQtHelp:
246 self.__bookmarksToolBar = BookmarksToolBar(self, bookmarksModel, 485 QTimer.singleShot(50, self.__lookForNewDocumentation)
247 self) 486 if self.__searchWord is not None:
248 self.__bookmarksToolBar.setIconSize(UI.Config.ToolBarIconSize) 487 QTimer.singleShot(0, self.__searchForWord)
249 self.__bookmarksToolBar.openUrl.connect(self.openUrl)
250 self.__bookmarksToolBar.newTab.connect(self.openUrlNewTab)
251 self.__bookmarksToolBar.newWindow.connect(self.openUrlNewWindow)
252
253 self.__navigationBar = NavigationBar(self)
254
255 self.__navigationContainer = NavigationContainer(self)
256 self.__navigationContainer.addWidget(self.__navigationBar)
257 self.__navigationContainer.addWidget(self.__bookmarksToolBar)
258
259 centralWidget = QWidget()
260 layout = QVBoxLayout()
261 layout.setContentsMargins(1, 1, 1, 1)
262 layout.setSpacing(0)
263 layout.addWidget(self.__navigationContainer)
264 layout.addWidget(self.__tabWidget)
265 layout.addWidget(self.__searchWidget)
266 self.__tabWidget.setSizePolicy(
267 QSizePolicy.Preferred, QSizePolicy.Expanding)
268 centralWidget.setLayout(layout)
269 self.setCentralWidget(centralWidget)
270 self.__searchWidget.hide()
271
272 if WebBrowserWindow._useQtHelp:
273 # setup the TOC widget
274 self.__tocWindow = HelpTocWidget(self.__helpEngine)
275 self.__tocDock = QDockWidget(self.tr("Contents"), self)
276 self.__tocDock.setObjectName("TocWindow")
277 self.__tocDock.setWidget(self.__tocWindow)
278 self.addDockWidget(Qt.LeftDockWidgetArea, self.__tocDock)
279
280 # setup the index widget
281 self.__indexWindow = HelpIndexWidget(self.__helpEngine)
282 self.__indexDock = QDockWidget(self.tr("Index"), self)
283 self.__indexDock.setObjectName("IndexWindow")
284 self.__indexDock.setWidget(self.__indexWindow)
285 self.addDockWidget(Qt.LeftDockWidgetArea, self.__indexDock)
286
287 # setup the search widget
288 self.__searchWord = searchWord
289 self.__indexing = False
290 self.__indexingProgress = None
291 self.__searchEngine = self.__helpEngine.searchEngine()
292 self.__searchEngine.indexingStarted.connect(
293 self.__indexingStarted)
294 self.__searchEngine.indexingFinished.connect(
295 self.__indexingFinished)
296 self.__searchWindow = HelpSearchWidget(self.__searchEngine)
297 self.__searchDock = QDockWidget(self.tr("Search"), self)
298 self.__searchDock.setObjectName("SearchWindow")
299 self.__searchDock.setWidget(self.__searchWindow)
300 self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock)
301
302 # JavaScript Console window
303 from .WebBrowserJavaScriptConsole import \
304 WebBrowserJavaScriptConsole
305 self.__javascriptConsole = WebBrowserJavaScriptConsole(self)
306 self.__javascriptConsoleDock = QDockWidget(
307 self.tr("JavaScript Console"))
308 self.__javascriptConsoleDock.setObjectName("JavascriptConsole")
309 self.__javascriptConsoleDock.setAllowedAreas(
310 Qt.BottomDockWidgetArea | Qt.TopDockWidgetArea)
311 self.__javascriptConsoleDock.setWidget(self.__javascriptConsole)
312 self.addDockWidget(Qt.BottomDockWidgetArea,
313 self.__javascriptConsoleDock)
314
315 if Preferences.getWebBrowser("SaveGeometry"):
316 g = Preferences.getGeometry("WebBrowserGeometry")
317 else:
318 g = QByteArray()
319 if g.isEmpty():
320 s = QSize(800, 800)
321 self.resize(s)
322 else:
323 self.restoreGeometry(g)
324
325 WebBrowserWindow.BrowserWindows.append(self)
326
327 self.__initWebEngineSettings()
328
329 # initialize some of our class objects
330 self.passwordManager()
331 self.historyManager()
332 self.greaseMonkeyManager()
333
334 # initialize the actions
335 self.__initActions()
336
337 # initialize the menus
338 self.__initMenus()
339 self.__initSuperMenu()
340 if Preferences.getWebBrowser("MenuBarVisible"):
341 self.__navigationBar.superMenuButton().hide()
342 else:
343 self.menuBar().hide()
344
345 # save references to toolbars in order to hide them
346 # when going full screen
347 self.__toolbars = {}
348 # initialize toolbars
349 if Preferences.getWebBrowser("ShowToolbars"):
350 self.__initToolbars()
351 self.__bookmarksToolBar.setVisible(
352 Preferences.getWebBrowser("BookmarksToolBarVisible"))
353
354 syncMgr = self.syncManager()
355 syncMgr.syncMessage.connect(self.statusBar().showMessage)
356 syncMgr.syncError.connect(self.statusBar().showMessage)
357
358 restoreSessionData = {}
359 if WebBrowserWindow._performingStartup and not home and \
360 not WebBrowserWindow.isPrivate():
361 startupBehavior = Preferences.getWebBrowser("StartupBehavior")
362 if not private and startupBehavior in [3, 4]:
363 if startupBehavior == 3:
364 # restore last session
365 restoreSessionFile = \
366 self.sessionManager().lastActiveSessionFile()
367 elif startupBehavior == 4:
368 # select session
369 restoreSessionFile = \
370 self.sessionManager().selectSession()
371 sessionData = \
372 self.sessionManager().readSessionFromFile(
373 restoreSessionFile)
374 if self.sessionManager().isValidSession(sessionData):
375 restoreSessionData = sessionData
376 restoreSession = True
377 else:
378 if Preferences.getWebBrowser("StartupBehavior") == 0:
379 home = "about:blank"
380 elif Preferences.getWebBrowser("StartupBehavior") == 1:
381 home = Preferences.getWebBrowser("HomePage")
382 elif Preferences.getWebBrowser("StartupBehavior") == 2:
383 home = "eric:speeddial"
384
385 if not restoreSession:
386 self.__tabWidget.newBrowser(QUrl.fromUserInput(home))
387 self.__tabWidget.currentBrowser().setFocus()
388 WebBrowserWindow._performingStartup = False
389
390 self.__imagesIcon = ImagesIcon(self)
391 self.statusBar().addPermanentWidget(self.__imagesIcon)
392 self.__javaScriptIcon = JavaScriptIcon(self)
393 self.statusBar().addPermanentWidget(self.__javaScriptIcon)
394
395 self.__adBlockIcon = AdBlockIcon(self)
396 self.statusBar().addPermanentWidget(self.__adBlockIcon)
397 self.__adBlockIcon.setEnabled(
398 Preferences.getWebBrowser("AdBlockEnabled"))
399 self.__tabWidget.currentChanged[int].connect(
400 self.__adBlockIcon.currentChanged)
401 self.__tabWidget.sourceChanged.connect(
402 self.__adBlockIcon.sourceChanged)
403
404 self.__tabManagerIcon = self.tabManager().createStatusBarIcon()
405 self.statusBar().addPermanentWidget(self.__tabManagerIcon)
406
407 self.networkIcon = E5NetworkIcon(self)
408 self.statusBar().addPermanentWidget(self.networkIcon)
409
410 if not Preferences.getWebBrowser("StatusBarVisible"):
411 self.statusBar().hide()
412
413 if len(WebBrowserWindow.BrowserWindows):
414 QDesktopServices.setUrlHandler(
415 "http", WebBrowserWindow.BrowserWindows[0].urlHandler)
416 QDesktopServices.setUrlHandler(
417 "https", WebBrowserWindow.BrowserWindows[0].urlHandler)
418
419 # setup connections
420 self.__activating = False
421 if WebBrowserWindow._useQtHelp:
422 # TOC window
423 self.__tocWindow.escapePressed.connect(
424 self.__activateCurrentBrowser)
425 self.__tocWindow.openUrl.connect(self.openUrl)
426 self.__tocWindow.newTab.connect(self.openUrlNewTab)
427 self.__tocWindow.newBackgroundTab.connect(
428 self.openUrlNewBackgroundTab)
429 self.__tocWindow.newWindow.connect(self.openUrlNewWindow)
430
431 # index window
432 self.__indexWindow.escapePressed.connect(
433 self.__activateCurrentBrowser)
434 self.__indexWindow.openUrl.connect(self.openUrl)
435 self.__indexWindow.newTab.connect(self.openUrlNewTab)
436 self.__indexWindow.newBackgroundTab.connect(
437 self.openUrlNewBackgroundTab)
438 self.__indexWindow.newWindow.connect(self.openUrlNewWindow)
439
440 # search window
441 self.__searchWindow.escapePressed.connect(
442 self.__activateCurrentBrowser)
443 self.__searchWindow.openUrl.connect(self.openUrl)
444 self.__searchWindow.newTab.connect(self.openUrlNewTab)
445 self.__searchWindow.newBackgroundTab.connect(
446 self.openUrlNewBackgroundTab)
447 self.__searchWindow.newWindow.connect(self.openUrlNewWindow)
448
449 state = Preferences.getWebBrowser("WebBrowserState")
450 self.restoreState(state)
451
452 self.__initHelpDb()
453
454 self.__virusTotal = VirusTotalAPI(self)
455 self.__virusTotal.submitUrlError.connect(
456 self.__virusTotalSubmitUrlError)
457 self.__virusTotal.urlScanReport.connect(
458 self.__virusTotalUrlScanReport)
459 self.__virusTotal.fileScanReport.connect(
460 self.__virusTotalFileScanReport)
461
462 self.flashCookieManager()
463
464 e5App().focusChanged.connect(self.__appFocusChanged)
465
466 self.__toolbarStates = self.saveState()
467
468 if single:
469 self.SAServer = WebBrowserSingleApplicationServer(saname)
470 self.SAServer.loadUrl.connect(self.__saLoadUrl)
471 self.SAServer.newTab.connect(self.__saNewTab)
472 self.SAServer.search.connect(self.__saSearchWord)
473 self.SAServer.shutdown.connect(self.shutdown)
474 else:
475 self.SAServer = None
476
477 self.__hideNavigationTimer = QTimer(self)
478 self.__hideNavigationTimer.setInterval(1000)
479 self.__hideNavigationTimer.setSingleShot(True)
480 self.__hideNavigationTimer.timeout.connect(self.__hideNavigation)
481
482 self.__forcedClose = False
483
484 if restoreSessionData and not WebBrowserWindow.isPrivate():
485 self.sessionManager().restoreSessionFromData(
486 self, restoreSessionData)
487
488 if not WebBrowserWindow.isPrivate():
489 self.sessionManager().activateTimer()
490
491 QTimer.singleShot(0, syncMgr.loadSettings)
492
493 if WebBrowserWindow._useQtHelp:
494 QTimer.singleShot(50, self.__lookForNewDocumentation)
495 if self.__searchWord is not None:
496 QTimer.singleShot(0, self.__searchForWord)
497 488
498 def __del__(self): 489 def __del__(self):
499 """ 490 """
500 Special method called during object destruction. 491 Special method called during object destruction.
501 492
701 self.newTabAct.setStatusTip(self.tr('Open a new web browser tab')) 692 self.newTabAct.setStatusTip(self.tr('Open a new web browser tab'))
702 self.newTabAct.setWhatsThis(self.tr( 693 self.newTabAct.setWhatsThis(self.tr(
703 """<b>New Tab</b>""" 694 """<b>New Tab</b>"""
704 """<p>This opens a new web browser tab.</p>""" 695 """<p>This opens a new web browser tab.</p>"""
705 )) 696 ))
706 if not self.__initShortcutsOnly: 697 self.newTabAct.triggered.connect(self.newTab)
707 self.newTabAct.triggered.connect(self.newTab)
708 self.__actions.append(self.newTabAct) 698 self.__actions.append(self.newTabAct)
709 699
710 self.newAct = E5Action( 700 self.newAct = E5Action(
711 self.tr('New Window'), 701 self.tr('New Window'),
712 UI.PixmapCache.getIcon("newWindow.png"), 702 UI.PixmapCache.getIcon("newWindow.png"),
717 self.newAct.setWhatsThis(self.tr( 707 self.newAct.setWhatsThis(self.tr(
718 """<b>New Window</b>""" 708 """<b>New Window</b>"""
719 """<p>This opens a new web browser window in the current""" 709 """<p>This opens a new web browser window in the current"""
720 """ privacy mode.</p>""" 710 """ privacy mode.</p>"""
721 )) 711 ))
722 if not self.__initShortcutsOnly: 712 self.newAct.triggered.connect(self.newWindow)
723 self.newAct.triggered.connect(self.newWindow)
724 self.__actions.append(self.newAct) 713 self.__actions.append(self.newAct)
725 714
726 self.newPrivateAct = E5Action( 715 self.newPrivateAct = E5Action(
727 self.tr('New Private Window'), 716 self.tr('New Private Window'),
728 UI.PixmapCache.getIcon("privateMode.png"), 717 UI.PixmapCache.getIcon("privateMode.png"),
734 self.newPrivateAct.setWhatsThis(self.tr( 723 self.newPrivateAct.setWhatsThis(self.tr(
735 """<b>New Private Window</b>""" 724 """<b>New Private Window</b>"""
736 """<p>This opens a new private web browser window by starting""" 725 """<p>This opens a new private web browser window by starting"""
737 """ a new web browser instance in private mode.</p>""" 726 """ a new web browser instance in private mode.</p>"""
738 )) 727 ))
739 if not self.__initShortcutsOnly: 728 self.newPrivateAct.triggered.connect(self.newPrivateWindow)
740 self.newPrivateAct.triggered.connect(self.newPrivateWindow)
741 self.__actions.append(self.newPrivateAct) 729 self.__actions.append(self.newPrivateAct)
742 730
743 self.openAct = E5Action( 731 self.openAct = E5Action(
744 self.tr('Open File'), 732 self.tr('Open File'),
745 UI.PixmapCache.getIcon("open.png"), 733 UI.PixmapCache.getIcon("open.png"),
750 self.openAct.setWhatsThis(self.tr( 738 self.openAct.setWhatsThis(self.tr(
751 """<b>Open File</b>""" 739 """<b>Open File</b>"""
752 """<p>This opens a new file for display.""" 740 """<p>This opens a new file for display."""
753 """ It pops up a file selection dialog.</p>""" 741 """ It pops up a file selection dialog.</p>"""
754 )) 742 ))
755 if not self.__initShortcutsOnly: 743 self.openAct.triggered.connect(self.__openFile)
756 self.openAct.triggered.connect(self.__openFile)
757 self.__actions.append(self.openAct) 744 self.__actions.append(self.openAct)
758 745
759 self.openTabAct = E5Action( 746 self.openTabAct = E5Action(
760 self.tr('Open File in New Tab'), 747 self.tr('Open File in New Tab'),
761 UI.PixmapCache.getIcon("openNewTab.png"), 748 UI.PixmapCache.getIcon("openNewTab.png"),
767 self.openTabAct.setWhatsThis(self.tr( 754 self.openTabAct.setWhatsThis(self.tr(
768 """<b>Open File in New Tab</b>""" 755 """<b>Open File in New Tab</b>"""
769 """<p>This opens a new file for display in a new tab.""" 756 """<p>This opens a new file for display in a new tab."""
770 """ It pops up a file selection dialog.</p>""" 757 """ It pops up a file selection dialog.</p>"""
771 )) 758 ))
772 if not self.__initShortcutsOnly: 759 self.openTabAct.triggered.connect(self.__openFileNewTab)
773 self.openTabAct.triggered.connect(self.__openFileNewTab)
774 self.__actions.append(self.openTabAct) 760 self.__actions.append(self.openTabAct)
775 761
776 if hasattr(QWebEnginePage, "SavePage"): 762 if hasattr(QWebEnginePage, "SavePage"):
777 self.saveAsAct = E5Action( 763 self.saveAsAct = E5Action(
778 self.tr('Save As'), 764 self.tr('Save As'),
784 self.tr('Save the current page to disk')) 770 self.tr('Save the current page to disk'))
785 self.saveAsAct.setWhatsThis(self.tr( 771 self.saveAsAct.setWhatsThis(self.tr(
786 """<b>Save As...</b>""" 772 """<b>Save As...</b>"""
787 """<p>Saves the current page to disk.</p>""" 773 """<p>Saves the current page to disk.</p>"""
788 )) 774 ))
789 if not self.__initShortcutsOnly: 775 self.saveAsAct.triggered.connect(self.__savePageAs)
790 self.saveAsAct.triggered.connect(self.__savePageAs)
791 self.__actions.append(self.saveAsAct) 776 self.__actions.append(self.saveAsAct)
792 else: 777 else:
793 self.saveAsAct = None 778 self.saveAsAct = None
794 779
795 self.saveVisiblePageScreenAct = E5Action( 780 self.saveVisiblePageScreenAct = E5Action(
803 self.saveVisiblePageScreenAct.setWhatsThis(self.tr( 788 self.saveVisiblePageScreenAct.setWhatsThis(self.tr(
804 """<b>Save Page Screen...</b>""" 789 """<b>Save Page Screen...</b>"""
805 """<p>Saves the visible part of the current page as a""" 790 """<p>Saves the visible part of the current page as a"""
806 """ screen shot.</p>""" 791 """ screen shot.</p>"""
807 )) 792 ))
808 if not self.__initShortcutsOnly: 793 self.saveVisiblePageScreenAct.triggered.connect(
809 self.saveVisiblePageScreenAct.triggered.connect( 794 self.__saveVisiblePageScreen)
810 self.__saveVisiblePageScreen)
811 self.__actions.append(self.saveVisiblePageScreenAct) 795 self.__actions.append(self.saveVisiblePageScreenAct)
812 796
813 bookmarksManager = self.bookmarksManager() 797 bookmarksManager = self.bookmarksManager()
814 self.importBookmarksAct = E5Action( 798 self.importBookmarksAct = E5Action(
815 self.tr('Import Bookmarks'), 799 self.tr('Import Bookmarks'),
819 self.tr('Import bookmarks from other browsers')) 803 self.tr('Import bookmarks from other browsers'))
820 self.importBookmarksAct.setWhatsThis(self.tr( 804 self.importBookmarksAct.setWhatsThis(self.tr(
821 """<b>Import Bookmarks</b>""" 805 """<b>Import Bookmarks</b>"""
822 """<p>Import bookmarks from other browsers.</p>""" 806 """<p>Import bookmarks from other browsers.</p>"""
823 )) 807 ))
824 if not self.__initShortcutsOnly: 808 self.importBookmarksAct.triggered.connect(
825 self.importBookmarksAct.triggered.connect( 809 bookmarksManager.importBookmarks)
826 bookmarksManager.importBookmarks)
827 self.__actions.append(self.importBookmarksAct) 810 self.__actions.append(self.importBookmarksAct)
828 811
829 self.exportBookmarksAct = E5Action( 812 self.exportBookmarksAct = E5Action(
830 self.tr('Export Bookmarks'), 813 self.tr('Export Bookmarks'),
831 self.tr('&Export Bookmarks...'), 814 self.tr('&Export Bookmarks...'),
834 self.tr('Export the bookmarks into a file')) 817 self.tr('Export the bookmarks into a file'))
835 self.exportBookmarksAct.setWhatsThis(self.tr( 818 self.exportBookmarksAct.setWhatsThis(self.tr(
836 """<b>Export Bookmarks</b>""" 819 """<b>Export Bookmarks</b>"""
837 """<p>Export the bookmarks into a file.</p>""" 820 """<p>Export the bookmarks into a file.</p>"""
838 )) 821 ))
839 if not self.__initShortcutsOnly: 822 self.exportBookmarksAct.triggered.connect(
840 self.exportBookmarksAct.triggered.connect( 823 bookmarksManager.exportBookmarks)
841 bookmarksManager.exportBookmarks)
842 self.__actions.append(self.exportBookmarksAct) 824 self.__actions.append(self.exportBookmarksAct)
843 825
844 if qVersionTuple() >= (5, 8, 0) or ( 826 if qVersionTuple() >= (5, 8, 0) or (
845 not Globals.isWindowsPlatform() or qVersionTuple() >= (5, 7, 0)): 827 not Globals.isWindowsPlatform() or qVersionTuple() >= (5, 7, 0)):
846 self.printAct = E5Action( 828 self.printAct = E5Action(
852 self.printAct.setStatusTip(self.tr('Print the displayed help')) 834 self.printAct.setStatusTip(self.tr('Print the displayed help'))
853 self.printAct.setWhatsThis(self.tr( 835 self.printAct.setWhatsThis(self.tr(
854 """<b>Print</b>""" 836 """<b>Print</b>"""
855 """<p>Print the displayed help text.</p>""" 837 """<p>Print the displayed help text.</p>"""
856 )) 838 ))
857 if not self.__initShortcutsOnly: 839 self.printAct.triggered.connect(self.__tabWidget.printBrowser)
858 self.printAct.triggered.connect(self.__tabWidget.printBrowser)
859 self.__actions.append(self.printAct) 840 self.__actions.append(self.printAct)
860 else: 841 else:
861 self.printAct = None 842 self.printAct = None
862 843
863 if Globals.isLinuxPlatform() or qVersionTuple() >= (5, 7, 0): 844 if Globals.isLinuxPlatform() or qVersionTuple() >= (5, 7, 0):
870 'Print the displayed help as PDF')) 851 'Print the displayed help as PDF'))
871 self.printPdfAct.setWhatsThis(self.tr( 852 self.printPdfAct.setWhatsThis(self.tr(
872 """<b>Print as PDF</b>""" 853 """<b>Print as PDF</b>"""
873 """<p>Print the displayed help text as a PDF file.</p>""" 854 """<p>Print the displayed help text as a PDF file.</p>"""
874 )) 855 ))
875 if not self.__initShortcutsOnly: 856 self.printPdfAct.triggered.connect(
876 self.printPdfAct.triggered.connect( 857 self.__tabWidget.printBrowserPdf)
877 self.__tabWidget.printBrowserPdf)
878 self.__actions.append(self.printPdfAct) 858 self.__actions.append(self.printPdfAct)
879 else: 859 else:
880 self.printPdfAct = None 860 self.printPdfAct = None
881 861
882 if qVersionTuple() >= (5, 8, 0) or ( 862 if qVersionTuple() >= (5, 8, 0) or (
890 'Print preview of the displayed help')) 870 'Print preview of the displayed help'))
891 self.printPreviewAct.setWhatsThis(self.tr( 871 self.printPreviewAct.setWhatsThis(self.tr(
892 """<b>Print Preview</b>""" 872 """<b>Print Preview</b>"""
893 """<p>Print preview of the displayed help text.</p>""" 873 """<p>Print preview of the displayed help text.</p>"""
894 )) 874 ))
895 if not self.__initShortcutsOnly: 875 self.printPreviewAct.triggered.connect(
896 self.printPreviewAct.triggered.connect( 876 self.__tabWidget.printPreviewBrowser)
897 self.__tabWidget.printPreviewBrowser)
898 self.__actions.append(self.printPreviewAct) 877 self.__actions.append(self.printPreviewAct)
899 else: 878 else:
900 self.printPreviewAct = None 879 self.printPreviewAct = None
901 880
902 self.sendPageLinkAct = E5Action( 881 self.sendPageLinkAct = E5Action(
908 'Send the link of the current page via email')) 887 'Send the link of the current page via email'))
909 self.sendPageLinkAct.setWhatsThis(self.tr( 888 self.sendPageLinkAct.setWhatsThis(self.tr(
910 """<b>Send Page Link</b>""" 889 """<b>Send Page Link</b>"""
911 """<p>Send the link of the current page via email.</p>""" 890 """<p>Send the link of the current page via email.</p>"""
912 )) 891 ))
913 if not self.__initShortcutsOnly: 892 self.sendPageLinkAct.triggered.connect(self.__sendPageLink)
914 self.sendPageLinkAct.triggered.connect(self.__sendPageLink)
915 self.__actions.append(self.sendPageLinkAct) 893 self.__actions.append(self.sendPageLinkAct)
916 894
917 self.closeAct = E5Action( 895 self.closeAct = E5Action(
918 self.tr('Close'), 896 self.tr('Close'),
919 UI.PixmapCache.getIcon("close.png"), 897 UI.PixmapCache.getIcon("close.png"),
924 'Close the current help window')) 902 'Close the current help window'))
925 self.closeAct.setWhatsThis(self.tr( 903 self.closeAct.setWhatsThis(self.tr(
926 """<b>Close</b>""" 904 """<b>Close</b>"""
927 """<p>Closes the current web browser window.</p>""" 905 """<p>Closes the current web browser window.</p>"""
928 )) 906 ))
929 if not self.__initShortcutsOnly: 907 self.closeAct.triggered.connect(self.__tabWidget.closeBrowser)
930 self.closeAct.triggered.connect(self.__tabWidget.closeBrowser)
931 self.__actions.append(self.closeAct) 908 self.__actions.append(self.closeAct)
932 909
933 self.closeAllAct = E5Action( 910 self.closeAllAct = E5Action(
934 self.tr('Close All'), 911 self.tr('Close All'),
935 self.tr('Close &All'), 912 self.tr('Close &All'),
937 self.closeAllAct.setStatusTip(self.tr('Close all help windows')) 914 self.closeAllAct.setStatusTip(self.tr('Close all help windows'))
938 self.closeAllAct.setWhatsThis(self.tr( 915 self.closeAllAct.setWhatsThis(self.tr(
939 """<b>Close All</b>""" 916 """<b>Close All</b>"""
940 """<p>Closes all web browser windows except the first one.</p>""" 917 """<p>Closes all web browser windows except the first one.</p>"""
941 )) 918 ))
942 if not self.__initShortcutsOnly: 919 self.closeAllAct.triggered.connect(
943 self.closeAllAct.triggered.connect( 920 self.__tabWidget.closeAllBrowsers)
944 self.__tabWidget.closeAllBrowsers)
945 self.__actions.append(self.closeAllAct) 921 self.__actions.append(self.closeAllAct)
946 922
947 self.exitAct = E5Action( 923 self.exitAct = E5Action(
948 self.tr('Quit'), 924 self.tr('Quit'),
949 UI.PixmapCache.getIcon("exit.png"), 925 UI.PixmapCache.getIcon("exit.png"),
953 self.exitAct.setStatusTip(self.tr('Quit the eric6 Web Browser')) 929 self.exitAct.setStatusTip(self.tr('Quit the eric6 Web Browser'))
954 self.exitAct.setWhatsThis(self.tr( 930 self.exitAct.setWhatsThis(self.tr(
955 """<b>Quit</b>""" 931 """<b>Quit</b>"""
956 """<p>Quit the eric6 Web Browser.</p>""" 932 """<p>Quit the eric6 Web Browser.</p>"""
957 )) 933 ))
958 if not self.__initShortcutsOnly: 934 self.exitAct.triggered.connect(self.shutdown)
959 self.exitAct.triggered.connect(self.shutdown)
960 self.__actions.append(self.exitAct) 935 self.__actions.append(self.exitAct)
961 936
962 self.backAct = E5Action( 937 self.backAct = E5Action(
963 self.tr('Backward'), 938 self.tr('Backward'),
964 UI.PixmapCache.getIcon("back.png"), 939 UI.PixmapCache.getIcon("back.png"),
969 self.backAct.setWhatsThis(self.tr( 944 self.backAct.setWhatsThis(self.tr(
970 """<b>Backward</b>""" 945 """<b>Backward</b>"""
971 """<p>Moves one screen backward. If none is""" 946 """<p>Moves one screen backward. If none is"""
972 """ available, this action is disabled.</p>""" 947 """ available, this action is disabled.</p>"""
973 )) 948 ))
974 if not self.__initShortcutsOnly: 949 self.backAct.triggered.connect(self.__backward)
975 self.backAct.triggered.connect(self.__backward)
976 self.__actions.append(self.backAct) 950 self.__actions.append(self.backAct)
977 951
978 self.forwardAct = E5Action( 952 self.forwardAct = E5Action(
979 self.tr('Forward'), 953 self.tr('Forward'),
980 UI.PixmapCache.getIcon("forward.png"), 954 UI.PixmapCache.getIcon("forward.png"),
986 self.forwardAct.setWhatsThis(self.tr( 960 self.forwardAct.setWhatsThis(self.tr(
987 """<b>Forward</b>""" 961 """<b>Forward</b>"""
988 """<p>Moves one screen forward. If none is""" 962 """<p>Moves one screen forward. If none is"""
989 """ available, this action is disabled.</p>""" 963 """ available, this action is disabled.</p>"""
990 )) 964 ))
991 if not self.__initShortcutsOnly: 965 self.forwardAct.triggered.connect(self.__forward)
992 self.forwardAct.triggered.connect(self.__forward)
993 self.__actions.append(self.forwardAct) 966 self.__actions.append(self.forwardAct)
994 967
995 self.homeAct = E5Action( 968 self.homeAct = E5Action(
996 self.tr('Home'), 969 self.tr('Home'),
997 UI.PixmapCache.getIcon("home.png"), 970 UI.PixmapCache.getIcon("home.png"),
1002 'Move to the initial screen')) 975 'Move to the initial screen'))
1003 self.homeAct.setWhatsThis(self.tr( 976 self.homeAct.setWhatsThis(self.tr(
1004 """<b>Home</b>""" 977 """<b>Home</b>"""
1005 """<p>Moves to the initial screen.</p>""" 978 """<p>Moves to the initial screen.</p>"""
1006 )) 979 ))
1007 if not self.__initShortcutsOnly: 980 self.homeAct.triggered.connect(self.__home)
1008 self.homeAct.triggered.connect(self.__home)
1009 self.__actions.append(self.homeAct) 981 self.__actions.append(self.homeAct)
1010 982
1011 self.reloadAct = E5Action( 983 self.reloadAct = E5Action(
1012 self.tr('Reload'), 984 self.tr('Reload'),
1013 UI.PixmapCache.getIcon("reload.png"), 985 UI.PixmapCache.getIcon("reload.png"),
1019 'Reload the current screen')) 991 'Reload the current screen'))
1020 self.reloadAct.setWhatsThis(self.tr( 992 self.reloadAct.setWhatsThis(self.tr(
1021 """<b>Reload</b>""" 993 """<b>Reload</b>"""
1022 """<p>Reloads the current screen.</p>""" 994 """<p>Reloads the current screen.</p>"""
1023 )) 995 ))
1024 if not self.__initShortcutsOnly: 996 self.reloadAct.triggered.connect(self.__reload)
1025 self.reloadAct.triggered.connect(self.__reload)
1026 self.__actions.append(self.reloadAct) 997 self.__actions.append(self.reloadAct)
1027 998
1028 self.stopAct = E5Action( 999 self.stopAct = E5Action(
1029 self.tr('Stop'), 1000 self.tr('Stop'),
1030 UI.PixmapCache.getIcon("stopLoading.png"), 1001 UI.PixmapCache.getIcon("stopLoading.png"),
1035 self.stopAct.setStatusTip(self.tr('Stop loading')) 1006 self.stopAct.setStatusTip(self.tr('Stop loading'))
1036 self.stopAct.setWhatsThis(self.tr( 1007 self.stopAct.setWhatsThis(self.tr(
1037 """<b>Stop</b>""" 1008 """<b>Stop</b>"""
1038 """<p>Stops loading of the current tab.</p>""" 1009 """<p>Stops loading of the current tab.</p>"""
1039 )) 1010 ))
1040 if not self.__initShortcutsOnly: 1011 self.stopAct.triggered.connect(self.__stopLoading)
1041 self.stopAct.triggered.connect(self.__stopLoading)
1042 self.__actions.append(self.stopAct) 1012 self.__actions.append(self.stopAct)
1043 1013
1044 self.copyAct = E5Action( 1014 self.copyAct = E5Action(
1045 self.tr('Copy'), 1015 self.tr('Copy'),
1046 UI.PixmapCache.getIcon("editCopy.png"), 1016 UI.PixmapCache.getIcon("editCopy.png"),
1050 self.copyAct.setStatusTip(self.tr('Copy the selected text')) 1020 self.copyAct.setStatusTip(self.tr('Copy the selected text'))
1051 self.copyAct.setWhatsThis(self.tr( 1021 self.copyAct.setWhatsThis(self.tr(
1052 """<b>Copy</b>""" 1022 """<b>Copy</b>"""
1053 """<p>Copy the selected text to the clipboard.</p>""" 1023 """<p>Copy the selected text to the clipboard.</p>"""
1054 )) 1024 ))
1055 if not self.__initShortcutsOnly: 1025 self.copyAct.triggered.connect(self.__copy)
1056 self.copyAct.triggered.connect(self.__copy)
1057 self.__actions.append(self.copyAct) 1026 self.__actions.append(self.copyAct)
1058 1027
1059 self.cutAct = E5Action( 1028 self.cutAct = E5Action(
1060 self.tr('Cut'), 1029 self.tr('Cut'),
1061 UI.PixmapCache.getIcon("editCut.png"), 1030 UI.PixmapCache.getIcon("editCut.png"),
1065 self.cutAct.setStatusTip(self.tr('Cut the selected text')) 1034 self.cutAct.setStatusTip(self.tr('Cut the selected text'))
1066 self.cutAct.setWhatsThis(self.tr( 1035 self.cutAct.setWhatsThis(self.tr(
1067 """<b>Cut</b>""" 1036 """<b>Cut</b>"""
1068 """<p>Cut the selected text to the clipboard.</p>""" 1037 """<p>Cut the selected text to the clipboard.</p>"""
1069 )) 1038 ))
1070 if not self.__initShortcutsOnly: 1039 self.cutAct.triggered.connect(self.__cut)
1071 self.cutAct.triggered.connect(self.__cut)
1072 self.__actions.append(self.cutAct) 1040 self.__actions.append(self.cutAct)
1073 1041
1074 self.pasteAct = E5Action( 1042 self.pasteAct = E5Action(
1075 self.tr('Paste'), 1043 self.tr('Paste'),
1076 UI.PixmapCache.getIcon("editPaste.png"), 1044 UI.PixmapCache.getIcon("editPaste.png"),
1080 self.pasteAct.setStatusTip(self.tr('Paste text from the clipboard')) 1048 self.pasteAct.setStatusTip(self.tr('Paste text from the clipboard'))
1081 self.pasteAct.setWhatsThis(self.tr( 1049 self.pasteAct.setWhatsThis(self.tr(
1082 """<b>Paste</b>""" 1050 """<b>Paste</b>"""
1083 """<p>Paste some text from the clipboard.</p>""" 1051 """<p>Paste some text from the clipboard.</p>"""
1084 )) 1052 ))
1085 if not self.__initShortcutsOnly: 1053 self.pasteAct.triggered.connect(self.__paste)
1086 self.pasteAct.triggered.connect(self.__paste)
1087 self.__actions.append(self.pasteAct) 1054 self.__actions.append(self.pasteAct)
1088 1055
1089 self.undoAct = E5Action( 1056 self.undoAct = E5Action(
1090 self.tr('Undo'), 1057 self.tr('Undo'),
1091 UI.PixmapCache.getIcon("editUndo.png"), 1058 UI.PixmapCache.getIcon("editUndo.png"),
1095 self.undoAct.setStatusTip(self.tr('Undo the last edit action')) 1062 self.undoAct.setStatusTip(self.tr('Undo the last edit action'))
1096 self.undoAct.setWhatsThis(self.tr( 1063 self.undoAct.setWhatsThis(self.tr(
1097 """<b>Undo</b>""" 1064 """<b>Undo</b>"""
1098 """<p>Undo the last edit action.</p>""" 1065 """<p>Undo the last edit action.</p>"""
1099 )) 1066 ))
1100 if not self.__initShortcutsOnly: 1067 self.undoAct.triggered.connect(self.__undo)
1101 self.undoAct.triggered.connect(self.__undo)
1102 self.__actions.append(self.undoAct) 1068 self.__actions.append(self.undoAct)
1103 1069
1104 self.redoAct = E5Action( 1070 self.redoAct = E5Action(
1105 self.tr('Redo'), 1071 self.tr('Redo'),
1106 UI.PixmapCache.getIcon("editRedo.png"), 1072 UI.PixmapCache.getIcon("editRedo.png"),
1110 self.redoAct.setStatusTip(self.tr('Redo the last edit action')) 1076 self.redoAct.setStatusTip(self.tr('Redo the last edit action'))
1111 self.redoAct.setWhatsThis(self.tr( 1077 self.redoAct.setWhatsThis(self.tr(
1112 """<b>Redo</b>""" 1078 """<b>Redo</b>"""
1113 """<p>Redo the last edit action.</p>""" 1079 """<p>Redo the last edit action.</p>"""
1114 )) 1080 ))
1115 if not self.__initShortcutsOnly: 1081 self.redoAct.triggered.connect(self.__redo)
1116 self.redoAct.triggered.connect(self.__redo)
1117 self.__actions.append(self.redoAct) 1082 self.__actions.append(self.redoAct)
1118 1083
1119 self.selectAllAct = E5Action( 1084 self.selectAllAct = E5Action(
1120 self.tr('Select All'), 1085 self.tr('Select All'),
1121 UI.PixmapCache.getIcon("editSelectAll.png"), 1086 UI.PixmapCache.getIcon("editSelectAll.png"),
1125 self.selectAllAct.setStatusTip(self.tr('Select all text')) 1090 self.selectAllAct.setStatusTip(self.tr('Select all text'))
1126 self.selectAllAct.setWhatsThis(self.tr( 1091 self.selectAllAct.setWhatsThis(self.tr(
1127 """<b>Select All</b>""" 1092 """<b>Select All</b>"""
1128 """<p>Select all text of the current browser.</p>""" 1093 """<p>Select all text of the current browser.</p>"""
1129 )) 1094 ))
1130 if not self.__initShortcutsOnly: 1095 self.selectAllAct.triggered.connect(self.__selectAll)
1131 self.selectAllAct.triggered.connect(self.__selectAll)
1132 self.__actions.append(self.selectAllAct) 1096 self.__actions.append(self.selectAllAct)
1133 1097
1134 self.unselectAct = E5Action( 1098 self.unselectAct = E5Action(
1135 self.tr('Unselect'), 1099 self.tr('Unselect'),
1136 self.tr('Unselect'), 1100 self.tr('Unselect'),
1139 self.unselectAct.setStatusTip(self.tr('Clear current selection')) 1103 self.unselectAct.setStatusTip(self.tr('Clear current selection'))
1140 self.unselectAct.setWhatsThis(self.tr( 1104 self.unselectAct.setWhatsThis(self.tr(
1141 """<b>Unselect</b>""" 1105 """<b>Unselect</b>"""
1142 """<p>Clear the selection of the current browser.</p>""" 1106 """<p>Clear the selection of the current browser.</p>"""
1143 )) 1107 ))
1144 if not self.__initShortcutsOnly: 1108 self.unselectAct.triggered.connect(self.__unselect)
1145 self.unselectAct.triggered.connect(self.__unselect)
1146 self.__actions.append(self.unselectAct) 1109 self.__actions.append(self.unselectAct)
1147 1110
1148 self.findAct = E5Action( 1111 self.findAct = E5Action(
1149 self.tr('Find...'), 1112 self.tr('Find...'),
1150 UI.PixmapCache.getIcon("find.png"), 1113 UI.PixmapCache.getIcon("find.png"),
1154 self.findAct.setStatusTip(self.tr('Find text in page')) 1117 self.findAct.setStatusTip(self.tr('Find text in page'))
1155 self.findAct.setWhatsThis(self.tr( 1118 self.findAct.setWhatsThis(self.tr(
1156 """<b>Find</b>""" 1119 """<b>Find</b>"""
1157 """<p>Find text in the current page.</p>""" 1120 """<p>Find text in the current page.</p>"""
1158 )) 1121 ))
1159 if not self.__initShortcutsOnly: 1122 self.findAct.triggered.connect(self.__find)
1160 self.findAct.triggered.connect(self.__find)
1161 self.__actions.append(self.findAct) 1123 self.__actions.append(self.findAct)
1162 1124
1163 self.findNextAct = E5Action( 1125 self.findNextAct = E5Action(
1164 self.tr('Find next'), 1126 self.tr('Find next'),
1165 UI.PixmapCache.getIcon("findNext.png"), 1127 UI.PixmapCache.getIcon("findNext.png"),
1170 'Find next occurrence of text in page')) 1132 'Find next occurrence of text in page'))
1171 self.findNextAct.setWhatsThis(self.tr( 1133 self.findNextAct.setWhatsThis(self.tr(
1172 """<b>Find next</b>""" 1134 """<b>Find next</b>"""
1173 """<p>Find the next occurrence of text in the current page.</p>""" 1135 """<p>Find the next occurrence of text in the current page.</p>"""
1174 )) 1136 ))
1175 if not self.__initShortcutsOnly: 1137 self.findNextAct.triggered.connect(self.__searchWidget.findNext)
1176 self.findNextAct.triggered.connect(self.__searchWidget.findNext)
1177 self.__actions.append(self.findNextAct) 1138 self.__actions.append(self.findNextAct)
1178 1139
1179 self.findPrevAct = E5Action( 1140 self.findPrevAct = E5Action(
1180 self.tr('Find previous'), 1141 self.tr('Find previous'),
1181 UI.PixmapCache.getIcon("findPrev.png"), 1142 UI.PixmapCache.getIcon("findPrev.png"),
1187 self.findPrevAct.setWhatsThis(self.tr( 1148 self.findPrevAct.setWhatsThis(self.tr(
1188 """<b>Find previous</b>""" 1149 """<b>Find previous</b>"""
1189 """<p>Find the previous occurrence of text in the current""" 1150 """<p>Find the previous occurrence of text in the current"""
1190 """ page.</p>""" 1151 """ page.</p>"""
1191 )) 1152 ))
1192 if not self.__initShortcutsOnly: 1153 self.findPrevAct.triggered.connect(
1193 self.findPrevAct.triggered.connect( 1154 self.__searchWidget.findPrevious)
1194 self.__searchWidget.findPrevious)
1195 self.__actions.append(self.findPrevAct) 1155 self.__actions.append(self.findPrevAct)
1196 1156
1197 self.bookmarksManageAct = E5Action( 1157 self.bookmarksManageAct = E5Action(
1198 self.tr('Manage Bookmarks'), 1158 self.tr('Manage Bookmarks'),
1199 self.tr('&Manage Bookmarks...'), 1159 self.tr('&Manage Bookmarks...'),
1203 'Open a dialog to manage the bookmarks.')) 1163 'Open a dialog to manage the bookmarks.'))
1204 self.bookmarksManageAct.setWhatsThis(self.tr( 1164 self.bookmarksManageAct.setWhatsThis(self.tr(
1205 """<b>Manage Bookmarks...</b>""" 1165 """<b>Manage Bookmarks...</b>"""
1206 """<p>Open a dialog to manage the bookmarks.</p>""" 1166 """<p>Open a dialog to manage the bookmarks.</p>"""
1207 )) 1167 ))
1208 if not self.__initShortcutsOnly: 1168 self.bookmarksManageAct.triggered.connect(
1209 self.bookmarksManageAct.triggered.connect( 1169 self.__showBookmarksDialog)
1210 self.__showBookmarksDialog)
1211 self.__actions.append(self.bookmarksManageAct) 1170 self.__actions.append(self.bookmarksManageAct)
1212 1171
1213 self.bookmarksAddAct = E5Action( 1172 self.bookmarksAddAct = E5Action(
1214 self.tr('Add Bookmark'), 1173 self.tr('Add Bookmark'),
1215 UI.PixmapCache.getIcon("addBookmark.png"), 1174 UI.PixmapCache.getIcon("addBookmark.png"),
1221 'Open a dialog to add a bookmark.')) 1180 'Open a dialog to add a bookmark.'))
1222 self.bookmarksAddAct.setWhatsThis(self.tr( 1181 self.bookmarksAddAct.setWhatsThis(self.tr(
1223 """<b>Add Bookmark</b>""" 1182 """<b>Add Bookmark</b>"""
1224 """<p>Open a dialog to add the current URL as a bookmark.</p>""" 1183 """<p>Open a dialog to add the current URL as a bookmark.</p>"""
1225 )) 1184 ))
1226 if not self.__initShortcutsOnly: 1185 self.bookmarksAddAct.triggered.connect(self.__addBookmark)
1227 self.bookmarksAddAct.triggered.connect(self.__addBookmark)
1228 self.__actions.append(self.bookmarksAddAct) 1186 self.__actions.append(self.bookmarksAddAct)
1229 1187
1230 self.bookmarksAddFolderAct = E5Action( 1188 self.bookmarksAddFolderAct = E5Action(
1231 self.tr('Add Folder'), 1189 self.tr('Add Folder'),
1232 self.tr('Add &Folder...'), 1190 self.tr('Add &Folder...'),
1235 'Open a dialog to add a new bookmarks folder.')) 1193 'Open a dialog to add a new bookmarks folder.'))
1236 self.bookmarksAddFolderAct.setWhatsThis(self.tr( 1194 self.bookmarksAddFolderAct.setWhatsThis(self.tr(
1237 """<b>Add Folder...</b>""" 1195 """<b>Add Folder...</b>"""
1238 """<p>Open a dialog to add a new bookmarks folder.</p>""" 1196 """<p>Open a dialog to add a new bookmarks folder.</p>"""
1239 )) 1197 ))
1240 if not self.__initShortcutsOnly: 1198 self.bookmarksAddFolderAct.triggered.connect(
1241 self.bookmarksAddFolderAct.triggered.connect( 1199 self.__addBookmarkFolder)
1242 self.__addBookmarkFolder)
1243 self.__actions.append(self.bookmarksAddFolderAct) 1200 self.__actions.append(self.bookmarksAddFolderAct)
1244 1201
1245 self.bookmarksAllTabsAct = E5Action( 1202 self.bookmarksAllTabsAct = E5Action(
1246 self.tr('Bookmark All Tabs'), 1203 self.tr('Bookmark All Tabs'),
1247 self.tr('Bookmark All Tabs...'), 1204 self.tr('Bookmark All Tabs...'),
1251 self.bookmarksAllTabsAct.setWhatsThis(self.tr( 1208 self.bookmarksAllTabsAct.setWhatsThis(self.tr(
1252 """<b>Bookmark All Tabs...</b>""" 1209 """<b>Bookmark All Tabs...</b>"""
1253 """<p>Open a dialog to add a new bookmarks folder for""" 1210 """<p>Open a dialog to add a new bookmarks folder for"""
1254 """ all open tabs.</p>""" 1211 """ all open tabs.</p>"""
1255 )) 1212 ))
1256 if not self.__initShortcutsOnly: 1213 self.bookmarksAllTabsAct.triggered.connect(self.bookmarkAll)
1257 self.bookmarksAllTabsAct.triggered.connect(self.bookmarkAll)
1258 self.__actions.append(self.bookmarksAllTabsAct) 1214 self.__actions.append(self.bookmarksAllTabsAct)
1259 1215
1260 self.whatsThisAct = E5Action( 1216 self.whatsThisAct = E5Action(
1261 self.tr('What\'s This?'), 1217 self.tr('What\'s This?'),
1262 UI.PixmapCache.getIcon("whatsThis.png"), 1218 UI.PixmapCache.getIcon("whatsThis.png"),
1270 """ with a question mark, and you can click on the interface""" 1226 """ with a question mark, and you can click on the interface"""
1271 """ elements to get a short description of what they do and how""" 1227 """ elements to get a short description of what they do and how"""
1272 """ to use them. In dialogs, this feature can be accessed using""" 1228 """ to use them. In dialogs, this feature can be accessed using"""
1273 """ the context help button in the titlebar.</p>""" 1229 """ the context help button in the titlebar.</p>"""
1274 )) 1230 ))
1275 if not self.__initShortcutsOnly: 1231 self.whatsThisAct.triggered.connect(self.__whatsThis)
1276 self.whatsThisAct.triggered.connect(self.__whatsThis)
1277 self.__actions.append(self.whatsThisAct) 1232 self.__actions.append(self.whatsThisAct)
1278 1233
1279 self.aboutAct = E5Action( 1234 self.aboutAct = E5Action(
1280 self.tr('About'), 1235 self.tr('About'),
1281 self.tr('&About'), 1236 self.tr('&About'),
1284 'Display information about this software')) 1239 'Display information about this software'))
1285 self.aboutAct.setWhatsThis(self.tr( 1240 self.aboutAct.setWhatsThis(self.tr(
1286 """<b>About</b>""" 1241 """<b>About</b>"""
1287 """<p>Display some information about this software.</p>""" 1242 """<p>Display some information about this software.</p>"""
1288 )) 1243 ))
1289 if not self.__initShortcutsOnly: 1244 self.aboutAct.triggered.connect(self.__about)
1290 self.aboutAct.triggered.connect(self.__about)
1291 self.__actions.append(self.aboutAct) 1245 self.__actions.append(self.aboutAct)
1292 1246
1293 self.aboutQtAct = E5Action( 1247 self.aboutQtAct = E5Action(
1294 self.tr('About Qt'), 1248 self.tr('About Qt'),
1295 self.tr('About &Qt'), 1249 self.tr('About &Qt'),
1298 self.tr('Display information about the Qt toolkit')) 1252 self.tr('Display information about the Qt toolkit'))
1299 self.aboutQtAct.setWhatsThis(self.tr( 1253 self.aboutQtAct.setWhatsThis(self.tr(
1300 """<b>About Qt</b>""" 1254 """<b>About Qt</b>"""
1301 """<p>Display some information about the Qt toolkit.</p>""" 1255 """<p>Display some information about the Qt toolkit.</p>"""
1302 )) 1256 ))
1303 if not self.__initShortcutsOnly: 1257 self.aboutQtAct.triggered.connect(self.__aboutQt)
1304 self.aboutQtAct.triggered.connect(self.__aboutQt)
1305 self.__actions.append(self.aboutQtAct) 1258 self.__actions.append(self.aboutQtAct)
1306 1259
1307 self.zoomInAct = E5Action( 1260 self.zoomInAct = E5Action(
1308 self.tr('Zoom in'), 1261 self.tr('Zoom in'),
1309 UI.PixmapCache.getIcon("zoomIn.png"), 1262 UI.PixmapCache.getIcon("zoomIn.png"),
1315 self.zoomInAct.setWhatsThis(self.tr( 1268 self.zoomInAct.setWhatsThis(self.tr(
1316 """<b>Zoom in</b>""" 1269 """<b>Zoom in</b>"""
1317 """<p>Zoom in on the web page.""" 1270 """<p>Zoom in on the web page."""
1318 """ This makes the web page bigger.</p>""" 1271 """ This makes the web page bigger.</p>"""
1319 )) 1272 ))
1320 if not self.__initShortcutsOnly: 1273 self.zoomInAct.triggered.connect(self.__zoomIn)
1321 self.zoomInAct.triggered.connect(self.__zoomIn)
1322 self.__actions.append(self.zoomInAct) 1274 self.__actions.append(self.zoomInAct)
1323 1275
1324 self.zoomOutAct = E5Action( 1276 self.zoomOutAct = E5Action(
1325 self.tr('Zoom out'), 1277 self.tr('Zoom out'),
1326 UI.PixmapCache.getIcon("zoomOut.png"), 1278 UI.PixmapCache.getIcon("zoomOut.png"),
1332 self.zoomOutAct.setWhatsThis(self.tr( 1284 self.zoomOutAct.setWhatsThis(self.tr(
1333 """<b>Zoom out</b>""" 1285 """<b>Zoom out</b>"""
1334 """<p>Zoom out on the web page.""" 1286 """<p>Zoom out on the web page."""
1335 """ This makes the web page smaller.</p>""" 1287 """ This makes the web page smaller.</p>"""
1336 )) 1288 ))
1337 if not self.__initShortcutsOnly: 1289 self.zoomOutAct.triggered.connect(self.__zoomOut)
1338 self.zoomOutAct.triggered.connect(self.__zoomOut)
1339 self.__actions.append(self.zoomOutAct) 1290 self.__actions.append(self.zoomOutAct)
1340 1291
1341 self.zoomResetAct = E5Action( 1292 self.zoomResetAct = E5Action(
1342 self.tr('Zoom reset'), 1293 self.tr('Zoom reset'),
1343 UI.PixmapCache.getIcon("zoomReset.png"), 1294 UI.PixmapCache.getIcon("zoomReset.png"),
1349 self.zoomResetAct.setWhatsThis(self.tr( 1300 self.zoomResetAct.setWhatsThis(self.tr(
1350 """<b>Zoom reset</b>""" 1301 """<b>Zoom reset</b>"""
1351 """<p>Reset the zoom of the web page. """ 1302 """<p>Reset the zoom of the web page. """
1352 """This sets the zoom factor to 100%.</p>""" 1303 """This sets the zoom factor to 100%.</p>"""
1353 )) 1304 ))
1354 if not self.__initShortcutsOnly: 1305 self.zoomResetAct.triggered.connect(self.__zoomReset)
1355 self.zoomResetAct.triggered.connect(self.__zoomReset)
1356 self.__actions.append(self.zoomResetAct) 1306 self.__actions.append(self.zoomResetAct)
1357 1307
1358 self.pageSourceAct = E5Action( 1308 self.pageSourceAct = E5Action(
1359 self.tr('Show page source'), 1309 self.tr('Show page source'),
1360 self.tr('Show page source'), 1310 self.tr('Show page source'),
1364 'Show the page source in an editor')) 1314 'Show the page source in an editor'))
1365 self.pageSourceAct.setWhatsThis(self.tr( 1315 self.pageSourceAct.setWhatsThis(self.tr(
1366 """<b>Show page source</b>""" 1316 """<b>Show page source</b>"""
1367 """<p>Show the page source in an editor.</p>""" 1317 """<p>Show the page source in an editor.</p>"""
1368 )) 1318 ))
1369 if not self.__initShortcutsOnly: 1319 self.pageSourceAct.triggered.connect(self.__showPageSource)
1370 self.pageSourceAct.triggered.connect(self.__showPageSource)
1371 self.__actions.append(self.pageSourceAct) 1320 self.__actions.append(self.pageSourceAct)
1372 self.addAction(self.pageSourceAct) 1321 self.addAction(self.pageSourceAct)
1373 1322
1374 self.fullScreenAct = E5Action( 1323 self.fullScreenAct = E5Action(
1375 self.tr('Full Screen'), 1324 self.tr('Full Screen'),
1380 if Globals.isMacPlatform(): 1329 if Globals.isMacPlatform():
1381 self.fullScreenAct.setShortcut( 1330 self.fullScreenAct.setShortcut(
1382 QKeySequence(self.tr("Meta+Ctrl+F"))) 1331 QKeySequence(self.tr("Meta+Ctrl+F")))
1383 else: 1332 else:
1384 self.fullScreenAct.setShortcut(QKeySequence(self.tr('F11'))) 1333 self.fullScreenAct.setShortcut(QKeySequence(self.tr('F11')))
1385 if not self.__initShortcutsOnly: 1334 self.fullScreenAct.triggered.connect(self.toggleFullScreen)
1386 self.fullScreenAct.triggered.connect(self.toggleFullScreen)
1387 self.__actions.append(self.fullScreenAct) 1335 self.__actions.append(self.fullScreenAct)
1388 self.addAction(self.fullScreenAct) 1336 self.addAction(self.fullScreenAct)
1389 1337
1390 self.nextTabAct = E5Action( 1338 self.nextTabAct = E5Action(
1391 self.tr('Show next tab'), 1339 self.tr('Show next tab'),
1392 self.tr('Show next tab'), 1340 self.tr('Show next tab'),
1393 QKeySequence(self.tr('Ctrl+Alt+Tab')), 0, 1341 QKeySequence(self.tr('Ctrl+Alt+Tab')), 0,
1394 self, 'webbrowser_view_next_tab') 1342 self, 'webbrowser_view_next_tab')
1395 if not self.__initShortcutsOnly: 1343 self.nextTabAct.triggered.connect(self.__nextTab)
1396 self.nextTabAct.triggered.connect(self.__nextTab)
1397 self.__actions.append(self.nextTabAct) 1344 self.__actions.append(self.nextTabAct)
1398 self.addAction(self.nextTabAct) 1345 self.addAction(self.nextTabAct)
1399 1346
1400 self.prevTabAct = E5Action( 1347 self.prevTabAct = E5Action(
1401 self.tr('Show previous tab'), 1348 self.tr('Show previous tab'),
1402 self.tr('Show previous tab'), 1349 self.tr('Show previous tab'),
1403 QKeySequence(self.tr('Shift+Ctrl+Alt+Tab')), 0, 1350 QKeySequence(self.tr('Shift+Ctrl+Alt+Tab')), 0,
1404 self, 'webbrowser_view_previous_tab') 1351 self, 'webbrowser_view_previous_tab')
1405 if not self.__initShortcutsOnly: 1352 self.prevTabAct.triggered.connect(self.__prevTab)
1406 self.prevTabAct.triggered.connect(self.__prevTab)
1407 self.__actions.append(self.prevTabAct) 1353 self.__actions.append(self.prevTabAct)
1408 self.addAction(self.prevTabAct) 1354 self.addAction(self.prevTabAct)
1409 1355
1410 self.switchTabAct = E5Action( 1356 self.switchTabAct = E5Action(
1411 self.tr('Switch between tabs'), 1357 self.tr('Switch between tabs'),
1412 self.tr('Switch between tabs'), 1358 self.tr('Switch between tabs'),
1413 QKeySequence(self.tr('Ctrl+1')), 0, 1359 QKeySequence(self.tr('Ctrl+1')), 0,
1414 self, 'webbrowser_switch_tabs') 1360 self, 'webbrowser_switch_tabs')
1415 if not self.__initShortcutsOnly: 1361 self.switchTabAct.triggered.connect(self.__switchTab)
1416 self.switchTabAct.triggered.connect(self.__switchTab)
1417 self.__actions.append(self.switchTabAct) 1362 self.__actions.append(self.switchTabAct)
1418 self.addAction(self.switchTabAct) 1363 self.addAction(self.switchTabAct)
1419 1364
1420 self.prefAct = E5Action( 1365 self.prefAct = E5Action(
1421 self.tr('Preferences'), 1366 self.tr('Preferences'),
1426 self.prefAct.setWhatsThis(self.tr( 1371 self.prefAct.setWhatsThis(self.tr(
1427 """<b>Preferences</b>""" 1372 """<b>Preferences</b>"""
1428 """<p>Set the configuration items of the application""" 1373 """<p>Set the configuration items of the application"""
1429 """ with your prefered values.</p>""" 1374 """ with your prefered values.</p>"""
1430 )) 1375 ))
1431 if not self.__initShortcutsOnly: 1376 self.prefAct.triggered.connect(self.__showPreferences)
1432 self.prefAct.triggered.connect(self.__showPreferences)
1433 self.__actions.append(self.prefAct) 1377 self.__actions.append(self.prefAct)
1434 1378
1435 self.acceptedLanguagesAct = E5Action( 1379 self.acceptedLanguagesAct = E5Action(
1436 self.tr('Languages'), 1380 self.tr('Languages'),
1437 UI.PixmapCache.getIcon("flag.png"), 1381 UI.PixmapCache.getIcon("flag.png"),
1441 'Configure the accepted languages for web pages')) 1385 'Configure the accepted languages for web pages'))
1442 self.acceptedLanguagesAct.setWhatsThis(self.tr( 1386 self.acceptedLanguagesAct.setWhatsThis(self.tr(
1443 """<b>Languages</b>""" 1387 """<b>Languages</b>"""
1444 """<p>Configure the accepted languages for web pages.</p>""" 1388 """<p>Configure the accepted languages for web pages.</p>"""
1445 )) 1389 ))
1446 if not self.__initShortcutsOnly: 1390 self.acceptedLanguagesAct.triggered.connect(
1447 self.acceptedLanguagesAct.triggered.connect( 1391 self.__showAcceptedLanguages)
1448 self.__showAcceptedLanguages)
1449 self.__actions.append(self.acceptedLanguagesAct) 1392 self.__actions.append(self.acceptedLanguagesAct)
1450 1393
1451 self.cookiesAct = E5Action( 1394 self.cookiesAct = E5Action(
1452 self.tr('Cookies'), 1395 self.tr('Cookies'),
1453 UI.PixmapCache.getIcon("cookie.png"), 1396 UI.PixmapCache.getIcon("cookie.png"),
1456 'Configure cookies handling')) 1399 'Configure cookies handling'))
1457 self.cookiesAct.setWhatsThis(self.tr( 1400 self.cookiesAct.setWhatsThis(self.tr(
1458 """<b>Cookies</b>""" 1401 """<b>Cookies</b>"""
1459 """<p>Configure cookies handling.</p>""" 1402 """<p>Configure cookies handling.</p>"""
1460 )) 1403 ))
1461 if not self.__initShortcutsOnly: 1404 self.cookiesAct.triggered.connect(
1462 self.cookiesAct.triggered.connect( 1405 self.__showCookiesConfiguration)
1463 self.__showCookiesConfiguration)
1464 self.__actions.append(self.cookiesAct) 1406 self.__actions.append(self.cookiesAct)
1465 1407
1466 self.flashCookiesAct = E5Action( 1408 self.flashCookiesAct = E5Action(
1467 self.tr('Flash Cookies'), 1409 self.tr('Flash Cookies'),
1468 UI.PixmapCache.getIcon("flashCookie.png"), 1410 UI.PixmapCache.getIcon("flashCookie.png"),
1472 'Manage flash cookies')) 1414 'Manage flash cookies'))
1473 self.flashCookiesAct.setWhatsThis(self.tr( 1415 self.flashCookiesAct.setWhatsThis(self.tr(
1474 """<b>Flash Cookies</b>""" 1416 """<b>Flash Cookies</b>"""
1475 """<p>Show a dialog to manage the flash cookies.</p>""" 1417 """<p>Show a dialog to manage the flash cookies.</p>"""
1476 )) 1418 ))
1477 if not self.__initShortcutsOnly: 1419 self.flashCookiesAct.triggered.connect(
1478 self.flashCookiesAct.triggered.connect( 1420 self.__showFlashCookiesManagement)
1479 self.__showFlashCookiesManagement)
1480 self.__actions.append(self.flashCookiesAct) 1421 self.__actions.append(self.flashCookiesAct)
1481 1422
1482 self.personalDataAct = E5Action( 1423 self.personalDataAct = E5Action(
1483 self.tr('Personal Information'), 1424 self.tr('Personal Information'),
1484 UI.PixmapCache.getIcon("pim.png"), 1425 UI.PixmapCache.getIcon("pim.png"),
1490 self.personalDataAct.setWhatsThis(self.tr( 1431 self.personalDataAct.setWhatsThis(self.tr(
1491 """<b>Personal Information...</b>""" 1432 """<b>Personal Information...</b>"""
1492 """<p>Opens a dialog to configure the personal information""" 1433 """<p>Opens a dialog to configure the personal information"""
1493 """ used for completing form fields.</p>""" 1434 """ used for completing form fields.</p>"""
1494 )) 1435 ))
1495 if not self.__initShortcutsOnly: 1436 self.personalDataAct.triggered.connect(
1496 self.personalDataAct.triggered.connect( 1437 self.__showPersonalInformationDialog)
1497 self.__showPersonalInformationDialog)
1498 self.__actions.append(self.personalDataAct) 1438 self.__actions.append(self.personalDataAct)
1499 1439
1500 self.greaseMonkeyAct = E5Action( 1440 self.greaseMonkeyAct = E5Action(
1501 self.tr('GreaseMonkey Scripts'), 1441 self.tr('GreaseMonkey Scripts'),
1502 UI.PixmapCache.getIcon("greaseMonkey.png"), 1442 UI.PixmapCache.getIcon("greaseMonkey.png"),
1508 self.greaseMonkeyAct.setWhatsThis(self.tr( 1448 self.greaseMonkeyAct.setWhatsThis(self.tr(
1509 """<b>GreaseMonkey Scripts...</b>""" 1449 """<b>GreaseMonkey Scripts...</b>"""
1510 """<p>Opens a dialog to configure the available GreaseMonkey""" 1450 """<p>Opens a dialog to configure the available GreaseMonkey"""
1511 """ Scripts.</p>""" 1451 """ Scripts.</p>"""
1512 )) 1452 ))
1513 if not self.__initShortcutsOnly: 1453 self.greaseMonkeyAct.triggered.connect(
1514 self.greaseMonkeyAct.triggered.connect( 1454 self.__showGreaseMonkeyConfigDialog)
1515 self.__showGreaseMonkeyConfigDialog)
1516 self.__actions.append(self.greaseMonkeyAct) 1455 self.__actions.append(self.greaseMonkeyAct)
1517 1456
1518 self.editMessageFilterAct = E5Action( 1457 self.editMessageFilterAct = E5Action(
1519 self.tr('Edit Message Filters'), 1458 self.tr('Edit Message Filters'),
1520 UI.PixmapCache.getIcon("warning.png"), 1459 UI.PixmapCache.getIcon("warning.png"),
1526 """<b>Edit Message Filters</b>""" 1465 """<b>Edit Message Filters</b>"""
1527 """<p>Opens a dialog to edit the message filters used to""" 1466 """<p>Opens a dialog to edit the message filters used to"""
1528 """ suppress unwanted messages been shown in an error""" 1467 """ suppress unwanted messages been shown in an error"""
1529 """ window.</p>""" 1468 """ window.</p>"""
1530 )) 1469 ))
1531 if not self.__initShortcutsOnly: 1470 self.editMessageFilterAct.triggered.connect(
1532 self.editMessageFilterAct.triggered.connect( 1471 E5ErrorMessage.editMessageFilters)
1533 E5ErrorMessage.editMessageFilters)
1534 self.__actions.append(self.editMessageFilterAct) 1472 self.__actions.append(self.editMessageFilterAct)
1535 1473
1536 self.featurePermissionAct = E5Action( 1474 self.featurePermissionAct = E5Action(
1537 self.tr('Edit HTML5 Feature Permissions'), 1475 self.tr('Edit HTML5 Feature Permissions'),
1538 UI.PixmapCache.getIcon("featurePermission.png"), 1476 UI.PixmapCache.getIcon("featurePermission.png"),
1543 self.featurePermissionAct.setWhatsThis(self.tr( 1481 self.featurePermissionAct.setWhatsThis(self.tr(
1544 """<b>Edit HTML5 Feature Permissions</b>""" 1482 """<b>Edit HTML5 Feature Permissions</b>"""
1545 """<p>Opens a dialog to edit the remembered HTML5""" 1483 """<p>Opens a dialog to edit the remembered HTML5"""
1546 """ feature permissions.</p>""" 1484 """ feature permissions.</p>"""
1547 )) 1485 ))
1548 if not self.__initShortcutsOnly: 1486 self.featurePermissionAct.triggered.connect(
1549 self.featurePermissionAct.triggered.connect( 1487 self.__showFeaturePermissionDialog)
1550 self.__showFeaturePermissionDialog)
1551 self.__actions.append(self.featurePermissionAct) 1488 self.__actions.append(self.featurePermissionAct)
1552 1489
1553 if WebBrowserWindow._useQtHelp or self.__initShortcutsOnly: 1490 if WebBrowserWindow._useQtHelp:
1554 self.syncTocAct = E5Action( 1491 self.syncTocAct = E5Action(
1555 self.tr('Sync with Table of Contents'), 1492 self.tr('Sync with Table of Contents'),
1556 UI.PixmapCache.getIcon("syncToc.png"), 1493 UI.PixmapCache.getIcon("syncToc.png"),
1557 self.tr('Sync with Table of Contents'), 1494 self.tr('Sync with Table of Contents'),
1558 0, 0, self, 'webbrowser_sync_toc') 1495 0, 0, self, 'webbrowser_sync_toc')
1561 self.syncTocAct.setWhatsThis(self.tr( 1498 self.syncTocAct.setWhatsThis(self.tr(
1562 """<b>Sync with Table of Contents</b>""" 1499 """<b>Sync with Table of Contents</b>"""
1563 """<p>Synchronizes the table of contents with current""" 1500 """<p>Synchronizes the table of contents with current"""
1564 """ page.</p>""" 1501 """ page.</p>"""
1565 )) 1502 ))
1566 if not self.__initShortcutsOnly: 1503 self.syncTocAct.triggered.connect(self.__syncTOC)
1567 self.syncTocAct.triggered.connect(self.__syncTOC)
1568 self.__actions.append(self.syncTocAct) 1504 self.__actions.append(self.syncTocAct)
1569 1505
1570 self.showTocAct = E5Action( 1506 self.showTocAct = E5Action(
1571 self.tr('Table of Contents'), 1507 self.tr('Table of Contents'),
1572 self.tr('Table of Contents'), 1508 self.tr('Table of Contents'),
1575 'Shows the table of contents window')) 1511 'Shows the table of contents window'))
1576 self.showTocAct.setWhatsThis(self.tr( 1512 self.showTocAct.setWhatsThis(self.tr(
1577 """<b>Table of Contents</b>""" 1513 """<b>Table of Contents</b>"""
1578 """<p>Shows the table of contents window.</p>""" 1514 """<p>Shows the table of contents window.</p>"""
1579 )) 1515 ))
1580 if not self.__initShortcutsOnly: 1516 self.showTocAct.triggered.connect(self.__showTocWindow)
1581 self.showTocAct.triggered.connect(self.__showTocWindow)
1582 self.__actions.append(self.showTocAct) 1517 self.__actions.append(self.showTocAct)
1583 1518
1584 self.showIndexAct = E5Action( 1519 self.showIndexAct = E5Action(
1585 self.tr('Index'), 1520 self.tr('Index'),
1586 self.tr('Index'), 1521 self.tr('Index'),
1589 'Shows the index window')) 1524 'Shows the index window'))
1590 self.showIndexAct.setWhatsThis(self.tr( 1525 self.showIndexAct.setWhatsThis(self.tr(
1591 """<b>Index</b>""" 1526 """<b>Index</b>"""
1592 """<p>Shows the index window.</p>""" 1527 """<p>Shows the index window.</p>"""
1593 )) 1528 ))
1594 if not self.__initShortcutsOnly: 1529 self.showIndexAct.triggered.connect(self.__showIndexWindow)
1595 self.showIndexAct.triggered.connect(self.__showIndexWindow)
1596 self.__actions.append(self.showIndexAct) 1530 self.__actions.append(self.showIndexAct)
1597 1531
1598 self.showSearchAct = E5Action( 1532 self.showSearchAct = E5Action(
1599 self.tr('Search'), 1533 self.tr('Search'),
1600 self.tr('Search'), 1534 self.tr('Search'),
1603 'Shows the search window')) 1537 'Shows the search window'))
1604 self.showSearchAct.setWhatsThis(self.tr( 1538 self.showSearchAct.setWhatsThis(self.tr(
1605 """<b>Search</b>""" 1539 """<b>Search</b>"""
1606 """<p>Shows the search window.</p>""" 1540 """<p>Shows the search window.</p>"""
1607 )) 1541 ))
1608 if not self.__initShortcutsOnly: 1542 self.showSearchAct.triggered.connect(
1609 self.showSearchAct.triggered.connect( 1543 self.__showSearchWindow)
1610 self.__showSearchWindow)
1611 self.__actions.append(self.showSearchAct) 1544 self.__actions.append(self.showSearchAct)
1612 1545
1613 self.manageQtHelpDocsAct = E5Action( 1546 self.manageQtHelpDocsAct = E5Action(
1614 self.tr('Manage QtHelp Documents'), 1547 self.tr('Manage QtHelp Documents'),
1615 self.tr('Manage QtHelp &Documents'), 1548 self.tr('Manage QtHelp &Documents'),
1619 self.manageQtHelpDocsAct.setWhatsThis(self.tr( 1552 self.manageQtHelpDocsAct.setWhatsThis(self.tr(
1620 """<b>Manage QtHelp Documents</b>""" 1553 """<b>Manage QtHelp Documents</b>"""
1621 """<p>Shows a dialog to manage the QtHelp documentation""" 1554 """<p>Shows a dialog to manage the QtHelp documentation"""
1622 """ set.</p>""" 1555 """ set.</p>"""
1623 )) 1556 ))
1624 if not self.__initShortcutsOnly: 1557 self.manageQtHelpDocsAct.triggered.connect(
1625 self.manageQtHelpDocsAct.triggered.connect( 1558 self.__manageQtHelpDocumentation)
1626 self.__manageQtHelpDocumentation)
1627 self.__actions.append(self.manageQtHelpDocsAct) 1559 self.__actions.append(self.manageQtHelpDocsAct)
1628 1560
1629 self.manageQtHelpFiltersAct = E5Action( 1561 self.manageQtHelpFiltersAct = E5Action(
1630 self.tr('Manage QtHelp Filters'), 1562 self.tr('Manage QtHelp Filters'),
1631 self.tr('Manage QtHelp &Filters'), 1563 self.tr('Manage QtHelp &Filters'),
1634 'Shows a dialog to manage the QtHelp filters')) 1566 'Shows a dialog to manage the QtHelp filters'))
1635 self.manageQtHelpFiltersAct.setWhatsThis(self.tr( 1567 self.manageQtHelpFiltersAct.setWhatsThis(self.tr(
1636 """<b>Manage QtHelp Filters</b>""" 1568 """<b>Manage QtHelp Filters</b>"""
1637 """<p>Shows a dialog to manage the QtHelp filters.</p>""" 1569 """<p>Shows a dialog to manage the QtHelp filters.</p>"""
1638 )) 1570 ))
1639 if not self.__initShortcutsOnly: 1571 self.manageQtHelpFiltersAct.triggered.connect(
1640 self.manageQtHelpFiltersAct.triggered.connect( 1572 self.__manageQtHelpFilters)
1641 self.__manageQtHelpFilters)
1642 self.__actions.append(self.manageQtHelpFiltersAct) 1573 self.__actions.append(self.manageQtHelpFiltersAct)
1643 1574
1644 self.reindexDocumentationAct = E5Action( 1575 self.reindexDocumentationAct = E5Action(
1645 self.tr('Reindex Documentation'), 1576 self.tr('Reindex Documentation'),
1646 self.tr('&Reindex Documentation'), 1577 self.tr('&Reindex Documentation'),
1649 'Reindexes the documentation set')) 1580 'Reindexes the documentation set'))
1650 self.reindexDocumentationAct.setWhatsThis(self.tr( 1581 self.reindexDocumentationAct.setWhatsThis(self.tr(
1651 """<b>Reindex Documentation</b>""" 1582 """<b>Reindex Documentation</b>"""
1652 """<p>Reindexes the documentation set.</p>""" 1583 """<p>Reindexes the documentation set.</p>"""
1653 )) 1584 ))
1654 if not self.__initShortcutsOnly: 1585 self.reindexDocumentationAct.triggered.connect(
1655 self.reindexDocumentationAct.triggered.connect( 1586 self.__searchEngine.reindexDocumentation)
1656 self.__searchEngine.reindexDocumentation)
1657 self.__actions.append(self.reindexDocumentationAct) 1587 self.__actions.append(self.reindexDocumentationAct)
1658 1588
1659 self.clearPrivateDataAct = E5Action( 1589 self.clearPrivateDataAct = E5Action(
1660 self.tr('Clear private data'), 1590 self.tr('Clear private data'),
1661 UI.PixmapCache.getIcon("clearPrivateData.png"), 1591 UI.PixmapCache.getIcon("clearPrivateData.png"),
1667 self.clearPrivateDataAct.setWhatsThis(self.tr( 1597 self.clearPrivateDataAct.setWhatsThis(self.tr(
1668 """<b>Clear private data</b>""" 1598 """<b>Clear private data</b>"""
1669 """<p>Clears the private data like browsing history, search""" 1599 """<p>Clears the private data like browsing history, search"""
1670 """ history or the favicons database.</p>""" 1600 """ history or the favicons database.</p>"""
1671 )) 1601 ))
1672 if not self.__initShortcutsOnly: 1602 self.clearPrivateDataAct.triggered.connect(
1673 self.clearPrivateDataAct.triggered.connect( 1603 self.__clearPrivateData)
1674 self.__clearPrivateData)
1675 self.__actions.append(self.clearPrivateDataAct) 1604 self.__actions.append(self.clearPrivateDataAct)
1676 1605
1677 self.clearIconsAct = E5Action( 1606 self.clearIconsAct = E5Action(
1678 self.tr('Clear icons database'), 1607 self.tr('Clear icons database'),
1679 self.tr('Clear &icons database'), 1608 self.tr('Clear &icons database'),
1684 self.clearIconsAct.setWhatsThis(self.tr( 1613 self.clearIconsAct.setWhatsThis(self.tr(
1685 """<b>Clear icons database</b>""" 1614 """<b>Clear icons database</b>"""
1686 """<p>Clears the database of favicons of previously visited""" 1615 """<p>Clears the database of favicons of previously visited"""
1687 """ URLs.</p>""" 1616 """ URLs.</p>"""
1688 )) 1617 ))
1689 if not self.__initShortcutsOnly: 1618 self.clearIconsAct.triggered.connect(self.__clearIconsDatabase)
1690 self.clearIconsAct.triggered.connect(self.__clearIconsDatabase)
1691 self.__actions.append(self.clearIconsAct) 1619 self.__actions.append(self.clearIconsAct)
1692 1620
1693 self.manageIconsAct = E5Action( 1621 self.manageIconsAct = E5Action(
1694 self.tr('Manage saved Favicons'), 1622 self.tr('Manage saved Favicons'),
1695 UI.PixmapCache.getIcon("icons.png"), 1623 UI.PixmapCache.getIcon("icons.png"),
1701 self.manageIconsAct.setWhatsThis(self.tr( 1629 self.manageIconsAct.setWhatsThis(self.tr(
1702 """<b>Manage saved Favicons</b>""" 1630 """<b>Manage saved Favicons</b>"""
1703 """<p>This shows a dialog to manage the saved favicons of""" 1631 """<p>This shows a dialog to manage the saved favicons of"""
1704 """ previously visited URLs.</p>""" 1632 """ previously visited URLs.</p>"""
1705 )) 1633 ))
1706 if not self.__initShortcutsOnly: 1634 self.manageIconsAct.triggered.connect(self.__showWebIconsDialog)
1707 self.manageIconsAct.triggered.connect(self.__showWebIconsDialog)
1708 self.__actions.append(self.manageIconsAct) 1635 self.__actions.append(self.manageIconsAct)
1709 1636
1710 self.searchEnginesAct = E5Action( 1637 self.searchEnginesAct = E5Action(
1711 self.tr('Configure Search Engines'), 1638 self.tr('Configure Search Engines'),
1712 self.tr('Configure Search &Engines...'), 1639 self.tr('Configure Search &Engines...'),
1717 self.searchEnginesAct.setWhatsThis(self.tr( 1644 self.searchEnginesAct.setWhatsThis(self.tr(
1718 """<b>Configure Search Engines...</b>""" 1645 """<b>Configure Search Engines...</b>"""
1719 """<p>Opens a dialog to configure the available search""" 1646 """<p>Opens a dialog to configure the available search"""
1720 """ engines.</p>""" 1647 """ engines.</p>"""
1721 )) 1648 ))
1722 if not self.__initShortcutsOnly: 1649 self.searchEnginesAct.triggered.connect(
1723 self.searchEnginesAct.triggered.connect( 1650 self.__showEnginesConfigurationDialog)
1724 self.__showEnginesConfigurationDialog)
1725 self.__actions.append(self.searchEnginesAct) 1651 self.__actions.append(self.searchEnginesAct)
1726 1652
1727 self.passwordsAct = E5Action( 1653 self.passwordsAct = E5Action(
1728 self.tr('Manage Saved Passwords'), 1654 self.tr('Manage Saved Passwords'),
1729 UI.PixmapCache.getIcon("passwords.png"), 1655 UI.PixmapCache.getIcon("passwords.png"),
1734 'Manage the saved passwords')) 1660 'Manage the saved passwords'))
1735 self.passwordsAct.setWhatsThis(self.tr( 1661 self.passwordsAct.setWhatsThis(self.tr(
1736 """<b>Manage Saved Passwords...</b>""" 1662 """<b>Manage Saved Passwords...</b>"""
1737 """<p>Opens a dialog to manage the saved passwords.</p>""" 1663 """<p>Opens a dialog to manage the saved passwords.</p>"""
1738 )) 1664 ))
1739 if not self.__initShortcutsOnly: 1665 self.passwordsAct.triggered.connect(self.__showPasswordsDialog)
1740 self.passwordsAct.triggered.connect(self.__showPasswordsDialog)
1741 self.__actions.append(self.passwordsAct) 1666 self.__actions.append(self.passwordsAct)
1742 1667
1743 self.adblockAct = E5Action( 1668 self.adblockAct = E5Action(
1744 self.tr('Ad Block'), 1669 self.tr('Ad Block'),
1745 UI.PixmapCache.getIcon("adBlockPlus.png"), 1670 UI.PixmapCache.getIcon("adBlockPlus.png"),
1751 self.adblockAct.setWhatsThis(self.tr( 1676 self.adblockAct.setWhatsThis(self.tr(
1752 """<b>Ad Block...</b>""" 1677 """<b>Ad Block...</b>"""
1753 """<p>Opens a dialog to configure AdBlock subscriptions and""" 1678 """<p>Opens a dialog to configure AdBlock subscriptions and"""
1754 """ rules.</p>""" 1679 """ rules.</p>"""
1755 )) 1680 ))
1756 if not self.__initShortcutsOnly: 1681 self.adblockAct.triggered.connect(self.__showAdBlockDialog)
1757 self.adblockAct.triggered.connect(self.__showAdBlockDialog)
1758 self.__actions.append(self.adblockAct) 1682 self.__actions.append(self.adblockAct)
1759 1683
1760 self.certificateErrorsAct = E5Action( 1684 self.certificateErrorsAct = E5Action(
1761 self.tr('Manage SSL Certificate Errors'), 1685 self.tr('Manage SSL Certificate Errors'),
1762 UI.PixmapCache.getIcon("certificates.png"), 1686 UI.PixmapCache.getIcon("certificates.png"),
1768 self.certificateErrorsAct.setWhatsThis(self.tr( 1692 self.certificateErrorsAct.setWhatsThis(self.tr(
1769 """<b>Manage SSL Certificate Errors...</b>""" 1693 """<b>Manage SSL Certificate Errors...</b>"""
1770 """<p>Opens a dialog to manage the accepted SSL""" 1694 """<p>Opens a dialog to manage the accepted SSL"""
1771 """ certificate errors.</p>""" 1695 """ certificate errors.</p>"""
1772 )) 1696 ))
1773 if not self.__initShortcutsOnly: 1697 self.certificateErrorsAct.triggered.connect(
1774 self.certificateErrorsAct.triggered.connect( 1698 self.__showCertificateErrorsDialog)
1775 self.__showCertificateErrorsDialog)
1776 self.__actions.append(self.certificateErrorsAct) 1699 self.__actions.append(self.certificateErrorsAct)
1777 1700
1778 self.safeBrowsingAct = E5Action( 1701 self.safeBrowsingAct = E5Action(
1779 self.tr('Manage Safe Browsing'), 1702 self.tr('Manage Safe Browsing'),
1780 UI.PixmapCache.getIcon("safeBrowsing.png"), 1703 UI.PixmapCache.getIcon("safeBrowsing.png"),
1785 self.safeBrowsingAct.setWhatsThis(self.tr( 1708 self.safeBrowsingAct.setWhatsThis(self.tr(
1786 """<b>Manage Safe Browsing</b>""" 1709 """<b>Manage Safe Browsing</b>"""
1787 """<p>This opens a dialog to configure Safe Browsing and""" 1710 """<p>This opens a dialog to configure Safe Browsing and"""
1788 """ to manage the local cache.</p>""" 1711 """ to manage the local cache.</p>"""
1789 )) 1712 ))
1790 if not self.__initShortcutsOnly: 1713 self.safeBrowsingAct.triggered.connect(
1791 self.safeBrowsingAct.triggered.connect( 1714 self.__showSafeBrowsingDialog)
1792 self.__showSafeBrowsingDialog)
1793 self.__actions.append(self.safeBrowsingAct) 1715 self.__actions.append(self.safeBrowsingAct)
1794 1716
1795 self.showDownloadManagerAct = E5Action( 1717 self.showDownloadManagerAct = E5Action(
1796 self.tr('Downloads'), 1718 self.tr('Downloads'),
1797 self.tr('Downloads'), 1719 self.tr('Downloads'),
1800 'Shows the downloads window')) 1722 'Shows the downloads window'))
1801 self.showDownloadManagerAct.setWhatsThis(self.tr( 1723 self.showDownloadManagerAct.setWhatsThis(self.tr(
1802 """<b>Downloads</b>""" 1724 """<b>Downloads</b>"""
1803 """<p>Shows the downloads window.</p>""" 1725 """<p>Shows the downloads window.</p>"""
1804 )) 1726 ))
1805 if not self.__initShortcutsOnly: 1727 self.showDownloadManagerAct.triggered.connect(
1806 self.showDownloadManagerAct.triggered.connect( 1728 self.__showDownloadsWindow)
1807 self.__showDownloadsWindow)
1808 self.__actions.append(self.showDownloadManagerAct) 1729 self.__actions.append(self.showDownloadManagerAct)
1809 1730
1810 self.feedsManagerAct = E5Action( 1731 self.feedsManagerAct = E5Action(
1811 self.tr('RSS Feeds Dialog'), 1732 self.tr('RSS Feeds Dialog'),
1812 UI.PixmapCache.getIcon("rss22.png"), 1733 UI.PixmapCache.getIcon("rss22.png"),
1819 """<b>RSS Feeds Dialog...</b>""" 1740 """<b>RSS Feeds Dialog...</b>"""
1820 """<p>Open a dialog to show the configured RSS feeds.""" 1741 """<p>Open a dialog to show the configured RSS feeds."""
1821 """ It can be used to mange the feeds and to show their""" 1742 """ It can be used to mange the feeds and to show their"""
1822 """ contents.</p>""" 1743 """ contents.</p>"""
1823 )) 1744 ))
1824 if not self.__initShortcutsOnly: 1745 self.feedsManagerAct.triggered.connect(self.__showFeedsManager)
1825 self.feedsManagerAct.triggered.connect(self.__showFeedsManager)
1826 self.__actions.append(self.feedsManagerAct) 1746 self.__actions.append(self.feedsManagerAct)
1827 1747
1828 self.siteInfoAct = E5Action( 1748 self.siteInfoAct = E5Action(
1829 self.tr('Siteinfo Dialog'), 1749 self.tr('Siteinfo Dialog'),
1830 UI.PixmapCache.getIcon("helpAbout.png"), 1750 UI.PixmapCache.getIcon("helpAbout.png"),
1836 self.siteInfoAct.setWhatsThis(self.tr( 1756 self.siteInfoAct.setWhatsThis(self.tr(
1837 """<b>Siteinfo Dialog...</b>""" 1757 """<b>Siteinfo Dialog...</b>"""
1838 """<p>Opens a dialog showing some information about the current""" 1758 """<p>Opens a dialog showing some information about the current"""
1839 """ site.</p>""" 1759 """ site.</p>"""
1840 )) 1760 ))
1841 if not self.__initShortcutsOnly: 1761 self.siteInfoAct.triggered.connect(self.__showSiteinfoDialog)
1842 self.siteInfoAct.triggered.connect(self.__showSiteinfoDialog)
1843 self.__actions.append(self.siteInfoAct) 1762 self.__actions.append(self.siteInfoAct)
1844 1763
1845 self.userAgentManagerAct = E5Action( 1764 self.userAgentManagerAct = E5Action(
1846 self.tr('Manage User Agent Settings'), 1765 self.tr('Manage User Agent Settings'),
1847 self.tr('Manage &User Agent Settings'), 1766 self.tr('Manage &User Agent Settings'),
1850 'Shows a dialog to manage the User Agent settings')) 1769 'Shows a dialog to manage the User Agent settings'))
1851 self.userAgentManagerAct.setWhatsThis(self.tr( 1770 self.userAgentManagerAct.setWhatsThis(self.tr(
1852 """<b>Manage User Agent Settings</b>""" 1771 """<b>Manage User Agent Settings</b>"""
1853 """<p>Shows a dialog to manage the User Agent settings.</p>""" 1772 """<p>Shows a dialog to manage the User Agent settings.</p>"""
1854 )) 1773 ))
1855 if not self.__initShortcutsOnly: 1774 self.userAgentManagerAct.triggered.connect(
1856 self.userAgentManagerAct.triggered.connect( 1775 self.__showUserAgentsDialog)
1857 self.__showUserAgentsDialog)
1858 self.__actions.append(self.userAgentManagerAct) 1776 self.__actions.append(self.userAgentManagerAct)
1859 1777
1860 self.synchronizationAct = E5Action( 1778 self.synchronizationAct = E5Action(
1861 self.tr('Synchronize data'), 1779 self.tr('Synchronize data'),
1862 UI.PixmapCache.getIcon("sync.png"), 1780 UI.PixmapCache.getIcon("sync.png"),
1867 self.synchronizationAct.setWhatsThis(self.tr( 1785 self.synchronizationAct.setWhatsThis(self.tr(
1868 """<b>Synchronize Data...</b>""" 1786 """<b>Synchronize Data...</b>"""
1869 """<p>This shows a dialog to synchronize data via the""" 1787 """<p>This shows a dialog to synchronize data via the"""
1870 """ network.</p>""" 1788 """ network.</p>"""
1871 )) 1789 ))
1872 if not self.__initShortcutsOnly: 1790 self.synchronizationAct.triggered.connect(
1873 self.synchronizationAct.triggered.connect( 1791 self.__showSyncDialog)
1874 self.__showSyncDialog)
1875 self.__actions.append(self.synchronizationAct) 1792 self.__actions.append(self.synchronizationAct)
1876 1793
1877 self.zoomValuesAct = E5Action( 1794 self.zoomValuesAct = E5Action(
1878 self.tr('Manage Saved Zoom Values'), 1795 self.tr('Manage Saved Zoom Values'),
1879 UI.PixmapCache.getIcon("zoomReset.png"), 1796 UI.PixmapCache.getIcon("zoomReset.png"),
1884 'Manage the saved zoom values')) 1801 'Manage the saved zoom values'))
1885 self.zoomValuesAct.setWhatsThis(self.tr( 1802 self.zoomValuesAct.setWhatsThis(self.tr(
1886 """<b>Manage Saved Zoom Values...</b>""" 1803 """<b>Manage Saved Zoom Values...</b>"""
1887 """<p>Opens a dialog to manage the saved zoom values.</p>""" 1804 """<p>Opens a dialog to manage the saved zoom values.</p>"""
1888 )) 1805 ))
1889 if not self.__initShortcutsOnly: 1806 self.zoomValuesAct.triggered.connect(self.__showZoomValuesDialog)
1890 self.zoomValuesAct.triggered.connect(self.__showZoomValuesDialog)
1891 self.__actions.append(self.zoomValuesAct) 1807 self.__actions.append(self.zoomValuesAct)
1892 1808
1893 self.showJavaScriptConsoleAct = E5Action( 1809 self.showJavaScriptConsoleAct = E5Action(
1894 self.tr('JavaScript Console'), 1810 self.tr('JavaScript Console'),
1895 self.tr('JavaScript Console'), 1811 self.tr('JavaScript Console'),
1898 'Toggle the JavaScript console window')) 1814 'Toggle the JavaScript console window'))
1899 self.showJavaScriptConsoleAct.setWhatsThis(self.tr( 1815 self.showJavaScriptConsoleAct.setWhatsThis(self.tr(
1900 """<b>JavaScript Console</b>""" 1816 """<b>JavaScript Console</b>"""
1901 """<p>This toggles the JavaScript console window.</p>""" 1817 """<p>This toggles the JavaScript console window.</p>"""
1902 )) 1818 ))
1903 if not self.__initShortcutsOnly: 1819 self.showJavaScriptConsoleAct.triggered.connect(
1904 self.showJavaScriptConsoleAct.triggered.connect( 1820 self.__toggleJavaScriptConsole)
1905 self.__toggleJavaScriptConsole)
1906 self.__actions.append(self.showJavaScriptConsoleAct) 1821 self.__actions.append(self.showJavaScriptConsoleAct)
1907 1822
1908 self.showTabManagerAct = E5Action( 1823 self.showTabManagerAct = E5Action(
1909 self.tr('Tab Manager'), 1824 self.tr('Tab Manager'),
1910 self.tr('Tab Manager'), 1825 self.tr('Tab Manager'),
1913 'Shows the tab manager window')) 1828 'Shows the tab manager window'))
1914 self.showTabManagerAct.setWhatsThis(self.tr( 1829 self.showTabManagerAct.setWhatsThis(self.tr(
1915 """<b>Tab Manager</b>""" 1830 """<b>Tab Manager</b>"""
1916 """<p>Shows the tab manager window.</p>""" 1831 """<p>Shows the tab manager window.</p>"""
1917 )) 1832 ))
1918 if not self.__initShortcutsOnly: 1833 self.showTabManagerAct.triggered.connect(
1919 self.showTabManagerAct.triggered.connect( 1834 lambda: self.__showTabManager(self.showTabManagerAct))
1920 lambda: self.__showTabManager(self.showTabManagerAct))
1921 self.__actions.append(self.showTabManagerAct) 1835 self.__actions.append(self.showTabManagerAct)
1922 1836
1923 self.showSessionsManagerAct = E5Action( 1837 self.showSessionsManagerAct = E5Action(
1924 self.tr('Session Manager'), 1838 self.tr('Session Manager'),
1925 self.tr('Session Manager...'), 1839 self.tr('Session Manager...'),
1928 'Shows the session manager window')) 1842 'Shows the session manager window'))
1929 self.showSessionsManagerAct.setWhatsThis(self.tr( 1843 self.showSessionsManagerAct.setWhatsThis(self.tr(
1930 """<b>Session Manager</b>""" 1844 """<b>Session Manager</b>"""
1931 """<p>Shows the session manager window.</p>""" 1845 """<p>Shows the session manager window.</p>"""
1932 )) 1846 ))
1933 if not self.__initShortcutsOnly: 1847 self.showSessionsManagerAct.triggered.connect(
1934 self.showSessionsManagerAct.triggered.connect( 1848 self.__showSessionManagerDialog)
1935 self.__showSessionManagerDialog)
1936 self.__actions.append(self.showSessionsManagerAct) 1849 self.__actions.append(self.showSessionsManagerAct)
1937 1850
1938 self.virustotalScanCurrentAct = E5Action( 1851 self.virustotalScanCurrentAct = E5Action(
1939 self.tr("Scan current site"), 1852 self.tr("Scan current site"),
1940 UI.PixmapCache.getIcon("virustotal.png"), 1853 UI.PixmapCache.getIcon("virustotal.png"),
1941 self.tr("Scan current site"), 1854 self.tr("Scan current site"),
1942 0, 0, 1855 0, 0,
1943 self, 'webbrowser_virustotal_scan_site') 1856 self, 'webbrowser_virustotal_scan_site')
1944 if not self.__initShortcutsOnly: 1857 self.virustotalScanCurrentAct.triggered.connect(
1945 self.virustotalScanCurrentAct.triggered.connect( 1858 self.__virusTotalScanCurrentSite)
1946 self.__virusTotalScanCurrentSite)
1947 self.__actions.append(self.virustotalScanCurrentAct) 1859 self.__actions.append(self.virustotalScanCurrentAct)
1948 1860
1949 self.virustotalIpReportAct = E5Action( 1861 self.virustotalIpReportAct = E5Action(
1950 self.tr("IP Address Report"), 1862 self.tr("IP Address Report"),
1951 UI.PixmapCache.getIcon("virustotal.png"), 1863 UI.PixmapCache.getIcon("virustotal.png"),
1952 self.tr("IP Address Report"), 1864 self.tr("IP Address Report"),
1953 0, 0, 1865 0, 0,
1954 self, 'webbrowser_virustotal_ip_report') 1866 self, 'webbrowser_virustotal_ip_report')
1955 if not self.__initShortcutsOnly: 1867 self.virustotalIpReportAct.triggered.connect(
1956 self.virustotalIpReportAct.triggered.connect( 1868 self.__virusTotalIpAddressReport)
1957 self.__virusTotalIpAddressReport)
1958 self.__actions.append(self.virustotalIpReportAct) 1869 self.__actions.append(self.virustotalIpReportAct)
1959 1870
1960 self.virustotalDomainReportAct = E5Action( 1871 self.virustotalDomainReportAct = E5Action(
1961 self.tr("Domain Report"), 1872 self.tr("Domain Report"),
1962 UI.PixmapCache.getIcon("virustotal.png"), 1873 UI.PixmapCache.getIcon("virustotal.png"),
1963 self.tr("Domain Report"), 1874 self.tr("Domain Report"),
1964 0, 0, 1875 0, 0,
1965 self, 'webbrowser_virustotal_domain_report') 1876 self, 'webbrowser_virustotal_domain_report')
1966 if not self.__initShortcutsOnly: 1877 self.virustotalDomainReportAct.triggered.connect(
1967 self.virustotalDomainReportAct.triggered.connect( 1878 self.__virusTotalDomainReport)
1968 self.__virusTotalDomainReport)
1969 self.__actions.append(self.virustotalDomainReportAct) 1879 self.__actions.append(self.virustotalDomainReportAct)
1970 1880
1971 if not Preferences.getWebBrowser("VirusTotalEnabled") or \ 1881 if not Preferences.getWebBrowser("VirusTotalEnabled") or \
1972 Preferences.getWebBrowser("VirusTotalServiceKey") == "": 1882 Preferences.getWebBrowser("VirusTotalServiceKey") == "":
1973 self.virustotalScanCurrentAct.setEnabled(False) 1883 self.virustotalScanCurrentAct.setEnabled(False)
1987 """<p>Set the keyboard shortcuts of the application""" 1897 """<p>Set the keyboard shortcuts of the application"""
1988 """ with your prefered values.</p>""" 1898 """ with your prefered values.</p>"""
1989 )) 1899 ))
1990 self.shortcutsAct.triggered.connect(self.__configShortcuts) 1900 self.shortcutsAct.triggered.connect(self.__configShortcuts)
1991 self.__actions.append(self.shortcutsAct) 1901 self.__actions.append(self.shortcutsAct)
1902
1903 self.exportShortcutsAct = E5Action(
1904 self.tr('Export Keyboard Shortcuts'),
1905 UI.PixmapCache.getIcon("exportShortcuts.png"),
1906 self.tr('&Export Keyboard Shortcuts...'),
1907 0, 0, self, 'export_keyboard_shortcuts')
1908 self.exportShortcutsAct.setStatusTip(self.tr(
1909 'Export the keyboard shortcuts'))
1910 self.exportShortcutsAct.setWhatsThis(self.tr(
1911 """<b>Export Keyboard Shortcuts</b>"""
1912 """<p>Export the keyboard shortcuts of the application.</p>"""
1913 ))
1914 self.exportShortcutsAct.triggered.connect(self.__exportShortcuts)
1915 self.__actions.append(self.exportShortcutsAct)
1916
1917 self.importShortcutsAct = E5Action(
1918 self.tr('Import Keyboard Shortcuts'),
1919 UI.PixmapCache.getIcon("importShortcuts.png"),
1920 self.tr('&Import Keyboard Shortcuts...'),
1921 0, 0, self, 'import_keyboard_shortcuts')
1922 self.importShortcutsAct.setStatusTip(self.tr(
1923 'Import the keyboard shortcuts'))
1924 self.importShortcutsAct.setWhatsThis(self.tr(
1925 """<b>Import Keyboard Shortcuts</b>"""
1926 """<p>Import the keyboard shortcuts of the application.</p>"""
1927 ))
1928 self.importShortcutsAct.triggered.connect(self.__importShortcuts)
1929 self.__actions.append(self.importShortcutsAct)
1992 1930
1993 self.backAct.setEnabled(False) 1931 self.backAct.setEnabled(False)
1994 self.forwardAct.setEnabled(False) 1932 self.forwardAct.setEnabled(False)
1995 1933
1996 # now read the keyboard shortcuts for the actions 1934 # now read the keyboard shortcuts for the actions
2125 2063
2126 menu = mb.addMenu(self.tr('&Settings')) 2064 menu = mb.addMenu(self.tr('&Settings'))
2127 menu.addAction(self.prefAct) 2065 menu.addAction(self.prefAct)
2128 menu.addSeparator() 2066 menu.addSeparator()
2129 menu.addAction(self.shortcutsAct) 2067 menu.addAction(self.shortcutsAct)
2068 menu.addAction(self.exportShortcutsAct)
2069 menu.addAction(self.importShortcutsAct)
2130 menu.addSeparator() 2070 menu.addSeparator()
2131 menu.addAction(self.acceptedLanguagesAct) 2071 menu.addAction(self.acceptedLanguagesAct)
2132 menu.addAction(self.cookiesAct) 2072 menu.addAction(self.cookiesAct)
2133 menu.addAction(self.flashCookiesAct) 2073 menu.addAction(self.flashCookiesAct)
2134 menu.addAction(self.personalDataAct) 2074 menu.addAction(self.personalDataAct)
2250 self.__superMenu.addSeparator() 2190 self.__superMenu.addSeparator()
2251 self.__superMenu.addAction(self.prefAct) 2191 self.__superMenu.addAction(self.prefAct)
2252 2192
2253 menu = self.__superMenu.addMenu(self.tr('Settings')) 2193 menu = self.__superMenu.addMenu(self.tr('Settings'))
2254 menu.addAction(self.shortcutsAct) 2194 menu.addAction(self.shortcutsAct)
2195 menu.addAction(self.exportShortcutsAct)
2196 menu.addAction(self.importShortcutsAct)
2255 menu.addSeparator() 2197 menu.addSeparator()
2256 menu.addAction(self.acceptedLanguagesAct) 2198 menu.addAction(self.acceptedLanguagesAct)
2257 menu.addAction(self.cookiesAct) 2199 menu.addAction(self.cookiesAct)
2258 menu.addAction(self.flashCookiesAct) 2200 menu.addAction(self.flashCookiesAct)
2259 menu.addAction(self.personalDataAct) 2201 menu.addAction(self.personalDataAct)
5056 if self.__shortcutsDialog is None: 4998 if self.__shortcutsDialog is None:
5057 from Preferences.ShortcutsDialog import ShortcutsDialog 4999 from Preferences.ShortcutsDialog import ShortcutsDialog
5058 self.__shortcutsDialog = ShortcutsDialog(self) 5000 self.__shortcutsDialog = ShortcutsDialog(self)
5059 self.__shortcutsDialog.populate(helpViewer=self) 5001 self.__shortcutsDialog.populate(helpViewer=self)
5060 self.__shortcutsDialog.show() 5002 self.__shortcutsDialog.show()
5003
5004 def __exportShortcuts(self):
5005 """
5006 Private slot to export the keyboard shortcuts.
5007 """
5008 fn, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
5009 None,
5010 self.tr("Export Keyboard Shortcuts"),
5011 "",
5012 self.tr("Keyboard shortcut file (*.e4k)"),
5013 "",
5014 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
5015
5016 if not fn:
5017 return
5018
5019 ext = QFileInfo(fn).suffix()
5020 if not ext:
5021 ex = selectedFilter.split("(*")[1].split(")")[0]
5022 if ex:
5023 fn += ex
5024
5025 from Preferences import Shortcuts
5026 Shortcuts.exportShortcuts(fn, helpViewer=self)
5027
5028 def __importShortcuts(self):
5029 """
5030 Private slot to import the keyboard shortcuts.
5031 """
5032 fn = E5FileDialog.getOpenFileName(
5033 None,
5034 self.tr("Import Keyboard Shortcuts"),
5035 "",
5036 self.tr("Keyboard shortcut file (*.e4k)"))
5037
5038 if fn:
5039 from Preferences import Shortcuts
5040 Shortcuts.importShortcuts(fn, helpViewer=self)

eric ide

mercurial