Ejemplo n.º 1
0
    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...'
Ejemplo n.º 2
0
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)