src/eric7/HelpViewer/HelpBookmarksWidget.py

Sat, 31 Dec 2022 16:23:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2022 16:23:21 +0100
branch
eric7
changeset 9653
e67609152c5e
parent 9473
3f23dbf37dbe
child 10192
f457742dd3d6
permissions
-rw-r--r--

Updated copyright for 2023.

8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
3 # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
6 """
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
7 Module implementing a widget showing the list of bookmarks.
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
8 """
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
9
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import contextlib
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
11 import datetime
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import json
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
13 import os
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
15 from PyQt6.QtCore import QPoint, Qt, QUrl, pyqtSignal, pyqtSlot
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from PyQt6.QtGui import QClipboard, QGuiApplication
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from PyQt6.QtWidgets import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18 QAbstractItemView,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19 QApplication,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
20 QDialog,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
21 QListWidget,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
22 QListWidgetItem,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23 QMenu,
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 )
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
26 from eric7 import Preferences
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
27 from eric7.EricWidgets import EricFileDialog, EricMessageBox
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
28
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 from .HelpBookmarkPropertiesDialog import HelpBookmarkPropertiesDialog
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
31
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 class HelpBookmarksWidget(QListWidget):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Class implementing a widget showing the list of bookmarks.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
35
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @signal escapePressed() emitted when the ESC key was pressed
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @signal openUrl(QUrl, str) emitted to open an entry in the current tab
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @signal newTab(QUrl, str) emitted to open an entry in a new tab
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @signal newBackgroundTab(QUrl, str) emitted to open an entry in a
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 new background tab
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
42
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 escapePressed = pyqtSignal()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 openUrl = pyqtSignal(QUrl)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 newTab = pyqtSignal(QUrl)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 newBackgroundTab = pyqtSignal(QUrl)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 UrlRole = Qt.ItemDataRole.UserRole + 1
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 def __init__(self, parent=None):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @param parent reference to the parent widget (defaults to None)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @type QWidget (optional)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 super().__init__(parent)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.setObjectName("HelpBookmarksWidget")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__helpViewer = parent
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.setAlternatingRowColors(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63 self.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection)
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.setSortingEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
65
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
66 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67 self.customContextMenuRequested.connect(self.__showContextMenu)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.__bookmarks = []
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__loadBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.itemDoubleClicked.connect(self.__bookmarkActivated)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @pyqtSlot(QPoint)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 def __showContextMenu(self, point):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 Private slot to handle the customContextMenuRequested signal of
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 the viewlist.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 @param point position to open the menu at
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 @type QPoint
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 selectedItemsCount = len(self.selectedItems())
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 if selectedItemsCount == 0:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 # background menu
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.__showBackgroundMenu(point)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 elif selectedItemsCount == 1:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 # single bookmark menu
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 self.__showBookmarkContextMenu(point)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 else:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 # multiple selected bookmarks
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.__showBookmarksContextMenu(point)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 @pyqtSlot(QPoint)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 def __showBackgroundMenu(self, point):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 Private slot to show the background menu (i.e. no selection).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 @param point position to open the menu at
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 @type QPoint
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 menu = QMenu()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 openBookmarks = menu.addAction(self.tr("Open All Bookmarks"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 menu.addSeparator()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 newBookmark = menu.addAction(self.tr("New Bookmark"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 addBookmark = menu.addAction(self.tr("Bookmark Page"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 menu.addSeparator()
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
108 deleteBookmarks = menu.addAction(self.tr("Delete All Bookmarks"))
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
109 menu.addSeparator()
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
110 exportBookmarks = menu.addAction(self.tr("Export All Bookmarks"))
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
111 importBookmarks = menu.addAction(self.tr("Import Bookmarks"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 act = menu.exec(self.mapToGlobal(point))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 if act == openBookmarks:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 self.__openBookmarks(selected=False)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 elif act == newBookmark:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self.__newBookmark()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 elif act == addBookmark:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.__bookmarkCurrentPage()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 elif act == deleteBookmarks:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
121 self.__deleteBookmarks([self.item(row) for row in range(self.count())])
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
122 elif act == exportBookmarks:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
123 self.__exportBookmarks(selected=False)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
124 elif act == importBookmarks:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
125 self.__importBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
126
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 @pyqtSlot(QPoint)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 def __showBookmarkContextMenu(self, point):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 Private slot to show the context menu for a bookmark.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @param point position to open the menu at
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @type QPoint
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 itm = self.selectedItems()[0]
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 url = itm.data(self.UrlRole)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137 validUrl = url is not None and not url.isEmpty() and url.isValid()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 menu = QMenu()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 curPage = menu.addAction(self.tr("Open Link"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 curPage.setEnabled(validUrl)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 newPage = menu.addAction(self.tr("Open Link in New Page"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 newPage.setEnabled(validUrl)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144 newBackgroundPage = menu.addAction(self.tr("Open Link in Background Page"))
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 newBackgroundPage.setEnabled(validUrl)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 menu.addSeparator()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 copyUrl = menu.addAction(self.tr("Copy URL to Clipboard"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 copyUrl.setEnabled(validUrl)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 menu.addSeparator()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 newBookmark = menu.addAction(self.tr("New Bookmark"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 addBookmark = menu.addAction(self.tr("Bookmark Page"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 menu.addSeparator()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 editBookmark = menu.addAction(self.tr("Edit Bookmark"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 menu.addSeparator()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 deleteBookmark = menu.addAction(self.tr("Delete Bookmark"))
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
156 menu.addSeparator()
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
157 exportBookmarks = menu.addAction(self.tr("Export All Bookmarks"))
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
158 importBookmarks = menu.addAction(self.tr("Import Bookmarks"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 act = menu.exec(self.mapToGlobal(point))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 if act == curPage:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.openUrl.emit(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 elif act == newPage:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 self.newTab.emit(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 elif act == newBackgroundPage:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.newBackgroundTab.emit(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 elif act == copyUrl:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 # copy the URL to both clipboard areas
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 QGuiApplication.clipboard().setText(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170 url.toString(), QClipboard.Mode.Clipboard
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171 )
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 QGuiApplication.clipboard().setText(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173 url.toString(), QClipboard.Mode.Selection
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174 )
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 elif act == newBookmark:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 self.__newBookmark()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 elif act == addBookmark:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 self.__bookmarkCurrentPage()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 elif act == editBookmark:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.__editBookmark(itm)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 elif act == deleteBookmark:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.__deleteBookmarks([itm])
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
183 elif act == exportBookmarks:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
184 self.__exportBookmarks(selected=False)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
185 elif act == importBookmarks:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
186 self.__importBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
187
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 @pyqtSlot(QPoint)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 def __showBookmarksContextMenu(self, point):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 Private slot to show the context menu for multiple bookmark.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 @param point position to open the menu at
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 @type QPoint
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 menu = QMenu()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 openBookmarks = menu.addAction(self.tr("Open Selected Bookmarks"))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 menu.addSeparator()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 deleteBookmarks = menu.addAction(self.tr("Delete Selected Bookmarks"))
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
200 menu.addSeparator()
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
201 exportBookmarks = menu.addAction(self.tr("Export Selected Bookmarks"))
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
202 exportAllBookmarks = menu.addAction(self.tr("Export All Bookmarks"))
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
203 importBookmarks = menu.addAction(self.tr("Import Bookmarks"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
204
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 act = menu.exec(self.mapToGlobal(point))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 if act == openBookmarks:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 self.__openBookmarks(selected=True)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 elif act == deleteBookmarks:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self.__deleteBookmarks(self.selectedItems())
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
210 elif act == exportBookmarks:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
211 self.__exportBookmarks(selected=True)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
212 elif act == exportAllBookmarks:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
213 self.__exportBookmarks(selected=False)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
214 elif act == importBookmarks:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
215 self.__importBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 @pyqtSlot(str, str)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 def __addBookmark(self, title, url):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 Private slot to add a bookmark entry.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
221
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 @param title title for the bookmark
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 @type str
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 @param url URL for the bookmark
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 @type str
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 url = url.strip()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
228
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 itm = QListWidgetItem(title, self)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 itm.setData(self.UrlRole, QUrl(url))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 itm.setToolTip(url)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 @pyqtSlot(str, QUrl)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 def addBookmark(self, title, url):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 Public slot to add a bookmark with given data.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 @param title title for the bookmark
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 @type str
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 @param url URL for the bookmark
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 @type QUrl
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 dlg = HelpBookmarkPropertiesDialog(title, url.toString(), self)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 if dlg.exec() == QDialog.DialogCode.Accepted:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 title, url = dlg.getData()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 self.__addBookmark(title, url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 self.sortItems()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.__saveBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 @pyqtSlot()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 def __bookmarkCurrentPage(self):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 Private slot to bookmark the current page.
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 currentViewer = self.__helpViewer.currentViewer()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 title = currentViewer.pageTitle()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 url = currentViewer.link()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 self.addBookmark(title, url)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 @pyqtSlot()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 def __newBookmark(self):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 Private slot to create a new bookmark.
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 dlg = HelpBookmarkPropertiesDialog(parent=self)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 if dlg.exec() == QDialog.DialogCode.Accepted:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 title, url = dlg.getData()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 self.__addBookmark(title, url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 self.sortItems()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.__saveBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
271
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 @pyqtSlot()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 def __editBookmark(self, itm):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 Private slot to edit a bookmark.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
276
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 @param itm reference to the bookmark item to be edited
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 @type QListWidgetItem
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 dlg = HelpBookmarkPropertiesDialog(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
281 itm.text(), itm.data(self.UrlRole).toString(), self
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282 )
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 if dlg.exec() == QDialog.DialogCode.Accepted:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 title, url = dlg.getData()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 itm.setText(title)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 itm.setData(self.UrlRole, QUrl(url))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 itm.setToolTip(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 self.sortItems()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 self.__saveBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
290
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 @pyqtSlot(QListWidgetItem)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 def __bookmarkActivated(self, itm):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 Private slot handling the activation of a bookmark.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
295
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 @param itm reference to the activated item
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 @type QListWidgetItem
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 url = itm.data(self.UrlRole)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 if url and not url.isEmpty() and url.isValid():
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 buttons = QApplication.mouseButtons()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 modifiers = QApplication.keyboardModifiers()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
303
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 if buttons & Qt.MouseButton.MiddleButton:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 self.newTab.emit(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
307 if modifiers & (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
308 Qt.KeyboardModifier.ControlModifier
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
309 | Qt.KeyboardModifier.ShiftModifier
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
310 ) == (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311 Qt.KeyboardModifier.ControlModifier
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
312 | Qt.KeyboardModifier.ShiftModifier
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 ):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 self.newBackgroundTab.emit(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 elif modifiers & Qt.KeyboardModifier.ControlModifier:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 self.newTab.emit(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 elif (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
318 modifiers & Qt.KeyboardModifier.ShiftModifier
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
319 and not self.__internal
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 ):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 self.newWindow.emit(url)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 else:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 self.openUrl.emit(url)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
324
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 def __openBookmarks(self, selected=False):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 Private method to open all or selected bookmarks.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 @param selected flag indicating to open the selected bookmarks
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 (defaults to False)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 @type bool (optional)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 items = (
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 self.selectedItems()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335 if selected
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336 else [self.item(row) for row in range(self.count())]
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
338
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 for itm in items:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 url = itm.data(self.UrlRole)
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 if url is not None and not url.isEmpty() and url.isValid():
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 self.newTab.emit(url)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 def __deleteBookmarks(self, items):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 Private method to delete the given bookmark items.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 @param items list of bookmarks to be deleted
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 @type list of QListWidgetItem
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 """
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
351 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 dlg = DeleteFilesConfirmationDialog(
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 self,
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 self.tr("Delete Bookmarks"),
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 self.tr("Shall these bookmarks really be deleted?"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
357 [itm.text() for itm in items],
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 )
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 if dlg.exec() == QDialog.DialogCode.Accepted:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 for itm in items:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 self.takeItem(self.row(itm))
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 del itm
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 self.__saveBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
364
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 def __loadBookmarks(self):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 Private method to load the defined bookmarks.
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 bookmarksStr = Preferences.getHelp("Bookmarks")
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 with contextlib.suppress(ValueError):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 bookmarks = json.loads(bookmarksStr)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
372
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 self.clear()
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 for bookmark in bookmarks:
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 self.__addBookmark(bookmark["title"], bookmark["url"])
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 self.sortItems()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
377
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 def __saveBookmarks(self):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 Private method to save the defined bookmarks.
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 """
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 bookmarks = []
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 for row in range(self.count()):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 itm = self.item(row)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385 bookmarks.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 {
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
387 "title": itm.text(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388 "url": itm.data(self.UrlRole).toString(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389 }
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
390 )
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 Preferences.setHelp("Bookmarks", json.dumps(bookmarks))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
392
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
393 @pyqtSlot()
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
394 def __exportBookmarks(self, selected=False):
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
395 """
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
396 Private slot to export the bookmarks into a JSON file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
398 @param selected flag indicating to export the selected bookmarks
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
399 (defaults to False)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
400 @type bool (optional)
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 """
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
402 filename, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
403 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
404 self.tr("Export Bookmarks"),
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
405 "",
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
406 self.tr("eric Bookmarks Files (*.json);;All Files (*)"),
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
407 None,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
408 EricFileDialog.DontConfirmOverwrite,
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
409 )
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
410 if filename:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
411 ext = os.path.splitext(filename)[1]
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
412 if not ext:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
413 ex = selectedFilter.split("(*")[1].split(")")[0]
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
414 if ex:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
415 filename += ex
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
416
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
417 if os.path.exists(filename):
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
418 ok = EricMessageBox.yesNo(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
419 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
420 self.tr("Export Bookmarks"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
421 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
422 """The file <b>{0}</b> already exists. Do you"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
423 """ want to overwrite it?"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
424 ).format(filename),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
425 )
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
426 if not ok:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
427 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
428
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
429 bookmarksDict = {
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
430 "creator": "eric7",
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
431 "version": 1,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
432 "created": datetime.datetime.now().isoformat(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
433 sep=" ", timespec="seconds"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
435 "bookmarks": [],
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
436 }
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
437 bookmarkItems = (
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
438 self.selectedItems()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
439 if selected
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
440 else [self.item(row) for row in range(self.count())]
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
441 )
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
442 for bookmarkItem in bookmarkItems:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
443 bookmarksDict["bookmarks"].append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
444 {
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
445 "type": "url",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
446 "title": bookmarkItem.text(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
447 "url": bookmarkItem.data(self.UrlRole).toString(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
448 }
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
449 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
450
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
451 jsonStr = json.dumps(bookmarksDict, indent=2, sort_keys=True)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
452 try:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
453 with open(filename, "w") as f:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
454 f.write(jsonStr)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
455 except OSError as err:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
456 EricMessageBox.critical(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
457 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
458 self.tr("Export Bookmarks"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
460 """<p>The bookmarks could not be exported"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
461 """ to <b>{0}</b>.</p><p>Reason: {1}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
462 ).format(filename, str(err)),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
463 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
464
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
465 @pyqtSlot()
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 def __importBookmarks(self):
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 """
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
468 Private slot to import bookmarks from a JSON file.
8900
9c153ce17d74 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 """
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
470 from .HelpBookmarksImportDialog import HelpBookmarksImportDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
471
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
472 dlg = HelpBookmarksImportDialog(self)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
473 if dlg.exec() == QDialog.DialogCode.Accepted:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
474 replace, filename = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
475
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
476 try:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
477 with open(filename, "r") as f:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
478 jsonStr = f.read()
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
479 bookmarks = json.loads(jsonStr)
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
480 except (OSError, json.JSONDecodeError) as err:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
481 EricMessageBox.critical(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
482 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
483 self.tr("Import Bookmarks"),
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
484 self.tr(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
485 "<p>The bookmarks file <b>{0}</b> could not be "
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
486 "read.</p><p>Reason: {1}</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
487 ).format(filename, str(err)),
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
488 )
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
489 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
490
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
491 if not isinstance(bookmarks, dict):
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
492 EricMessageBox.critical(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
493 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
494 self.tr("Import Bookmarks"),
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
495 self.tr(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
496 "The bookmarks file <b>{0}</b> has invalid contents."
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
497 ).format(filename),
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
498 )
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
499 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
500
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
501 try:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
502 if bookmarks["creator"] != "eric7":
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
503 EricMessageBox.critical(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
504 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
505 self.tr("Import Bookmarks"),
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
506 self.tr(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
507 "The bookmarks file <b>{0}</b> was not created"
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
508 " with 'eric7'."
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
509 ).format(filename),
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
510 )
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
511 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
512
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
513 if bookmarks["version"] != 1:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
514 EricMessageBox.critical(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
515 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
516 self.tr("Import Bookmarks"),
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
517 self.tr(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
518 "The bookmarks file <b>{0}</b> has an unsupported"
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
519 " format version."
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
520 ).format(filename),
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
521 )
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
522 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
523
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
524 if replace:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
525 self.clear()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
526
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
527 for bookmark in bookmarks["bookmarks"]:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
528 if bookmark["type"] == "url":
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
529 self.__addBookmark(bookmark["title"], bookmark["url"])
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
530 self.sortItems()
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
531 self.__saveBookmarks()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
532
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
533 except KeyError:
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
534 EricMessageBox.critical(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
535 self,
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
536 self.tr("Import Bookmarks"),
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
537 self.tr(
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
538 "The bookmarks file <b>{0}</b> has invalid contents."
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
539 ).format(filename),
8902
ba9b8c6e4928 Help Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8900
diff changeset
540 )

eric ide

mercurial