27 window = kritaInstance.activeWindow()
29 view = window.activeView()
31 canvas = view.canvas()
35 dialog = QDialog(window.qwindow())
36 layout = QFormLayout()
39 zoomLevelBox = QDoubleSpinBox()
40 def setZoomLevelBox():
43 self.
canvascanvas.effectiveZoomChanged.connect(setZoomLevelBox)
44 zoomLevelBox.valueChanged.connect(self.
canvascanvas.setZoomLevel)
45 layout.addRow(
"Zoom Level:", zoomLevelBox)
48 effectiveZoomLabel = QLabel(
"unknown")
49 def onEffectiveZoomChanged(effectiveZoom: float):
50 effectiveZoomLabel.setText(f
"{effectiveZoom:.2f}")
51 self.
canvascanvas.effectiveZoomChanged.connect(onEffectiveZoomChanged)
52 layout.addRow(
"Effective zoom:", effectiveZoomLabel)
55 resetZoomButton = QPushButton(
"Reset zoom")
56 resetZoomButton.clicked.connect(self.
canvascanvas.resetZoom)
57 layout.addWidget(resetZoomButton)
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.
canvascanvas.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)
78 def setAngle(angle: float):
88 resetRotationButton = QPushButton(
"Reset rotation")
89 resetRotationButton.clicked.connect(self.
canvascanvas.resetRotation)
90 layout.addWidget(resetRotationButton)
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)
101 layout.addWidget(hMirrorBox)
102 layout.addWidget(vMirrorBox)
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.
canvascanvas.preferredCenter().x())
111 centerBoxY.setValue(self.
canvascanvas.preferredCenter().y())
112 setPreferredCenterBox()
113 self.
canvascanvas.offsetChanged.connect(setPreferredCenterBox)
114 centerBoxX.editingFinished.connect(
lambda: self.
canvascanvas.setPreferredCenter(
115 QPointF(centerBoxX.value(), centerBoxY.value())))
116 centerBoxY.editingFinished.connect(
lambda: self.
canvascanvas.setPreferredCenter(
117 QPointF(centerBoxX.value(), centerBoxY.value())))
118 layout.addRow(
"Preferred center:", centerBoxX)
119 layout.addWidget(centerBoxY)
120 layout.addWidget(QLabel(
"(on editingFinished)"))
123 cursorLabel = QLabel(
"unknown")
124 def onCursorPositionChanged(pos: QPoint):
125 cursorLabel.setText(f
"({pos.x()}, {pos.y()})")
126 self.
canvascanvas.cursorPositionChanged.connect(onCursorPositionChanged)
127 layout.addRow(
"Cursor position (viewport):", cursorLabel)
130 docCursorLabel = QLabel(
"unknown")
131 def onDocCursorPositionChanged(pos: QPointF):
132 docCursorLabel.setText(f
"({pos.x():.2f}, {pos.y():.2f})")
133 self.
canvascanvas.documentCursorPositionChanged.connect(onDocCursorPositionChanged)
134 layout.addRow(
"Cursor position (image):", docCursorLabel)
137 sizeLabel = QLabel(
"unknown")
138 def onSizeChanged(size: QSize):
139 sizeLabel.setText(f
"({size.width()}, {size.height()})")
141 layout.addRow(
"Viewport size:", sizeLabel)
144 offsetNumLabel = QLabel(
"0")
145 def onOffsetChanged():
146 offsetNumLabel.setText(str(int(offsetNumLabel.text()) + 1))
147 self.
canvascanvas.offsetChanged.connect(onOffsetChanged)
148 layout.addRow(
"Times offset changed:", offsetNumLabel)
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.
canvascanvas.documentOffsetChanged.connect(onDocumentOffsetChanged)
157 layout.addRow(
"Document offset (old):", docOffsetOldLabel)
158 layout.addRow(
"Document offset (new):", docOffsetNewLabel)
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.
canvascanvas.pan(
167 QPoint(int(panBoxX.value()), int(panBoxY.value()))))
168 layout.addRow(
"Pan by:", panBoxX)
169 layout.addWidget(panBoxY)
170 layout.addWidget(panButton)
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.
canvascanvas.documentRectInWidgetPixelsChanged.connect(onRectChanged)
177 layout.addRow(
"Rect:", rectLabel)
180 stateNumLabel = QLabel(
"0")
181 def onStateChanged():
182 stateNumLabel.setText(str(int(stateNumLabel.text()) + 1))
184 layout.addRow(
"Times state changed:", stateNumLabel)
187 wrapBox = QCheckBox(
"Wrap around (slot only)")
192 wrapBox.toggled.connect(self.
canvascanvas.setWrapAroundMode)
193 layout.addWidget(wrapBox)
196 loDBox = QCheckBox(
"Level of detail (slot only)")
198 loDBox.setChecked(self.
canvascanvas.levelOfDetailMode())
201 loDBox.toggled.connect(self.
canvascanvas.setLevelOfDetailMode)
202 layout.addWidget(loDBox)
204 dialog.setLayout(layout)
205 dialog.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint)