def editKit(self): emptyDrums = set(self.score.drumKit) for staffIndex in xrange(self.score.numStaffs()): lines = set(self.score.iterVisibleLines(staffIndex, True)) emptyDrums.difference_update(lines) if not emptyDrums: break editDialog = QEditKitDialog(self.score.drumKit, emptyDrums, self.parent()) if not editDialog.exec_(): return kit, changes = editDialog.getNewKit() box = QtGui.QMessageBox.question(self.parent(), "Apply kit changes?", "Editing the kit cannot be undone. " "Proceed?", buttons=(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)) if box == QtGui.QMessageBox.Yes: self.score.turnOffCallBacks() self.score.changeKit(kit, changes) DBMidi.setKit(kit) self._shortcutMemo = _HeadShortcutsMap(kit) self.score.turnOnCallBacks() self._undoStack.clear() self._saved = False self.reBuild() self.dirty = True
def _setScore(self, score): if score != self._score: score.formatScore(None) self._score = score self._shortcutMemo = _HeadShortcutsMap(score.drumKit) if score is not None: self.startUp() self._score.setCallBack(self.dataChanged) self._properties.lineSpacing = self._score.systemSpacing - 101 self.paperSizeChanged.emit(self._score.paperSize) self.defaultCountChanged.emit(self._score.defaultCount) self.spacingChanged.emit(self._score.systemSpacing) self.lilysizeChanged.emit(self._score.lilysize) self.lilypagesChanged.emit(self._score.lilypages) self.lilyFillChanged.emit(self._score.lilyFill) self.lilyFormatChanged.emit(self._score.lilyFormat) self.sectionsChanged.emit() self._properties.newScore(self) self._kitData.setVisible(self._properties.kitDataVisible) self._metaData.setVisible(self._properties.metadataVisible) self.widthChanged.emit(self.scoreWidth) self._build() DBMidi.setKit(score.drumKit) self._undoStack.clear() self._undoStack.setClean() self._inMacro = False self.reBuild() self.dirty = False self._stateMachine = DBStateMachine(Waiting, self) self.scoreDisplayChanged.emit()
def _setScore(self, score): if score != self._score: score.formatScore(None) self._score = score self._shortcutMemo = _HeadShortcutsMap(score.drumKit) if score is not None: self.startUp() self._score.setCallBack(self.dataChanged) self._build() self._properties.lineSpacing = self._score.systemSpacing - 101 self.paperSizeChanged.emit(self._score.paperSize) self.defaultCountChanged.emit(self._score.defaultCount) self.spacingChanged.emit(self._score.systemSpacing) self.lilysizeChanged.emit(self._score.lilysize) self.lilypagesChanged.emit(self._score.lilypages) self.lilyFillChanged.emit(self._score.lilyFill) self.lilyFormatChanged.emit(self._score.lilyFormat) self.sectionsChanged.emit() self._properties.newScore(self) self._kitData.setVisible(self._properties.kitDataVisible) self._metaData.setVisible(self._properties.metadataVisible) DBMidi.setKit(score.drumKit) self._undoStack.clear() self._undoStack.setClean() self._inMacro = False self.widthChanged.emit(self.scoreWidth) self.reBuild() self.dirty = False self._stateMachine = DBStateMachine(Waiting, self) self.scoreDisplayChanged.emit()
def editKit(self): emptyDrums = set(self.score.drumKit) for staffIndex in xrange(self.score.numStaffs()): lines = set(self.score.iterVisibleLines(staffIndex, True)) emptyDrums.difference_update(lines) if not emptyDrums: break editDialog = QEditKitDialog(self.score.drumKit, emptyDrums, self.parent()) if not editDialog.exec_(): return kit, changes = editDialog.getNewKit() box = QtGui.QMessageBox.question(self.parent(), "Apply kit changes?", "Editing the kit cannot be undone. " "Proceed?", buttons = (QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)) if box == QtGui.QMessageBox.Yes: self.score.changeKit(kit, changes) DBMidi.setKit(kit) self._shortcutMemo = _HeadShortcutsMap(kit) self._undoStack.clear() self._saved = False self.reBuild() self.dirty = True
def _effectChanged(self): for effect in self.effectsGroup.children(): if not isinstance(effect, QRadioButton): continue if effect.isChecked(): self._currentHeadData.effect = str(effect.text()).lower() if not self.muteButton.isChecked(): DBMidi.playHeadData(self._currentHeadData) break
def _undo(self): if self._oldHead == DBConstants.EMPTY_NOTE: self._score.deleteNote(self._np) else: self._score.addNote(self._np, self._oldHead) DBMidi.playNote(self._np.drumIndex, self._oldHead) measure = self._score.getMeasureByPosition(self._np) measure.belowText = self._oldBelow measure.aboveText = self._oldAbove
def _noteHeadChanged(self): self._populateCurrentNoteHead() headData = self._currentHeadData self.volumeSlider.setValue(headData.midiVolume) midiIndex = self.midiNoteCombo.findData(QVariant(headData.midiNote)) self.midiNoteCombo.setCurrentIndex(midiIndex) self._setEffect(headData.effect) if not self.muteButton.isChecked(): DBMidi.playHeadData(self._currentHeadData) self._checkHeadButtons() self._setNotation()
def _redo(self): self._score.toggleNote(self._np, self._head) newHead = self._measure.getNote(self._np) if newHead != DBConstants.EMPTY_NOTE: DBMidi.playNote(self._np.drumIndex, self._head) elif (self._oldAbove[self._np.noteTime] != " " or self._oldBelow[self._np.noteTime] != " "): measure = self._score.getMeasureByPosition(self._np) if not measure.hasAnyNoteAt(self._np.noteTime): measure.setAbove(self._np.noteTime, " ") measure.setBelow(self._np.noteTime, " ")
def __init__(self, kit, emptyDrums = None, parent = None, directory = None): super(QEditKitDialog, self).__init__(parent) self.setupUi(self) self.muteButton.setChecked(DBMidi.isMuted()) if emptyDrums is None: emptyDrums = [] self.deleteEmptyButton.setEnabled(False) self._scoreDirectory = directory self._emptyDrums = emptyDrums self._currentKit = [] self._oldLines = {} self._initialKit = kit self._initialize() self.kitTable.currentRowChanged.connect(self._drumChanged) self.upButton.clicked.connect(self._moveDrumUp) self.downButton.clicked.connect(self._moveDrumDown) self.addButton.clicked.connect(self._addDrum) self.deleteButton.clicked.connect(self._removeDrum) self.deleteEmptyButton.clicked.connect(self._deleteEmpty) self.clearButton.clicked.connect(self._clearKit) self.resetButton.clicked.connect(self._resetKit) self.defaultKitButton.clicked.connect(self._manageDefaultKits) self.loadButton.clicked.connect(self._loadKit) self.saveButton.clicked.connect(self._saveKit) self.drumName.textEdited.connect(self._drumNameEdited) self.drumAbbr.editingFinished.connect(self._drumAbbrEdited) self.oldDrum.currentIndexChanged.connect(self._oldDrumChanged) self.currentNoteHead.currentIndexChanged.connect(self._headEdited) self.noteHeadTable.currentRowChanged.connect(self._noteHeadChanged) self.addHeadButton.clicked.connect(self._addNoteHead) self.headUpButton.clicked.connect(self._moveNoteHeadUp) self.setDefaultHeadButton.clicked.connect(self._setDefaultHead) self.headDownButton.clicked.connect(self._moveNoteHeadDown) self.deleteHeadButton.clicked.connect(self._removeNoteHead) self.noteHeadBox.currentIndexChanged.connect(self._notationHeadChanged) self.effectBox.currentIndexChanged.connect(self._notationEffectChanged) self.stemUpDownBox.stateChanged.connect(self._stemDirectionChanged) self.noteUpButton.clicked.connect(self._moveNotationUp) self.noteDownButton.clicked.connect(self._moveNotationDown) self.shortcutCombo.currentIndexChanged.connect(self._shortcutEdited) self._populateMidiCombo() self.midiNoteCombo.currentIndexChanged.connect(self._midiNoteChanged) self.volumeSlider.valueChanged.connect(self._midiVolumeChanged) for effect in self.effectsGroup.children(): if isinstance(effect, QRadioButton): effect.toggled.connect(self._effectChanged) self.lockedCheckBox.stateChanged.connect(self._lockChanged) self._notationScene = QNotationScene(self) self.noteView.setScene(self._notationScene) self.noteView.centerOn(*self._notationScene.getCenter()) self._populate()
def __init__(self, kit, emptyDrums=None, parent=None, directory=None): super(QEditKitDialog, self).__init__(parent) self.setupUi(self) self.muteButton.setChecked(DBMidi.isMuted()) if emptyDrums is None: emptyDrums = [] self.deleteEmptyButton.setEnabled(False) self._scoreDirectory = directory self._emptyDrums = emptyDrums self._currentKit = [] self._oldLines = {} self._initialKit = kit self._initialize() self.kitTable.currentRowChanged.connect(self._drumChanged) self.upButton.clicked.connect(self._moveDrumUp) self.downButton.clicked.connect(self._moveDrumDown) self.addButton.clicked.connect(self._addDrum) self.deleteButton.clicked.connect(self._removeDrum) self.deleteEmptyButton.clicked.connect(self._deleteEmpty) self.clearButton.clicked.connect(self._clearKit) self.resetButton.clicked.connect(self._resetKit) self.defaultKitButton.clicked.connect(self._manageDefaultKits) self.loadButton.clicked.connect(self._loadKit) self.saveButton.clicked.connect(self._saveKit) self.drumName.textEdited.connect(self._drumNameEdited) self.drumAbbr.editingFinished.connect(self._drumAbbrEdited) self.oldDrum.currentIndexChanged.connect(self._oldDrumChanged) self.currentNoteHead.currentIndexChanged.connect(self._headEdited) self.noteHeadTable.currentRowChanged.connect(self._noteHeadChanged) self.addHeadButton.clicked.connect(self._addNoteHead) self.headUpButton.clicked.connect(self._moveNoteHeadUp) self.setDefaultHeadButton.clicked.connect(self._setDefaultHead) self.headDownButton.clicked.connect(self._moveNoteHeadDown) self.deleteHeadButton.clicked.connect(self._removeNoteHead) self.noteHeadBox.currentIndexChanged.connect(self._notationHeadChanged) self.effectBox.currentIndexChanged.connect(self._notationEffectChanged) self.stemUpDownBox.stateChanged.connect(self._stemDirectionChanged) self.noteUpButton.clicked.connect(self._moveNotationUp) self.noteDownButton.clicked.connect(self._moveNotationDown) self.shortcutCombo.currentIndexChanged.connect(self._shortcutEdited) self._populateMidiCombo() self.midiNoteCombo.currentIndexChanged.connect(self._midiNoteChanged) self.volumeSlider.valueChanged.connect(self._midiVolumeChanged) for effect in self.effectsGroup.children(): if isinstance(effect, QRadioButton): effect.toggled.connect(self._effectChanged) self.lockedCheckBox.stateChanged.connect(self._lockChanged) self._notationScene = QNotationScene(self) self.noteView.setScene(self._notationScene) self.noteView.centerOn(*self._notationScene.getCenter()) self._populate()
def _noteHeadChanged(self): self._setNoteHeadInfo() if not self.muteButton.isChecked(): DBMidi.playHeadData(self._currentHeadData)
def _midiNoteChanged(self): midiNote = self.midiNoteCombo.currentIndex() midiNote = self.midiNoteCombo.itemData(midiNote).toInt()[0] self._currentHeadData.midiNote = midiNote if not self.muteButton.isChecked(): DBMidi.playHeadData(self._currentHeadData)
def _redo(self): self._score.addNote(self._np, self._head) if self._head != DBConstants.EMPTY_NOTE: DBMidi.playNote(self._np.drumIndex, self._head)
def _midiNoteChanged(self): self._setMidiNote() if not self.muteButton.isChecked(): DBMidi.playHeadData(self._currentHeadData)
def _drumChanged(self): self._setDrumInfo() if not self.muteButton.isChecked(): DBMidi.playHeadData(self._currentHeadData)