개정판 360faad5
QResultTreeWidget 에서 LineNo 클릭 시 속성이 출력되도록 수정
DTI_PID/DTI_PID/MainWindow.py | ||
---|---|---|
64 | 64 |
@history humkyung 2018.04.12 add splitter widget |
65 | 65 |
Jeongwoo 2018.04.27 Add Signal/Slot Connection 'noteNoSingleClicked' |
66 | 66 |
Jeongwoo 2018.05.09 Initialize Action group |
67 |
Jeongwoo 2018.05.10 Add Signal/Slot Connection 'lineNoSingleClicked' |
|
67 | 68 |
''' |
68 | 69 |
def __init__(self): |
69 | 70 |
super(self.__class__, self).__init__() |
... | ... | |
111 | 112 |
self.symbolExplorerVerticalLayout.addWidget(self.resultPropertyTableWidget) |
112 | 113 |
self.resultTreeWidget.singleClicked.connect(self.resultPropertyTableWidget.getClickedSymbol) |
113 | 114 |
self.resultTreeWidget.noteNoSingleClicked.connect(self.resultPropertyTableWidget.getClickedNote) |
115 |
self.resultTreeWidget.lineNoSingleClicked.connect(self.resultPropertyTableWidget.getClickedLineNo) |
|
114 | 116 |
# add splitter widget |
115 | 117 |
splitter = QSplitter(Qt.Vertical) |
116 | 118 |
splitter.addWidget(self.resultTreeWidget) |
DTI_PID/DTI_PID/QResultPropertyTableWidget.py | ||
---|---|---|
13 | 13 |
import sys |
14 | 14 |
import math |
15 | 15 |
from SymbolSvgItem import SymbolSvgItem |
16 |
from QEngineeringLineNoTextItem import QEngineeringLineNoTextItem |
|
16 | 17 |
from enum import Enum |
17 | 18 |
|
18 | 19 |
''' |
19 | 20 |
@brief ItemType |
20 | 21 |
@author Jeongwoo |
21 | 22 |
@date 2018.04.27 |
23 |
@history 2018.05.10 Jeongwoo Add LINE_NO |
|
22 | 24 |
''' |
23 | 25 |
class ItemType(Enum): |
24 | 26 |
SYMBOL = 1 |
25 | 27 |
NOTE = 2 |
28 |
LINE_NO = 3 |
|
26 | 29 |
|
27 | 30 |
class QResultPropertyTableWidget(QTableWidget): |
28 | 31 |
def __init__(self): |
... | ... | |
65 | 68 |
@pyqtSlot(str, list) |
66 | 69 |
def getClickedNote(self, noteNoStr, noteContentsList): |
67 | 70 |
self.noteChanged(noteNoStr, noteContentsList) |
71 |
|
|
72 |
''' |
|
73 |
@brief Slot to accept Line No Item Click event |
|
74 |
@author Jeongwoo |
|
75 |
@date 18.05.10 |
|
76 |
''' |
|
77 |
@pyqtSlot(QEngineeringLineNoTextItem) |
|
78 |
def getClickedLineNo(self, lineNoItem): |
|
79 |
self.lineNoChanged(lineNoItem) |
|
68 | 80 |
|
69 | 81 |
''' |
70 | 82 |
@brief Reset table with new SymbolSvgItem |
... | ... | |
84 | 96 |
def noteChanged(self, noteNoStr, noteContentsList): |
85 | 97 |
self.initTitleCell(ItemType.NOTE) |
86 | 98 |
self.initNoteCell(noteNoStr, noteContentsList) |
99 |
|
|
100 |
''' |
|
101 |
@brief Reset table with line no item |
|
102 |
@author Jeongwoo |
|
103 |
@date 18.05.10 |
|
104 |
''' |
|
105 |
def lineNoChanged(self, lineNoItem): |
|
106 |
self.initTitleCell(ItemType.LINE_NO) |
|
107 |
self.initLineNoCell(lineNoItem) |
|
87 | 108 |
|
88 | 109 |
''' |
89 | 110 |
@brief Initialize Title Cell |
90 | 111 |
@author Jeongwoo |
91 | 112 |
@date 18.04.13 |
92 | 113 |
@history 2018.04.27 Jeongwoo Add if-statement by ItemType |
114 |
2018.05.10 Jeongwoo Add if-statement LINE_NO ItemType |
|
93 | 115 |
''' |
94 | 116 |
def initTitleCell(self, type): |
95 | 117 |
self.clear() |
... | ... | |
101 | 123 |
elif type == ItemType.NOTE: |
102 | 124 |
self.setItem(0, 0, QTableWidgetItem("노트번호")) |
103 | 125 |
self.setItem(1, 0, QTableWidgetItem("노트내용")) |
126 |
elif type == ItemType.LINE_NO: |
|
127 |
''' |
|
128 |
DO NOTHING / initLineNoCell |
|
129 |
''' |
|
130 |
|
|
104 | 131 |
|
105 | 132 |
for index in range(self.rowCount()): |
106 | 133 |
item = self.item(index, 0) |
... | ... | |
132 | 159 |
def initNoteCell(self, noteNoStr, noteContentsList): |
133 | 160 |
self.setItem(0, 1, QTableWidgetItem(noteNoStr)) |
134 | 161 |
for index in range(len(noteContentsList)): |
135 |
self.setItem(1+index, 1, QTableWidgetItem(noteContentsList[index])) |
|
162 |
self.setItem(1+index, 1, QTableWidgetItem(noteContentsList[index])) |
|
163 |
|
|
164 |
''' |
|
165 |
@brief Initialize Line No Contents Cell |
|
166 |
@author Jeongwoo |
|
167 |
@date 18.05.10 |
|
168 |
''' |
|
169 |
def initLineNoCell(self, lineNoItem): |
|
170 |
lineNoTitleItem = QTableWidgetItem("Line No.") |
|
171 |
lineNoTitleItem.setBackground(QColor(220, 220, 220)) |
|
172 |
self.setItem(0, 0, lineNoTitleItem) |
|
173 |
self.setItem(0, 1, QTableWidgetItem(lineNoItem.text())) |
|
174 |
attrs = lineNoItem.getLineNoAttributes() |
|
175 |
if attrs is not None: |
|
176 |
attrItems = list(attrs.items()) |
|
177 |
for index in range(len(attrItems)): |
|
178 |
key = attrItems[index][0] |
|
179 |
value = attrItems[index][1] |
|
180 |
keyItem = QTableWidgetItem(key) |
|
181 |
keyItem.setBackground(QColor(220, 220, 220)) |
|
182 |
self.setItem(1 + index, 0, keyItem) |
|
183 |
self.setItem(1 + index, 1, QTableWidgetItem(value)) |
DTI_PID/DTI_PID/QResultTreeWidget.py | ||
---|---|---|
22 | 22 |
#Add Signal |
23 | 23 |
singleClicked = pyqtSignal(SymbolSvgItem) |
24 | 24 |
noteNoSingleClicked = pyqtSignal(str, list) |
25 |
lineNoSingleClicked = pyqtSignal(QEngineeringLineNoTextItem) |
|
25 | 26 |
|
26 | 27 |
def __init__(self, imageViewer): |
27 | 28 |
QTreeWidget.__init__(self) |
... | ... | |
151 | 152 |
18.04.26 Jeongwoo QEngineeringTextItem → QEngineeringLineNoTextItem |
152 | 153 |
18.04.27 Jeongwoo Find NOTE Contents when NOTE No. Clicked |
153 | 154 |
Move singClicked to if-statement type(itemData) is SymbolSvgItem: |
155 |
18.05.10 Jeongwoo Add lineNoSingleClicked emit |
|
154 | 156 |
''' |
155 | 157 |
lastClickedItem = None |
156 | 158 |
def itemClickEvent(self, item, columnNo, isSvgClick = False): |
... | ... | |
180 | 182 |
## Send new event to imageViewer's zoomImage Method |
181 | 183 |
self.imageViewer.zoomImage(True, QMouseEvent(QEvent.MouseButtonPress, self.imageViewer.mapFromScene(QPointF(rect.left(), rect.top())), Qt.LeftButton, Qt.LeftButton, Qt.NoModifier), 3) |
182 | 184 |
self.lastClickedItem = graphicItem |
185 |
|
|
186 |
self.lineNoSingleClicked.emit(itemData) |
|
183 | 187 |
elif type(itemData) is QEngineeringNoteItem: |
184 | 188 |
rect = itemData.sceneBoundingRect() |
185 | 189 |
graphicItem = self.scene.addRect(rect.left(), rect.top(), rect.width(), rect.height(), QPen(QColor(255,255,0,100)), QBrush(QColor(255,255,0,100))) |
내보내기 Unified diff