eric7/HelpViewer/OpenPagesWidget.py

Mon, 11 Oct 2021 19:59:45 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 11 Oct 2021 19:59:45 +0200
branch
eric7
changeset 8680
85503ff2fce9
parent 8679
fd172973428e
child 8683
e8a907801549
permissions
-rw-r--r--

Continued implementing the embedded help viewer widget.

8679
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de>
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a widget showing the list of open pages.
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8680
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
10 from PyQt6.QtCore import pyqtSlot, pyqtSignal
8679
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWidgets import (
8680
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
12 QWidget, QLabel, QListWidget, QListWidgetItem, QVBoxLayout,
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
13 QAbstractItemView
8679
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 )
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 class OpenPagesWidget(QWidget):
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 Class implementing a widget showing the list of open pages.
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
8680
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
21 currentChanged = pyqtSignal(int)
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
22
8679
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 def __init__(self, stack, parent=None):
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Constructor
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @param stack reference to the stack widget containing the open
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 help pages
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type QStackedWidget
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param parent reference to the parent widget (defaults to None)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type QWidget (optional)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 super().__init__(parent)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.setObjectName("OpenPagesWidget")
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 self.__layout = QVBoxLayout()
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.__layout.setContentsMargins(0, 0, 0, 0)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.__title = QLabel(self.tr("Open Pages"), self)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.__layout.addWidget(self.__title)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.__openPagesList = QListWidget(self)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__openPagesList.setAlternatingRowColors(True)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__openPagesList.setSelectionMode(
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 QAbstractItemView.SelectionMode.ExtendedSelection)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.__openPagesList.currentRowChanged.connect(
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__currentRowChanged)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__layout.addWidget(self.__openPagesList)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.setLayout(self.__layout)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__stack = stack
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__stack.currentChanged.connect(self.__currentPageChanged)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__defaultFont = self.__openPagesList.font()
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__boldFont = self.__openPagesList.font()
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__boldFont.setBold(True)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @pyqtSlot(int)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 def __currentPageChanged(self, index):
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 Private slot to handle a change of the shown page.
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param index index of the current page
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type int
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 for row in range(self.__openPagesList.count()):
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 itm = self.__openPagesList.item(index)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 itm.setFont(
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__boldFont if row == index else self.__defaultFont
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 )
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @pyqtSlot(int)
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 def __currentRowChanged(self, row):
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 Private slot handling a change of the current row.
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @param row current row
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @type int
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 self.__stack.setCurrentIndex(row)
8680
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
82 self.currentChanged.emit(row)
8679
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 def addPage(self, viewer):
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 Public method to add a viewer page to our list.
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
8680
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
88 @param viewer reference to the viewer object
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
89 @type HelpViewerImpl
8679
fd172973428e Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 """
8680
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
91 QListWidgetItem(viewer.title(), self.__openPagesList)
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
92 viewer.titleChanged.connect(
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
93 lambda: self.__viewerTitleChanged(viewer))
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
94
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
95 self.__currentPageChanged(self.__openPagesList.count() - 1)
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
96
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
97 def __viewerTitleChanged(self, viewer):
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
98 """
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
99 Private method to handle the change of a viewer title.
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
100
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
101 @param viewer reference to the viewer that change title
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
102 @type HelpViewerImpl
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
103 """
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
104 index = self.__stack.indexOf(viewer)
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
105 itm = self.__openPagesList.item(index)
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
106 itm.setText(viewer.title())
85503ff2fce9 Continued implementing the embedded help viewer widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8679
diff changeset
107 self.currentChanged.emit(index)

eric ide

mercurial