示例#1
0
 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
示例#2
0
 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()
示例#3
0
 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()
示例#4
0
 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
示例#5
0
 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
示例#6
0
 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
示例#7
0
 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
示例#8
0
 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
示例#9
0
 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()
示例#10
0
 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, " ")
示例#11
0
 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()
示例#12
0
 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, " ")
示例#13
0
 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()
示例#14
0
 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()
示例#15
0
 def _noteHeadChanged(self):
     self._setNoteHeadInfo()
     if not self.muteButton.isChecked():
         DBMidi.playHeadData(self._currentHeadData)
示例#16
0
 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)
示例#17
0
 def _redo(self):
     self._score.addNote(self._np, self._head)
     if self._head != DBConstants.EMPTY_NOTE:
         DBMidi.playNote(self._np.drumIndex, self._head)
示例#18
0
 def _midiNoteChanged(self):
     self._setMidiNote()
     if not self.muteButton.isChecked():
         DBMidi.playHeadData(self._currentHeadData)
示例#19
0
 def _redo(self):
     self._score.addNote(self._np, self._head)
     if self._head != DBConstants.EMPTY_NOTE:
         DBMidi.playNote(self._np.drumIndex, self._head)
示例#20
0
 def _drumChanged(self):
     self._setDrumInfo()
     if not self.muteButton.isChecked():
         DBMidi.playHeadData(self._currentHeadData)
示例#21
0
 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)