프로젝트

일반

사용자정보

개정판 d0172482

IDd01724820c4cde7568bcb82f6fe334ffd0ba12b8
상위 e83628ed
하위 6e559731, fbf04b7b, 7552be56

백흠경이(가) 약 6년 전에 추가함

issue #567: add a function to lock item's attribute

Change-Id: I6b1b8e91cf3cd43b92d6dc2907a733e822e42950

차이점 보기:

DTI_PID/DTI_PID/ItemPropertyTableWidget.py
41 41
    NOTE = 2
42 42
    LINE_NO = 3
43 43

  
44
class QCustomCheckBox(QCheckBox):
45
    def __init__(self, table, row, col):
46
        QCheckBox.__init__(self)
47
        self.table = table
48
        self.row = row
49
        self.col = col
50

  
51
    def state_changed(self, state):
52
        """ check box state is changed """
53
        if self.col == 0:
54
            widget = self.table.cellWidget(self.row, 3)
55
            if widget:
56
                widget.setEnabled(False) if state else widget.setEnabled(True)
57

  
58
            item = self.table.item(self.row, 3)
59
            if item:
60
                item.setFlags(Qt.ItemIsEnabled) if state else item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsEditable|Qt.ItemIsSelectable)
61
                item.setBackground(Qt.lightGray) if state else item.setBackground(Qt.white)
62
        elif self.col == 3:
63
            cell = self.table.item(self.row, 1)
64
            if cell:
65
                data = cell.data(Qt.UserRole)
66
                if data is not None:
67
                    if self.table._item: self.table._item.set_property(data.Attribute, self.isChecked())
68

  
44 69
class QItemPropertyTableWidget(QTableWidget):
45 70
    def __init__(self, mainWindow):
46 71
        QTableWidget.__init__(self)
......
68 93

  
69 94
            if type(item) is QEngineeringLineItem:
70 95
                self.initTitleCell(item)
71
                self.setItem(0, 1, QTableWidgetItem(str(item.uid)))
72
                owner_item = QTableWidgetItem('{}'.format('None' if item.owner is None else str(item.owner)))
73
                icon = QtGui.QIcon()
74
                icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
75
                owner_item.setIcon(icon)
96
                self.setItem(0, 3, QTableWidgetItem(str(item.uid)))
97

  
98
                """ show icon item """
76 99
                attr = SymbolAttr()
77 100
                attr.AttributeType = "OWNER"
78
                self.item(1, 0).setData(Qt.UserRole, attr)
101
                self.show_icon_item(1, 2, attr)
102
                self.item(1, 1).setData(Qt.UserRole, attr)
79 103

  
80
                self.setItem(1, 1, owner_item)
104
                owner_item = QTableWidgetItem('{}'.format('None' if item.owner is None else str(item.owner)))
105
                self.setItem(1, 3, owner_item)
81 106

  
82 107
                pt = item.startPoint()
83
                key_item = QTableWidgetItem("시작점")
108
                key_item = QTableWidgetItem(self.tr("시작점"))
109
                key_item.setFlags(Qt.ItemIsEnabled)
84 110
                key_item.setBackground(Qt.lightGray)
85
                self.setItem(3, 0, key_item)
86
                self.setItem(3, 1, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
111
                self.setItem(3, 1, key_item)
112
                self.setItem(3, 3, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
87 113
                pt = item.endPoint()
88
                key_item = QTableWidgetItem("끝점")
114
                key_item = QTableWidgetItem(self.tr("끝점"))
115
                key_item.setFlags(Qt.ItemIsEnabled)
89 116
                key_item.setBackground(Qt.lightGray)
90
                self.setItem(4, 0, key_item)
91
                self.setItem(4, 1, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
117
                self.setItem(4, 1, key_item)
118
                self.setItem(4, 3, QTableWidgetItem('({},{})'.format(pt[0], pt[1])))
92 119
                self.show_item_connectors(item)
93 120
            elif issubclass(type(item), SymbolSvgItem):
94 121
                self.onSymbolClicked(item)
......
114 141
        @history    humkyung 2018.07.08 show column header
115 142
    '''
116 143
    def initResultPropertyTableWidget(self):
117
        self.setColumnCount(2)
118
        self.setHorizontalHeaderLabels(['Name', 'Value'])
119
        self.horizontalHeaderItem(0).setSizeHint(QSize(25, 25))
144
        self.setColumnCount(4)
145
        self.setHorizontalHeaderLabels(['', 'Name', '', 'Value'])
146
        self.setColumnWidth(0, 10)
147
        self.setColumnWidth(1, 20)
148
        self.setColumnWidth(2, 10)
120 149
        self.setRowCount(13)
121 150
        self.verticalHeader().hide()
122 151
        self.horizontalHeader().setStretchLastSection(True)
......
129 158
    '''
130 159
    @pyqtSlot(SymbolSvgItem)
131 160
    def onSymbolClicked(self, symbol):
132
        if issubclass(type(symbol), SymbolSvgItem):
133
            self._item = symbol
134
            self.symbolChanged(symbol)
135
        elif type(symbol) is QEngineeringLineNoTextItem:
136
            self.lineNoChanged(symbol)
161
        try:
162
            self.blockSignals(True)
163
            if issubclass(type(symbol), SymbolSvgItem):
164
                self._item = symbol
165
                self.symbolChanged(symbol)
166
            elif type(symbol) is QEngineeringLineNoTextItem:
167
                self.lineNoChanged(symbol)
168
        finally:
169
            self.blockSignals(True)
137 170

  
138 171
    '''
139 172
        @brief      show drawing' attributes
......
142 175
    '''
143 176
    @pyqtSlot(Drawing)
144 177
    def onDrawingClicked(self, drawing):
145
        self.setRowCount(len(drawing.attrs))
146

  
147
        row = 0
148
        for attr in drawing.attrs:
149
            name = attr[0]
150
            item = QTableWidgetItem(name)
151
            item.setFlags(Qt.ItemIsEnabled)
152
            item.setBackground(Qt.lightGray)
153
            self.setItem(row, 0, item)
154

  
155
            value = attr[1]
156
            item = QTableWidgetItem(value)
157
            item.setFlags(Qt.ItemIsEnabled)
158
            self.setItem(row, 1, item)
178
        try:
179
            self.blockSignals(True)
180
            self.setRowCount(len(drawing.attrs))
159 181

  
160
            row = row + 1
182
            row = 0
183
            for attr in drawing.attrs:
184
                name = attr[0]
185
                item = QTableWidgetItem(name)
186
                item.setFlags(Qt.ItemIsEnabled)
187
                item.setBackground(Qt.lightGray)
188
                self.setItem(row, 0, item)
189

  
190
                value = attr[1]
191
                item = QTableWidgetItem(value)
192
                item.setFlags(Qt.ItemIsEnabled)
193
                self.setItem(row, 1, item)
194

  
195
                row = row + 1
196
        finally:
197
            self.blockSignals(False)
161 198

  
162 199
    '''
163 200
        @brief      Slot to accept Note item click event
......
167 204
    '''
168 205
    @pyqtSlot(str, dict)
169 206
    def onNoteClicked(self, noteNoStr, noteContentsList):
170
        self.noteChanged(noteNoStr, noteContentsList)
207
        try:
208
            self.blockSignals(True)
209
            self.noteChanged(noteNoStr, noteContentsList)
210
        finally:
211
            self.blockSignals(False)
171 212

  
172 213
    '''
173 214
        @brief      Slot to accept Line No Item Click event
......
177 218
    '''
178 219
    @pyqtSlot(QEngineeringAbstractItem)
179 220
    def onLineNoClicked(self, item):
180
        self.lineNoChanged(item)
221
        try:
222
            self.blockSignals(True)
223
            self.lineNoChanged(item)
224
        finally:
225
            self.blockSignals(False)
181 226
        
182 227
    '''
183 228
        @brief      Reset table with new SymbolSvgItem
......
230 275

  
231 276
        try:
232 277
            self.clear()
233
            self.setHorizontalHeaderLabels(['Name', 'Value'])
234
            self.horizontalHeaderItem(0).setSizeHint(QSize(25, 25))
278
            self.setHorizontalHeaderLabels(['', 'Name', '', 'Value'])
279
            self.setColumnWidth(0, 20)
280
            self.setColumnWidth(1, 80)
281
            self.setColumnWidth(2, 20)
235 282
            if type(item) is QEngineeringSpecBreakItem:
236 283
                self.setRowCount(7)
237
                self.setItem(0, 0, QTableWidgetItem("UID"))
238
                self.setItem(1, 0, QTableWidgetItem("심볼명"))
239
                self.setItem(2, 0, QTableWidgetItem("타입"))
240
                self.setItem(3, 0, QTableWidgetItem("각도"))
241
                self.setItem(4, 0, QTableWidgetItem("원점"))
242
                self.setItem(5, 0, QTableWidgetItem("OWNER"))
243
                self.setItem(6, 0, QTableWidgetItem("Set Specs"))
284
                self.setItem(0, 1, QTableWidgetItem("UID"))
285
                self.setItem(1, 1, QTableWidgetItem("심볼명"))
286
                self.setItem(2, 1, QTableWidgetItem("타입"))
287
                self.setItem(3, 1, QTableWidgetItem("각도"))
288
                self.setItem(4, 1, QTableWidgetItem("원점"))
289
                self.setItem(5, 1, QTableWidgetItem("OWNER"))
290
                self.setItem(6, 1, QTableWidgetItem("Set Specs"))
244 291
            elif type(item) is QEngineeringErrorItem:
245 292
                self.setRowCount(7)
246
                self.setItem(0, 0, QTableWidgetItem("UID"))
247
                self.setItem(1, 0, QTableWidgetItem("심볼명"))
248
                self.setItem(2, 0, QTableWidgetItem("타입"))
249
                self.setItem(3, 0, QTableWidgetItem("각도"))
250
                self.setItem(4, 0, QTableWidgetItem("원점"))
251
                self.setItem(5, 0, QTableWidgetItem("OWNER"))
252
                self.setItem(6, 0, QTableWidgetItem("Message"))
293
                self.setItem(0, 1, QTableWidgetItem("UID"))
294
                self.setItem(1, 1, QTableWidgetItem("심볼명"))
295
                self.setItem(2, 1, QTableWidgetItem("타입"))
296
                self.setItem(3, 1, QTableWidgetItem("각도"))
297
                self.setItem(4, 1, QTableWidgetItem("원점"))
298
                self.setItem(5, 1, QTableWidgetItem("OWNER"))
299
                self.setItem(6, 1, QTableWidgetItem("Message"))
253 300
            elif issubclass(type(item), SymbolSvgItem):
254 301
                self.setRowCount(6)
255
                self.setItem(0, 0, QTableWidgetItem("UID"))
256
                self.setItem(1, 0, QTableWidgetItem("심볼명"))
257
                self.setItem(2, 0, QTableWidgetItem("타입"))
258
                self.setItem(3, 0, QTableWidgetItem("각도"))
259
                self.setItem(4, 0, QTableWidgetItem("원점"))
260
                self.setItem(5, 0, QTableWidgetItem("OWNER"))
302
                self.setItem(0, 1, QTableWidgetItem("UID"))
303
                self.setItem(1, 1, QTableWidgetItem("심볼명"))
304
                self.setItem(2, 1, QTableWidgetItem("타입"))
305
                self.setItem(3, 1, QTableWidgetItem("각도"))
306
                self.setItem(4, 1, QTableWidgetItem("원점"))
307
                self.setItem(5, 1, QTableWidgetItem("OWNER"))
261 308
            elif type(item) is QEngineeringNoteItem:
262 309
                self.setRowCount(2)
263
                self.setItem(0, 0, QTableWidgetItem("노트번호"))
264
                self.setItem(1, 0, QTableWidgetItem("설명"))
310
                self.setItem(0, 1, QTableWidgetItem("노트번호"))
311
                self.setItem(1, 1, QTableWidgetItem("설명"))
265 312
            elif type(item) is QEngineeringLineNoTextItem:
266 313
                self.setRowCount(1)
267
                self.setItem(0, 0, QTableWidgetItem("UID"))
314
                self.setItem(0, 1, QTableWidgetItem("UID"))
268 315
            elif type(item) is QEngineeringLineItem:
269 316
                self.setRowCount(5)
270
                self.setItem(0, 0, QTableWidgetItem('UID'))
271
                self.setItem(1, 0, QTableWidgetItem('OWNER'))
317
                self.setItem(0, 1, QTableWidgetItem('UID'))
318
                self.setItem(1, 1, QTableWidgetItem('OWNER'))
272 319
                widgetItem = QTableWidgetItem("타입")
273 320
                widgetItem.setData(Qt.UserRole, item)
274
                self.setItem(2, 0, widgetItem)
321
                self.setItem(2, 1, widgetItem)
275 322
                self._lineTypeComboBox = QComboBox(self)
276 323
                self._lineTypeComboBox.tag = widgetItem
277 324
                appDocData = AppDocData.instance()
278 325
                for lineType in LineTypeConditions.items():
279 326
                    self._lineTypeComboBox.addItem(lineType.name)
280
                self.setCellWidget(2, 1, self._lineTypeComboBox)
327
                self.setCellWidget(2, 3, self._lineTypeComboBox)
281 328
                self._lineTypeComboBox.setCurrentText(item.lineType)
282 329
                self._lineTypeComboBox.currentIndexChanged.connect(self.onLineTypeChanged)
283 330

  
284 331
            for index in range(self.rowCount()):
285
                item = self.item(index, 0)
332
                item = self.item(index, 1)
286 333
                if item is not None:
287 334
                    item.setFlags(Qt.ItemIsEnabled)
288 335
                    item.setBackground(Qt.lightGray)
......
303 350
        if type(data) is QEngineeringLineItem:
304 351
            data.lineType = lineType
305 352

  
353
    def show_icon_item(self, row, col, prop):
354
        """ show icon item on grid """
355
        from PyQt5 import QtGui
356

  
357
        if prop.is_selectable or prop.AttributeType == 'OWNER' or prop.AttributeType == 'CONN':
358
            icon = QtGui.QIcon()
359
            icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
360
            icon_item = QTableWidgetItem('')
361
            icon_item.setFlags(Qt.ItemIsEnabled)
362
            icon_item.setIcon(icon)
363
            self.setItem(row, col, icon_item)
364
        elif prop.AttributeType == "String":
365
            icon = QtGui.QIcon()
366
            icon.addPixmap(QtGui.QPixmap(":/newPrefix/type.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
367
            icon_item = QTableWidgetItem()
368
            icon_item.setIcon(icon)
369
            self.setItem(row, col, icon_item)
370
        else:
371
            item = QTableWidgetItem()
372
            item.setFlags(Qt.ItemIsEditable)
373
            self.setItem(row, col, item)
374

  
306 375
    def show_item_properties(self, item):
307 376
        """ show item properties on grid """
308 377
        from PyQt5 import QtGui
......
312 381
            self.setRowCount(row + len(item.properties))
313 382

  
314 383
            for prop,value in item.properties.items():
384
                """ show freeze state """
385
                checkbox = QCustomCheckBox(self, row, 0)
386
                checkbox.setChecked(prop.Freeze)
387
                checkbox.stateChanged.connect(checkbox.state_changed)
388
                self.setCellWidget(row, 0, checkbox)
389

  
315 390
                """ show property name """
316 391
                key_item = QTableWidgetItem(prop.DisplayAttribute if prop.DisplayAttribute else prop.Attribute)
317 392
                key_item.setFlags(Qt.ItemIsEnabled)
318 393
                key_item.setBackground(Qt.lightGray)
319 394
                key_item.setData(Qt.UserRole, prop)
320
                self.setItem(row, 0, key_item)
395
                self.setItem(row, 1, key_item)
396

  
397
                """ show icon item """
398
                self.show_icon_item(row, 2, prop)
321 399

  
322 400
                """ show property value """
323 401
                if prop.is_selectable:
......
326 404
                        value_item = QTableWidgetItem(eval(prop.Expression))
327 405
                    else:
328 406
                        value_item = QTableWidgetItem(str(value.uid) if value else '')
329
                    icon = QtGui.QIcon()
330
                    icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
331
                    value_item.setIcon(icon)
332 407
                    value_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
333
                    self.setItem(row, 1, value_item)
408
                    self.setItem(row, 3, value_item)
334 409
                else:
335 410
                    if prop.AttributeType == 'Boolean':
336
                        self.checkbox_cell = QCheckBox()
411
                        self.checkbox_cell = QCustomCheckBox(self, row, 3)
337 412
                        self.checkbox_cell.setChecked(True if value and str(value) == 'True' else False)
338
                        self.checkbox_cell.stateChanged.connect(self.bool_state_changed)
413
                        self.checkbox_cell.stateChanged.connect(self.checkbox_cell.state_changed)
339 414
                        if prop.Attribute == 'Freeze': self.checkbox_cell.stateChanged.connect(item.freeze_item.update_freeze)
340
                        self.setCellWidget(row, 1, self.checkbox_cell)
415
                        self.setCellWidget(row, 3, self.checkbox_cell)
341 416
                    else:
342 417
                        value_item = QTableWidgetItem(value if value else '')
343
                        if prop.AttributeType == "String":
344
                            icon = QtGui.QIcon()
345
                            icon.addPixmap(QtGui.QPixmap(":/newPrefix/type.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
346
                            value_item.setIcon(icon)
347
                        
348 418
                        value_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable|Qt.ItemIsEditable)
349
                        self.setItem(row, 1, value_item)
419
                        self.setItem(row, 3, value_item)
350 420
                row = row + 1
351 421
        
352 422
    def show_item_attributes(self, item):
......
361 431
            self.setRowCount(row + len(attrs))
362 432

  
363 433
            for key,value in attrs.items():
434
                """ show freeze state """
435
                checkbox = QCustomCheckBox(self, row, 0)
436
                checkbox.setChecked(key.Freeze)
437
                self.setCellWidget(row, 0, checkbox)
438

  
439
                """ show property name """
364 440
                key_item = QTableWidgetItem(key.DisplayAttribute if key.DisplayAttribute else key.Attribute)
365 441
                key_item.setBackground(Qt.lightGray)
366 442
                key_item.setData(Qt.UserRole, key)
367
                self.setItem(row, 0, key_item)
443
                self.setItem(row, 1, key_item)
444

  
445
                """ show icon item """
446
                self.show_icon_item(row, 2, key)
368 447

  
369 448
                value_item = QTableWidgetItem(str(value))
370
                if key.is_selectable:
371
                    icon = QtGui.QIcon()
372
                    icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
373
                    value_item.setIcon(icon)
374
                else:
375
                    value_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable|Qt.ItemIsEditable)
449
                value_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable|Qt.ItemIsEditable)
376 450

  
377 451
                if type(item) is QEngineeringSpecBreakItem:
378
                    '''
379
                    comboBox = QComboBox()
380
                    comboBox.addItem('')
381

  
382
                    itemList = self.mainWindow.findOverlapConnector(self._item.connectors[0])
383
                    for item in itemList:
384
                        comboBox.addItem(str(item.uid))
385

  
386
                    if key == 'Up Stream':
387
                        comboBox.currentTextChanged.connect(self.upStreamChanged)
388
                    else:
389
                        comboBox.currentTextChanged.connect(self.downStreamChanged)
390

  
391
                    tempIndex = comboBox.findText(value) if comboBox.findText(value) != -1 else 0
392
                    comboBox.setCurrentIndex(tempIndex)
393

  
394
                    self.setCellWidget(row, 1, comboBox)
395
                    '''
396 452
                    if key.Attribute == 'UpStream' or key.Attribute == 'DownStream':
397 453
                        UpDownItem = QTableWidgetItem('{}'.format('None' if value is None else value))
398 454
                        icon = QtGui.QIcon()
399 455
                        icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
400 456
                        UpDownItem.setIcon(icon)
401
                        self.setItem(row, 1, UpDownItem)
457
                        self.setItem(row, 3, UpDownItem)
402 458
                    elif key.AttributeType == 'Spec':
403
                        self.setItem(row, 1, QTableWidgetItem(key.Attribute))
459
                        self.setItem(row, 3, QTableWidgetItem(key.Attribute))
404 460
                else:
405
                    self.setItem(row, 1, value_item)
461
                    self.setItem(row, 3, value_item)
406 462

  
407 463
                row = row + 1
408 464

  
......
419 475
            connector_item = QTableWidgetItem('CONN{}'.format(count))
420 476
            connector_item.setFlags(Qt.ItemIsEnabled)
421 477
            connector_item.setBackground(Qt.lightGray)
422
            self.setItem(row, 0, connector_item)
478
            self.setItem(row, 1, connector_item)
423 479

  
424 480
            attr = SymbolAttr()
425 481
            attr.AttributeType = "CONN"
426 482
            attr.AttrAt = count
427 483
            connector_item.setData(Qt.UserRole, attr)
428 484

  
485
            """ show icon item """
486
            self.show_icon_item(row, 2, attr)
487

  
429 488
            connector_item = QTableWidgetItem('{}'.format('None' if connector.connectedItem is None else str(connector.connectedItem)))
430
            icon = QtGui.QIcon()
431
            icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
432
            connector_item.setIcon(icon)
433 489
            connector_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
434
            self.setItem(row, 1, connector_item)
490
            self.setItem(row, 3, connector_item)
435 491
            
436 492
            row = row + 1
437 493
            count = count + 1
......
452 508
            if self._item is not None:
453 509
                docData = AppDocData.instance()
454 510

  
455
                self.setItem(0, 1, QTableWidgetItem(str(self._item.uid)))
456
                self.setItem(1, 1, QTableWidgetItem(self._item.name))
457
                self.setItem(2, 1, QTableWidgetItem(self._item.type))
458
                self.setItem(3, 1, QTableWidgetItem(str(round(math.degrees(self._item.angle)))))
459
                self.setItem(4, 1, QTableWidgetItem(str(self._item.origin)))
511
                self.setItem(0, 3, QTableWidgetItem(str(self._item.uid)))
512
                self.setItem(1, 3, QTableWidgetItem(self._item.name))
513
                self.setItem(2, 3, QTableWidgetItem(self._item.type))
514
                self.setItem(3, 3, QTableWidgetItem(str(round(math.degrees(self._item.angle)))))
515
                self.setItem(4, 3, QTableWidgetItem(str(self._item.origin)))
460 516
                owner_item = QTableWidgetItem('{}'.format('None' if self._item.owner is None else str(self._item.owner)))
461 517
                owner_item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
462
                icon = QtGui.QIcon()
463
                icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
464
                owner_item.setIcon(icon)
518
                self.setItem(5, 3, owner_item)
519

  
520
                """ show icon item """
465 521
                attr = SymbolAttr()
466 522
                attr.AttributeType = "OWNER"
467
                self.item(5, 0).setData(Qt.UserRole, attr)
468
                self.setItem(5, 1, owner_item)
469
                
523
                self.show_icon_item(5, 2, attr)
524
                self.item(5, 1).setData(Qt.UserRole, attr)
525

  
470 526
                if type(self._item) is not QEngineeringSpecBreakItem and type(self._item) is not QEngineeringErrorItem:
471 527
                    self.show_item_properties(self._item)
472 528

  
......
476 532
                    icon = QtGui.QIcon()
477 533
                    icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
478 534
                    setSpecsItem.setIcon(icon)
479
                    self.setItem(row - 1, 1, setSpecsItem)
535
                    self.setItem(row - 1, 3, setSpecsItem)
480 536

  
481 537
                if type(self._item) is QEngineeringErrorItem:
482 538
                    errType = 'None'
......
484 540
                        errType = 'line'
485 541
                    elif issubclass(type(self._item.parent), SymbolSvgItem):
486 542
                        errType = 'symbol'
487
                    self.setItem(2, 1, QTableWidgetItem(errType))
488
                    self.setItem(5, 1, QTableWidgetItem(str(self._item.parent.uid)))
489
                    self.setItem(6, 1, QTableWidgetItem(self._item.msg))
543
                    self.setItem(2, 3, QTableWidgetItem(errType))
544
                    self.setItem(5, 3, QTableWidgetItem(str(self._item.parent.uid)))
545
                    self.setItem(6, 3, QTableWidgetItem(self._item.msg))
490 546

  
491 547
                self.show_item_attributes(self._item)
492 548
                self.show_item_connectors(self._item)
493 549
                
494 550
                for index in range(self.rowCount()):
495
                    item = self.item(index, 1)
551
                    item = self.item(index, 3)
496 552
                    if item is not None: item.setToolTip(item.text())
497
                        #item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
498 553
            else:
499 554
                self.setRowCount(0)
500 555
        except Exception as ex:
......
549 604
            row = self.rowCount()
550 605
            self.setRowCount(row + len(noteContentsList[key]))
551 606
            item = QTableWidgetItem(key)
552
            self.setItem(row, 0, item)
607
            self.setItem(row, 1, item)
553 608

  
554 609
            for index in range(len(noteContentsList[key])):
555
                self.setItem(row, 1, QTableWidgetItem(noteContentsList[key][index]))
610
                self.setItem(row, 3, QTableWidgetItem(noteContentsList[key][index]))
556 611
                row = row + 1
557 612

  
558 613
        for index in range(self.rowCount()):
559
            item = self.item(index, 0)
614
            item = self.item(index, 1)
560 615
            if item is not None:
561 616
                item.setFlags(Qt.ItemIsEnabled)
562 617
                item.setBackground(Qt.lightGray)
......
574 629

  
575 630
        item = QTableWidgetItem(str(lineNoItem.uid))
576 631
        item.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
577
        self.setItem(0, 1, item)
632
        self.setItem(0, 3, item)
578 633

  
579 634
        self.show_item_properties(lineNoItem)
580 635
        
......
587 642
                item.setFlags(Qt.ItemIsEnabled)
588 643
                item.setBackground(Qt.lightGray)
589 644
                item.tag = key
590
                self.setItem(row, 0, item)
645
                self.setItem(row, 1, item)
646

  
647
                """ show icon item """
648
                self.show_icon_item(row, 2, key)
591 649

  
592 650
                # value cell
593 651
                value = attrs[key]
......
613 671
                    streamNos = sorted(list(appDocData.hmbTable.streamNos()))
614 672
                    for streamNo in streamNos:
615 673
                        self.streamNoComboBox.addItem(streamNo)
616
                    self.setCellWidget(row, 1, self.streamNoComboBox)
674
                    self.setCellWidget(row, 3, self.streamNoComboBox)
617 675
                    self.streamNoComboBox.setCurrentText(value)
618
                else:
619
                    ## 만약 Key 값이 CONN이면
620
                    if key.Attribute == 'CONN':
621
                        from PyQt5 import QtGui
622
                        icon = QtGui.QIcon()
623
                        icon.addPixmap(QtGui.QPixmap(":/newPrefix/doubleclick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
624
                        valueCell.setIcon(icon)
625

  
626
                self.setItem(row, 1, valueCell)
676
                    
677
                self.setItem(row, 3, valueCell)
627 678

  
628 679
                row = row + 1
629 680

  
......
648 699
    def initLineRunCell(self, item):
649 700
        self.setRowCount(1)
650 701

  
651
        lineTypeItem = QTableWidgetItem("라인 타입")
702
        lineTypeItem = QTableWidgetItem(self.tr("라인 타입"))
652 703
        lineTypeItem.setBackground(Qt.lightGray)
653 704
        lineTypeItem.setFlags(Qt.ItemIsEnabled)
654
        self.setItem(0, 0, lineTypeItem)
705
        self.setItem(0, 1, lineTypeItem)
655 706

  
656 707
    '''
657 708
        @brief      Key Press Event
......
662 713
        if event.key() == Qt.Key_Delete:
663 714
            items = self.mainWindow.graphicsView.scene.selectedItems()
664 715
            selectedIndexes = self.selectedIndexes()
665
            if selectedIndexes[0].column() == 1 and self.item(selectedIndexes[0].row(), 0).text() == 'OWNER':
716
            if selectedIndexes[0].column() == 3 and self.item(selectedIndexes[0].row(), 0).text() == 'OWNER':
666 717
                items[0].owner = None
667 718
                self.show_item_property(items[0])
668 719
            elif len(items) == 1 and len(selectedIndexes) == 1 and type(items[0]) is not QEngineeringLineItem and type(items[0]) is not QEngineeringSpecBreakItem and self.item(selectedIndexes[0].row(), 0).text().find('CONN') is not 0:
669
                if selectedIndexes[0].column() == 1:
720
                if selectedIndexes[0].column() == 3:
670 721
                    attributeStr = self.item(selectedIndexes[0].row(), 0).text()
671 722
                    items[0].removeSelfAttr(attributeStr)
672 723
                    self.mainWindow.refreshResultPropertyTableWidget()
673 724
            elif len(items) == 1 and len(selectedIndexes) == 1 and (type(items[0]) is QEngineeringLineItem or issubclass(type(items[0]), SymbolSvgItem)):
674 725
                key_cell = self.item(selectedIndexes[0].row(), 0)
675
                if selectedIndexes[0].column() == 1 and key_cell.text().find('CONN') is 0:
726
                if selectedIndexes[0].column() == 3 and key_cell.text().find('CONN') is 0:
676 727
                    selectedUID = self.item(selectedIndexes[0].row(), 1).text()
677 728
                    connNum = int(key_cell.text().replace('CONN', ''))
678 729
                    items[0].connectors[connNum - 1].connectedItem = None
......
685 736
                                    sceneConnector.connectedItem = None
686 737
            elif len(items) == 1 and len(selectedIndexes) == 1 and type(items[0]) is QEngineeringSpecBreakItem:
687 738
                keyCell = self.item(selectedIndexes[0].row(), 0)
688
                if selectedIndexes[0].column() == 1 and (keyCell.text() == 'UpStream' or keyCell.text() == 'DownStream'):
739
                if selectedIndexes[0].column() == 3 and (keyCell.text() == 'UpStream' or keyCell.text() == 'DownStream'):
689 740
                    for attr in items[0].attrs.keys():
690 741
                        if attr.Attribute == keyCell.text():
691 742
                            items[0].attrs[attr] = None
......
704 755
            text = self.item(rows[-1], columns[-1]).text()
705 756
            QApplication.clipboard().setText(text)
706 757

  
707
    def bool_state_changed(self, state):
708
        """ update freeze value of line """
709
        for row in range(self.rowCount()):
710
            widget = self.cellWidget(row, 1)
711
            if widget is None and widget != self.checkbox_cell: continue
712
            cell = self.item(row, 0)
713
            if cell:
714
                data = cell.data(Qt.UserRole)
715
                if data is not None:
716
                    if self._item: self._item.set_property(data.Attribute, self.checkbox_cell.isChecked())
717

  
718 758
    '''
719 759
        @brief      int cell check
720 760
        @author     kyouho
721 761
        @date       2018.08.20
722 762
    '''
723 763
    def cellChangedEvent(self, row, column):
764
        from SymbolAttr import SymbolProp
765
        from SymbolAttr import SymbolAttr
766

  
724 767
        try:
725
            if column == 1:
726
                item = self.item(row, 0)
727
                data = self.item(row, 0).data(Qt.UserRole) if item is not None else None
728
                if data is not None and not data.is_selectable:
768
            if column == 3:
769
                item = self.item(row, 1)
770
                data = item.data(Qt.UserRole) if item is not None else None
771
                if data is not None:
729 772
                    if self._item:
730
                        if data.AttributeType != 'Boolean':
731
                            self._item.set_property(data.Attribute, self.item(row, column).text())
732
                        else:
733
                            self._item.set_property(data.Attribute, self.cellWidget(row, column).isChecked())
773
                        if type(data) is SymbolProp:
774
                            if data.AttributeType != 'Boolean':
775
                                self._item.set_property(data.Attribute, self.item(row, column).text())
776
                            else:
777
                                self._item.set_property(data.Attribute, self.cellWidget(row, column).isChecked())
778
                        elif type(data) is SymbolAttr:
779
                            if data.AttributeType != 'Boolean':
780
                                self._item.setAttribute(data, self.item(row, column).text())
781
                            else:
782
                                self._item.setAttribute(data, self.cellWidget(row, column).isChecked())
734 783
        except Exception as ex:
735 784
            from App import App
736 785
            from AppDocData import MessageType
......
747 796
    def cellDoubleClickedEvent(self, row, column):
748 797
        from SymbolAttr import SymbolProp
749 798

  
750
        if column == 1:
799
        if column == 2:
751 800
            items = self.mainWindow.graphicsView.scene.selectedItems()
752
            keyCell = self.item(row, 0)
801
            keyCell = self.item(row, 1)
753 802
            attr = keyCell.data(Qt.UserRole)
754 803
            if hasattr(keyCell, 'tag') and type(items[0]) is not QEngineeringSpecBreakItem:
755 804
                attr = keyCell.tag
DTI_PID/DTI_PID/Shapes/EngineeringFreezeItem.py
23 23

  
24 24
    def __init__(self, x, y, width, height):
25 25
        QGraphicsRectItem.__init__(self, x, y, width, height)
26
        self.__shadow = QGraphicsDropShadowEffect(blurRadius=20, offset=QPointF(0, 0))
27
        self.setGraphicsEffect(self.__shadow)
28
        self.__shadow.setEnabled(True)
29

  
26 30
        self.setFlags(QGraphicsItem.ItemIsSelectable)
27 31
        self.setToolTip('Freeze')
28 32

  
DTI_PID/DTI_PID/Shapes/SymbolSvgItem.py
153 153

  
154 154
        return None
155 155

  
156
    def setAttribute(self, key, value):
157
        """
158
        set attribute with given value
159
        """
160
        matches = [attr for attr in self.attrs if attr.UID == key.UID]
161
        if len(matches) == 1:
162
            self.attrs[matches[0]] = value
163
        else:
164
            self.attrs[key] = value
165

  
156 166
    def validate(self):
157 167
        '''
158 168
            @brief  validation check : flow
......
1127 1137

  
1128 1138
            node = node.nextSibling()
1129 1139

  
1130
    def setAttribute(self, key, value):
1131
        """
1132
        set attribute with given value
1133
        """
1134
        matches = [attr for attr in self.attrs if attr.UID == key.UID]
1135
        if len(matches) == 1:
1136
            self.attrs[matches[0]] = value
1137
        else:
1138
            self.attrs[key] = value
1139

  
1140 1140
    '''
1141 1141
        @brief  change attribute
1142 1142
        @author humkyung
DTI_PID/DTI_PID/SymbolAttr.py
6 6
class SymbolProp:
7 7
    """ This is symbol property class """
8 8

  
9
    def __init__(self, UID, Attribute, AttributType, DisplayAttribute=None, Length=None, Expression=None):
9
    def __init__(self, UID, Attribute, AttributType, Freeze=False, DisplayAttribute=None, Length=None, Expression=None):
10 10
        import uuid
11 11

  
12 12
        self.UID = uuid.uuid4() if UID is None else uuid.UUID(UID, version=4)
13
        self.Freeze = Freeze
13 14
        self.Attribute = Attribute 
14 15
        self.AttributeType = AttributType
15 16
        self.DisplayAttribute = DisplayAttribute if DisplayAttribute else Attribute
......
42 43
        import uuid
43 44
        
44 45
        self.UID = uuid.UUID(node.attrib['UID'], version=4)
46
        self.Freeze = node.attrib['Freeze'] == 'True' if 'Freeze' in node.attrib else False
45 47
        self.Attribute = node.attrib['Attribute']
46 48
        self.AttributeType = node.attrib['AttributeType']
47 49
        self.DisplayAttribute = node.attrib['DisplayAttribute']
......
63 65

  
64 66
        node = Element('PROPERTY')
65 67
        node.attrib['UID'] = str(self.UID) if self.UID else ''
68
        node.attrib['Freeze'] = str(self.Freeze)
66 69
        node.attrib['Attribute'] = self.Attribute if self.Attribute is not None else ''
67 70
        node.attrib['AttributeType'] = self.AttributeType if self.AttributeType is not None else ''
68 71
        node.attrib['DisplayAttribute'] = self.DisplayAttribute if self.DisplayAttribute else ''
......
77 80
        SymbolProp.__init__(self, None, None, None)
78 81

  
79 82
        self.UID = None
83
        self.Freeze = False
80 84
        self.Attribute = None
81 85
        self.DisplayAttribute = None
82 86
        self.AttributeType = None
......
94 98
            attr.UID = uuid.UUID(node.attrib['UID'], version=4)
95 99
        else:
96 100
            attr.UID = ''
101
        attr.Freeze = node.attrib['Freeze'] == 'True' if 'Freeze' in node.attrib else False
97 102
        attr.Attribute = node.attrib['Attribute']
98 103
        attr.DisplayAttribute = node.attrib['DisplayAttribute']
99 104
        attr.AttributeType = node.attrib['AttributeType']
......
108 113
        from xml.etree.ElementTree import Element, SubElement, dump, ElementTree
109 114

  
110 115
        node = Element('ATTRIBUTE')
116
        node.attrib['Freeze'] = str(self.Freeze)
111 117
        node.attrib['UID'] = str(self.UID) if self.UID is not None else ''
112 118
        node.attrib['Attribute'] = self.Attribute if self.Attribute is not None else ''
113 119
        node.attrib['DisplayAttribute'] = self.DisplayAttribute if self.DisplayAttribute is not None else ''

내보내기 Unified diff

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