1#!/usr/local/bin/python3.8 2 3from pyUIClass.widg_addLabel import Ui_Form 4import PyQt5.QtWidgets as Qw 5import PyQt5.QtGui as Qg 6 7import labelEditor 8import xasyUtils as xu 9 10 11class Widg_addLabel(Qw.QWidget): 12 def __init__(self, info): 13 super().__init__() 14 self.ui = Ui_Form() 15 self.info = info 16 self.ui.setupUi(self) 17 self.setFixedSize(self.size()) 18 19 if 'alignIndex' not in self.info.keys(): 20 self.info['alignIndex'] = 0 21 22 if 'shift_x' not in self.info.keys(): 23 self.info['shift_x'] = None 24 25 if 'shift_y' not in self.info.keys(): 26 self.info['shift_y'] = None 27 28 if 'align' not in self.info.keys(): 29 self.info['align'] = (0, 0) 30 31 if self.info['shift_x'] is not None: 32 self.ui.txtShiftX.setText(str(self.info['shift_x'])) 33 34 if self.info['shift_y'] is not None: 35 self.ui.txtShiftY.setText(str(self.info['shift_y'])) 36 37 38 self.ui.cmbFontSize.setCurrentText(str(self.info['fontSize']) if self.info['fontSize'] is not None else '-') 39 self.ui.cmbAlign.setCurrentIndex(self.info['alignIndex']) 40 41 validator = Qg.QDoubleValidator() 42 43 self.ui.txtShiftX.setValidator(validator) 44 self.ui.txtShiftY.setValidator(validator) 45 self.ui.cmbFontSize.setValidator(validator) 46 47 self.ui.cmbAlign.currentTextChanged.connect(self.updateCheck) 48 self.ui.cmbAlign.currentIndexChanged.connect(self.cmbIndexUpdate) 49 self.ui.txtShiftX.textEdited.connect(self.shftXUpdate) 50 self.ui.txtShiftY.textEdited.connect(self.shftYUpdate) 51 self.ui.btnAdvancedEdit.clicked.connect(self.btnAdvancedEditClicked) 52 self.ui.cmbFontSize.currentTextChanged.connect(self.cmbFontSizeTextChanged) 53 54 self.updateCheck(self.ui.cmbAlign.currentText()) 55 56 def cmbFontSizeTextChanged(self, text: str): 57 tryParseVal = xu.tryParse(text, float) 58 self.info['fontSize'] = tryParseVal 59 60 def btnAdvancedEditClicked(self): 61 advancedEditDialog = labelEditor.labelEditor(self.ui.txtLabelText.text()) 62 advancedEditDialog.show() 63 result = advancedEditDialog.exec_() 64 if result == Qw.QDialog.Accepted: 65 self.ui.txtLabelText.setText(advancedEditDialog.getText()) 66 67 @property 68 def labelText(self): 69 return self.ui.txtLabelText.text() 70 71 def updateCheck(self, a0): 72 self.ui.txtShiftX.setEnabled(a0 == 'Custom') 73 self.ui.txtShiftY.setEnabled(a0 == 'Custom') 74 75 def shftXUpdate(self, text): 76 if text: 77 self.info['shift_x'] = float(text) 78 self.updateAlign() 79 80 def shftYUpdate(self, text): 81 if text: 82 self.info['shift_y'] = float(text) 83 self.updateAlign() 84 85 def updateAlign(self): 86 index = self.ui.cmbAlign.currentIndex() 87 self.info['alignIndex'] = index 88 if self.ui.cmbAlign.currentText() == 'Custom': 89 self.info['align'] = (self.info['shift_x'], self.info['shift_y']) 90 elif self.ui.cmbAlign.currentText() == 'None': 91 self.info['align'] = (0, 0) 92 else: 93 self.info['align'] = self.ui.cmbAlign.currentText() 94 95 def cmbIndexUpdate(self, index): 96 self.updateAlign() 97