def __init__(self): super().__init__() self.setupUi(self) # self.donIndex_list = [] # self.don_list = [] # self.push_changeOrder.clicked.connect(self.push_changeOrder_clicked) # self.push_add.clicked.connect(self.push_add_clicked) # self.push_del.clicked.connect(self.push_del_clicked) # self.push_addBeat.clicked.connect(self.push_addBeat_clicked) # self.push_delBeat.clicked.connect(self.push_delBeat_clicked) # self.MAX_WIDTH = self.label_beat.width() # self.beatInfo = {'beats':[], 'hIndex':-1} self.label_beat.setFixedSize(self.scrollArea.height() * 2 / 3, self.scrollArea.height() * 2 / 3) self.horizontalLayout.addStretch(1) self.push_load.clicked.connect(self.push_load_clicked) self.push_save.clicked.connect(self.push_save_clicked) self.noteList = list() self.beatList = list() self.highlightBeatLabel = None self.score = Score.TJA() # print(self.label_beat.width()) # sample code self.push_create.clicked.connect(self.push_create_clicked) self.undoStack = QUndoStack(self) self.donList = [] self.donNum = 0
def push_load_clicked(self): rendaflag = False rendaNote, rendaStart, rendaEnd = None, None, None fname = QFileDialog.getOpenFileName(self)[0] if fname == '': return # fname="test.tja" self.highlightBeatLabel = None self.score.clearLabel() score = Score.TJA(fname) track = score.track_list[0] curBarPos = self.label_beat.width( ) # left-most absolute position x of current bar barIdx = 0 for bar in track.bar_list: m = bar.measure[0] beatIdx = 0 for beat in bar.beat_list: if beatIdx == len(bar.beat_list) - 1: beat.label = self.makeLabelBeat(end=True) else: beat.label = self.makeLabelBeat() w = beat.label.width() offset = w / beat.splitParam # distance between notes noteIdx = 0 for note in beat.note_list: if note.getNote() in [5, 6, 7]: rendaNote = self.makeLabelNote(note) N = rendaNote rendaStart = curBarPos + beatIdx * w + noteIdx * offset - N.height( ) / 2 elif note.getNote() == 8: rendaEnd = curBarPos + beatIdx * w + noteIdx * offset - rendaNote.height( ) / 2 rendaNote.setRenda(rendaStart, rendaEnd) else: N = self.makeLabelNote(note) N.move( round(curBarPos + beatIdx * w + noteIdx * offset - N.height() / 2), round(self.label_beat.y() + self.label_beat.height() / 2 - N.height() / 2)) note.label = N noteIdx += 1 # print(N.x()) beatIdx += 1 curBarPos += m * w barIdx += 1 self.score = score # self.score.print() print(self.score.toTJAForm())