def __init__(self, parent=None): super(PianoRoll, self).__init__(parent) self.setGeometry(10, 10, 611, 441) self.setFocusPolicy(QtCore.Qt.WheelFocus) self.setObjectName("pianoRoll") self.verticalScrollBar = QtGui.QScrollBar(self) self.verticalScrollBar.setGeometry(590, 20, 16, 421) self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical) self.verticalScrollBar.setRange(0, (const.PIANO_ROLL_RANGE - self.height())) self.verticalScrollBar.range_v = const.PIANO_ROLL_RANGE - self.height() self.curVSBValue = 0 self.horizontalScrollBar = QtGui.QScrollBar(self) self.horizontalScrollBar.setGeometry(0, 0, 591, 16) self.horizontalScrollBar.setOrientation(QtCore.Qt.Horizontal) self.curHSBValue = 0 self.prGrid = GridPR(self) self.pkContainer = QtGui.QWidget(self) self.pkContainer.setGeometry(0, 20, 64, 421) #self.pkContainer.paintEvent = self.test self.pkb_label = QtGui.QLabel(self.pkContainer) self.pix_map = QtGui.QPixmap("assets/PRKb_0.png") self.pkb_label.resize(64, 128 * 3) self.pkb_label.setPixmap(self.pix_map.scaled(self.pkb_label.size())) self.PKb = QtGui.QWidget(self.pkContainer) self.PKb.setGeometry(0, 0, 64, 421) #self.PKb.setStyleSheet("\n" # "background-image: url(:/images/PRKb);") self.connect(self.verticalScrollBar, QtCore.SIGNAL(events.VALUE_CHANGED), self.onVSliderChanged) self.connect(self.horizontalScrollBar, QtCore.SIGNAL(events.VALUE_CHANGED), self.onHSliderChanged) print self, 'init PianoRoll...'
class PianoRoll(QtGui.QWidget): """docstring for PianoRollWidget""" NAME = "PianoRoll" EVENT_ONCLICK = "PR_OnClick()" zoom_v = 1 def __init__(self, parent=None): super(PianoRoll, self).__init__(parent) self.setGeometry(10, 10, 611, 441) self.setFocusPolicy(QtCore.Qt.WheelFocus) self.setObjectName("pianoRoll") self.verticalScrollBar = QtGui.QScrollBar(self) self.verticalScrollBar.setGeometry(590, 20, 16, 421) self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical) self.verticalScrollBar.setRange(0, (const.PIANO_ROLL_RANGE - self.height())) self.verticalScrollBar.range_v = const.PIANO_ROLL_RANGE - self.height() self.curVSBValue = 0 self.horizontalScrollBar = QtGui.QScrollBar(self) self.horizontalScrollBar.setGeometry(0, 0, 591, 16) self.horizontalScrollBar.setOrientation(QtCore.Qt.Horizontal) self.curHSBValue = 0 self.prGrid = GridPR(self) self.pkContainer = QtGui.QWidget(self) self.pkContainer.setGeometry(0, 20, 64, 421) #self.pkContainer.paintEvent = self.test self.pkb_label = QtGui.QLabel(self.pkContainer) self.pix_map = QtGui.QPixmap("assets/PRKb_0.png") self.pkb_label.resize(64, 128 * 3) self.pkb_label.setPixmap(self.pix_map.scaled(self.pkb_label.size())) self.PKb = QtGui.QWidget(self.pkContainer) self.PKb.setGeometry(0, 0, 64, 421) #self.PKb.setStyleSheet("\n" # "background-image: url(:/images/PRKb);") self.connect(self.verticalScrollBar, QtCore.SIGNAL(events.VALUE_CHANGED), self.onVSliderChanged) self.connect(self.horizontalScrollBar, QtCore.SIGNAL(events.VALUE_CHANGED), self.onHSliderChanged) print self, 'init PianoRoll...' def test(self, e=None): #p = QtGui.QPainter() #p.drawPixmap(0, 0, self.pix_map) pass def paintEvent(self, event): # print 'update...Piano Roll' pass def mousePressEvent(self, e): self.emit(QtCore.SIGNAL(PianoRoll.EVENT_ONCLICK)) pass #def wheelEvent(self, e): # # print self,'wheelEvent',e.buttons() # self.setFocus() # if self.is_press(const.KEY_CTRL) and self.is_press(const.KEY_ALT): # print 'ctrl and alt' # self.zoom_v(e.delta()) # self.verticalScrollBar.setValue(self.verticalScrollBar.value() + 1) # self.verticalScrollBar.setValue(self.verticalScrollBar.value() - 1) # elif self.is_press(const.KEY_SHIFT): # self.horizontalScrollBar.setValue(self.horizontalScrollBar.value() - e.delta()) # else: # self.verticalScrollBar.setValue(self.verticalScrollBar.value() - e.delta()) # custom slot def onVSliderChanged(self, e): d = self.curVSBValue - self.verticalScrollBar.value() self.prGrid.scroll(0, d) self.pkContainer.scroll(0, d) self.curVSBValue = self.verticalScrollBar.value() pass def onHSliderChanged(self, e): d = self.curHSBValue - self.horizontalScrollBar.value() self.prGrid.scroll(d, 0) self.curHSBValue = self.horizontalScrollBar.value() pass ''' update view ''' def updateJNotes(self, lstJNoteVO): newHeight = self.height() newWidth = lstJNoteVO[0].deltaStart for jVO in lstJNoteVO: if jVO.pitch * 12 > newHeight: newHeight = jVO.pitch * 12 + 50 newWidth += jVO.getLength() self.prGrid.addJNote(jVO) pass self.updateSize(newWidth, newHeight) def updateSize(self, w, h): self.setGeometry(self.x(), self.y(), w, h) self.prGrid.setGridWidth(w) self.PKb.resize(64, h)