Krita Source Code Documentation
Loading...
Searching...
No Matches
canvas_test_script.CanvasTest Class Reference

Public Member Functions

 __init__ (self)
 

Public Attributes

 angleSelector
 
 canvas
 

Static Public Attributes

AngleSelector angleSelector
 
Canvas canvas
 

Detailed Description

Definition at line 18 of file canvas_test_script.py.

Constructor & Destructor Documentation

◆ __init__()

canvas_test_script.CanvasTest.__init__ ( self)

Definition at line 24 of file canvas_test_script.py.

24 def __init__(self):
25 kritaInstance = Krita.instance()
26 assert kritaInstance
27 window = kritaInstance.activeWindow()
28 assert window
29 view = window.activeView()
30 assert view
31 canvas = view.canvas()
32 assert canvas
33 self.canvas = canvas
34
35 dialog = QDialog(window.qwindow())
36 layout = QFormLayout()
37
38 # Zoom level
39 zoomLevelBox = QDoubleSpinBox()
40 def setZoomLevelBox():
41 zoomLevelBox.setValue(self.canvas.zoomLevel())
42 setZoomLevelBox()
43 self.canvas.effectiveZoomChanged.connect(setZoomLevelBox)
44 zoomLevelBox.valueChanged.connect(self.canvas.setZoomLevel)
45 layout.addRow("Zoom Level:", zoomLevelBox)
46
47 # Effective zoom
48 effectiveZoomLabel = QLabel("unknown")
49 def onEffectiveZoomChanged(effectiveZoom: float):
50 effectiveZoomLabel.setText(f"{effectiveZoom:.2f}")
51 self.canvas.effectiveZoomChanged.connect(onEffectiveZoomChanged)
52 layout.addRow("Effective zoom:", effectiveZoomLabel)
53
54 # Reset zoom
55 resetZoomButton = QPushButton("Reset zoom")
56 resetZoomButton.clicked.connect(self.canvas.resetZoom)
57 layout.addWidget(resetZoomButton)
58
59 # Zoom state (mode, zoom, min, max)
60 zoomModeLabel = QLabel("unknown")
61 zoomLabel = QLabel("unknown")
62 zoomMinLabel = QLabel("unknown")
63 zoomMaxLabel = QLabel("unknown")
64 def onZoomStateChanged(zoomMode: Canvas.ZoomMode, zoom: float, minZoom: float, maxZoom: float):
65 zoomModeLabel.setText(str(zoomMode))
66 zoomLabel.setText(f"{zoom:.2f}")
67 zoomMinLabel.setText(f"{minZoom:.2f}")
68 zoomMaxLabel.setText(f"{maxZoom:.2f}")
69 self.canvas.zoomStateChanged.connect(onZoomStateChanged)
70 layout.addRow("Zoom State: Mode:", zoomModeLabel)
71 layout.addRow("Zoom State: Zoom:", zoomLabel)
72 layout.addRow("Zoom State: Min:", zoomMinLabel)
73 layout.addRow("Zoom State: Max:", zoomMaxLabel)
74
75 # Rotation
76 self.angleSelector = AngleSelector()
77 self.angleSelector.setFlipOptionsMode("NoFlipOptions")
78 def setAngle(angle: float):
79 angle, ok = self.angleSelector.closestCoterminalAngleInRange(angle)
80 if ok:
81 self.angleSelector.setAngle(angle)
82 setAngle(self.canvas.rotation())
83 self.canvas.rotationChanged.connect(setAngle)
84 self.angleSelector.angleChanged.connect(self.canvas.setRotation)
85 layout.addRow("Rotation:", self.angleSelector.widget())
86
87 # Reset rotation
88 resetRotationButton = QPushButton("Reset rotation")
89 resetRotationButton.clicked.connect(self.canvas.resetRotation)
90 layout.addWidget(resetRotationButton)
91
92 # Mirror
93 hMirrorBox = QCheckBox("Horizontal mirror")
94 vMirrorBox = QCheckBox("Vertical mirror (noop)")
95 def onMirrorChanged(hMirror: bool, vMirror: bool):
96 hMirrorBox.setChecked(hMirror)
97 vMirrorBox.setChecked(vMirror)
98 self.canvas.mirrorChanged.connect(onMirrorChanged)
99 hMirrorBox.toggled.connect(self.canvas.setMirror)
100 # there is no corresponding vertical mirror function...
101 layout.addWidget(hMirrorBox)
102 layout.addWidget(vMirrorBox)
103
104 # Preferred center
105 centerBoxX = QDoubleSpinBox()
106 centerBoxX.setRange(0.0, 9999.99)
107 centerBoxY = QDoubleSpinBox()
108 centerBoxY.setRange(0.0, 9999.99)
109 def setPreferredCenterBox():
110 centerBoxX.setValue(self.canvas.preferredCenter().x())
111 centerBoxY.setValue(self.canvas.preferredCenter().y())
112 setPreferredCenterBox()
113 self.canvas.offsetChanged.connect(setPreferredCenterBox)
114 centerBoxX.editingFinished.connect(lambda: self.canvas.setPreferredCenter(
115 QPointF(centerBoxX.value(), centerBoxY.value())))
116 centerBoxY.editingFinished.connect(lambda: self.canvas.setPreferredCenter(
117 QPointF(centerBoxX.value(), centerBoxY.value())))
118 layout.addRow("Preferred center:", centerBoxX)
119 layout.addWidget(centerBoxY)
120 layout.addWidget(QLabel("(on editingFinished)"))
121
122 # Cursor position
123 cursorLabel = QLabel("unknown")
124 def onCursorPositionChanged(pos: QPoint):
125 cursorLabel.setText(f"({pos.x()}, {pos.y()})")
126 self.canvas.cursorPositionChanged.connect(onCursorPositionChanged)
127 layout.addRow("Cursor position (viewport):", cursorLabel)
128
129 # Document cursor position
130 docCursorLabel = QLabel("unknown")
131 def onDocCursorPositionChanged(pos: QPointF):
132 docCursorLabel.setText(f"({pos.x():.2f}, {pos.y():.2f})")
133 self.canvas.documentCursorPositionChanged.connect(onDocCursorPositionChanged)
134 layout.addRow("Cursor position (image):", docCursorLabel)
135
136 # Size of viewport
137 sizeLabel = QLabel("unknown")
138 def onSizeChanged(size: QSize):
139 sizeLabel.setText(f"({size.width()}, {size.height()})")
140 self.canvas.sizeChanged.connect(onSizeChanged)
141 layout.addRow("Viewport size:", sizeLabel)
142
143 # Offset
144 offsetNumLabel = QLabel("0")
145 def onOffsetChanged():
146 offsetNumLabel.setText(str(int(offsetNumLabel.text()) + 1))
147 self.canvas.offsetChanged.connect(onOffsetChanged)
148 layout.addRow("Times offset changed:", offsetNumLabel)
149
150 # Document offset from the viewport
151 docOffsetOldLabel = QLabel("unknown")
152 docOffsetNewLabel = QLabel("unknown")
153 def onDocumentOffsetChanged(oldOffset: QPointF, newOffset: QPointF):
154 docOffsetOldLabel.setText(f"({oldOffset.x():.2f}, {oldOffset.y():.2f})")
155 docOffsetNewLabel.setText(f"({newOffset.x():.2f}, {newOffset.y():.2f})")
156 self.canvas.documentOffsetChanged.connect(onDocumentOffsetChanged)
157 layout.addRow("Document offset (old):", docOffsetOldLabel)
158 layout.addRow("Document offset (new):", docOffsetNewLabel)
159
160 # Pan
161 panBoxX = QDoubleSpinBox()
162 panBoxX.setRange(-9999.99, 9999.99)
163 panBoxY = QDoubleSpinBox()
164 panBoxY.setRange(-9999.99, 9999.99)
165 panButton = QPushButton("Pan");
166 panButton.clicked.connect(lambda: self.canvas.pan(
167 QPoint(int(panBoxX.value()), int(panBoxY.value()))))
168 layout.addRow("Pan by:", panBoxX)
169 layout.addWidget(panBoxY)
170 layout.addWidget(panButton)
171
172 # Document rect in widget pixels
173 rectLabel = QLabel("unknown")
174 def onRectChanged(rect: QRectF):
175 rectLabel.setText(f"({rect.x():.2f}, {rect.y():.2f}, {rect.width():.2f}, {rect.height():.2f})")
176 self.canvas.documentRectInWidgetPixelsChanged.connect(onRectChanged)
177 layout.addRow("Rect:", rectLabel)
178
179 # State
180 stateNumLabel = QLabel("0")
181 def onStateChanged():
182 stateNumLabel.setText(str(int(stateNumLabel.text()) + 1))
183 self.canvas.stateChanged.connect(onStateChanged)
184 layout.addRow("Times state changed:", stateNumLabel)
185
186 # Wrap around mode
187 wrapBox = QCheckBox("Wrap around (slot only)")
188 def setWrapBox():
189 wrapBox.setChecked(self.canvas.wrapAroundMode())
190 setWrapBox()
191 # no update signal to connect to
192 wrapBox.toggled.connect(self.canvas.setWrapAroundMode)
193 layout.addWidget(wrapBox)
194
195 # Level of detail mode
196 loDBox = QCheckBox("Level of detail (slot only)")
197 def setLoDBox():
198 loDBox.setChecked(self.canvas.levelOfDetailMode())
199 setLoDBox()
200 # no update signal to connect to
201 loDBox.toggled.connect(self.canvas.setLevelOfDetailMode)
202 layout.addWidget(loDBox)
203
204 dialog.setLayout(layout)
205 dialog.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint)
206
207 # Make sure the canvas gets disconnected if it's been closed,
208 # to avoid crashing when trying to interact with it.
209 self.canvas.removed.connect(self.canvas.deleteLater)
210
211 dialog.show()
212
213
A wrapper around KisAngleSelector, a widget with several options to select an angle....
static Krita * instance()
instance retrieve the singleton instance of the Application object.
Definition Krita.cpp:396

References Krita.instance().

Member Data Documentation

◆ angleSelector [1/2]

AngleSelector canvas_test_script.CanvasTest.angleSelector
static

Definition at line 22 of file canvas_test_script.py.

◆ angleSelector [2/2]

canvas_test_script.CanvasTest.angleSelector

Definition at line 76 of file canvas_test_script.py.

◆ canvas [1/2]

Canvas canvas_test_script.CanvasTest.canvas
static

Definition at line 21 of file canvas_test_script.py.

◆ canvas [2/2]

canvas_test_script.CanvasTest.canvas

Definition at line 33 of file canvas_test_script.py.


The documentation for this class was generated from the following file: