프로젝트

일반

사용자정보

개정판 c8b03842

IDc8b038425569aad8abafe43a88d1914de6c6cf3a
상위 d5568d0e
하위 1ff304e1

김연진이(가) 5년 이상 전에 추가함

issue #1061 : 심볼생성

1. 새로운 심벌은 생성 불가, 기존 심벌의 OriginalPoint, ConnectionPoint만 업데이트 가능
2. 업데이틑 되는 DB는 Template.db

Change-Id: I2ab2549d3be0983178c3b9ef2d4dd654dcaec258

차이점 보기:

HYTOS/HYTOS/SymbolEditorDialog.py
29 29
                                            Remove self.dbHelper variable
30 30
                    2018.07.03  Yecheol     Rename File, Is Instrument Label added
31 31
    '''
32
    def __init__(self, parent, image, project, selectedSymbol = None):
33
        QDialog.__init__(self, parent)
32
    def __init__(self):
33
        QDialog.__init__(self)
34 34

  
35 35
        try:
36 36
            self.setWindowFlag(Qt.WindowMinMaxButtonsHint)
37
            self.image = image
38
            self.selectedSymbol = selectedSymbol
39
            self.project = project
40 37
            self.ui = SymbolEditor_UI.Ui_Dialog()
41 38
            self.ui.setupUi(self)
42 39
            
43 40
            self.ui.tableWidgetConnList.setColumnCount(3)
44 41
            self.ui.tableWidgetConnList.horizontalHeader().setStretchLastSection(True)
45
            self.ui.tableWidgetConnList.setHorizontalHeaderLabels([self.tr('위치'), self.tr('방향'), self.tr('심볼')])
42
            self.ui.tableWidgetConnList.setHorizontalHeaderLabels([self.tr('Point'), self.tr('Direction'), self.tr('Symbol')])
46 43
            self.ui.tableWidgetConnList.horizontalHeaderItem(0).setSizeHint(QSize(25, 25))
47 44
            self.ui.tableWidgetConnList.itemPressed.connect(self.onConnPtPressed)
45
            self.ui.tableWidgetConnList.verticalHeader().setVisible(True)
46

  
48 47

  
49
            self.ui.label.setVisible(False)
50
            self.ui.label_2.setVisible(False)
51
            self.ui.comboBoxNormalColor.setVisible(False)
52
            self.ui.comboBoxHoverColor.setVisible(False)
53 48

  
54 49
            self.setupImageViewer()
55
            self.setupTools()
56 50
            self.initForms()
57
            self.initContents()
58 51
            self.isAccepted = False
59 52
            self.offsetX = 0
60 53
            self.offsetY = 0
61 54
            self.newSym = None
62 55

  
63
            #self.setWindowTitle(self.tr('심볼 편집기'))
64
            if self.selectedSymbol is not None:
65
                self.ui.openImageFileButton.setEnabled(False)                
66
                self.ui.imageFileLineEdit.setText(os.path.basename(self.selectedSymbol.getPath()))            
67
                self.ui.imageView.showGuideline(None, True)
68
                
56
            self.setWindowTitle(self.tr('Symbol Editor'))
57
            
69 58
        except Exception as ex:
70 59
            from App import App
71 60

  
72 61
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
73
            App.mainWnd().addMessage.emit(MessageType.Error, message)
62
            print(message)
63

  
74 64

  
75 65

  
76 66
    ''' 
......
104 94
            from App import App
105 95

  
106 96
            message = 'error occured({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename, sys.exc_info()[-1].tb_lineno)
107
            App.mainWnd().addMessage.emit(MessageType.Error, message)
97
            print(message)
108 98

  
109 99
    '''
110 100
        @brief  Set up QtImageViewer and QImage
......
112 102
    '''
113 103
    def setupImageViewer(self):
114 104
        from MainWindow import MainWindow
105
        import QtImageViewer
115 106

  
116 107
        x = self.ui.imageViewContainer.x()
117 108
        y = self.ui.imageViewContainer.y()
118 109
        width = self.ui.imageViewContainer.frameGeometry().width()
119 110
        height = self.ui.imageViewContainer.frameGeometry().height()
120
        self.ui.imageView = QtImageViewer(MainWindow.instance())
111
        self.ui.imageView = QtImageViewer.QtImageViewer(self) #QtImageViewer(MainWindow.instance())
121 112
        self.ui.imageView.guidesEnabled = True
122 113
        self.ui.imageView.setGeometry(QtCore.QRect(0, y, height, height))
123 114
        self.ui.imageView.aspectRatioMode = QtCore.Qt.KeepAspectRatio
......
125 116
        self.ui.imageView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
126 117
        self.ui.imageView.canZoom = True
127 118
        self.ui.imageView.canPan = True
128
        if self.image is not None:
129
            image = self.image.copy()
130
            self.imgW = image.width()
131
            self.imgH = image.height()
132
            image = image.scaled(self.imgW, self.imgH)
133
            self.ui.imageView.setImage(image)
119

  
134 120
        self.ui.imageViewerContainerLayout.addWidget(self.ui.imageView)
135 121
        self.ui.imageView.startPointChanged.connect(self.offsetChanged)
136 122

  
137
    '''
138
        @brief  Set up Hand, Crop, ETC Tools
139
        @history    2018.05.03  Jeongwoo    Add connection for removeTextButton
140
                    2018.06.11  Jeongwoo    Add connection for rotation and flip
141
    '''
142
    def setupTools(self):
143
        self.ui.openImageFileButton.clicked.connect(self.openImageFileClickEvent)
144
        self.ui.handButton.clicked.connect(self.handToolClickEvent)
145
        self.ui.cropButton.clicked.connect(self.cropToolClickEvent)
146
        self.ui.penButton.clicked.connect(self.penToolClickEvent)
147
        self.ui.penWidthSpinBox.valueChanged.connect(self.penWidthChangedEvent)
148
        self.ui.eraserButton.clicked.connect(self.eraserToolClickEvent)
149
        self.ui.eraserSpinBox.valueChanged.connect(self.eraserWidthChangedEvent)
150
        self.ui.areaEraserButton.clicked.connect(self.areaEraserToolClickEvent)
151
        self.ui.fitImageButton.clicked.connect(self.fitImageToolClickEvent)
152
        self.ui.zoomButton.clicked.connect(self.zoomToolClickEvent)
153
        self.ui.areaZoomButton.clicked.connect(self.areaZoomToolClickEvent)
154
        self.ui.initZoomButton.clicked.connect(self.zoomInitToolClickEvent)
155
        self.ui.rotateLeftButton.clicked.connect(self.rotateLeftClickEvent)
156
        self.ui.rotateRightButton.clicked.connect(self.rotateRightClickEvent)
157
        self.ui.flipHorizontalButton.clicked.connect(self.flipHorizontalClickEvent)
158
        self.ui.flipVerticalButton.clicked.connect(self.flipVerticalClickEvent)
159
        self.ui.pushButtonDelConnPt.clicked.connect(self.onDeleteConnPt)
160

  
123
   
161 124
    '''
162 125
        @brief  Init Forms with type and default values
163 126
    '''
164 127
    def initForms(self):
165 128
        self.ui.addOriginalPointButton.clicked.connect(self.addOriginalPoint)
166 129
        self.ui.addConnectionPointButton.clicked.connect(self.addConnectionPoint)
167
        self.initSymbolTypeComboBoxItems()        
130
        self.ui.pushButtonDelConnPt.clicked.connect(self.onDeleteConnPt)
168 131

  
169
        ''' add symbol gradients to combobox '''
170
        configs = AppDocData.instance().getConfigs('Symbol Gradients')
171
        if configs is not None:
172
            for config in configs:
173
                self.ui.comboBoxNormalColor.addItem(config.key, config.value)
174
                self.ui.comboBoxHoverColor.addItem(config.key, config.value)
132
        self.ui.categoryComboBox.currentIndexChanged.connect(self.onCategoryChanged)
133
        self.ui.typeComboBox.currentIndexChanged.connect(self.onTypeChanged)
134
        self.ui.nameComboBox.currentIndexChanged.connect(self.onNameChanged)
175 135

  
176
            normalIndex = self.ui.comboBoxNormalColor.findText('Blue', Qt.MatchExactly)
177
            if normalIndex is not -1:
178
                self.ui.comboBoxNormalColor.setCurrentIndex(normalIndex)
179
            hoverIndex = self.ui.comboBoxNormalColor.findText('Red', Qt.MatchExactly)
180
            if hoverIndex is not -1:
181
                self.ui.comboBoxHoverColor.setCurrentIndex(hoverIndex)
136

  
137
        
138

  
139
        self.initDBPath()
140
        self.initSymbolCategoryComboBoxItems() 
141

  
142
    def initDBPath(self):
143
        self.ui.lineEdit_DBPath.setText( AppDocData.instance().getTemplateDbPath())
144

  
145

  
146
    def onCategoryChanged(self, index):
147
        category = self.ui.categoryComboBox.itemText(index)
148

  
149
        self.initSymbolTypeComboBoxItems(category) 
150

  
151

  
152
    def onTypeChanged(self, index):
153
        typeUID = self.ui.typeComboBox.itemData(index)
154

  
155
        self.initSymbolNameComboBoxItems(typeUID) 
156

  
157
    def onNameChanged(self, index):
158
        self.selectedSymbol = self.ui.nameComboBox.itemData(index)
159

  
160
        self.setImage()
161
        self.initContents()
162

  
163
    def setImage(self):
164
        from PIL import Image
165

  
166
        path = os.path.join(os.getenv('ALLUSERSPROFILE'), App.NAME)
167
        category = self.ui.categoryComboBox.currentText()
168
        type = self.ui.typeComboBox.currentText()
169
        name = self.ui.nameComboBox.currentText()
170

  
171
        filePath = os.path.join(path, 'svg', category, type, '{}.svg'.format(name))
172

  
173
        if os.path.isfile(filePath) and os.path.exists(filePath):
174
            
175
            image = QImage(filePath)
176
            self.imgW = image.width()
177
            self.imgH = image.height()
178

  
179
            image = image.scaled(self.imgW, self.imgH)
180
            self.ui.imageView.setImage(image)
181

  
182
            self.ui.imageView.showGuideline(None, True)
183

  
184

  
185
    def initSymbolCategoryComboBoxItems(self):
186
        from AppDocData import AppDocData
187

  
188
        self.ui.categoryComboBox.clear()
189

  
190
        categoryList = AppDocData.instance().getTemplateSymbolCategoryList()
191
        for category in categoryList:
192
            if category != 'Stream Line':
193
                self.ui.categoryComboBox.addItem(category)
194

  
195
        if self.ui.categoryComboBox.count() > 0:
196
            self.ui.categoryComboBox.setCurrentIndex(0)
182 197

  
183 198
    '''
184 199
        @brief      Init Symbol Type ComboBox Items
185 200
        @author     Jeongwoo
186 201
        @date       2018.04.06
187 202
    '''
188
    def initSymbolTypeComboBoxItems(self):
189
        for item in AppDocData.instance().getSymbolTypeComboBoxItems():
190
            self.ui.typeComboBox.addItem(item[2])
203
    def initSymbolTypeComboBoxItems(self, category):
204
        from AppDocData import AppDocData
205

  
206
        self.ui.typeComboBox.clear()
207
        typeList = AppDocData.instance().getTemplateSymbolTypeList(category)
208

  
209
        for type in typeList:
210
            self.ui.typeComboBox.addItem(type[1], type[0])
211

  
212
        if self.ui.typeComboBox.count() > 0:
213
            self.ui.typeComboBox.setCurrentIndex(0)
214
            
215
    
216

  
217
    def initSymbolNameComboBoxItems(self, typeUID):
218
        from AppDocData import AppDocData
219

  
220
        self.ui.nameComboBox.clear()
221
        nameList = AppDocData.instance().getTemplateSymbolNameList(typeUID)
222

  
223
        for name in nameList:
224
            self.ui.nameComboBox.addItem(name[1], name)
225

  
226
        if self.ui.nameComboBox.count() > 0:
227
            self.ui.nameComboBox.setCurrentIndex(0)
228

  
229

  
191 230

  
192 231
    '''
193 232
        @brief  Set data on forms, For modifying symbol
......
198 237
        try:
199 238
            if self.selectedSymbol is not None:
200 239

  
201
                self.ui.nameLineEdit.setText(self.selectedSymbol.getName())                                
202
                self.ui.typeComboBox.setCurrentIndex(self.ui.typeComboBox.findText(self.selectedSymbol.getType()))
240
                #self.ui.nameLineEdit.setText(self.selectedSymbol.getName())                                
241
                #self.ui.typeComboBox.setCurrentIndex(self.ui.typeComboBox.findText(self.selectedSymbol.getType()))
203 242
                
204
                originalPoint = self.selectedSymbol.getOriginalPoint()
243
                originalPoint = self.selectedSymbol[2]
205 244
                self.ui.originalPointLineEdit.setText(originalPoint)
206 245
                OriginalPointCommand.OriginalPointCommand.drawCircle(self.ui.imageView, originalPoint.split(",")[0], originalPoint.split(",")[1])
207 246
                
208
                connectionPoint = self.selectedSymbol.getConnectionPoint()
247
                connectionPoint = self.selectedSymbol[3]
209 248
                if connectionPoint is not None and len(connectionPoint) > 0:
210 249
                    splitConnectionPointList = connectionPoint.split("/")
211 250
                    symbol_indecies = [str(idx) for idx in range(1)]
......
397 436
                                            Change self.dbHelper to AppDocData
398 437
                    2019.07.11 yenjin       
399 438
    '''
400
    def accept(self):
401
        isValid, exceptionMsg = self.isValidSymbolInfo()
402
        if isValid:
403
            if self.selectedSymbol is None:
404
                isSuccess, fileType, fileName, imagePath = AppDocData.instance().insertSymbol(self.makeSymbolData(self.ui.imageView.image().width(), self.ui.imageView.image().height()))
405
            else:
406
                isSuccess, fileType, fileName, imagePath = AppDocData.instance().updateSymbol(self.makeSymbolData(self.ui.imageView.image().width(), self.ui.imageView.image().height()))
407

  
408
            if isSuccess:
409
                try:
410
                    image = self.ui.imageView.image()
411
                    if image is not None:
412
                        # 신규 심벌 생성인 경우에만 PNG 파일과 SVG 파일을 생성
413
                        if self.selectedSymbol is None:
414
                            imageLocation = os.path.join(self.project.getImageFilePath(), fileType)
415
                            if not os.path.exists(imageLocation):
416
                                os.makedirs(imageLocation)                             
417
                            image.save(imagePath, 'PNG')
418
                            
419
                            svgLocation = os.path.join(self.project.getSvgFilePath(), fileType)
420
                            if not os.path.exists(svgLocation):
421
                                os.makedirs(svgLocation)
422

  
423
                            normal_color = self.ui.comboBoxNormalColor.itemData(self.ui.comboBoxNormalColor.currentIndex())
424
                            hover_color = self.ui.comboBoxHoverColor.itemData(self.ui.comboBoxHoverColor.currentIndex())
425

  
426
                            potrace.convertImageToSvg(imagePath, os.path.join(svgLocation, fileName + ".svg"), normalColor=normal_color, hoverColor=hover_color)
427
                
428
                        self.isAccepted = True
429
                                              
430
                        QDialog.accept(self)
431
                except:
432
                    if self.selectedSymbol is None:
433
                        self.resetInsertSymbol(imagePath, fileName)
434
                    else:
435
                        self.resetUpdateSymbol(imagePath, fileName) ### update roll back 으로 변경해야함
436
                    self.isAccepted = False
437
                    QMessageBox.about(self.ui.buttonBox, self.tr('Error'), self.tr('Error occurs during saving symbol, please check data.'))
438
            else:
439
                QMessageBox.about(self.ui.buttonBox, self.tr('Error'), self.tr('Error occurs during saving symbol, please check data.'))
440
        else:
441
            #print("invalid symbol info")
442
            QMessageBox.about(self.ui.buttonBox, self.tr('Notice'), exceptionMsg)
439
    def accept(self):        
440
        uid = self.selectedSymbol[0]
441

  
442
        originalPoint = self.ui.originalPointLineEdit.text()
443
        connectionPoint = self.makeConnectionPointListString()
444

  
445
        isSuccess = AppDocData.instance().updateTemplateSymbol(uid, originalPoint, connectionPoint)
446
        if isSuccess:
447
            QMessageBox.information(self, self.tr("Notice"), self.tr("Save completed successfully."))
448
        
449

  
450
        #QDialog.accept(self)
443 451
            
444 452
    '''
445 453
        @brief  Called When Close Button Clicked
......
806 814
        #print('offsetY : ' + str(self.offsetY) + '->' + str(self.offsetY+oY))
807 815
        self.offsetX = self.offsetX + oX
808 816
        self.offsetY = self.offsetY + oY
817

  
818

  
819
    if __name__ == '__main__':
820
        from SymbolEditorDialog import QSymbolEditorDialog
821
        from App import App
822
        app = App(sys.argv)
823

  
824

  
825
        if True:
826
            dlg = QSymbolEditorDialog()
827
            dlg.exec_()              
HYTOS/HYTOS/SymbolEditor_UI.py
13 13
class Ui_Dialog(object):
14 14
    def setupUi(self, Dialog):
15 15
        Dialog.setObjectName("Dialog")
16
        Dialog.resize(862, 410)
16
        Dialog.resize(1002, 563)
17 17
        Dialog.setMinimumSize(QtCore.QSize(0, 0))
18 18
        Dialog.setMaximumSize(QtCore.QSize(16777215, 16777215))
19 19
        font = QtGui.QFont()
......
35 35
        self.gridLayout.setObjectName("gridLayout")
36 36
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
37 37
        self.verticalLayout_2.setObjectName("verticalLayout_2")
38
        self.toolWidget = QtWidgets.QWidget(self.widget_3)
39
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
40
        sizePolicy.setHorizontalStretch(0)
41
        sizePolicy.setVerticalStretch(0)
42
        sizePolicy.setHeightForWidth(self.toolWidget.sizePolicy().hasHeightForWidth())
43
        self.toolWidget.setSizePolicy(sizePolicy)
44
        self.toolWidget.setMaximumSize(QtCore.QSize(16777215, 16777215))
45
        self.toolWidget.setObjectName("toolWidget")
46
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.toolWidget)
47
        self.horizontalLayout.setObjectName("horizontalLayout")
48
        self.gridLayout_5 = QtWidgets.QGridLayout()
49
        self.gridLayout_5.setObjectName("gridLayout_5")
50
        self.penButton = QtWidgets.QPushButton(self.toolWidget)
51
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
52
        sizePolicy.setHorizontalStretch(0)
53
        sizePolicy.setVerticalStretch(0)
54
        sizePolicy.setHeightForWidth(self.penButton.sizePolicy().hasHeightForWidth())
55
        self.penButton.setSizePolicy(sizePolicy)
56
        self.penButton.setMinimumSize(QtCore.QSize(32, 32))
57
        self.penButton.setMaximumSize(QtCore.QSize(32, 32))
58
        self.penButton.setText("")
59
        self.penButton.setIconSize(QtCore.QSize(20, 20))
60
        self.penButton.setObjectName("penButton")
61
        self.gridLayout_5.addWidget(self.penButton, 0, 2, 1, 1)
62
        self.handButton = QtWidgets.QPushButton(self.toolWidget)
63
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
64
        sizePolicy.setHorizontalStretch(0)
65
        sizePolicy.setVerticalStretch(0)
66
        sizePolicy.setHeightForWidth(self.handButton.sizePolicy().hasHeightForWidth())
67
        self.handButton.setSizePolicy(sizePolicy)
68
        self.handButton.setMinimumSize(QtCore.QSize(32, 32))
69
        self.handButton.setMaximumSize(QtCore.QSize(32, 32))
70
        icon1 = QtGui.QIcon()
71
        icon1.addPixmap(QtGui.QPixmap("../res/hand.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
72
        self.handButton.setIcon(icon1)
73
        self.handButton.setObjectName("handButton")
74
        self.gridLayout_5.addWidget(self.handButton, 0, 0, 1, 1)
75
        self.fitImageButton = QtWidgets.QPushButton(self.toolWidget)
76
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
77
        sizePolicy.setHorizontalStretch(0)
78
        sizePolicy.setVerticalStretch(0)
79
        sizePolicy.setHeightForWidth(self.fitImageButton.sizePolicy().hasHeightForWidth())
80
        self.fitImageButton.setSizePolicy(sizePolicy)
81
        self.fitImageButton.setMinimumSize(QtCore.QSize(32, 32))
82
        self.fitImageButton.setMaximumSize(QtCore.QSize(32, 32))
83
        self.fitImageButton.setText("")
84
        self.fitImageButton.setIconSize(QtCore.QSize(20, 20))
85
        self.fitImageButton.setObjectName("fitImageButton")
86
        self.gridLayout_5.addWidget(self.fitImageButton, 0, 6, 1, 1)
87
        self.zoomButton = QtWidgets.QPushButton(self.toolWidget)
88
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
89
        sizePolicy.setHorizontalStretch(0)
90
        sizePolicy.setVerticalStretch(0)
91
        sizePolicy.setHeightForWidth(self.zoomButton.sizePolicy().hasHeightForWidth())
92
        self.zoomButton.setSizePolicy(sizePolicy)
93
        self.zoomButton.setMinimumSize(QtCore.QSize(32, 32))
94
        self.zoomButton.setMaximumSize(QtCore.QSize(32, 32))
95
        self.zoomButton.setObjectName("zoomButton")
96
        self.gridLayout_5.addWidget(self.zoomButton, 1, 4, 1, 1)
97
        self.areaZoomButton = QtWidgets.QPushButton(self.toolWidget)
98
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
99
        sizePolicy.setHorizontalStretch(0)
100
        sizePolicy.setVerticalStretch(0)
101
        sizePolicy.setHeightForWidth(self.areaZoomButton.sizePolicy().hasHeightForWidth())
102
        self.areaZoomButton.setSizePolicy(sizePolicy)
103
        self.areaZoomButton.setMinimumSize(QtCore.QSize(32, 32))
104
        self.areaZoomButton.setMaximumSize(QtCore.QSize(32, 32))
105
        self.areaZoomButton.setText("")
106
        self.areaZoomButton.setIconSize(QtCore.QSize(20, 20))
107
        self.areaZoomButton.setObjectName("areaZoomButton")
108
        self.gridLayout_5.addWidget(self.areaZoomButton, 1, 5, 1, 1)
109
        self.cropButton = QtWidgets.QPushButton(self.toolWidget)
110
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
111
        sizePolicy.setHorizontalStretch(32)
112
        sizePolicy.setVerticalStretch(32)
113
        sizePolicy.setHeightForWidth(self.cropButton.sizePolicy().hasHeightForWidth())
114
        self.cropButton.setSizePolicy(sizePolicy)
115
        self.cropButton.setMinimumSize(QtCore.QSize(32, 32))
116
        self.cropButton.setMaximumSize(QtCore.QSize(32, 32))
117
        self.cropButton.setText("")
118
        icon2 = QtGui.QIcon()
119
        icon2.addPixmap(QtGui.QPixmap("../res/crop.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
120
        self.cropButton.setIcon(icon2)
121
        self.cropButton.setIconSize(QtCore.QSize(20, 20))
122
        self.cropButton.setObjectName("cropButton")
123
        self.gridLayout_5.addWidget(self.cropButton, 0, 1, 1, 1)
124
        self.rotateLeftButton = QtWidgets.QPushButton(self.toolWidget)
125
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
126
        sizePolicy.setHorizontalStretch(0)
127
        sizePolicy.setVerticalStretch(0)
128
        sizePolicy.setHeightForWidth(self.rotateLeftButton.sizePolicy().hasHeightForWidth())
129
        self.rotateLeftButton.setSizePolicy(sizePolicy)
130
        self.rotateLeftButton.setMinimumSize(QtCore.QSize(32, 32))
131
        self.rotateLeftButton.setMaximumSize(QtCore.QSize(32, 32))
132
        self.rotateLeftButton.setText("")
133
        self.rotateLeftButton.setIconSize(QtCore.QSize(20, 20))
134
        self.rotateLeftButton.setObjectName("rotateLeftButton")
135
        self.gridLayout_5.addWidget(self.rotateLeftButton, 1, 0, 1, 1)
136
        self.rotateRightButton = QtWidgets.QPushButton(self.toolWidget)
137
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
138
        sizePolicy.setHorizontalStretch(0)
139
        sizePolicy.setVerticalStretch(0)
140
        sizePolicy.setHeightForWidth(self.rotateRightButton.sizePolicy().hasHeightForWidth())
141
        self.rotateRightButton.setSizePolicy(sizePolicy)
142
        self.rotateRightButton.setMinimumSize(QtCore.QSize(32, 32))
143
        self.rotateRightButton.setMaximumSize(QtCore.QSize(32, 32))
144
        self.rotateRightButton.setText("")
145
        self.rotateRightButton.setIconSize(QtCore.QSize(20, 20))
146
        self.rotateRightButton.setObjectName("rotateRightButton")
147
        self.gridLayout_5.addWidget(self.rotateRightButton, 1, 1, 1, 1)
148
        self.flipVerticalButton = QtWidgets.QPushButton(self.toolWidget)
149
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
150
        sizePolicy.setHorizontalStretch(0)
151
        sizePolicy.setVerticalStretch(0)
152
        sizePolicy.setHeightForWidth(self.flipVerticalButton.sizePolicy().hasHeightForWidth())
153
        self.flipVerticalButton.setSizePolicy(sizePolicy)
154
        self.flipVerticalButton.setMinimumSize(QtCore.QSize(32, 32))
155
        self.flipVerticalButton.setMaximumSize(QtCore.QSize(32, 32))
156
        self.flipVerticalButton.setText("")
157
        self.flipVerticalButton.setIconSize(QtCore.QSize(20, 20))
158
        self.flipVerticalButton.setObjectName("flipVerticalButton")
159
        self.gridLayout_5.addWidget(self.flipVerticalButton, 1, 3, 1, 1)
160
        self.initZoomButton = QtWidgets.QPushButton(self.toolWidget)
161
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
162
        sizePolicy.setHorizontalStretch(0)
163
        sizePolicy.setVerticalStretch(0)
164
        sizePolicy.setHeightForWidth(self.initZoomButton.sizePolicy().hasHeightForWidth())
165
        self.initZoomButton.setSizePolicy(sizePolicy)
166
        self.initZoomButton.setMinimumSize(QtCore.QSize(32, 32))
167
        self.initZoomButton.setMaximumSize(QtCore.QSize(32, 32))
168
        self.initZoomButton.setText("")
169
        self.initZoomButton.setObjectName("initZoomButton")
170
        self.gridLayout_5.addWidget(self.initZoomButton, 1, 6, 1, 1)
171
        self.penWidthSpinBox = QtWidgets.QSpinBox(self.toolWidget)
172
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
173
        sizePolicy.setHorizontalStretch(0)
174
        sizePolicy.setVerticalStretch(0)
175
        sizePolicy.setHeightForWidth(self.penWidthSpinBox.sizePolicy().hasHeightForWidth())
176
        self.penWidthSpinBox.setSizePolicy(sizePolicy)
177
        self.penWidthSpinBox.setMinimumSize(QtCore.QSize(32, 32))
178
        self.penWidthSpinBox.setMaximumSize(QtCore.QSize(16777215, 32))
179
        self.penWidthSpinBox.setMinimum(1)
180
        self.penWidthSpinBox.setMaximum(5)
181
        self.penWidthSpinBox.setObjectName("penWidthSpinBox")
182
        self.gridLayout_5.addWidget(self.penWidthSpinBox, 0, 3, 1, 1)
183
        self.flipHorizontalButton = QtWidgets.QPushButton(self.toolWidget)
184
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
185
        sizePolicy.setHorizontalStretch(0)
186
        sizePolicy.setVerticalStretch(0)
187
        sizePolicy.setHeightForWidth(self.flipHorizontalButton.sizePolicy().hasHeightForWidth())
188
        self.flipHorizontalButton.setSizePolicy(sizePolicy)
189
        self.flipHorizontalButton.setMinimumSize(QtCore.QSize(32, 32))
190
        self.flipHorizontalButton.setMaximumSize(QtCore.QSize(32, 32))
191
        self.flipHorizontalButton.setText("")
192
        self.flipHorizontalButton.setIconSize(QtCore.QSize(20, 20))
193
        self.flipHorizontalButton.setObjectName("flipHorizontalButton")
194
        self.gridLayout_5.addWidget(self.flipHorizontalButton, 1, 2, 1, 1)
195
        self.eraserSpinBox = QtWidgets.QSpinBox(self.toolWidget)
196
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
197
        sizePolicy.setHorizontalStretch(0)
198
        sizePolicy.setVerticalStretch(0)
199
        sizePolicy.setHeightForWidth(self.eraserSpinBox.sizePolicy().hasHeightForWidth())
200
        self.eraserSpinBox.setSizePolicy(sizePolicy)
201
        self.eraserSpinBox.setMinimumSize(QtCore.QSize(0, 32))
202
        self.eraserSpinBox.setMaximumSize(QtCore.QSize(16777215, 32))
203
        self.eraserSpinBox.setMinimum(1)
204
        self.eraserSpinBox.setMaximum(5)
205
        self.eraserSpinBox.setObjectName("eraserSpinBox")
206
        self.gridLayout_5.addWidget(self.eraserSpinBox, 0, 5, 1, 1)
207
        self.eraserButton = QtWidgets.QPushButton(self.toolWidget)
208
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
209
        sizePolicy.setHorizontalStretch(0)
210
        sizePolicy.setVerticalStretch(0)
211
        sizePolicy.setHeightForWidth(self.eraserButton.sizePolicy().hasHeightForWidth())
212
        self.eraserButton.setSizePolicy(sizePolicy)
213
        self.eraserButton.setMinimumSize(QtCore.QSize(32, 32))
214
        self.eraserButton.setMaximumSize(QtCore.QSize(32, 32))
215
        self.eraserButton.setText("")
216
        self.eraserButton.setIconSize(QtCore.QSize(20, 20))
217
        self.eraserButton.setObjectName("eraserButton")
218
        self.gridLayout_5.addWidget(self.eraserButton, 0, 4, 1, 1)
219
        self.areaEraserButton = QtWidgets.QPushButton(self.toolWidget)
220
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
221
        sizePolicy.setHorizontalStretch(0)
222
        sizePolicy.setVerticalStretch(0)
223
        sizePolicy.setHeightForWidth(self.areaEraserButton.sizePolicy().hasHeightForWidth())
224
        self.areaEraserButton.setSizePolicy(sizePolicy)
225
        self.areaEraserButton.setMinimumSize(QtCore.QSize(32, 32))
226
        self.areaEraserButton.setMaximumSize(QtCore.QSize(32, 32))
227
        self.areaEraserButton.setText("")
228
        self.areaEraserButton.setIconSize(QtCore.QSize(20, 20))
229
        self.areaEraserButton.setObjectName("areaEraserButton")
230
        self.gridLayout_5.addWidget(self.areaEraserButton, 0, 7, 1, 1)
231
        self.horizontalLayout.addLayout(self.gridLayout_5)
232
        self.verticalLayout_2.addWidget(self.toolWidget)
233 38
        self.imageViewContainer = QtWidgets.QWidget(self.widget_3)
234 39
        self.imageViewContainer.setObjectName("imageViewContainer")
235 40
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.imageViewContainer)
......
255 60
        self.scrollArea.setWidgetResizable(True)
256 61
        self.scrollArea.setObjectName("scrollArea")
257 62
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
258
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 478, 341))
63
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 478, 494))
259 64
        self.scrollAreaWidgetContents.setMinimumSize(QtCore.QSize(378, 0))
260 65
        self.scrollAreaWidgetContents.setMaximumSize(QtCore.QSize(16777215, 16777215))
261 66
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
......
265 70
        self.gridLayout_7.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
266 71
        self.gridLayout_7.setContentsMargins(6, 6, 6, 6)
267 72
        self.gridLayout_7.setObjectName("gridLayout_7")
268
        self.imgFileNameLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents)
269
        font = QtGui.QFont()
270
        font.setBold(True)
271
        font.setWeight(75)
272
        self.imgFileNameLabel.setFont(font)
273
        self.imgFileNameLabel.setObjectName("imgFileNameLabel")
274
        self.gridLayout_7.addWidget(self.imgFileNameLabel, 0, 0, 1, 1)
275
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
276
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
277
        self.imageFileLineEdit = QtWidgets.QLineEdit(self.scrollAreaWidgetContents)
278
        self.imageFileLineEdit.setReadOnly(True)
279
        self.imageFileLineEdit.setObjectName("imageFileLineEdit")
280
        self.horizontalLayout_3.addWidget(self.imageFileLineEdit)
281
        self.openImageFileButton = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
282
        self.openImageFileButton.setMinimumSize(QtCore.QSize(0, 0))
283
        self.openImageFileButton.setMaximumSize(QtCore.QSize(40, 16777215))
284
        self.openImageFileButton.setObjectName("openImageFileButton")
285
        self.horizontalLayout_3.addWidget(self.openImageFileButton)
286
        self.gridLayout_7.addLayout(self.horizontalLayout_3, 0, 1, 1, 1)
73
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
74
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
75
        self.connectionPointLineEdit = QtWidgets.QLineEdit(self.scrollAreaWidgetContents)
76
        self.connectionPointLineEdit.setReadOnly(True)
77
        self.connectionPointLineEdit.setObjectName("connectionPointLineEdit")
78
        self.horizontalLayout_6.addWidget(self.connectionPointLineEdit)
79
        self.addConnectionPointButton = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
80
        self.addConnectionPointButton.setMinimumSize(QtCore.QSize(40, 0))
81
        self.addConnectionPointButton.setMaximumSize(QtCore.QSize(40, 16777215))
82
        self.addConnectionPointButton.setObjectName("addConnectionPointButton")
83
        self.horizontalLayout_6.addWidget(self.addConnectionPointButton)
84
        self.pushButtonDelConnPt = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
85
        self.pushButtonDelConnPt.setMinimumSize(QtCore.QSize(40, 0))
86
        self.pushButtonDelConnPt.setMaximumSize(QtCore.QSize(40, 16777215))
87
        self.pushButtonDelConnPt.setObjectName("pushButtonDelConnPt")
88
        self.horizontalLayout_6.addWidget(self.pushButtonDelConnPt)
89
        self.gridLayout_7.addLayout(self.horizontalLayout_6, 5, 2, 1, 1)
287 90
        self.nameLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents)
288 91
        font = QtGui.QFont()
289
        font.setBold(True)
290
        font.setWeight(75)
92
        font.setBold(False)
93
        font.setWeight(50)
291 94
        self.nameLabel.setFont(font)
95
        self.nameLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
292 96
        self.nameLabel.setObjectName("nameLabel")
293
        self.gridLayout_7.addWidget(self.nameLabel, 1, 0, 1, 1)
294
        self.nameLineEdit = QtWidgets.QLineEdit(self.scrollAreaWidgetContents)
295
        self.nameLineEdit.setObjectName("nameLineEdit")
296
        self.gridLayout_7.addWidget(self.nameLineEdit, 1, 1, 1, 1)
297
        self.typeLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents)
97
        self.gridLayout_7.addWidget(self.nameLabel, 3, 0, 1, 1)
98
        self.label = QtWidgets.QLabel(self.scrollAreaWidgetContents)
99
        self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
100
        self.label.setObjectName("label")
101
        self.gridLayout_7.addWidget(self.label, 1, 0, 1, 1)
102
        self.connectionPointLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents)
298 103
        font = QtGui.QFont()
299
        font.setBold(True)
300
        font.setWeight(75)
301
        self.typeLabel.setFont(font)
302
        self.typeLabel.setObjectName("typeLabel")
303
        self.gridLayout_7.addWidget(self.typeLabel, 2, 0, 1, 1)
304
        self.typeComboBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
305
        self.typeComboBox.setObjectName("typeComboBox")
306
        self.gridLayout_7.addWidget(self.typeComboBox, 2, 1, 1, 1)
104
        font.setBold(False)
105
        font.setWeight(50)
106
        self.connectionPointLabel.setFont(font)
107
        self.connectionPointLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
108
        self.connectionPointLabel.setObjectName("connectionPointLabel")
109
        self.gridLayout_7.addWidget(self.connectionPointLabel, 5, 0, 1, 1)
110
        self.nameComboBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
111
        self.nameComboBox.setObjectName("nameComboBox")
112
        self.gridLayout_7.addWidget(self.nameComboBox, 3, 2, 1, 1)
307 113
        self.originalPointLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents)
308 114
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
309 115
        sizePolicy.setHorizontalStretch(0)
......
311 117
        sizePolicy.setHeightForWidth(self.originalPointLabel.sizePolicy().hasHeightForWidth())
312 118
        self.originalPointLabel.setSizePolicy(sizePolicy)
313 119
        font = QtGui.QFont()
314
        font.setBold(True)
315
        font.setWeight(75)
120
        font.setBold(False)
121
        font.setWeight(50)
316 122
        self.originalPointLabel.setFont(font)
317
        self.originalPointLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
123
        self.originalPointLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
318 124
        self.originalPointLabel.setObjectName("originalPointLabel")
319
        self.gridLayout_7.addWidget(self.originalPointLabel, 3, 0, 1, 1)
125
        self.gridLayout_7.addWidget(self.originalPointLabel, 4, 0, 1, 1)
320 126
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
321 127
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
322 128
        self.originalPointLineEdit = QtWidgets.QLineEdit(self.scrollAreaWidgetContents)
......
327 133
        self.addOriginalPointButton.setMaximumSize(QtCore.QSize(40, 16777215))
328 134
        self.addOriginalPointButton.setObjectName("addOriginalPointButton")
329 135
        self.horizontalLayout_4.addWidget(self.addOriginalPointButton)
330
        self.gridLayout_7.addLayout(self.horizontalLayout_4, 3, 1, 1, 1)
331
        self.connectionPointLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents)
332
        font = QtGui.QFont()
333
        font.setBold(True)
334
        font.setWeight(75)
335
        self.connectionPointLabel.setFont(font)
336
        self.connectionPointLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
337
        self.connectionPointLabel.setObjectName("connectionPointLabel")
338
        self.gridLayout_7.addWidget(self.connectionPointLabel, 4, 0, 1, 1)
339
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
340
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
341
        self.connectionPointLineEdit = QtWidgets.QLineEdit(self.scrollAreaWidgetContents)
342
        self.connectionPointLineEdit.setReadOnly(True)
343
        self.connectionPointLineEdit.setObjectName("connectionPointLineEdit")
344
        self.horizontalLayout_6.addWidget(self.connectionPointLineEdit)
345
        self.addConnectionPointButton = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
346
        self.addConnectionPointButton.setMinimumSize(QtCore.QSize(40, 0))
347
        self.addConnectionPointButton.setMaximumSize(QtCore.QSize(40, 16777215))
348
        self.addConnectionPointButton.setObjectName("addConnectionPointButton")
349
        self.horizontalLayout_6.addWidget(self.addConnectionPointButton)
350
        self.pushButtonDelConnPt = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
351
        self.pushButtonDelConnPt.setMinimumSize(QtCore.QSize(40, 0))
352
        self.pushButtonDelConnPt.setMaximumSize(QtCore.QSize(40, 16777215))
353
        self.pushButtonDelConnPt.setObjectName("pushButtonDelConnPt")
354
        self.horizontalLayout_6.addWidget(self.pushButtonDelConnPt)
355
        self.gridLayout_7.addLayout(self.horizontalLayout_6, 4, 1, 1, 1)
136
        self.gridLayout_7.addLayout(self.horizontalLayout_4, 4, 2, 1, 1)
137
        self.typeComboBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
138
        self.typeComboBox.setObjectName("typeComboBox")
139
        self.gridLayout_7.addWidget(self.typeComboBox, 2, 2, 1, 1)
356 140
        self.tableWidgetConnList = QtWidgets.QTableWidget(self.scrollAreaWidgetContents)
357 141
        self.tableWidgetConnList.setObjectName("tableWidgetConnList")
358 142
        self.tableWidgetConnList.setColumnCount(0)
359 143
        self.tableWidgetConnList.setRowCount(0)
360 144
        self.tableWidgetConnList.verticalHeader().setVisible(False)
361
        self.gridLayout_7.addWidget(self.tableWidgetConnList, 5, 1, 1, 1)
362
        self.gridLayout_6 = QtWidgets.QGridLayout()
363
        self.gridLayout_6.setObjectName("gridLayout_6")
364
        self.label = QtWidgets.QLabel(self.scrollAreaWidgetContents)
365
        self.label.setMaximumSize(QtCore.QSize(100, 16777215))
366
        self.label.setObjectName("label")
367
        self.gridLayout_6.addWidget(self.label, 0, 0, 1, 1)
368
        self.comboBoxNormalColor = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
369
        self.comboBoxNormalColor.setMaximumSize(QtCore.QSize(100, 16777215))
370
        self.comboBoxNormalColor.setObjectName("comboBoxNormalColor")
371
        self.gridLayout_6.addWidget(self.comboBoxNormalColor, 0, 1, 1, 1)
145
        self.gridLayout_7.addWidget(self.tableWidgetConnList, 6, 2, 1, 1)
146
        self.imgFileNameLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents)
147
        font = QtGui.QFont()
148
        font.setBold(False)
149
        font.setWeight(50)
150
        self.imgFileNameLabel.setFont(font)
151
        self.imgFileNameLabel.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
152
        self.imgFileNameLabel.setObjectName("imgFileNameLabel")
153
        self.gridLayout_7.addWidget(self.imgFileNameLabel, 2, 0, 1, 1)
154
        self.categoryComboBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
155
        self.categoryComboBox.setObjectName("categoryComboBox")
156
        self.gridLayout_7.addWidget(self.categoryComboBox, 1, 2, 1, 1)
372 157
        self.label_2 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
373
        self.label_2.setMaximumSize(QtCore.QSize(100, 16777215))
158
        self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
374 159
        self.label_2.setObjectName("label_2")
375
        self.gridLayout_6.addWidget(self.label_2, 1, 0, 1, 1)
376
        self.comboBoxHoverColor = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
377
        self.comboBoxHoverColor.setMaximumSize(QtCore.QSize(100, 16777215))
378
        self.comboBoxHoverColor.setObjectName("comboBoxHoverColor")
379
        self.gridLayout_6.addWidget(self.comboBoxHoverColor, 1, 1, 1, 1)
380
        self.gridLayout_7.addLayout(self.gridLayout_6, 5, 0, 1, 1)
160
        self.gridLayout_7.addWidget(self.label_2, 0, 0, 1, 1)
161
        self.lineEdit_DBPath = QtWidgets.QLineEdit(self.scrollAreaWidgetContents)
162
        self.lineEdit_DBPath.setReadOnly(True)
163
        self.lineEdit_DBPath.setObjectName("lineEdit_DBPath")
164
        self.gridLayout_7.addWidget(self.lineEdit_DBPath, 0, 2, 1, 1)
381 165
        self.gridLayout_4.addLayout(self.gridLayout_7, 0, 0, 1, 1)
382 166
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
383 167
        self.verticalLayout.addWidget(self.scrollArea)
384
        self.buttonBox = QtWidgets.QDialogButtonBox(self.widget)
385
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close|QtWidgets.QDialogButtonBox.Save)
386
        self.buttonBox.setObjectName("buttonBox")
387
        self.verticalLayout.addWidget(self.buttonBox)
388 168
        self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1)
389 169
        self.gridLayout_3.addWidget(self.splitter, 0, 0, 1, 1)
170
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
171
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close|QtWidgets.QDialogButtonBox.Save)
172
        self.buttonBox.setObjectName("buttonBox")
173
        self.gridLayout_3.addWidget(self.buttonBox, 1, 0, 1, 1)
390 174

  
391 175
        self.retranslateUi(Dialog)
392 176
        self.buttonBox.accepted.connect(Dialog.accept)
......
396 180
    def retranslateUi(self, Dialog):
397 181
        _translate = QtCore.QCoreApplication.translate
398 182
        Dialog.setWindowTitle(_translate("Dialog", "Symbol Editor"))
399
        self.handButton.setText(_translate("Dialog", "H"))
400
        self.zoomButton.setText(_translate("Dialog", "Zoom"))
401
        self.imgFileNameLabel.setText(_translate("Dialog", "Image File Name"))
402
        self.openImageFileButton.setText(_translate("Dialog", "Open"))
403
        self.nameLabel.setText(_translate("Dialog", "Symbol Name"))
404
        self.typeLabel.setText(_translate("Dialog", "Symbol Type"))
405
        self.originalPointLabel.setText(_translate("Dialog", "Original Point"))
406
        self.addOriginalPointButton.setText(_translate("Dialog", "Add"))
407
        self.connectionPointLabel.setText(_translate("Dialog", "Connection Point"))
408 183
        self.addConnectionPointButton.setText(_translate("Dialog", "Add"))
409 184
        self.pushButtonDelConnPt.setText(_translate("Dialog", "Del"))
410
        self.label.setText(_translate("Dialog", "Normal :"))
411
        self.label_2.setText(_translate("Dialog", "Highlight :"))
185
        self.nameLabel.setText(_translate("Dialog", "Name :"))
186
        self.label.setText(_translate("Dialog", "Category :"))
187
        self.connectionPointLabel.setText(_translate("Dialog", "Connection Point :"))
188
        self.originalPointLabel.setText(_translate("Dialog", "Original Point :"))
189
        self.addOriginalPointButton.setText(_translate("Dialog", "Add"))
190
        self.imgFileNameLabel.setText(_translate("Dialog", "Type :"))
191
        self.label_2.setText(_translate("Dialog", "DB Path :"))
412 192
import Resource_rc
HYTOS/HYTOS/UI/SymbolEditor.ui
6 6
   <rect>
7 7
    <x>0</x>
8 8
    <y>0</y>
9
    <width>862</width>
10
    <height>410</height>
9
    <width>977</width>
10
    <height>563</height>
11 11
   </rect>
12 12
  </property>
13 13
  <property name="minimumSize">
......
35 35
    <normaloff>:/images/HYTOS.png</normaloff>:/images/HYTOS.png</iconset>
36 36
  </property>
37 37
  <layout class="QGridLayout" name="gridLayout_3">
38
   <item row="0" column="0">
38
   <item row="2" column="0">
39
    <widget class="QDialogButtonBox" name="buttonBox">
40
     <property name="standardButtons">
41
      <set>QDialogButtonBox::Close|QDialogButtonBox::Save</set>
42
     </property>
43
    </widget>
44
   </item>
45
   <item row="1" column="0">
39 46
    <widget class="QSplitter" name="splitter">
40 47
     <property name="minimumSize">
41 48
      <size>
......
51 58
       <item row="0" column="1">
52 59
        <layout class="QVBoxLayout" name="verticalLayout_2">
53 60
         <item>
54
          <widget class="QWidget" name="toolWidget" native="true">
55
           <property name="sizePolicy">
56
            <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
57
             <horstretch>0</horstretch>
58
             <verstretch>0</verstretch>
59
            </sizepolicy>
60
           </property>
61
           <property name="maximumSize">
62
            <size>
63
             <width>16777215</width>
64
             <height>16777215</height>
65
            </size>
66
           </property>
67
           <layout class="QHBoxLayout" name="horizontalLayout">
68
            <item>
69
             <layout class="QGridLayout" name="gridLayout_5">
70
              <item row="0" column="2">
71
               <widget class="QPushButton" name="penButton">
72
                <property name="sizePolicy">
73
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
74
                  <horstretch>0</horstretch>
75
                  <verstretch>0</verstretch>
76
                 </sizepolicy>
77
                </property>
78
                <property name="minimumSize">
79
                 <size>
80
                  <width>32</width>
81
                  <height>32</height>
82
                 </size>
83
                </property>
84
                <property name="maximumSize">
85
                 <size>
86
                  <width>32</width>
87
                  <height>32</height>
88
                 </size>
89
                </property>
90
                <property name="text">
91
                 <string/>
92
                </property>
93
                <property name="iconSize">
94
                 <size>
95
                  <width>20</width>
96
                  <height>20</height>
97
                 </size>
98
                </property>
99
               </widget>
100
              </item>
101
              <item row="0" column="0">
102
               <widget class="QPushButton" name="handButton">
103
                <property name="sizePolicy">
104
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
105
                  <horstretch>0</horstretch>
106
                  <verstretch>0</verstretch>
107
                 </sizepolicy>
108
                </property>
109
                <property name="minimumSize">
110
                 <size>
111
                  <width>32</width>
112
                  <height>32</height>
113
                 </size>
114
                </property>
115
                <property name="maximumSize">
116
                 <size>
117
                  <width>32</width>
118
                  <height>32</height>
119
                 </size>
120
                </property>
121
                <property name="text">
122
                 <string>H</string>
123
                </property>
124
                <property name="icon">
125
                 <iconset>
126
                  <normaloff>../res/hand.png</normaloff>../res/hand.png</iconset>
127
                </property>
128
               </widget>
129
              </item>
130
              <item row="0" column="6">
131
               <widget class="QPushButton" name="fitImageButton">
132
                <property name="sizePolicy">
133
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
134
                  <horstretch>0</horstretch>
135
                  <verstretch>0</verstretch>
136
                 </sizepolicy>
137
                </property>
138
                <property name="minimumSize">
139
                 <size>
140
                  <width>32</width>
141
                  <height>32</height>
142
                 </size>
143
                </property>
144
                <property name="maximumSize">
145
                 <size>
146
                  <width>32</width>
147
                  <height>32</height>
148
                 </size>
149
                </property>
150
                <property name="text">
151
                 <string/>
152
                </property>
153
                <property name="iconSize">
154
                 <size>
155
                  <width>20</width>
156
                  <height>20</height>
157
                 </size>
158
                </property>
159
               </widget>
160
              </item>
161
              <item row="1" column="4">
162
               <widget class="QPushButton" name="zoomButton">
163
                <property name="sizePolicy">
164
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
165
                  <horstretch>0</horstretch>
166
                  <verstretch>0</verstretch>
167
                 </sizepolicy>
168
                </property>
169
                <property name="minimumSize">
170
                 <size>
171
                  <width>32</width>
172
                  <height>32</height>
173
                 </size>
174
                </property>
175
                <property name="maximumSize">
176
                 <size>
177
                  <width>32</width>
178
                  <height>32</height>
179
                 </size>
180
                </property>
181
                <property name="text">
182
                 <string>Zoom</string>
183
                </property>
184
               </widget>
185
              </item>
186
              <item row="1" column="5">
187
               <widget class="QPushButton" name="areaZoomButton">
188
                <property name="sizePolicy">
189
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
190
                  <horstretch>0</horstretch>
191
                  <verstretch>0</verstretch>
192
                 </sizepolicy>
193
                </property>
194
                <property name="minimumSize">
195
                 <size>
196
                  <width>32</width>
197
                  <height>32</height>
198
                 </size>
199
                </property>
200
                <property name="maximumSize">
201
                 <size>
202
                  <width>32</width>
203
                  <height>32</height>
204
                 </size>
205
                </property>
206
                <property name="text">
207
                 <string/>
208
                </property>
209
                <property name="iconSize">
210
                 <size>
211
                  <width>20</width>
212
                  <height>20</height>
213
                 </size>
214
                </property>
215
               </widget>
216
              </item>
217
              <item row="0" column="1">
218
               <widget class="QPushButton" name="cropButton">
219
                <property name="sizePolicy">
220
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
221
                  <horstretch>32</horstretch>
222
                  <verstretch>32</verstretch>
223
                 </sizepolicy>
224
                </property>
225
                <property name="minimumSize">
226
                 <size>
227
                  <width>32</width>
228
                  <height>32</height>
229
                 </size>
230
                </property>
231
                <property name="maximumSize">
232
                 <size>
233
                  <width>32</width>
234
                  <height>32</height>
235
                 </size>
236
                </property>
237
                <property name="text">
238
                 <string/>
239
                </property>
240
                <property name="icon">
241
                 <iconset>
242
                  <normaloff>../res/crop.png</normaloff>../res/crop.png</iconset>
243
                </property>
244
                <property name="iconSize">
245
                 <size>
246
                  <width>20</width>
247
                  <height>20</height>
248
                 </size>
249
                </property>
250
               </widget>
251
              </item>
252
              <item row="1" column="0">
253
               <widget class="QPushButton" name="rotateLeftButton">
254
                <property name="sizePolicy">
255
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
256
                  <horstretch>0</horstretch>
257
                  <verstretch>0</verstretch>
258
                 </sizepolicy>
259
                </property>
260
                <property name="minimumSize">
261
                 <size>
262
                  <width>32</width>
263
                  <height>32</height>
264
                 </size>
265
                </property>
266
                <property name="maximumSize">
267
                 <size>
268
                  <width>32</width>
269
                  <height>32</height>
270
                 </size>
271
                </property>
272
                <property name="text">
273
                 <string/>
274
                </property>
275
                <property name="iconSize">
276
                 <size>
277
                  <width>20</width>
278
                  <height>20</height>
279
                 </size>
280
                </property>
281
               </widget>
282
              </item>
283
              <item row="1" column="1">
284
               <widget class="QPushButton" name="rotateRightButton">
285
                <property name="sizePolicy">
286
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
287
                  <horstretch>0</horstretch>
288
                  <verstretch>0</verstretch>
289
                 </sizepolicy>
290
                </property>
291
                <property name="minimumSize">
292
                 <size>
293
                  <width>32</width>
294
                  <height>32</height>
295
                 </size>
296
                </property>
297
                <property name="maximumSize">
298
                 <size>
299
                  <width>32</width>
300
                  <height>32</height>
301
                 </size>
302
                </property>
303
                <property name="text">
304
                 <string/>
305
                </property>
306
                <property name="iconSize">
307
                 <size>
308
                  <width>20</width>
309
                  <height>20</height>
310
                 </size>
311
                </property>
312
               </widget>
313
              </item>
314
              <item row="1" column="3">
315
               <widget class="QPushButton" name="flipVerticalButton">
316
                <property name="sizePolicy">
317
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
318
                  <horstretch>0</horstretch>
319
                  <verstretch>0</verstretch>
320
                 </sizepolicy>
321
                </property>
322
                <property name="minimumSize">
323
                 <size>
324
                  <width>32</width>
325
                  <height>32</height>
326
                 </size>
327
                </property>
328
                <property name="maximumSize">
329
                 <size>
330
                  <width>32</width>
331
                  <height>32</height>
332
                 </size>
333
                </property>
334
                <property name="text">
335
                 <string/>
336
                </property>
337
                <property name="iconSize">
338
                 <size>
339
                  <width>20</width>
340
                  <height>20</height>
341
                 </size>
342
                </property>
343
               </widget>
344
              </item>
345
              <item row="1" column="6">
346
               <widget class="QPushButton" name="initZoomButton">
347
                <property name="sizePolicy">
348
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
349
                  <horstretch>0</horstretch>
350
                  <verstretch>0</verstretch>
351
                 </sizepolicy>
352
                </property>
353
                <property name="minimumSize">
354
                 <size>
355
                  <width>32</width>
356
                  <height>32</height>
357
                 </size>
358
                </property>
359
                <property name="maximumSize">
360
                 <size>
361
                  <width>32</width>
362
                  <height>32</height>
363
                 </size>
364
                </property>
365
                <property name="text">
366
                 <string/>
367
                </property>
368
               </widget>
369
              </item>
370
              <item row="0" column="3">
371
               <widget class="QSpinBox" name="penWidthSpinBox">
372
                <property name="sizePolicy">
373
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
374
                  <horstretch>0</horstretch>
375
                  <verstretch>0</verstretch>
376
                 </sizepolicy>
377
                </property>
378
                <property name="minimumSize">
379
                 <size>
380
                  <width>32</width>
381
                  <height>32</height>
382
                 </size>
383
                </property>
384
                <property name="maximumSize">
385
                 <size>
386
                  <width>16777215</width>
387
                  <height>32</height>
388
                 </size>
389
                </property>
390
                <property name="minimum">
391
                 <number>1</number>
392
                </property>
393
                <property name="maximum">
394
                 <number>5</number>
395
                </property>
396
               </widget>
397
              </item>
398
              <item row="1" column="2">
399
               <widget class="QPushButton" name="flipHorizontalButton">
400
                <property name="sizePolicy">
401
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
402
                  <horstretch>0</horstretch>
403
                  <verstretch>0</verstretch>
404
                 </sizepolicy>
405
                </property>
406
                <property name="minimumSize">
407
                 <size>
408
                  <width>32</width>
409
                  <height>32</height>
410
                 </size>
411
                </property>
412
                <property name="maximumSize">
413
                 <size>
414
                  <width>32</width>
415
                  <height>32</height>
416
                 </size>
417
                </property>
418
                <property name="text">
419
                 <string/>
420
                </property>
421
                <property name="iconSize">
422
                 <size>
423
                  <width>20</width>
424
                  <height>20</height>
425
                 </size>
426
                </property>
427
               </widget>
428
              </item>
429
              <item row="0" column="5">
430
               <widget class="QSpinBox" name="eraserSpinBox">
431
                <property name="sizePolicy">
432
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
433
                  <horstretch>0</horstretch>
434
                  <verstretch>0</verstretch>
435
                 </sizepolicy>
436
                </property>
437
                <property name="minimumSize">
438
                 <size>
439
                  <width>0</width>
440
                  <height>32</height>
441
                 </size>
442
                </property>
443
                <property name="maximumSize">
444
                 <size>
445
                  <width>16777215</width>
446
                  <height>32</height>
447
                 </size>
448
                </property>
449
                <property name="minimum">
450
                 <number>1</number>
451
                </property>
452
                <property name="maximum">
453
                 <number>5</number>
454
                </property>
455
               </widget>
456
              </item>
457
              <item row="0" column="4">
458
               <widget class="QPushButton" name="eraserButton">
459
                <property name="sizePolicy">
460
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
461
                  <horstretch>0</horstretch>
462
                  <verstretch>0</verstretch>
463
                 </sizepolicy>
464
                </property>
465
                <property name="minimumSize">
466
                 <size>
467
                  <width>32</width>
468
                  <height>32</height>
469
                 </size>
470
                </property>
471
                <property name="maximumSize">
472
                 <size>
473
                  <width>32</width>
474
                  <height>32</height>
475
                 </size>
476
                </property>
477
                <property name="text">
478
                 <string/>
479
                </property>
480
                <property name="iconSize">
481
                 <size>
482
                  <width>20</width>
483
                  <height>20</height>
484
                 </size>
485
                </property>
486
               </widget>
487
              </item>
488
              <item row="0" column="7">
489
               <widget class="QPushButton" name="areaEraserButton">
490
                <property name="sizePolicy">
491
                 <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
492
                  <horstretch>0</horstretch>
493
                  <verstretch>0</verstretch>
494
                 </sizepolicy>
495
                </property>
496
                <property name="minimumSize">
497
                 <size>
498
                  <width>32</width>
499
                  <height>32</height>
500
                 </size>
501
                </property>
502
                <property name="maximumSize">
503
                 <size>
504
                  <width>32</width>
505
                  <height>32</height>
506
                 </size>
507
                </property>
508
                <property name="text">
509
                 <string/>
510
                </property>
511
                <property name="iconSize">
512
                 <size>
513
                  <width>20</width>
514
                  <height>20</height>
515
                 </size>
516
                </property>
517
               </widget>
518
              </item>
519
             </layout>
520
            </item>
521
           </layout>
522
          </widget>
523
         </item>
524
         <item>
525 61
          <widget class="QWidget" name="imageViewContainer" native="true">
526 62
           <layout class="QVBoxLayout" name="verticalLayout_3">
527 63
            <item>
......
576 112
              <x>0</x>
577 113
              <y>0</y>
578 114
              <width>478</width>
579
              <height>341</height>
115
              <height>494</height>
580 116
             </rect>
581 117
            </property>
582 118
            <property name="minimumSize">
......
609 145
               <property name="bottomMargin">
610 146
                <number>6</number>
611 147
               </property>
612
               <item row="0" column="0">
613
                <widget class="QLabel" name="imgFileNameLabel">
614
                 <property name="font">
615
                  <font>
616
                   <weight>75</weight>
617
                   <bold>true</bold>
618
                  </font>
619
                 </property>
620
                 <property name="text">
621
                  <string>Image File Name</string>
622
                 </property>
623
                </widget>
624
               </item>
625
               <item row="0" column="1">
626
                <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0">
148
               <item row="5" column="2">
149
                <layout class="QHBoxLayout" name="horizontalLayout_6">
627 150
                 <item>
628
                  <widget class="QLineEdit" name="imageFileLineEdit">
151
                  <widget class="QLineEdit" name="connectionPointLineEdit">
629 152
                   <property name="readOnly">
630 153
                    <bool>true</bool>
631 154
                   </property>
632 155
                  </widget>
633 156
                 </item>
634 157
                 <item>
635
                  <widget class="QPushButton" name="openImageFileButton">
158
                  <widget class="QPushButton" name="addConnectionPointButton">
159
                   <property name="minimumSize">
160
                    <size>
161
                     <width>40</width>
162
                     <height>0</height>
163
                    </size>
164
                   </property>
165
                   <property name="maximumSize">
166
                    <size>
167
                     <width>40</width>
168
                     <height>16777215</height>
169
                    </size>
170
                   </property>
171
                   <property name="text">
172
                    <string>Add</string>
173
                   </property>
174
                  </widget>
175
                 </item>
176
                 <item>
177
                  <widget class="QPushButton" name="pushButtonDelConnPt">
636 178
                   <property name="minimumSize">
637 179
                    <size>
638
                     <width>0</width>
180
                     <width>40</width>
639 181
                     <height>0</height>
640 182
                    </size>
641 183
                   </property>
......
646 188
                    </size>
647 189
                   </property>
648 190
                   <property name="text">
649
                    <string>Open</string>
191
                    <string>Del</string>
650 192
                   </property>
651 193
                  </widget>
652 194
                 </item>
653 195
                </layout>
654 196
               </item>
655
               <item row="1" column="0">
197
               <item row="3" column="0">
656 198
                <widget class="QLabel" name="nameLabel">
657 199
                 <property name="font">
658 200
                  <font>
659
                   <weight>75</weight>
660
                   <bold>true</bold>
201
                   <weight>50</weight>
202
                   <bold>false</bold>
661 203
                  </font>
662 204
                 </property>
663 205
                 <property name="text">
664
                  <string>Symbol Name</string>
206
                  <string>Name :</string>
207
                 </property>
208
                 <property name="alignment">
209
                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
665 210
                 </property>
666 211
                </widget>
667 212
               </item>
668
               <item row="1" column="1">
669
                <widget class="QLineEdit" name="nameLineEdit"/>
213
               <item row="1" column="0">
214
                <widget class="QLabel" name="label">
215
                 <property name="text">
216
                  <string>Category :</string>
217
                 </property>
218
                 <property name="alignment">
219
                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
220
                 </property>
221
                </widget>
670 222
               </item>
671
               <item row="2" column="0">
672
                <widget class="QLabel" name="typeLabel">
223
               <item row="5" column="0">
224
                <widget class="QLabel" name="connectionPointLabel">
673 225
                 <property name="font">
674 226
                  <font>
675
                   <weight>75</weight>
676
                   <bold>true</bold>
227
                   <weight>50</weight>
228
                   <bold>false</bold>
677 229
                  </font>
678 230
                 </property>
679 231
                 <property name="text">
680
                  <string>Symbol Type</string>
232
                  <string>Connection Point :</string>
233
                 </property>
234
                 <property name="alignment">
235
                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
681 236
                 </property>
682 237
                </widget>
683 238
               </item>
684
               <item row="2" column="1">
685
                <widget class="QComboBox" name="typeComboBox"/>
239
               <item row="3" column="2">
240
                <widget class="QComboBox" name="nameComboBox"/>
686 241
               </item>
687
               <item row="3" column="0">
242
               <item row="4" column="0">
688 243
                <widget class="QLabel" name="originalPointLabel">
689 244
                 <property name="sizePolicy">
690 245
                  <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
......
694 249
                 </property>
695 250
                 <property name="font">
696 251
                  <font>
697
                   <weight>75</weight>
698
                   <bold>true</bold>
252
                   <weight>50</weight>
253
                   <bold>false</bold>
699 254
                  </font>
700 255
                 </property>
701 256
                 <property name="text">
702
                  <string>Original Point</string>
257
                  <string>Original Point :</string>
703 258
                 </property>
704 259
                 <property name="alignment">
705
                  <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
260
                  <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
706 261
                 </property>
707 262
                </widget>
708 263
               </item>
709
               <item row="3" column="1">
264
               <item row="4" column="2">
710 265
                <layout class="QHBoxLayout" name="horizontalLayout_4">
711 266
                 <item>
712 267
                  <widget class="QLineEdit" name="originalPointLineEdit">
......
730 285
                 </item>
731 286
                </layout>
732 287
               </item>
733
               <item row="4" column="0">
734
                <widget class="QLabel" name="connectionPointLabel">
288
               <item row="2" column="2">
289
                <widget class="QComboBox" name="typeComboBox"/>
290
               </item>
291
               <item row="6" column="2">
292
                <widget class="QTableWidget" name="tableWidgetConnList">
293
                 <attribute name="verticalHeaderVisible">
294
                  <bool>false</bool>
295
                 </attribute>
296
                </widget>
297
               </item>
298
               <item row="2" column="0">
299
                <widget class="QLabel" name="imgFileNameLabel">
735 300
                 <property name="font">
736 301
                  <font>
737
                   <weight>75</weight>
738
                   <bold>true</bold>
302
                   <weight>50</weight>
303
                   <bold>false</bold>
739 304
                  </font>
740 305
                 </property>
741 306
                 <property name="text">
742
                  <string>Connection Point</string>
... 이 차이점은 표시할 수 있는 최대 줄수를 초과해서 이 차이점은 잘렸습니다.

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)