124 self.relayoutAct.triggered.connect(self.__relayout) |
125 self.relayoutAct.triggered.connect(self.__relayout) |
125 |
126 |
126 self.alignLeftAct = QAction( |
127 self.alignLeftAct = QAction( |
127 UI.PixmapCache.getIcon("shapesAlignLeft"), |
128 UI.PixmapCache.getIcon("shapesAlignLeft"), |
128 self.tr("Align Left"), self) |
129 self.tr("Align Left"), self) |
129 self.alignMapper.setMapping(self.alignLeftAct, Qt.AlignLeft) |
130 self.alignMapper.setMapping( |
|
131 self.alignLeftAct, Qt.AlignmentFlag.AlignLeft) |
130 self.alignLeftAct.triggered.connect(self.alignMapper.map) |
132 self.alignLeftAct.triggered.connect(self.alignMapper.map) |
131 |
133 |
132 self.alignHCenterAct = QAction( |
134 self.alignHCenterAct = QAction( |
133 UI.PixmapCache.getIcon("shapesAlignHCenter"), |
135 UI.PixmapCache.getIcon("shapesAlignHCenter"), |
134 self.tr("Align Center Horizontal"), self) |
136 self.tr("Align Center Horizontal"), self) |
135 self.alignMapper.setMapping(self.alignHCenterAct, Qt.AlignHCenter) |
137 self.alignMapper.setMapping( |
|
138 self.alignHCenterAct, Qt.AlignmentFlag.AlignHCenter) |
136 self.alignHCenterAct.triggered.connect(self.alignMapper.map) |
139 self.alignHCenterAct.triggered.connect(self.alignMapper.map) |
137 |
140 |
138 self.alignRightAct = QAction( |
141 self.alignRightAct = QAction( |
139 UI.PixmapCache.getIcon("shapesAlignRight"), |
142 UI.PixmapCache.getIcon("shapesAlignRight"), |
140 self.tr("Align Right"), self) |
143 self.tr("Align Right"), self) |
141 self.alignMapper.setMapping(self.alignRightAct, Qt.AlignRight) |
144 self.alignMapper.setMapping( |
|
145 self.alignRightAct, Qt.AlignmentFlag.AlignRight) |
142 self.alignRightAct.triggered.connect(self.alignMapper.map) |
146 self.alignRightAct.triggered.connect(self.alignMapper.map) |
143 |
147 |
144 self.alignTopAct = QAction( |
148 self.alignTopAct = QAction( |
145 UI.PixmapCache.getIcon("shapesAlignTop"), |
149 UI.PixmapCache.getIcon("shapesAlignTop"), |
146 self.tr("Align Top"), self) |
150 self.tr("Align Top"), self) |
147 self.alignMapper.setMapping(self.alignTopAct, Qt.AlignTop) |
151 self.alignMapper.setMapping( |
|
152 self.alignTopAct, Qt.AlignmentFlag.AlignTop) |
148 self.alignTopAct.triggered.connect(self.alignMapper.map) |
153 self.alignTopAct.triggered.connect(self.alignMapper.map) |
149 |
154 |
150 self.alignVCenterAct = QAction( |
155 self.alignVCenterAct = QAction( |
151 UI.PixmapCache.getIcon("shapesAlignVCenter"), |
156 UI.PixmapCache.getIcon("shapesAlignVCenter"), |
152 self.tr("Align Center Vertical"), self) |
157 self.tr("Align Center Vertical"), self) |
153 self.alignMapper.setMapping(self.alignVCenterAct, Qt.AlignVCenter) |
158 self.alignMapper.setMapping( |
|
159 self.alignVCenterAct, Qt.AlignmentFlag.AlignVCenter) |
154 self.alignVCenterAct.triggered.connect(self.alignMapper.map) |
160 self.alignVCenterAct.triggered.connect(self.alignMapper.map) |
155 |
161 |
156 self.alignBottomAct = QAction( |
162 self.alignBottomAct = QAction( |
157 UI.PixmapCache.getIcon("shapesAlignBottom"), |
163 UI.PixmapCache.getIcon("shapesAlignBottom"), |
158 self.tr("Align Bottom"), self) |
164 self.tr("Align Bottom"), self) |
159 self.alignMapper.setMapping(self.alignBottomAct, Qt.AlignBottom) |
165 self.alignMapper.setMapping( |
|
166 self.alignBottomAct, Qt.AlignmentFlag.AlignBottom) |
160 self.alignBottomAct.triggered.connect(self.alignMapper.map) |
167 self.alignBottomAct.triggered.connect(self.alignMapper.map) |
161 |
168 |
162 def __checkSizeActions(self): |
169 def __checkSizeActions(self): |
163 """ |
170 """ |
164 Private slot to set the enabled state of the size actions. |
171 Private slot to set the enabled state of the size actions. |
306 from .UMLSceneSizeDialog import UMLSceneSizeDialog |
313 from .UMLSceneSizeDialog import UMLSceneSizeDialog |
307 rect = self._getDiagramRect(10) |
314 rect = self._getDiagramRect(10) |
308 sceneRect = self.scene().sceneRect() |
315 sceneRect = self.scene().sceneRect() |
309 dlg = UMLSceneSizeDialog(sceneRect.width(), sceneRect.height(), |
316 dlg = UMLSceneSizeDialog(sceneRect.width(), sceneRect.height(), |
310 rect.width(), rect.height(), self) |
317 rect.width(), rect.height(), self) |
311 if dlg.exec() == QDialog.Accepted: |
318 if dlg.exec() == QDialog.DialogCode.Accepted: |
312 width, height = dlg.getData() |
319 width, height = dlg.getData() |
313 self.setSceneSize(width, height) |
320 self.setSceneSize(width, height) |
314 self.__checkSizeActions() |
321 self.__checkSizeActions() |
315 |
322 |
316 def autoAdjustSceneSize(self, limit=False): |
323 def autoAdjustSceneSize(self, limit=False): |
398 |
405 |
399 def printDiagram(self): |
406 def printDiagram(self): |
400 """ |
407 """ |
401 Public slot called to print the diagram. |
408 Public slot called to print the diagram. |
402 """ |
409 """ |
403 printer = QPrinter(mode=QPrinter.ScreenResolution) |
410 printer = QPrinter(mode=QPrinter.PrinterMode.ScreenResolution) |
404 printer.setFullPage(True) |
411 printer.setFullPage(True) |
405 if Preferences.getPrinter("ColorMode"): |
412 if Preferences.getPrinter("ColorMode"): |
406 printer.setColorMode(QPrinter.Color) |
413 printer.setColorMode(QPrinter.ColorMode.Color) |
407 else: |
414 else: |
408 printer.setColorMode(QPrinter.GrayScale) |
415 printer.setColorMode(QPrinter.ColorMode.GrayScale) |
409 if Preferences.getPrinter("FirstPageFirst"): |
416 if Preferences.getPrinter("FirstPageFirst"): |
410 printer.setPageOrder(QPrinter.FirstPageFirst) |
417 printer.setPageOrder(QPrinter.PageOrder.FirstPageFirst) |
411 else: |
418 else: |
412 printer.setPageOrder(QPrinter.LastPageFirst) |
419 printer.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
413 printer.setPageMargins( |
420 printer.setPageMargins( |
414 Preferences.getPrinter("LeftMargin") * 10, |
421 Preferences.getPrinter("LeftMargin") * 10, |
415 Preferences.getPrinter("TopMargin") * 10, |
422 Preferences.getPrinter("TopMargin") * 10, |
416 Preferences.getPrinter("RightMargin") * 10, |
423 Preferences.getPrinter("RightMargin") * 10, |
417 Preferences.getPrinter("BottomMargin") * 10, |
424 Preferences.getPrinter("BottomMargin") * 10, |
418 QPrinter.Millimeter |
425 QPrinter.Unit.Millimeter |
419 ) |
426 ) |
420 printerName = Preferences.getPrinter("PrinterName") |
427 printerName = Preferences.getPrinter("PrinterName") |
421 if printerName: |
428 if printerName: |
422 printer.setPrinterName(printerName) |
429 printer.setPrinterName(printerName) |
423 |
430 |
430 """ |
437 """ |
431 Public slot called to show a print preview of the diagram. |
438 Public slot called to show a print preview of the diagram. |
432 """ |
439 """ |
433 from PyQt5.QtPrintSupport import QPrintPreviewDialog |
440 from PyQt5.QtPrintSupport import QPrintPreviewDialog |
434 |
441 |
435 printer = QPrinter(mode=QPrinter.ScreenResolution) |
442 printer = QPrinter(mode=QPrinter.PrinterMode.ScreenResolution) |
436 printer.setFullPage(True) |
443 printer.setFullPage(True) |
437 if Preferences.getPrinter("ColorMode"): |
444 if Preferences.getPrinter("ColorMode"): |
438 printer.setColorMode(QPrinter.Color) |
445 printer.setColorMode(QPrinter.ColorMode.Color) |
439 else: |
446 else: |
440 printer.setColorMode(QPrinter.GrayScale) |
447 printer.setColorMode(QPrinter.ColorMode.GrayScale) |
441 if Preferences.getPrinter("FirstPageFirst"): |
448 if Preferences.getPrinter("FirstPageFirst"): |
442 printer.setPageOrder(QPrinter.FirstPageFirst) |
449 printer.setPageOrder(QPrinter.PageOrder.FirstPageFirst) |
443 else: |
450 else: |
444 printer.setPageOrder(QPrinter.LastPageFirst) |
451 printer.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
445 printer.setPageMargins( |
452 printer.setPageMargins( |
446 Preferences.getPrinter("LeftMargin") * 10, |
453 Preferences.getPrinter("LeftMargin") * 10, |
447 Preferences.getPrinter("TopMargin") * 10, |
454 Preferences.getPrinter("TopMargin") * 10, |
448 Preferences.getPrinter("RightMargin") * 10, |
455 Preferences.getPrinter("RightMargin") * 10, |
449 Preferences.getPrinter("BottomMargin") * 10, |
456 Preferences.getPrinter("BottomMargin") * 10, |
450 QPrinter.Millimeter |
457 QPrinter.Unit.Millimeter |
451 ) |
458 ) |
452 printerName = Preferences.getPrinter("PrinterName") |
459 printerName = Preferences.getPrinter("PrinterName") |
453 if printerName: |
460 if printerName: |
454 printer.setPrinterName(printerName) |
461 printer.setPrinterName(printerName) |
455 |
462 |
486 |
493 |
487 # step 2: find the index of the item to align in relation to |
494 # step 2: find the index of the item to align in relation to |
488 amount = None |
495 amount = None |
489 for i, item in enumerate(items): |
496 for i, item in enumerate(items): |
490 rect = item.sceneBoundingRect() |
497 rect = item.sceneBoundingRect() |
491 if alignment == Qt.AlignLeft: |
498 if alignment == Qt.AlignmentFlag.AlignLeft: |
492 if amount is None or rect.x() < amount: |
499 if amount is None or rect.x() < amount: |
493 amount = rect.x() |
500 amount = rect.x() |
494 index = i |
501 index = i |
495 elif alignment == Qt.AlignRight: |
502 elif alignment == Qt.AlignmentFlag.AlignRight: |
496 if amount is None or rect.x() + rect.width() > amount: |
503 if amount is None or rect.x() + rect.width() > amount: |
497 amount = rect.x() + rect.width() |
504 amount = rect.x() + rect.width() |
498 index = i |
505 index = i |
499 elif alignment == Qt.AlignHCenter: |
506 elif alignment == Qt.AlignmentFlag.AlignHCenter: |
500 if amount is None or rect.width() > amount: |
507 if amount is None or rect.width() > amount: |
501 amount = rect.width() |
508 amount = rect.width() |
502 index = i |
509 index = i |
503 elif alignment == Qt.AlignTop: |
510 elif alignment == Qt.AlignmentFlag.AlignTop: |
504 if amount is None or rect.y() < amount: |
511 if amount is None or rect.y() < amount: |
505 amount = rect.y() |
512 amount = rect.y() |
506 index = i |
513 index = i |
507 elif alignment == Qt.AlignBottom: |
514 elif alignment == Qt.AlignmentFlag.AlignBottom: |
508 if amount is None or rect.y() + rect.height() > amount: |
515 if amount is None or rect.y() + rect.height() > amount: |
509 amount = rect.y() + rect.height() |
516 amount = rect.y() + rect.height() |
510 index = i |
517 index = i |
511 elif alignment == Qt.AlignVCenter: |
518 elif alignment == Qt.AlignmentFlag.AlignVCenter: |
512 if amount is None or rect.height() > amount: |
519 if amount is None or rect.height() > amount: |
513 amount = rect.height() |
520 amount = rect.height() |
514 index = i |
521 index = i |
515 rect = items[index].sceneBoundingRect() |
522 rect = items[index].sceneBoundingRect() |
516 |
523 |
518 for i, item in enumerate(items): |
525 for i, item in enumerate(items): |
519 if i == index: |
526 if i == index: |
520 continue |
527 continue |
521 itemrect = item.sceneBoundingRect() |
528 itemrect = item.sceneBoundingRect() |
522 xOffset = yOffset = 0 |
529 xOffset = yOffset = 0 |
523 if alignment == Qt.AlignLeft: |
530 if alignment == Qt.AlignmentFlag.AlignLeft: |
524 xOffset = rect.x() - itemrect.x() |
531 xOffset = rect.x() - itemrect.x() |
525 elif alignment == Qt.AlignRight: |
532 elif alignment == Qt.AlignmentFlag.AlignRight: |
526 xOffset = ( |
533 xOffset = ( |
527 (rect.x() + rect.width()) - |
534 (rect.x() + rect.width()) - |
528 (itemrect.x() + itemrect.width()) |
535 (itemrect.x() + itemrect.width()) |
529 ) |
536 ) |
530 elif alignment == Qt.AlignHCenter: |
537 elif alignment == Qt.AlignmentFlag.AlignHCenter: |
531 xOffset = ( |
538 xOffset = ( |
532 (rect.x() + rect.width() // 2) - |
539 (rect.x() + rect.width() // 2) - |
533 (itemrect.x() + itemrect.width() // 2) |
540 (itemrect.x() + itemrect.width() // 2) |
534 ) |
541 ) |
535 elif alignment == Qt.AlignTop: |
542 elif alignment == Qt.AlignmentFlag.AlignTop: |
536 yOffset = rect.y() - itemrect.y() |
543 yOffset = rect.y() - itemrect.y() |
537 elif alignment == Qt.AlignBottom: |
544 elif alignment == Qt.AlignmentFlag.AlignBottom: |
538 yOffset = ( |
545 yOffset = ( |
539 (rect.y() + rect.height()) - |
546 (rect.y() + rect.height()) - |
540 (itemrect.y() + itemrect.height()) |
547 (itemrect.y() + itemrect.height()) |
541 ) |
548 ) |
542 elif alignment == Qt.AlignVCenter: |
549 elif alignment == Qt.AlignmentFlag.AlignVCenter: |
543 yOffset = ( |
550 yOffset = ( |
544 (rect.y() + rect.height() // 2) - |
551 (rect.y() + rect.height() // 2) - |
545 (itemrect.y() + itemrect.height() // 2) |
552 (itemrect.y() + itemrect.height() // 2) |
546 ) |
553 ) |
547 item.moveBy(xOffset, yOffset) |
554 item.moveBy(xOffset, yOffset) |