Beispiel #1
0
    def preDraw(self, dc, parent):
        self.drawingItems = []
        self.staves = []
        self.staveheight = 2 * dc.GetTextExtent('0')[1]
        self.staves.append(
            stavedrawing.stave((0, 0),
                               self.staveheight,
                               words=[],
                               margins=(0.1, 0.1),
                               translation=True))
        words = list(self.music)
        swords = []
        if self.speaker:
            swords.extend(self.speaker)
            swords.extend(words)
            if swords:
                words = swords

        words.reverse()
        lineNo = 0
        while words:
            self.staves[lineNo].addWord(words.pop())
            length = self.staves[lineNo].getOverallLength(dc)
            if length > 0.8 * parent.GetSize()[0]:
                if len(self.staves[lineNo].words) > 1:
                    words.append(self.staves[lineNo].popWord())
                lineNo = lineNo + 1
                self.staves.append(
                    stavedrawing.stave((0, 0),
                                       self.staveheight,
                                       words=[],
                                       margins=(0.1, 0.1),
                                       translation=True))
        if self.feedback:
            self.feedback.set_width(parent.GetSize()[0])
Beispiel #2
0
 def getDrawingItem(self, origin, height, parent):
     drawingItem = stavedrawing.stave(origin,
                                      height,
                                      words=self.music,
                                      parent=parent)
     drawingItem.setStatus(self.status)
     if self.status == 'message':
         drawingItem.setColour(colours.talkerText, colours.talkerStaffLines)
     elif self.status == 'failed' or self.status == 'err_msg':
         drawingItem.setColour(colours.error, colours.errorStaffLines)
     else:
         drawingItem.setColour(colours.staff, colours.staffLines)
     return drawingItem
Beispiel #3
0
    def draw(self,dc):
        print 'StaffPanel draw'
        self.__backgroundDrawing(dc)
        pts,weight=fonts.setStaffFont(dc)
 
        self.height=min([self.GetSize()[1],4*dc.GetFont().GetPointSize()])
        self.setOrigin()
        myStave=stavedrawing.stave(self.origin,self.height,width=self.GetSize()[0],words=self.model.words,notes=self.model.notes,parent=self,fitInWindow=True,interactive=True,matchesNotes=self.model.matchesWord(self.model.notes))
        staveLength=myStave.getOverallLength(dc)
        if staveLength>0.9*self.GetSize()[0]:
            myStave.setOrigin((0.9*self.GetSize()[0]-staveLength,self.origin[1]))
        myStave.setColour(colours.staff,colours.staffLines)
        myStave.draw(dc)

#        if staveLength>0.9*self.GetSize()[0]:
#            width=self.GetSize()[0]*(float(self.GetSize()[0])/float(staveLength))
#            start=self.GetSize()[0]-width
#            scrollbar=drawutils.HScrollMeter(start,width,(self.GetSize()[0],10),(0,self.GetSize()[1]-12))
#            scrollbar.draw(dc)        

        fonts.resetFont(dc,pts,weight)

        self.__borderDrawing(dc)
Beispiel #4
0
    def doDrawing(self, dc):
        self.__backgroundDrawing(dc)
        print 'dictionary: doDrawing'
        self.drawingItems = []
        self.oldXOffset = 0
        self.staveManager.clear()
        size = self.GetClientSize()
        if self.model:
            self.xMargin = 3
            self.yMargin = 10

            xpos = self.xMargin
            ypos = self.yMargin

            dict = self.model.getDict()
            numItems = len(dict)

            space = dc.GetTextExtent('00')[0]
            stavelen = space * 3

            keys = self.model.getKeys()

            if keys:
                labeling = False
                label = ''
                cols = 1
                largestWidth = 0
                widthSum = 0

                for i in range(len(keys)):
                    key = keys[i]
                    if self.model.byWord:
                        music = dict[key]

                        if key[0] == 'a':
                            labeling = True
                        if labeling and label != key[0]:
                            label = key[0]
                            self.drawingItems.append(
                                drawutils.dictionaryLabel(label, xpos, ypos))
                            inc = self.getLineHeight(dc)
                            ypos = ypos + inc
                            lastInc = 0.7 * self.getLineHeight(dc)

                            if ypos + lastInc > self.GetClientSize()[1]:
                                ypos = self.yMargin
                                cols = cols + 1
                                widthSum = widthSum + largestWidth

                                xpos = (self.xMargin) * cols + widthSum
                                largestWidth = 0

                                self.drawingItems.append(
                                    drawutils.divider(xpos, 0, xpos, size[1]))

                    else:
                        music = key

                    origin = (xpos, ypos)
                    staveHeight = 1.6 * dc.GetTextExtent('0')[1]

                    stave = stavedrawing.stave(origin,
                                               staveHeight,
                                               width=stavelen,
                                               words=[(music, '')],
                                               margins=(0.1, 0.1),
                                               translation=False,
                                               numbers=True,
                                               matchesNotes=True)
                    stave.setColour(colours.staff, colours.staffLines)
                    self.staveManager.addStave(stave)

                    textPos = xpos + stavelen + (0.3 * space)
                    if self.model.byWord:
                        self.drawingItems.append(
                            drawutils.textItem(key, textPos, ypos))
                        width = stavelen + (0.3 *
                                            space) + dc.GetTextExtent(key)[0]
                    else:
                        self.drawingItems.append(
                            drawutils.textItem(dict[key], textPos, ypos))
                        width = stavelen + (0.3 * space) + dc.GetTextExtent(
                            dict[key])[0]

                    if width > largestWidth:
                        largestWidth = width

                    inc = self.getLineHeight(dc)
                    ypos = ypos + inc
                    lastInc = 0.7 * self.getLineHeight(dc)

                    if ypos + lastInc > self.GetClientSize()[1]:
                        ypos = self.yMargin
                        cols = cols + 1
                        widthSum = widthSum + largestWidth

                        xpos = (self.xMargin) * cols + widthSum
                        largestWidth = 0

                        self.drawingItems.append(
                            drawutils.divider(xpos, 0, xpos, size[1]))

                cols = cols + 1
                widthSum = widthSum + largestWidth
                xpos = ((self.xMargin) * cols + widthSum)

                self.drawingItems.append(
                    drawutils.divider(xpos, 0, xpos, size[1]))
        self.__drawImpl(dc)
        self.minX = 0
        self.maxX = xpos + 50 - self.GetClientSize()[0]