src/eric7/HelpViewer/HelpBookmarksWidget.py

Wed, 13 Jul 2022 14:55:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 13 Jul 2022 14:55:47 +0200
branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
permissions
-rw-r--r--

Reformatted the source code using the 'Black' utility.

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

eric ide

mercurial