49 if name: |
73 if name: |
50 self.setObjectName(name) |
74 self.setObjectName(name) |
51 else: |
75 else: |
52 self.setObjectName("SvgDiagram") |
76 self.setObjectName("SvgDiagram") |
53 self.setWindowTitle(self.tr("SVG-Viewer")) |
77 self.setWindowTitle(self.tr("SVG-Viewer")) |
54 |
78 |
55 self.svgWidget = QSvgWidget() |
79 self.svgWidget = QSvgWidget() |
56 self.svgWidget.setObjectName("svgWidget") |
80 self.svgWidget.setObjectName("svgWidget") |
57 self.svgWidget.setBackgroundRole(QPalette.ColorRole.Base) |
81 self.svgWidget.setBackgroundRole(QPalette.ColorRole.Base) |
58 self.svgWidget.setSizePolicy( |
82 self.svgWidget.setSizePolicy( |
59 QSizePolicy.Policy.Ignored, QSizePolicy.Policy.Ignored) |
83 QSizePolicy.Policy.Ignored, QSizePolicy.Policy.Ignored |
60 |
84 ) |
|
85 |
61 self.svgView = QScrollArea() |
86 self.svgView = QScrollArea() |
62 self.svgView.setObjectName("svgView") |
87 self.svgView.setObjectName("svgView") |
63 self.svgView.setBackgroundRole(QPalette.ColorRole.Dark) |
88 self.svgView.setBackgroundRole(QPalette.ColorRole.Dark) |
64 self.svgView.setWidget(self.svgWidget) |
89 self.svgView.setWidget(self.svgWidget) |
65 |
90 |
66 self.setCentralWidget(self.svgView) |
91 self.setCentralWidget(self.svgView) |
67 |
92 |
68 self.__zoomWidget = EricZoomWidget( |
93 self.__zoomWidget = EricZoomWidget( |
69 UI.PixmapCache.getPixmap("zoomOut"), |
94 UI.PixmapCache.getPixmap("zoomOut"), |
70 UI.PixmapCache.getPixmap("zoomIn"), |
95 UI.PixmapCache.getPixmap("zoomIn"), |
71 UI.PixmapCache.getPixmap("zoomReset"), self) |
96 UI.PixmapCache.getPixmap("zoomReset"), |
|
97 self, |
|
98 ) |
72 self.statusBar().addPermanentWidget(self.__zoomWidget) |
99 self.statusBar().addPermanentWidget(self.__zoomWidget) |
73 self.__zoomWidget.setMapping( |
100 self.__zoomWidget.setMapping(SvgDiagram.ZoomLevels, SvgDiagram.ZoomLevelDefault) |
74 SvgDiagram.ZoomLevels, SvgDiagram.ZoomLevelDefault) |
|
75 self.__zoomWidget.valueChanged.connect(self.__doZoom) |
101 self.__zoomWidget.valueChanged.connect(self.__doZoom) |
76 |
102 |
77 # polish up the dialog |
103 # polish up the dialog |
78 self.resize(QSize(800, 600).expandedTo(self.minimumSizeHint())) |
104 self.resize(QSize(800, 600).expandedTo(self.minimumSizeHint())) |
79 |
105 |
80 self.zoom = 1.0 |
106 self.zoom = 1.0 |
81 self.svgFile = svgFile |
107 self.svgFile = svgFile |
82 self.svgWidget.load(self.svgFile) |
108 self.svgWidget.load(self.svgFile) |
83 self.svgWidget.resize(self.svgWidget.renderer().defaultSize()) |
109 self.svgWidget.resize(self.svgWidget.renderer().defaultSize()) |
84 |
110 |
85 self.__initActions() |
111 self.__initActions() |
86 self.__initContextMenu() |
112 self.__initContextMenu() |
87 self.__initToolBars() |
113 self.__initToolBars() |
88 |
114 |
89 self.grabGesture(Qt.GestureType.PinchGesture) |
115 self.grabGesture(Qt.GestureType.PinchGesture) |
90 |
116 |
91 def __initActions(self): |
117 def __initActions(self): |
92 """ |
118 """ |
93 Private method to initialize the view actions. |
119 Private method to initialize the view actions. |
94 """ |
120 """ |
95 self.closeAct = QAction( |
121 self.closeAct = QAction(UI.PixmapCache.getIcon("close"), self.tr("Close"), self) |
96 UI.PixmapCache.getIcon("close"), |
|
97 self.tr("Close"), self) |
|
98 self.closeAct.triggered.connect(self.close) |
122 self.closeAct.triggered.connect(self.close) |
99 |
123 |
100 self.printAct = QAction( |
124 self.printAct = QAction(UI.PixmapCache.getIcon("print"), self.tr("Print"), self) |
101 UI.PixmapCache.getIcon("print"), |
|
102 self.tr("Print"), self) |
|
103 self.printAct.triggered.connect(self.__printDiagram) |
125 self.printAct.triggered.connect(self.__printDiagram) |
104 |
126 |
105 self.printPreviewAct = QAction( |
127 self.printPreviewAct = QAction( |
106 UI.PixmapCache.getIcon("printPreview"), |
128 UI.PixmapCache.getIcon("printPreview"), self.tr("Print Preview"), self |
107 self.tr("Print Preview"), self) |
129 ) |
108 self.printPreviewAct.triggered.connect(self.__printPreviewDiagram) |
130 self.printPreviewAct.triggered.connect(self.__printPreviewDiagram) |
109 |
131 |
110 def __initContextMenu(self): |
132 def __initContextMenu(self): |
111 """ |
133 """ |
112 Private method to initialize the context menu. |
134 Private method to initialize the context menu. |
113 """ |
135 """ |
114 self.__menu = QMenu(self) |
136 self.__menu = QMenu(self) |
115 self.__menu.addAction(self.closeAct) |
137 self.__menu.addAction(self.closeAct) |
116 self.__menu.addSeparator() |
138 self.__menu.addSeparator() |
117 self.__menu.addAction(self.printPreviewAct) |
139 self.__menu.addAction(self.printPreviewAct) |
118 self.__menu.addAction(self.printAct) |
140 self.__menu.addAction(self.printAct) |
119 |
141 |
120 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) |
142 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) |
121 self.customContextMenuRequested.connect(self.__showContextMenu) |
143 self.customContextMenuRequested.connect(self.__showContextMenu) |
122 |
144 |
123 def __showContextMenu(self, coord): |
145 def __showContextMenu(self, coord): |
124 """ |
146 """ |
125 Private slot to show the context menu of the listview. |
147 Private slot to show the context menu of the listview. |
126 |
148 |
127 @param coord the position of the mouse pointer |
149 @param coord the position of the mouse pointer |
128 @type QPoint |
150 @type QPoint |
129 """ |
151 """ |
130 self.__menu.popup(self.mapToGlobal(coord)) |
152 self.__menu.popup(self.mapToGlobal(coord)) |
131 |
153 |
132 def __initToolBars(self): |
154 def __initToolBars(self): |
133 """ |
155 """ |
134 Private method to populate the toolbars with our actions. |
156 Private method to populate the toolbars with our actions. |
135 """ |
157 """ |
136 self.windowToolBar = QToolBar(self.tr("Window"), self) |
158 self.windowToolBar = QToolBar(self.tr("Window"), self) |
137 self.windowToolBar.setIconSize(UI.Config.ToolBarIconSize) |
159 self.windowToolBar.setIconSize(UI.Config.ToolBarIconSize) |
138 self.windowToolBar.addAction(self.closeAct) |
160 self.windowToolBar.addAction(self.closeAct) |
139 |
161 |
140 self.graphicsToolBar = QToolBar(self.tr("Graphics"), self) |
162 self.graphicsToolBar = QToolBar(self.tr("Graphics"), self) |
141 self.graphicsToolBar.setIconSize(UI.Config.ToolBarIconSize) |
163 self.graphicsToolBar.setIconSize(UI.Config.ToolBarIconSize) |
142 self.graphicsToolBar.addAction(self.printPreviewAct) |
164 self.graphicsToolBar.addAction(self.printPreviewAct) |
143 self.graphicsToolBar.addAction(self.printAct) |
165 self.graphicsToolBar.addAction(self.printAct) |
144 |
166 |
145 self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.windowToolBar) |
167 self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.windowToolBar) |
146 self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.graphicsToolBar) |
168 self.addToolBar(Qt.ToolBarArea.TopToolBarArea, self.graphicsToolBar) |
147 |
169 |
148 def getDiagramName(self): |
170 def getDiagramName(self): |
149 """ |
171 """ |
150 Public method to retrieve a name for the diagram. |
172 Public method to retrieve a name for the diagram. |
151 |
173 |
152 @return name for the diagram |
174 @return name for the diagram |
153 @rtype str |
175 @rtype str |
154 """ |
176 """ |
155 return self.svgFile |
177 return self.svgFile |
156 |
178 |
157 def wheelEvent(self, evt): |
179 def wheelEvent(self, evt): |
158 """ |
180 """ |
159 Protected method to handle wheel events. |
181 Protected method to handle wheel events. |
160 |
182 |
161 @param evt reference to the wheel event |
183 @param evt reference to the wheel event |
162 @type QWheelEvent |
184 @type QWheelEvent |
163 """ |
185 """ |
164 if evt.modifiers() & Qt.KeyboardModifier.ControlModifier: |
186 if evt.modifiers() & Qt.KeyboardModifier.ControlModifier: |
165 delta = evt.angleDelta().y() |
187 delta = evt.angleDelta().y() |
167 self.__zoomOut() |
189 self.__zoomOut() |
168 elif delta > 0: |
190 elif delta > 0: |
169 self.__zoomIn() |
191 self.__zoomIn() |
170 evt.accept() |
192 evt.accept() |
171 return |
193 return |
172 |
194 |
173 super().wheelEvent(evt) |
195 super().wheelEvent(evt) |
174 |
196 |
175 def event(self, evt): |
197 def event(self, evt): |
176 """ |
198 """ |
177 Public method handling events. |
199 Public method handling events. |
178 |
200 |
179 @param evt reference to the event |
201 @param evt reference to the event |
180 @type QEvent |
202 @type QEvent |
181 @return flag indicating, if the event was handled |
203 @return flag indicating, if the event was handled |
182 @rtype bool |
204 @rtype bool |
183 """ |
205 """ |
184 if evt.type() == QEvent.Type.Gesture: |
206 if evt.type() == QEvent.Type.Gesture: |
185 self.gestureEvent(evt) |
207 self.gestureEvent(evt) |
186 return True |
208 return True |
187 |
209 |
188 return super().event(evt) |
210 return super().event(evt) |
189 |
211 |
190 def gestureEvent(self, evt): |
212 def gestureEvent(self, evt): |
191 """ |
213 """ |
192 Protected method handling gesture events. |
214 Protected method handling gesture events. |
193 |
215 |
194 @param evt reference to the gesture event |
216 @param evt reference to the gesture event |
195 @type QGestureEvent |
217 @type QGestureEvent |
196 """ |
218 """ |
197 pinch = evt.gesture(Qt.GestureType.PinchGesture) |
219 pinch = evt.gesture(Qt.GestureType.PinchGesture) |
198 if pinch: |
220 if pinch: |
199 if pinch.state() == Qt.GestureState.GestureStarted: |
221 if pinch.state() == Qt.GestureState.GestureStarted: |
200 pinch.setTotalScaleFactor(self.__zoom() / 100) |
222 pinch.setTotalScaleFactor(self.__zoom() / 100) |
201 elif pinch.state() == Qt.GestureState.GestureUpdated: |
223 elif pinch.state() == Qt.GestureState.GestureUpdated: |
202 self.__doZoom(int(pinch.totalScaleFactor() * 100)) |
224 self.__doZoom(int(pinch.totalScaleFactor() * 100)) |
203 evt.accept() |
225 evt.accept() |
204 |
226 |
205 ########################################################################### |
227 ########################################################################### |
206 ## Private menu handling methods below. |
228 ## Private menu handling methods below. |
207 ########################################################################### |
229 ########################################################################### |
208 |
230 |
209 def __adjustScrollBar(self, scrollBar, factor): |
231 def __adjustScrollBar(self, scrollBar, factor): |
210 """ |
232 """ |
211 Private method to adjust a scrollbar by a certain factor. |
233 Private method to adjust a scrollbar by a certain factor. |
212 |
234 |
213 @param scrollBar reference to the scrollbar object |
235 @param scrollBar reference to the scrollbar object |
214 @type QScrollBar |
236 @type QScrollBar |
215 @param factor factor to adjust by |
237 @param factor factor to adjust by |
216 @type float |
238 @type float |
217 """ |
239 """ |
218 scrollBar.setValue( |
240 scrollBar.setValue( |
219 int(factor * scrollBar.value() + |
241 int(factor * scrollBar.value() + ((factor - 1) * scrollBar.pageStep() / 2)) |
220 ((factor - 1) * scrollBar.pageStep() / 2))) |
242 ) |
221 |
243 |
222 def __levelForZoom(self, zoom): |
244 def __levelForZoom(self, zoom): |
223 """ |
245 """ |
224 Private method determining the zoom level index given a zoom factor. |
246 Private method determining the zoom level index given a zoom factor. |
225 |
247 |
226 @param zoom zoom factor |
248 @param zoom zoom factor |
227 @type int |
249 @type int |
228 @return index of zoom factor |
250 @return index of zoom factor |
229 @rtype int |
251 @rtype int |
230 """ |
252 """ |
233 except ValueError: |
255 except ValueError: |
234 for index in range(len(SvgDiagram.ZoomLevels)): |
256 for index in range(len(SvgDiagram.ZoomLevels)): |
235 if zoom <= SvgDiagram.ZoomLevels[index]: |
257 if zoom <= SvgDiagram.ZoomLevels[index]: |
236 break |
258 break |
237 return index |
259 return index |
238 |
260 |
239 def __doZoom(self, value): |
261 def __doZoom(self, value): |
240 """ |
262 """ |
241 Private method to set the zoom value in percent. |
263 Private method to set the zoom value in percent. |
242 |
264 |
243 @param value zoom value in percent |
265 @param value zoom value in percent |
244 @type int |
266 @type int |
245 """ |
267 """ |
246 oldValue = self.__zoom() |
268 oldValue = self.__zoom() |
247 if value != oldValue: |
269 if value != oldValue: |
248 self.svgWidget.resize(value / 100 * self.svgWidget.sizeHint()) |
270 self.svgWidget.resize(value / 100 * self.svgWidget.sizeHint()) |
249 |
271 |
250 factor = value / oldValue |
272 factor = value / oldValue |
251 self.__adjustScrollBar(self.svgView.horizontalScrollBar(), factor) |
273 self.__adjustScrollBar(self.svgView.horizontalScrollBar(), factor) |
252 self.__adjustScrollBar(self.svgView.verticalScrollBar(), factor) |
274 self.__adjustScrollBar(self.svgView.verticalScrollBar(), factor) |
253 |
275 |
254 self.__zoomWidget.setValue(value) |
276 self.__zoomWidget.setValue(value) |
255 |
277 |
256 def __zoomIn(self): |
278 def __zoomIn(self): |
257 """ |
279 """ |
258 Private method to zoom into the SVG. |
280 Private method to zoom into the SVG. |
259 """ |
281 """ |
260 index = self.__levelForZoom(self.__zoom()) |
282 index = self.__levelForZoom(self.__zoom()) |
261 if index < len(SvgDiagram.ZoomLevels) - 1: |
283 if index < len(SvgDiagram.ZoomLevels) - 1: |
262 self.__doZoom(SvgDiagram.ZoomLevels[index + 1]) |
284 self.__doZoom(SvgDiagram.ZoomLevels[index + 1]) |
263 |
285 |
264 def __zoomOut(self): |
286 def __zoomOut(self): |
265 """ |
287 """ |
266 Private method to zoom out of the SVG. |
288 Private method to zoom out of the SVG. |
267 """ |
289 """ |
268 index = self.__levelForZoom(self.__zoom()) |
290 index = self.__levelForZoom(self.__zoom()) |
269 if index > 0: |
291 if index > 0: |
270 self.__doZoom(SvgDiagram.ZoomLevels[index - 1]) |
292 self.__doZoom(SvgDiagram.ZoomLevels[index - 1]) |
271 |
293 |
272 def __zoomReset(self): |
294 def __zoomReset(self): |
273 """ |
295 """ |
274 Private method to reset the zoom value. |
296 Private method to reset the zoom value. |
275 """ |
297 """ |
276 self.__doZoom(SvgDiagram.ZoomLevels[SvgDiagram.ZoomLevelDefault]) |
298 self.__doZoom(SvgDiagram.ZoomLevels[SvgDiagram.ZoomLevelDefault]) |
277 |
299 |
278 def __zoom(self): |
300 def __zoom(self): |
279 """ |
301 """ |
280 Private method to get the current zoom factor in percent. |
302 Private method to get the current zoom factor in percent. |
281 |
303 |
282 @return current zoom factor in percent |
304 @return current zoom factor in percent |
283 @rtype int |
305 @rtype int |
284 """ |
306 """ |
285 return int(self.svgWidget.width() / |
307 return int(self.svgWidget.width() / self.svgWidget.sizeHint().width() * 100.0) |
286 self.svgWidget.sizeHint().width() * 100.0) |
308 |
287 |
|
288 def __printDiagram(self): |
309 def __printDiagram(self): |
289 """ |
310 """ |
290 Private slot called to print the diagram. |
311 Private slot called to print the diagram. |
291 """ |
312 """ |
292 printer = QPrinter(mode=QPrinter.PrinterMode.ScreenResolution) |
313 printer = QPrinter(mode=QPrinter.PrinterMode.ScreenResolution) |
300 else: |
321 else: |
301 printer.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
322 printer.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
302 printerName = Preferences.getPrinter("PrinterName") |
323 printerName = Preferences.getPrinter("PrinterName") |
303 if printerName: |
324 if printerName: |
304 printer.setPrinterName(printerName) |
325 printer.setPrinterName(printerName) |
305 |
326 |
306 printDialog = QPrintDialog(printer, self) |
327 printDialog = QPrintDialog(printer, self) |
307 if printDialog.exec(): |
328 if printDialog.exec(): |
308 self.__print(printer) |
329 self.__print(printer) |
309 |
330 |
310 def __printPreviewDiagram(self): |
331 def __printPreviewDiagram(self): |
311 """ |
332 """ |
312 Private slot called to show a print preview of the diagram. |
333 Private slot called to show a print preview of the diagram. |
313 """ |
334 """ |
314 from PyQt6.QtPrintSupport import QPrintPreviewDialog |
335 from PyQt6.QtPrintSupport import QPrintPreviewDialog |
315 |
336 |
316 printer = QPrinter(mode=QPrinter.PrinterMode.ScreenResolution) |
337 printer = QPrinter(mode=QPrinter.PrinterMode.ScreenResolution) |
317 printer.setFullPage(True) |
338 printer.setFullPage(True) |
318 if Preferences.getPrinter("ColorMode"): |
339 if Preferences.getPrinter("ColorMode"): |
319 printer.setColorMode(QPrinter.ColorMode.Color) |
340 printer.setColorMode(QPrinter.ColorMode.Color) |
320 else: |
341 else: |
321 printer.setColorMode(QPrinter.ColorMode.GrayScale) |
342 printer.setColorMode(QPrinter.ColorMode.GrayScale) |
322 if Preferences.getPrinter("FirstPageFirst"): |
343 if Preferences.getPrinter("FirstPageFirst"): |
323 printer.setPageOrder(QPrinter.PageOrder.FirstPageFirst) |
344 printer.setPageOrder(QPrinter.PageOrder.FirstPageFirst) |
324 else: |
345 else: |
325 printer.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
346 printer.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
326 printer.setPageMargins(QMarginsF( |
347 printer.setPageMargins( |
327 Preferences.getPrinter("LeftMargin") * 10, |
348 QMarginsF( |
328 Preferences.getPrinter("TopMargin") * 10, |
349 Preferences.getPrinter("LeftMargin") * 10, |
329 Preferences.getPrinter("RightMargin") * 10, |
350 Preferences.getPrinter("TopMargin") * 10, |
330 Preferences.getPrinter("BottomMargin") * 10), |
351 Preferences.getPrinter("RightMargin") * 10, |
331 QPageLayout.Unit.Millimeter |
352 Preferences.getPrinter("BottomMargin") * 10, |
|
353 ), |
|
354 QPageLayout.Unit.Millimeter, |
332 ) |
355 ) |
333 printerName = Preferences.getPrinter("PrinterName") |
356 printerName = Preferences.getPrinter("PrinterName") |
334 if printerName: |
357 if printerName: |
335 printer.setPrinterName(printerName) |
358 printer.setPrinterName(printerName) |
336 |
359 |
337 preview = QPrintPreviewDialog(printer, self) |
360 preview = QPrintPreviewDialog(printer, self) |
338 preview.paintRequested[QPrinter].connect(self.__print) |
361 preview.paintRequested[QPrinter].connect(self.__print) |
339 preview.exec() |
362 preview.exec() |
340 |
363 |
341 def __print(self, printer): |
364 def __print(self, printer): |
342 """ |
365 """ |
343 Private slot to the actual printing. |
366 Private slot to the actual printing. |
344 |
367 |
345 @param printer reference to the printer object |
368 @param printer reference to the printer object |
346 @type QPrinter |
369 @type QPrinter |
347 """ |
370 """ |
348 painter = QPainter() |
371 painter = QPainter() |
349 painter.begin(printer) |
372 painter.begin(printer) |
352 font = QFont(["times"], 10) |
375 font = QFont(["times"], 10) |
353 painter.setFont(font) |
376 painter.setFont(font) |
354 fm = painter.fontMetrics() |
377 fm = painter.fontMetrics() |
355 fontHeight = fm.lineSpacing() |
378 fontHeight = fm.lineSpacing() |
356 marginX = ( |
379 marginX = ( |
357 printer.pageLayout().paintRectPixels(printer.resolution()).x() - |
380 printer.pageLayout().paintRectPixels(printer.resolution()).x() |
358 printer.pageLayout().fullRectPixels(printer.resolution()).x() |
381 - printer.pageLayout().fullRectPixels(printer.resolution()).x() |
359 ) |
382 ) |
360 marginX = ( |
383 marginX = ( |
361 Preferences.getPrinter("LeftMargin") * |
384 Preferences.getPrinter("LeftMargin") * int(printer.resolution() / 2.54) |
362 int(printer.resolution() / 2.54) - marginX |
385 - marginX |
363 ) |
386 ) |
364 marginY = ( |
387 marginY = ( |
365 printer.pageLayout().paintRectPixels(printer.resolution()).y() - |
388 printer.pageLayout().paintRectPixels(printer.resolution()).y() |
366 printer.pageLayout().fullRectPixels(printer.resolution()).y() |
389 - printer.pageLayout().fullRectPixels(printer.resolution()).y() |
367 ) |
390 ) |
368 marginY = ( |
391 marginY = ( |
369 Preferences.getPrinter("TopMargin") * |
392 Preferences.getPrinter("TopMargin") * int(printer.resolution() / 2.54) |
370 int(printer.resolution() / 2.54) - marginY |
393 - marginY |
371 ) |
394 ) |
372 |
395 |
373 width = ( |
396 width = ( |
374 printer.width() - marginX - |
397 printer.width() |
375 Preferences.getPrinter("RightMargin") * |
398 - marginX |
376 int(printer.resolution() / 2.54) |
399 - Preferences.getPrinter("RightMargin") * int(printer.resolution() / 2.54) |
377 ) |
400 ) |
378 height = ( |
401 height = ( |
379 printer.height() - fontHeight - 4 - marginY - |
402 printer.height() |
380 Preferences.getPrinter("BottomMargin") * |
403 - fontHeight |
381 int(printer.resolution() / 2.54) |
404 - 4 |
|
405 - marginY |
|
406 - Preferences.getPrinter("BottomMargin") * int(printer.resolution() / 2.54) |
382 ) |
407 ) |
383 |
408 |
384 # write a foot note |
409 # write a foot note |
385 s = self.tr("Diagram: {0}").format(self.getDiagramName()) |
410 s = self.tr("Diagram: {0}").format(self.getDiagramName()) |
386 tc = QColor(50, 50, 50) |
411 tc = QColor(50, 50, 50) |
387 painter.setPen(tc) |
412 painter.setPen(tc) |
388 painter.drawRect(marginX, marginY, width, height) |
413 painter.drawRect(marginX, marginY, width, height) |
389 painter.drawLine(marginX, marginY + height + 2, |
414 painter.drawLine( |
390 marginX + width, marginY + height + 2) |
415 marginX, marginY + height + 2, marginX + width, marginY + height + 2 |
|
416 ) |
391 painter.setFont(font) |
417 painter.setFont(font) |
392 painter.drawText(marginX, marginY + height + 4, width, |
418 painter.drawText( |
393 fontHeight, Qt.AlignmentFlag.AlignRight, s) |
419 marginX, |
|
420 marginY + height + 4, |
|
421 width, |
|
422 fontHeight, |
|
423 Qt.AlignmentFlag.AlignRight, |
|
424 s, |
|
425 ) |
394 |
426 |
395 # render the diagram |
427 # render the diagram |
396 painter.setViewport(marginX, marginY, width, height) |
428 painter.setViewport(marginX, marginY, width, height) |
397 self.svgWidget.renderer().render(painter) |
429 self.svgWidget.renderer().render(painter) |
398 painter.end() |
430 painter.end() |