def display(self, music, fontsize, last_timepos=None): """Exception handling should be done by the caller.""" score = parser.parse_to_score_object(music) sc = engravers.ScoreContext(score, last_timepos) self.m_engravers = sc.m_contexts self.m_fontsize = fontsize self._display()
def test_clefs(self): testdata = [ ('violin', 6), ('treble', 6), ('G', 6), ('G2', 6), ('alto', 0), ('C', 0), ('tenor', -2), ('bass', -6), ('french', 8), ('soprano', 4), ('mezzosoprano', 2), ('baritone', -4), ('varbaritone', -4), ('subbass', -8), ] testdata = testdata + [('"%s"' % c, i) for (c, i) in testdata] testdata.extend([ ('"violin_8"', 6 - 7), ('"violin_15"', 6 - 14), ('"G^8"', 6 + 7), ('"G^15"', 6 + 14), ]) for clef, ypos in testdata: score = mpd.parser.parse_to_score_object(r"\staff{ \clef %s c' }" % clef) sc = engravers.ScoreContext(score) eng = sc.m_contexts e = [ e for e in eng[0] if isinstance(e, mpd.engravers.NoteheadEngraver) ][0] self.assertEqual(e.m_ypos, ypos, "c' after %s clef is placed wrong" % clef)
def clear(self, numstaff=1): if numstaff == 0: self.m_engravers = [] else: sc = elems.Score() for x in range(numstaff): sc.add_staff() self.m_engravers = engravers.ScoreContext(sc).m_contexts self.g_d.queue_draw() dim = engravers.dimentions[20] self.set_size_request(self.get_size_request()[0], numstaff*dim.staff_spacing+dim.first_staff_ypos)
def score_updated(self): """ Redraw the staff. This should be called whenever m_score is updated. It is not necessary to call when only the cursor have been moved. """ self.m_scorecontext = engravers.ScoreContext(self.m_score) self.m_engravers = self.m_scorecontext.m_contexts self._display() if self.m_score.m_staffs: timeposes = self.m_score.m_staffs[0].get_timeposes() if self.m_cursor > len(timeposes) - 1: self.m_cursor = len(timeposes) - 1 else: self.m_cursor = None self.emit('score-updated')
def display_score(self, score): self.m_engravers = engravers.ScoreContext(score).m_contexts self._display()
def test_empty(self): sc = elems.Score() # This has always worked. engravers.ScoreContext(sc) sc.add_staff() engravers.ScoreContext(sc)