def __insertCoin(self, record, count): dialog = EditCoinDialog(self.model(), record, self) if count > 1: dialog.setManyCoins() result = dialog.exec_() if result == QDialog.Accepted: self.model().appendRecord(record) return dialog.clickedButton
def _edit(self, index=None): if not index: index = self.currentIndex() record = self.model().record(index.row()) dialog = EditCoinDialog(self.model(), record, self) result = dialog.exec_() if result == QDialog.Accepted: updatedRecord = dialog.getRecord() self.model().setRecord(index.row(), updatedRecord) self.model().submitAll()
def _multiEdit(self, indexes=None): if not indexes: indexes = self.selectedRows() # Fill multi record for editing multiRecord = self.model().record(indexes[0].row()) usedFields = [Qt.Checked] * multiRecord.count() for index in indexes: record = self.model().record(index.row()) for i in range(multiRecord.count()): value = record.value(i) if multiRecord.value(i) != value or not value: multiRecord.setNull(i) usedFields[i] = Qt.Unchecked dialog = EditCoinDialog(self.model(), multiRecord, self, usedFields) result = dialog.exec_() if result == QDialog.Accepted: progressDlg = Gui.ProgressDialog(self.tr("Updating records"), self.tr("Cancel"), len(indexes), self) # Fill records by used fields in multi record multiRecord = dialog.getRecord() usedFields = dialog.getUsedFields() # Sort and reverse indexes for updating records that out # filtered after updating rindexes = sorted(indexes, key=operator.methodcaller('row'), reverse=True) for index in rindexes: progressDlg.step() if progressDlg.wasCanceled(): break record = self.model().record(index.row()) for i in range(multiRecord.count()): if usedFields[i] == Qt.Checked: record.setValue(i, multiRecord.value(i)) self.model().setRecord(index.row(), record) progressDlg.setLabelText(self.tr("Saving...")) self.model().submitAll() progressDlg.reset()
def _multiEdit(self): self.changingEnabled = False storedFilter = self.model.intFilter self.model.setFilter('') self.changingEnabled = True # Fill multi record for editing multiRecord = self.model.record(0) usedFields = [Qt.Checked] * multiRecord.count() for i in range(self.model.rowCount()): record = self.model.record(i) for j in range(multiRecord.count()): value = record.value(j) if multiRecord.value(j) != value or not value: multiRecord.setNull(j) usedFields[j] = Qt.Unchecked # TODO: Make identical with ListView._multiEdit dialog = EditCoinDialog(self.model, multiRecord, self, usedFields) result = dialog.exec_() if result == QDialog.Accepted: progressDlg = Gui.ProgressDialog(self.tr("Updating records"), self.tr("Cancel"), self.model.rowCount(), self) # Fill records by used fields in multi record multiRecord = dialog.getRecord() usedFields = dialog.getUsedFields() for i in range(self.model.rowCount()): progressDlg.setValue(i) if progressDlg.wasCanceled(): break record = self.model.record(i) for j in range(multiRecord.count()): if usedFields[j] == Qt.Checked: record.setValue(j, multiRecord.value(j)) self.model.setRecord(i, record) self.model.submitAll() progressDlg.reset() self.model.setFilter(storedFilter)
def addCoin(self, record, parent=None): record.setNull('id') # remove ID value from record dialog = EditCoinDialog(self, record, parent) result = dialog.exec_() if result == QDialog.Accepted: self.appendRecord(record)