Example #1
0
def populateTreeItem(addToBeamClickText, item, element):
    item.setText(0, element.name)
    item.setText(1, element.displayLine())
    item.setText(2, displayWithUnitsNumber(roundSigFig(element.getLength(), 4), 'm'))
    item.setText(3, displayWithUnitsNumber(roundSigFig(element.getDisplacement(), 4), 'm'))
    item.setText(4, str(roundSigFig(convertUnitsNumber(element.getAngle(), 'rad', 'deg'), 4))+' deg')
    item.setText(5, str(element.getNumberOfElements()) if element.isBeamline() else '')
    item.setText(6, addToBeamClickText)
    item.setForeground(6, rt_qt.QtCore.Qt.blue)
    font = item.font(6)
    font.setBold(True)
    font.setUnderline(True)
    item.setFont(6, font)
Example #2
0
    def drawLengthScale(self):
        if self.ui.graphicsView.scene() is None or len(self.ui.graphicsView.scene().items()) == 0:
            return
        self.removeLengthScale()
        vis = self.visibleSceneRect()

        # Determine a reasonable length to display
        length = 1.0 # meter
        widthFraction = 0.25 # maximum length of legend w.r.t. preview window
        resolution = self.classDictionary.values()[0]().getResolution()

        while length*resolution < float(vis.width())*widthFraction:
            length = length*10.0

        while length*resolution > float(vis.width())*widthFraction:
            length = length/10.0

        textItem = rt_qt.QtGui.QGraphicsTextItem(displayWithUnitsNumber(length, 'm'))

        pixLength = int(length*resolution)
        if pixLength < 1:
            return

        # line showing length given by textItem
        try:
            rightEnd = rt_qt.QtCore.QPoint(vis.right()-vis.width()/10,
                                     vis.bottom()-vis.height()/10)
        except OverflowError:
            self.zoomPreview(1)
            return
        leftEnd = rightEnd - rt_qt.QtCore.QPoint(pixLength,0)
        self.lengthLegend.append(rt_qt.QtGui.QGraphicsLineItem(leftEnd.x(),
                                                         leftEnd.y(),
                                                         rightEnd.x(),
                                                         rightEnd.y()))
        endHeight = int(20.0/self.zoomScale) # constant-height despite zooming
        if endHeight <= 0:
            self.zoomPreview(-1)
            return
        # left upright bracket
        self.lengthLegend.append(rt_qt.QtGui.QGraphicsLineItem(leftEnd.x(),
                                                         leftEnd.y()+endHeight,
                                                         leftEnd.x(),
                                                         leftEnd.y()-endHeight))
        # right upright bracket
        self.lengthLegend.append(rt_qt.QtGui.QGraphicsLineItem(rightEnd.x(),
                                                         rightEnd.y()+endHeight,
                                                         rightEnd.x(),
                                                         rightEnd.y()-endHeight))
        # Scale textItem so it always appears the same size
        textItem.translate(rightEnd.x(),
                           rightEnd.y() - 
                           textItem.boundingRect().height()/(2*self.zoomScale))
        textItem.scale(1.0/self.zoomScale,
                       1.0/self.zoomScale)
        self.lengthLegend.append(textItem)

        for item in self.lengthLegend:
            self.ui.graphicsView.scene().addItem(item)