프로젝트

일반

사용자정보

개정판 349ecea3

ID349ecea3898e9d57433e32265d3326244210b33a
상위 02876fd9
하위 2725024d

함의성이(가) 2년 이상 전에 추가함

add OPCRelation data validation

Change-Id: I832a40dc006722eb36d947403c8fc74773f1a3e7

차이점 보기:

DTI_PID/DTI_PID/AppRibbon.py
260 260
            pane.ui.toolButtonHMBData.clicked.connect(main_wnd.onHMBData)
261 261
            pane.ui.toolButtonEngInfoList.clicked.connect(main_wnd.showItemDataList)
262 262
            pane.ui.toolButtonSpecialItemTypes.clicked.connect(main_wnd.on_show_special_item_types)
263
            pane.ui.toolButtonSpecialItemTypes.setHidden(True)
263 264
            pane.ui.toolButtonOPCRelation.clicked.connect(main_wnd.on_show_opc_relation)
264 265
            pane.ui.toolButtonCodeTable.clicked.connect(main_wnd.onShowCodeTable)
265 266
            pane.ui.toolButtonCustomCodeTable.clicked.connect(main_wnd.onShowCustomCodeTable)
......
316 317
            pane.ui.toolButtonPDFToImage.clicked.connect(main_wnd.onConvertPDFToImage)
317 318
            pane.ui.toolButtonImportTextFromCAD.clicked.connect(main_wnd.on_import_text_from_cad)
318 319
            pane.ui.toolButtonExportPDF.clicked.connect(main_wnd.on_export_PDF)
320
            pane.ui.toolButtonExportPDF.setHidden(True)
319 321
            pane.ui.toolButtonImportTextFromCADforInstrument.clicked.connect(main_wnd.on_import_text_from_cad_for_instrument)
320 322
            pane.ui.toolButtonSymbolThicknessReinforcement.clicked.connect(main_wnd.onSymbolThickness)
321 323
            pane.ui.toolButtonDataTransfer.clicked.connect(main_wnd.on_show_data_transfer)
DTI_PID/DTI_PID/OPCRelationDialog.py
32 32
        self.ui.tableWidgetSource.installEventFilter(self)
33 33
        self.ui.tableWidgetTarget.itemDoubleClicked.connect(self.on_target_item_double_clicked)
34 34
        self.ui.pushButtonAutoFill.clicked.connect(self.on_auto_fill_clicked)
35
        self.ui.pushButtonAutoFillClear.clicked.connect(self.on_auto_fill_clear_clicked)
35 36
        self.ui.pushButtonLineNoAttr.clicked.connect(self.on_line_no_target_clicked)
36 37
        self.ui.pushButtonSymbol.clicked.connect(self.on_symbol_target_clicked)
37 38
        self.init_table_widget()
......
112 113

  
113 114
            row += 1
114 115

  
115
        self.on_auto_fill_clicked(for_data_check=True)
116
        self.auto_fill(for_data_check=True)
116 117

  
117 118
        self.ui.tableWidgetTarget.setColumnCount(4)
118 119
        self.ui.tableWidgetTarget.setHorizontalHeaderLabels([self.tr('Drawing'), self.tr('Line No'), self.tr('Symbol'), self.tr('OPC')])
......
208 209
            self.ui.tableWidgetTarget.setRowCount(len(opcs))
209 210
            row = 0
210 211
            for opc in opcs:
212
                isUsed = False
213
                for _row in range(self.ui.tableWidgetSource.rowCount()):
214
                    _item = self.ui.tableWidgetSource.item(_row, 6)
215
                    if _item and _item.text() == opc['OPC']:
216
                        isUsed = True
217
                        break
218

  
211 219
                item = QTableWidgetItem(opc['Drawing'])
212 220
                item.setFlags(Qt.ItemIsEnabled)
213 221
                item.tag = opc['tag']
......
221 229
                item = QTableWidgetItem(opc['OPC'])
222 230
                item.setFlags(Qt.ItemIsEnabled)
223 231
                self.ui.tableWidgetTarget.setItem(row, 3, item)
232
                if isUsed:
233
                    item.setBackground(Qt.yellow)
224 234
                row += 1
225 235

  
226 236
    def on_line_no_target_clicked(self):
......
273 283
        keys = configs[0].value if configs else ''
274 284
        self.target = keys.split(',') if keys else []
275 285

  
276
    def on_auto_fill_clicked(self, for_data_check=False):
286
    def on_auto_fill_clicked(self):
287
        self.auto_fill()
288

  
289
    def on_auto_fill_clear_clicked(self):
290
        self.auto_fill(for_data_check=False, clear=True)
291

  
292
    def auto_fill(self, for_data_check=False, clear=False):
277 293
        """ fill target opc if only one line no exists """
278 294
        if self.error:
279 295
            QMessageBox.about(self, self.tr('Error'), self.tr('Please check OPC data.'))
280 296

  
281 297
        self.load_line_no_keys()
282 298

  
299
        if clear:
300
            for row in range(self.ui.tableWidgetSource.rowCount()):
301
                item = QTableWidgetItem('')
302
                item.setFlags(Qt.ItemIsEnabled)
303
                self.ui.tableWidgetSource.setItem(row, 4, item)
304
                item = QTableWidgetItem('')
305
                item.setFlags(Qt.ItemIsEnabled)
306
                self.ui.tableWidgetSource.setItem(row, 5, item)
307
                item = QTableWidgetItem('')
308
                item.setFlags(Qt.ItemIsEnabled)
309
                self.ui.tableWidgetSource.setItem(row, 6, item)
310

  
283 311
        for row in range(self.ui.tableWidgetSource.rowCount()):
284 312
            drawing = self.ui.tableWidgetSource.item(row, 0).text()
313
            if not for_data_check and self.ui.tableWidgetSource.item(row, 4).text():
314
                continue
285 315
            line_no_item = self.ui.tableWidgetSource.item(row, 0).tag
286 316
            symbol_connection_index = self.ui.tableWidgetSource.item(row, 1).tag
287 317
            opcs = [opc for opc in self._opcs if line_no_item and opc['tag'] and line_no_item is not opc['tag'] \
......
299 329
                    item = self.ui.tableWidgetSource.item(row, 6)
300 330
                    if not hasattr(item, 'tag'):
301 331
                        item.setBackground(Qt.yellow)
302
            elif len(opcs) == 1 and not for_data_check:
303
                item = QTableWidgetItem(opcs[0]['Drawing'])
304
                item.setFlags(Qt.ItemIsEnabled)
305
                self.ui.tableWidgetSource.setItem(row, 4, item)
306
                item = QTableWidgetItem(opcs[0]['Line No'])
307
                item.setFlags(Qt.ItemIsEnabled)
308
                self.ui.tableWidgetSource.setItem(row, 5, item)
309
                item = QTableWidgetItem(opcs[0]['OPC'])
310
                item.setFlags(Qt.ItemIsEnabled)
311
                self.ui.tableWidgetSource.setItem(row, 6, item)
332
            elif len(opcs) == 1:
333
                _drawing = opcs[0]['Drawing']
334
                _line_no_item = opcs[0]['tag']
335
                _symbol_connection_index = opcs[0]['Index']
336
                _opcs = [opc for opc in self._opcs if _line_no_item and opc['tag'] and _line_no_item is not opc['tag'] \
337
                                                    and opc['Drawing'] != _drawing and self.compare_line_no(_line_no_item, opc['tag']) \
338
                                                        and opc['Index'] != _symbol_connection_index]
339
                if not for_data_check and len(_opcs) == 1 and _opcs[0] is opcs[0]:
340
                    item = QTableWidgetItem(opcs[0]['Drawing'])
341
                    item.setFlags(Qt.ItemIsEnabled)
342
                    self.ui.tableWidgetSource.setItem(row, 4, item)
343
                    item = QTableWidgetItem(opcs[0]['Line No'])
344
                    item.setFlags(Qt.ItemIsEnabled)
345
                    self.ui.tableWidgetSource.setItem(row, 5, item)
346
                    item = QTableWidgetItem(opcs[0]['OPC'])
347
                    item.setFlags(Qt.ItemIsEnabled)
348
                    self.ui.tableWidgetSource.setItem(row, 6, item)
349
                elif len(_opcs) > 1:
350
                    item = self.ui.tableWidgetSource.item(row, 6)
351
                    if not hasattr(item, 'tag'):
352
                        item.setBackground(Qt.magenta)
353
                elif for_data_check and not self.ui.tableWidgetSource.item(row, 4).text():
354
                    item = self.ui.tableWidgetSource.item(row, 6)
355
                    if not hasattr(item, 'tag'):
356
                        item.setBackground(Qt.cyan)
312 357

  
313 358
        if for_data_check:
314 359
            self.check_opc_data()
360
        else:
361
            QMessageBox.about(self, self.tr("Information"), self.tr('Auto Fill has completed.'))
315 362

  
316 363
    def on_target_item_double_clicked(self, item):
317 364
        """ assign target opc with double clicked item """
DTI_PID/DTI_PID/UI/OPCRelation.ui
36 36
      </widget>
37 37
     </item>
38 38
     <item>
39
      <widget class="QPushButton" name="pushButtonAutoFillClear">
40
       <property name="text">
41
        <string>Auto Fill with Clear</string>
42
       </property>
43
      </widget>
44
     </item>
45
     <item>
39 46
      <spacer name="horizontalSpacer">
40 47
       <property name="orientation">
41 48
        <enum>Qt::Horizontal</enum>
DTI_PID/DTI_PID/UI/OPCRelation_UI.py
22 22
        self.pushButtonAutoFill.setMaximumSize(QtCore.QSize(16777215, 20))
23 23
        self.pushButtonAutoFill.setObjectName("pushButtonAutoFill")
24 24
        self.horizontalLayout.addWidget(self.pushButtonAutoFill)
25
        self.pushButtonAutoFillClear = QtWidgets.QPushButton(OPCRelationDialog)
26
        self.pushButtonAutoFillClear.setObjectName("pushButtonAutoFillClear")
27
        self.horizontalLayout.addWidget(self.pushButtonAutoFillClear)
25 28
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
26 29
        self.horizontalLayout.addItem(spacerItem)
27 30
        self.pushButtonSymbol = QtWidgets.QPushButton(OPCRelationDialog)
......
81 84
        _translate = QtCore.QCoreApplication.translate
82 85
        OPCRelationDialog.setWindowTitle(_translate("OPCRelationDialog", "OPC Relation"))
83 86
        self.pushButtonAutoFill.setText(_translate("OPCRelationDialog", "Auto Fill"))
87
        self.pushButtonAutoFillClear.setText(_translate("OPCRelationDialog", "Auto Fill with Clear"))
84 88
        self.pushButtonSymbol.setText(_translate("OPCRelationDialog", "Symbol Setting"))
85 89
        self.pushButtonLineNoAttr.setText(_translate("OPCRelationDialog", "Line No. Key Setting"))
86 90
        self.tableWidgetSource.setSortingEnabled(True)

내보내기 Unified diff

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