프로젝트

일반

사용자정보

개정판 c825e264

IDc825e264dd0b58965e43f9e6c8b46f8b6f094e32
상위 852d1063
하위 8089da35

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

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