def updateHeader(self): self.headerItm = SimpleProfileHeader(None, self, self.profile, QRectF(0, 0, self.totalWidth, 120), QPointF(0, 0), self.graphicPen, self.columnWidths, self.columnSequence)
class SimpleProfileModel(QGraphicsScene): def __init__(self, parent): QGraphicsScene.__init__(self, parent) self.profile = None self.columnWidths = dict() self.columnSequence = [] self.totalWidth = 0 self.graphicPen = QPen(Qt.black) self.graphicPen.setStyle(Qt.SolidLine) self.graphicPen.setCapStyle(Qt.RoundCap) self.graphicPen.setJoinStyle(Qt.RoundJoin) self.setupColumnWidths() self.setupColumnSequence() def setProfile(self, profile): self.profile = profile self.updateItems() def setupColumnWidths(self): self.columnWidths[HeightHeaderItem] = 80 self.columnWidths[BedHeaderItem] = 50 self.columnWidths[LithologyHeaderItem] = 100 self.columnWidths[BeddingTypeHeaderItem] = 100 self.columnWidths[GrainSizeHeaderItem] = 200 self.columnWidths[ColorHeaderItem] = 25 self.columnWidths[FossilHeaderItem] = 50 self.columnWidths[SedimentStructureHeaderItem] = 50 self.columnWidths[CustomSymbolHeaderItem] = 50 self.columnWidths[TectonicUnitHeaderItem] = 25 self.columnWidths[StratigraphicUnitHeaderItem] = 25 self.columnWidths[LithologicalUnitHeaderItem] = 25 self.columnWidths[FaciesHeaderItem] = 25 self.columnWidths[OutcropTypeHeaderItem] = 25 self.totalWidth = 0 for k,v in self.columnWidths.iteritems(): self.totalWidth += v def setupColumnSequence(self): self.columnSequence.append(HeightHeaderItem) self.columnSequence.append(BedHeaderItem) self.columnSequence.append(BeddingTypeHeaderItem) self.columnSequence.append(LithologyHeaderItem) self.columnSequence.append(GrainSizeHeaderItem) self.columnSequence.append(ColorHeaderItem) self.columnSequence.append(FossilHeaderItem) self.columnSequence.append(SedimentStructureHeaderItem) self.columnSequence.append(CustomSymbolHeaderItem) self.columnSequence.append(TectonicUnitHeaderItem) self.columnSequence.append(LithologicalUnitHeaderItem) self.columnSequence.append(StratigraphicUnitHeaderItem) self.columnSequence.append(FaciesHeaderItem) self.columnSequence.append(OutcropTypeHeaderItem) def updateItems(self): self.clear() if self.profile is not None: self.updateLegend() self.updateHeader() self.updateProfile() def updateLegend(self): self.legendItm = SimpleLegend(None, self, self.profile, QRectF(0, 0, self.totalWidth, 10), self.graphicPen, 8) def updateHeader(self): self.headerItm = SimpleProfileHeader(None, self, self.profile, QRectF(0, 0, self.totalWidth, 120), QPointF(0, 0), self.graphicPen, self.columnWidths, self.columnSequence) def updateProfile(self): self.profileItm = SimpleProfile(None, self, self.profile, QRectF(0, 0, self.totalWidth, self.profileHeight()), QPointF(0, self.headerItm.rect().height()), self.graphicPen, self.columnWidths, self.columnSequence) def profileHeight(self): return self.profile.heightInMillimetres() / self.profile.scale def scaleLengthToPixel(self, value, unit): return self.scaleMillimetresToPixel(value * unit.microMetre/1000) def scaleMillimetresToPixel(self, mm): return mm / self.profile.scale