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])
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
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)
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]