src/eric7/EricWidgets/EricAutoResizeTextBrowser.py

Thu, 10 Apr 2025 18:36:24 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 10 Apr 2025 18:36:24 +0200
branch
eric7
changeset 11214
8cb6b7651074
parent 11210
dd70d72aac30
permissions
-rw-r--r--

Corrected a code formatting issue in EricAutoResizeTextBrowser.py.

10920
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10920
diff changeset
3 # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10920
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a QTextBrowser widget that resizes automatically.
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import Qt
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWidgets import QFrame, QSizePolicy, QTextBrowser
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 class EricAutoResizeTextBrowser(QTextBrowser):
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 Class implementing a QTextBrowser widget that adjusts its size automatically to the
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 contained text.
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 def __init__(self, parent=None):
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Constructor
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @param parent reference to the parent widget (defaults to None)
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @type QWidget (optional)
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 super().__init__(parent=parent)
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
11210
dd70d72aac30 Some enhancements to the EricAutoResizeTextBrowser widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
30 self.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded)
10920
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 self.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 self.setFrameShape(QFrame.Shape.NoFrame)
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.textChanged.connect(self.updateGeometry)
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 def resizeEvent(self, evt):
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 Protected method to handle resize events.
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param evt reference to the resize event
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type QResizeEvent
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 super().resizeEvent(evt)
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.updateGeometry()
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 def updateGeometry(self):
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 Public method to update the geometry depending on the current text.
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 # Set the text width of the document to match the width of the text browser.
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.document().setTextWidth(
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.width() - 2 * int(self.document().documentMargin())
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 )
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 # Get the document height and set it as the fixed height of the text browser.
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 docHeight = self.document().size().height()
11214
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
57 self.setFixedHeight(
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
58 int(docHeight)
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
59 + (
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
60 self.horizontalScrollBar().height()
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
61 if self.horizontalScrollBar().isVisible()
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
62 else 0
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
63 )
8cb6b7651074 Corrected a code formatting issue in EricAutoResizeTextBrowser.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11210
diff changeset
64 )
10920
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 # Call the base class updateGeometry() method.
8a1d447323a2 Added a specialized QTextBrowser subclass that adjusts its size to the contained text automatically (no scrollbars shown).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 super().updateGeometry()

eric ide

mercurial