개정판 c825e264
grid filter test
Change-Id: Ib508f4979faedb4d858483f767f65b0fd0e00449
DTI_PID/DTI_PID/BMSettingDialog.py | ||
---|---|---|
130 | 130 |
self.symbolListModel = SymbolListModel() |
131 | 131 |
self.ui.tableViewSymbolList.setModel(self.symbolListModel) |
132 | 132 | |
133 |
# for test |
|
134 |
''' |
|
135 |
self.lineEdit = QLineEdit() |
|
136 |
self.comboBox = QComboBox() |
|
137 | ||
138 |
self.ui.gridLayout_3.addWidget(self.lineEdit, 0, 1, 1, 1) |
|
139 |
self.ui.gridLayout_3.addWidget(self.comboBox, 0, 2, 1, 1) |
|
140 | ||
141 |
self.proxy = QSortFilterProxyModel(self) |
|
142 |
self.proxy.setSourceModel(self.symbolListModel) |
|
143 |
self.ui.tableViewSymbolList.setModel(self.proxy) |
|
144 | ||
145 |
self.comboBox.addItems(["Column {0}".format(x) for x in range(self.symbolListModel.columnCount())]) |
|
146 | ||
147 |
self.lineEdit.textChanged.connect(self.on_lineEdit_textChanged) |
|
148 |
self.comboBox.currentIndexChanged.connect(self.on_comboBox_currentIndexChanged) |
|
149 | ||
150 |
self.horizontalHeader = self.ui.tableViewSymbolList.horizontalHeader() |
|
151 |
self.horizontalHeader.sectionClicked.connect(self.on_view_horizontalHeader_sectionClicked) |
|
152 |
''' |
|
153 |
# uo to here |
|
154 | ||
133 | 155 |
self.symbolMappingModel = SymbolMappingModel() |
134 | 156 |
self.symbolMappingModel.invisibleRootItem() |
135 | 157 |
self.ui.treeViewSymbolMapping.setModel(self.symbolMappingModel) |
... | ... | |
158 | 180 |
self.ui.buttonBox.rejected.connect(self.reject) |
159 | 181 | |
160 | 182 |
self.ui.tableViewSymbolList.selectionModel().setCurrentIndex(self.symbolListModel.index(0, 0), QItemSelectionModel.Select) |
161 |
self.on_symbol_changed(self.symbolListModel.index(0, 0)) |
|
183 |
|
|
184 |
# for test |
|
185 |
self.on_symbol_changed(self.proxy.index(0, 0)) |
|
186 |
#self.on_symbol_changed(self.symbolListModel.index(0, 0)) |
|
187 | ||
188 |
# for test |
|
189 |
''' |
|
190 |
@pyqtSlot(int) |
|
191 |
def on_view_horizontalHeader_sectionClicked(self, logicalIndex): |
|
192 |
self.logicalIndex = logicalIndex |
|
193 |
self.menuValues = QMenu(self) |
|
194 |
self.signalMapper = QSignalMapper(self) |
|
195 | ||
196 |
self.comboBox.blockSignals(True) |
|
197 |
self.comboBox.setCurrentIndex(self.logicalIndex) |
|
198 |
self.comboBox.blockSignals(True) |
|
199 | ||
200 |
valuesUnique = [self.symbolListModel.item(row, self.logicalIndex).text() for row in range(self.symbolListModel.rowCount())] |
|
201 | ||
202 |
actionAll = QAction("All", self) |
|
203 |
actionAll.triggered.connect(self.on_actionAll_triggered) |
|
204 |
self.menuValues.addAction(actionAll) |
|
205 |
self.menuValues.addSeparator() |
|
206 | ||
207 |
for actionNumber, actionName in enumerate(sorted(list(set(valuesUnique)))): |
|
208 |
action = QAction(actionName, self) |
|
209 |
self.signalMapper.setMapping(action, actionNumber) |
|
210 |
action.triggered.connect(self.signalMapper.map) |
|
211 |
self.menuValues.addAction(action) |
|
212 | ||
213 |
self.signalMapper.mapped.connect(self.on_signalMapper_mapped) |
|
214 | ||
215 |
headerPos = self.ui.tableViewSymbolList.mapToGlobal(self.horizontalHeader.pos()) |
|
216 | ||
217 |
posY = headerPos.y() + self.horizontalHeader.height() |
|
218 |
posX = headerPos.x() + self.horizontalHeader.sectionPosition(self.logicalIndex) |
|
219 | ||
220 |
self.menuValues.exec_(QPoint(posX, posY)) |
|
221 | ||
222 |
@pyqtSlot() |
|
223 |
def on_actionAll_triggered(self): |
|
224 |
filterColumn = self.logicalIndex |
|
225 |
filterString = QRegExp("", Qt.CaseInsensitive, QRegExp.RegExp) |
|
226 | ||
227 |
self.proxy.setFilterRegExp(filterString) |
|
228 |
self.proxy.setFilterKeyColumn(filterColumn) |
|
229 | ||
230 |
@pyqtSlot(int) |
|
231 |
def on_signalMapper_mapped(self, i): |
|
232 |
stringAction = self.signalMapper.mapping(i).text() |
|
233 |
filterColumn = self.logicalIndex |
|
234 |
filterString = QRegExp(stringAction, Qt.CaseSensitive, QRegExp.FixedString) |
|
235 | ||
236 |
self.proxy.setFilterRegExp(filterString) |
|
237 |
self.proxy.setFilterKeyColumn(filterColumn) |
|
238 | ||
239 |
@pyqtSlot(str) |
|
240 |
def on_lineEdit_textChanged(self, text): |
|
241 |
search = QRegExp(text, Qt.CaseInsensitive, QRegExp.RegExp) |
|
242 | ||
243 |
self.proxy.setFilterRegExp(search) |
|
244 | ||
245 |
@pyqtSlot(int) |
|
246 |
def on_comboBox_currentIndexChanged(self, index): |
|
247 |
self.proxy.setFilterKeyColumn(index) |
|
248 |
''' |
|
249 |
# up to here |
|
162 | 250 | |
163 | 251 |
def load_BM_setting(self): |
164 | 252 |
app_doc_data = AppDocData.instance() |
... | ... | |
204 | 292 |
self.ui.tableViewAttributeList.setIndexWidget(index, checkBox) |
205 | 293 | |
206 | 294 |
def on_symbol_checkBox_changed(self, symbol_id, checkState): |
295 |
# for test |
|
296 |
#index = self.ui.tableViewSymbolList.currentIndex() |
|
297 |
#source_index = self.proxy.mapToSource(self.proxy.index(index.row(), index.column())) |
|
298 |
#selected_symbol = self.symbolListModel.itemFromIndex(source_index) |
|
299 |
# up to here |
|
300 | ||
207 | 301 |
index = self.ui.tableViewSymbolList.currentIndex() |
208 | 302 |
selected_symbol = self.symbolListModel.itemFromIndex(index) |
303 | ||
209 | 304 |
if checkState is int(Qt.Checked) and not symbol_id in self.symbol_mapping[selected_symbol.text()]: |
210 | 305 |
self.symbol_mapping[selected_symbol.text()].append(symbol_id) |
211 | 306 |
elif checkState is int(Qt.Unchecked) and symbol_id in self.symbol_mapping[selected_symbol.text()]: |
... | ... | |
218 | 313 |
self.attributes.remove(attr) |
219 | 314 | |
220 | 315 |
def on_symbol_changed(self, index): |
316 |
# for test |
|
317 |
#source_index = self.proxy.mapToSource(index) |
|
318 |
#selected_symbol = self.symbolListModel.itemFromIndex(source_index) |
|
319 |
# up to here |
|
320 | ||
221 | 321 |
selected_symbol = self.symbolListModel.itemFromIndex(index) |
222 | 322 | |
223 | 323 |
for row in range(self.symbolMappingModel.rowCount()): |
내보내기 Unified diff