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 """
|