def __paintEndTime(self, painter): endFrame = self.endFrame() timeExtent = self.__getTickArea(endFrame) oldPen = painter.pen() painter.setPen(QtGui.QColor(255, 0, 0)) painter.drawLine(timeExtent.left(), timeExtent.top(), timeExtent.left(), 0) metric = QtGui.QFontMetrics(painter.font()) frameString = str(int(endFrame)) xPos = timeExtent.left() - metric.width(frameString) / 2 yPos = metric.ascent() + 1 painter.drawText(xPos, yPos, frameString) painter.setPen(oldPen)
def __paintFloatTime(self, painter): if self.__floatTime == None: return timeExtent = self.__getTickArea(self.__floatTime) oldPen = painter.pen() painter.setPen(QtGui.QColor(90, 90, 90)) painter.drawLine(timeExtent.left(), timeExtent.top(), timeExtent.left(), timeExtent.bottom()) if self.__selectionRange: painter.setPen(QtGui.QColor(255,255,255)) else: painter.setPen(QtGui.QColor(128, 128, 128)) metric = QtGui.QFontMetrics(painter.font()) frameString = str(self.__floatTime) xPos = timeExtent.left() - metric.width(frameString) / 2 yPos = timeExtent.top() + metric.ascent() painter.drawText(xPos, yPos, frameString) painter.setPen(oldPen)
def __paintLabels(self, painter): tickExtent = self.__getTickAreaExtent() labelHeight = tickExtent.height() / 3 labelPeriod = self.__getLabelPeriod() if labelPeriod == 0: return firstLabel = self.__frameRange[0] + labelPeriod - 1 firstLabel = firstLabel - (firstLabel % labelPeriod) frames = [] for frame in range(int(firstLabel), int(self.__frameRange[1])+1, int(labelPeriod)): frames.append(frame) if frames[0] != self.__frameRange[0]: frames.insert(0, self.__frameRange[0]) if frames[-1] != self.__frameRange[1]: frames.append(self.__frameRange[1]) oldPen = painter.pen() # draw hatches for labelled frames painter.setPen(self.palette().color(QtGui.QPalette.Foreground)) for frame in frames: xPos = self.__getTickArea(frame).left() painter.drawLine(xPos, -labelHeight, xPos, 0) painter.setPen(QtGui.QColor(10, 10, 10)) metric = QtGui.QFontMetrics(painter.font()) yPos = metric.ascent() + 1 rightEdge = -10000 width = metric.width(str(frames[-1])) farEdge = self.__getTickArea(frames[-1]).right() - width / 2 farEdge -= 4 for frame in frames: xPos = self.__getTickArea(frame).left() frameString = str(frame) width = metric.width(frameString) xPos = xPos - width / 2 if (xPos > rightEdge and xPos + width < farEdge) or frame is frames[-1]: painter.drawText(xPos, yPos, frameString) rightEdge = xPos + width + 4 painter.setPen(oldPen)