示例#1
0
    def __init__(self, *args, **kwargs):
        self.__pixmap = None

        self.__moving = None
        self.__hover = None
        self.__focus = None
        self.__range = None
        self.__nSteps = self._defaultNSteps
        self.__snap = False

        self.__sliderIcons = {
            'left': getKmapIcon('right_arrow'),
            'right': getKmapIcon('left_arrow')
        }

        self.__sliders = OrderedDict([('left', Qt.QRect()),
                                      ('right', Qt.QRect())])
        self.__values = {'left': None, 'right': None}
        self.__showRangeBackground = None

        # call the super constructor AFTER defining all members that
        # are used in the "paint" method
        super(RangeSlider, self).__init__(*args, **kwargs)

        self.setFocusPolicy(Qt.Qt.ClickFocus)

        self.__setupSliders()

        self.setMouseTracking(True)
        self.setMinimumSize(Qt.QSize(*self._defaultMinimumSize))
        self.setMaximumHeight(self._defaultMaximumHeight)

        self.setSliderValues(None, None)
示例#2
0
    def __init__(self, parent=None):
        self.__pixmap = None
        self.__positionCount = None
        self.__firstValue = 0.
        self.__secondValue = 1.
        self.__minValue = 0.
        self.__maxValue = 1.
        self.__hoverRect = qt.QRect()
        self.__hoverControl = None

        self.__focus = None
        self.__moving = None

        self.__icons = {
            'first': icons.getQIcon('previous'),
            'second': icons.getQIcon('next')
        }

        # call the super constructor AFTER defining all members that
        # are used in the "paint" method
        super(RangeSlider, self).__init__(parent)

        self.setFocusPolicy(qt.Qt.ClickFocus)
        self.setAttribute(qt.Qt.WA_Hover)

        self.setMinimumSize(qt.QSize(50, 20))
        self.setMaximumHeight(20)

        # Broadcast value changed signal
        self.sigValueChanged.connect(self.__emitPositionChanged)
示例#3
0
    def __sliderRect(self, name):
        """Returns rectangle corresponding to slider in pixels

        :param str name: 'first' or 'second'
        :rtype: QRect
        :raise ValueError: If wrong name
        """
        assert name in ('first', 'second')
        if name == 'first':
            offset = -self._SLIDER_WIDTH
            position = self.getFirstPosition()
        elif name == 'second':
            offset = 0
            position = self.getSecondPosition()
        else:
            raise ValueError('Unknown name')

        sliderArea = self.__sliderAreaRect()

        maxPos = self.__getCurrentPositionCount() - 1
        xOffset = int((sliderArea.width() - 1) * position / maxPos)
        xPos = sliderArea.left() + xOffset + offset

        return qt.QRect(xPos, sliderArea.top(), self._SLIDER_WIDTH,
                        sliderArea.height())
示例#4
0
    def __setupSliders(self):
        area = self.__sliderRect()
        height = area.height()
        width = self._sliderWidth

        template = Qt.QRect(area.left(), area.top(), width, height)

        self.__sliders['left'] = template.translated(width / -2, 0)
        self.__sliders['right'] = template.translated(width / 2, 0)
示例#5
0
 def __findHoverControl(self, pos):
     """Returns the control at the position and it's rect location"""
     for name in ["first", "second"]:
         rect = self.__sliderRect(name)
         if rect.contains(pos):
             return name, rect
     rect = self.__drawArea()
     if rect.contains(pos):
         return "groove", rect
     return None, qt.QRect()
示例#6
0
def rasterText(text, font, size=-1, weight=-1, italic=False):
    """Raster text using Qt.

    It supports multiple lines.

    :param str text: The text to raster
    :param font: Font name or QFont to use
    :type font: str or :class:`QFont`
    :param int size:
        Font size in points
        Used only if font is given as name.
    :param int weight:
        Font weight in [0, 99], see QFont.Weight.
        Used only if font is given as name.
    :param bool italic:
        True for italic font (default: False).
        Used only if font is given as name.
    :return: Corresponding image in gray scale and baseline offset from top
    :rtype: (HxW numpy.ndarray of uint8, int)
    """
    if not text:
        _logger.info("Trying to raster empty text, replaced by white space")
        text = ' '  # Replace empty text by white space to produce an image

    if not isinstance(font, qt.QFont):
        font = qt.QFont(font, size, weight, italic)

    metrics = qt.QFontMetrics(font)
    size = metrics.size(qt.Qt.TextExpandTabs, text)
    bounds = metrics.boundingRect(qt.QRect(0, 0, size.width(), size.height()),
                                  qt.Qt.TextExpandTabs, text)

    width = bounds.width() + 2  # Add extra border
    # align line size to 32 bits to ease conversion to numpy array
    width = 4 * ((width + 3) // 4)
    image = qt.QImage(width, bounds.height(), qt.QImage.Format_RGB888)
    # TODO if Qt5 use Format_Grayscale8 instead
    image.fill(0)

    # Raster text
    painter = qt.QPainter()
    painter.begin(image)
    painter.setPen(qt.Qt.white)
    painter.setFont(font)
    painter.drawText(bounds, qt.Qt.TextExpandTabs, text)
    painter.end()

    array = convertQImageToArray(image)

    # RGB to R
    array = numpy.ascontiguousarray(array[:, :, 0])

    return array, metrics.ascent()
示例#7
0
    def paintEvent(self, pEvent):
        # get button geometry
        widgGeom = self.rect()
        paintGeom = qt.QRect(widgGeom.left() + 1,
                             widgGeom.top() + 1,
                             widgGeom.width() - 2,
                             widgGeom.height() - 2)

        # paint background color
        painter = qt.QPainter(self)
        if self.brush is not None:
            painter.fillRect(paintGeom, self.brush)
        # paint frame
        pen = qt.QPen(qt.Qt.black)
        pen.setWidth(1 if not self.isCurrent() else 5)
        painter.setPen(pen)
        painter.drawRect(paintGeom)
        painter.end()
        qt.QPushButton.paintEvent(self, pEvent)
示例#8
0
def createProcessingWidgetOverlay(parent):
    """Create a widget overlay to show that the application is processing data
    to update the plot.

    :param qt.QWidget widget: Widget containing the overlay
    :rtype: qt.QWidget
    """
    if hasattr(parent, "centralWidget"):
        parent = parent.centralWidget()
    button = WaitingPushButton(parent)
    button.setWaiting(True)
    button.setText("Processing...")
    button.setDown(True)
    position = parent.size()
    size = button.sizeHint()
    position = (position - size) / 2
    rect = qt.QRect(qt.QPoint(position.width(), position.height()), size)
    button.setGeometry(rect)
    button.setVisible(True)
    return button
示例#9
0
    def drawRangeSliderBackground(cls, painter, option, widget):
        """Draw the background of the RangeSlider widget into the painter.

        :param qt.QPainter painter: A painter
        :param StyleOptionRangeSlider option: Options to draw the widget
        :param qt.QWidget: The widget which have to be drawn
        """
        painter.save()
        painter.translate(0.5, 0.5)

        backgroundRect = qt.QRect(option.rect)
        if backgroundRect.height() > 8:
            center = backgroundRect.center()
            backgroundRect.setHeight(8)
            backgroundRect.moveCenter(center)

        selectedRangeRect = qt.QRect(backgroundRect)
        selectedRangeRect.setLeft(option.handlerRect1.center().x())
        selectedRangeRect.setRight(option.handlerRect2.center().x())

        highlight = option.palette.color(qt.QPalette.Highlight)
        activeHighlight = highlight
        selectedOutline = option.palette.color(qt.QPalette.Highlight)

        buttonColor = option.palette.button().color()
        val = qt.qGray(buttonColor.rgb())
        buttonColor = buttonColor.lighter(100 + max(1, (180 - val) // 6))
        buttonColor.setHsv(buttonColor.hue(),
                           buttonColor.saturation() * 0.75,
                           buttonColor.value())

        grooveColor = qt.QColor()
        grooveColor.setHsv(buttonColor.hue(),
                           min(255, (int)(buttonColor.saturation())),
                           min(255, (int)(buttonColor.value() * 0.9)))

        selectedInnerContrastLine = qt.QColor(255, 255, 255, 30)

        outline = option.palette.color(qt.QPalette.Background).darker(140)
        if (option.state & qt.QStyle.State_HasFocus
                and option.state & qt.QStyle.State_KeyboardFocusChange):
            outline = highlight.darker(125)
            if outline.value() > 160:
                outline.setHsl(highlight.hue(), highlight.saturation(), 160)

        # Draw background groove
        painter.setRenderHint(qt.QPainter.Antialiasing, True)
        gradient = qt.QLinearGradient()
        gradient.setStart(backgroundRect.center().x(), backgroundRect.top())
        gradient.setFinalStop(backgroundRect.center().x(),
                              backgroundRect.bottom())
        painter.setPen(qt.QPen(outline))
        gradient.setColorAt(0, grooveColor.darker(110))
        gradient.setColorAt(1, grooveColor.lighter(110))
        painter.setBrush(gradient)
        painter.drawRoundedRect(backgroundRect.adjusted(1, 1, -2, -2), 1, 1)

        # Draw slider background for the value
        gradient = qt.QLinearGradient()
        gradient.setStart(selectedRangeRect.center().x(),
                          selectedRangeRect.top())
        gradient.setFinalStop(selectedRangeRect.center().x(),
                              selectedRangeRect.bottom())
        painter.setRenderHint(qt.QPainter.Antialiasing, True)
        painter.setPen(qt.QPen(selectedOutline))
        gradient.setColorAt(0, activeHighlight)
        gradient.setColorAt(1, activeHighlight.lighter(130))
        painter.setBrush(gradient)
        painter.drawRoundedRect(selectedRangeRect.adjusted(1, 1, -2, -2), 1, 1)
        painter.setPen(selectedInnerContrastLine)
        painter.setBrush(qt.Qt.NoBrush)
        painter.drawRoundedRect(selectedRangeRect.adjusted(2, 2, -3, -3), 1, 1)

        painter.restore()
示例#10
0
    def paintEvent(self, event):
        painter = Qt.QPainter(self)

        style = Qt.QApplication.style()

        area = self.__drawArea()
        pixmapRect = self.__pixMapRect()

        sliders = self.__sliders

        option = Qt.QStyleOptionProgressBar()
        option.initFrom(self)
        option.rect = area
        option.state = ((self.isEnabled() and Qt.QStyle.State_Enabled)
                        or Qt.QStyle.State_None)
        style.drawControl(Qt.QStyle.CE_ProgressBarGroove, option, painter,
                          self)

        # showing interval rect only if show is forced or if there is not
        # background and show is True or None
        showRngBckgrnd = (self.__showRangeBackground
                          or (self.__pixmap and self.__showRangeBackground)
                          or (self.__pixmap is None
                              and self.__showRangeBackground is None)
                          or self.__showRangeBackground)

        alpha = (self.isEnabled() and 255) or 100

        if showRngBckgrnd:
            painter.save()
            rect = Qt.QRect(area)
            rect.setLeft(sliders['left'].center().x())
            rect.setRight(sliders['right'].center().x())
            gradient = Qt.QLinearGradient(area.topLeft(), area.bottomLeft())
            color = Qt.QColor(Qt.Qt.cyan)
            color.setAlpha(alpha)
            gradient.setColorAt(0., color)
            color = Qt.QColor(Qt.Qt.blue)
            color.setAlpha(alpha)
            gradient.setColorAt(1., color)
            brush = Qt.QBrush(gradient)
            painter.setBrush(brush)
            painter.drawRect(rect)
            painter.restore()

        if self.__pixmap and alpha == 255:
            painter.save()
            pen = painter.pen()
            pen.setWidth(2)
            pen.setColor(Qt.Qt.black)
            painter.setPen(pen)
            painter.drawRect(pixmapRect.adjusted(-1, -1, 1, 1))
            painter.restore()

            painter.drawPixmap(
                area.adjusted(self._sliderWidth / 2, self._pixmapVOffset,
                              -self._sliderWidth / 2, -self._pixmapVOffset),
                self.__pixmap, self.__pixmap.rect())

        option = Qt.QStyleOptionButton()
        option.initFrom(self)

        for side, slider in sliders.items():
            option.icon = self.__sliderIcons[side]
            option.iconSize = slider.size() * 0.7
            if self.__hover == side:
                option.state |= Qt.QStyle.State_MouseOver
            elif option.state & Qt.QStyle.State_MouseOver:
                option.state ^= Qt.QStyle.State_MouseOver
            if self.__focus == side:
                option.state |= Qt.QStyle.State_HasFocus
            elif option.state & Qt.QStyle.State_HasFocus:
                option.state ^= Qt.QStyle.State_HasFocus
            option.rect = slider
            style.drawControl(Qt.QStyle.CE_PushButton, option, painter, self)
示例#11
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1082, 758)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/logos/icon.png"), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.filenameBox = QtWidgets.QLineEdit(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.filenameBox.sizePolicy().hasHeightForWidth())
        self.filenameBox.setSizePolicy(sizePolicy)
        self.filenameBox.setMinimumSize(QtCore.QSize(100, 0))
        self.filenameBox.setBaseSize(QtCore.QSize(200, 0))
        self.filenameBox.setPlaceholderText("")
        self.filenameBox.setObjectName("filenameBox")
        self.gridLayout.addWidget(self.filenameBox, 0, 0, 1, 1)
        self.browseButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.browseButton.sizePolicy().hasHeightForWidth())
        self.browseButton.setSizePolicy(sizePolicy)
        self.browseButton.setMaximumSize(QtCore.QSize(1000000, 16777215))
        self.browseButton.setObjectName("browseButton")
        self.gridLayout.addWidget(self.browseButton, 0, 1, 1, 1)
        self.loadButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.loadButton.sizePolicy().hasHeightForWidth())
        self.loadButton.setSizePolicy(sizePolicy)
        self.loadButton.setMaximumSize(QtCore.QSize(10000, 16777215))
        self.loadButton.setAutoDefault(True)
        self.loadButton.setDefault(True)
        self.loadButton.setObjectName("loadButton")
        self.gridLayout.addWidget(self.loadButton, 0, 2, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setFocusPolicy(QtCore.Qt.TabFocus)
        self.tabWidget.setObjectName("tabWidget")
        self.object = QtWidgets.QWidget()
        self.object.setObjectName("object")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.object)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.objectWidget = ObjectView(self.object)
        self.objectWidget.setObjectName("objectWidget")
        self.horizontalLayout.addWidget(self.objectWidget)
        self.tabWidget.addTab(self.object, "")
        self.probe = QtWidgets.QWidget()
        self.probe.setObjectName("probe")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.probe)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.splitter_2 = QtWidgets.QSplitter(self.probe)
        self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
        self.splitter_2.setObjectName("splitter_2")
        self.splitter = QtWidgets.QSplitter(self.splitter_2)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setObjectName("splitter")
        self.probeHist = Histogram(self.splitter)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.probeHist.sizePolicy().hasHeightForWidth())
        self.probeHist.setSizePolicy(sizePolicy)
        self.probeHist.setMinimumSize(QtCore.QSize(200, 200))
        self.probeHist.setMaximumSize(QtCore.QSize(500, 16777215))
        self.probeHist.setBaseSize(QtCore.QSize(0, 0))
        self.probeHist.setObjectName("probeHist")
        self.layoutWidget = QtWidgets.QWidget(self.splitter)
        self.layoutWidget.setObjectName("layoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.probePlot = ProbeView(self.layoutWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(2)
        sizePolicy.setHeightForWidth(
            self.probePlot.sizePolicy().hasHeightForWidth())
        self.probePlot.setSizePolicy(sizePolicy)
        self.probePlot.setMinimumSize(QtCore.QSize(0, 200))
        self.probePlot.setMaximumSize(QtCore.QSize(500, 16777215))
        self.probePlot.setObjectName("probePlot")
        self.verticalLayout.addWidget(self.probePlot)
        self.probePlot2 = ProbeView(self.layoutWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(2)
        sizePolicy.setHeightForWidth(
            self.probePlot2.sizePolicy().hasHeightForWidth())
        self.probePlot2.setSizePolicy(sizePolicy)
        self.probePlot2.setMinimumSize(QtCore.QSize(0, 200))
        self.probePlot2.setMaximumSize(QtCore.QSize(500, 16777215))
        self.probePlot2.setObjectName("probePlot2")
        self.verticalLayout.addWidget(self.probePlot2)
        self.layoutWidget1 = QtWidgets.QWidget(self.splitter_2)
        self.layoutWidget1.setObjectName("layoutWidget1")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.layoutWidget1)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.gridLayout_3 = QtWidgets.QGridLayout()
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.label = QtWidgets.QLabel(self.layoutWidget1)
        self.label.setObjectName("label")
        self.gridLayout_3.addWidget(self.label, 0, 0, 1, 1)
        self.backwardBox = QtWidgets.QSpinBox(self.layoutWidget1)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.backwardBox.sizePolicy().hasHeightForWidth())
        self.backwardBox.setSizePolicy(sizePolicy)
        self.backwardBox.setMaximum(10000)
        self.backwardBox.setProperty("value", 1000)
        self.backwardBox.setObjectName("backwardBox")
        self.gridLayout_3.addWidget(self.backwardBox, 0, 1, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.layoutWidget1)
        self.label_3.setObjectName("label_3")
        self.gridLayout_3.addWidget(self.label_3, 0, 3, 1, 1)
        self.forwardBox = QtWidgets.QSpinBox(self.layoutWidget1)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.forwardBox.sizePolicy().hasHeightForWidth())
        self.forwardBox.setSizePolicy(sizePolicy)
        self.forwardBox.setMaximum(10000)
        self.forwardBox.setProperty("value", 1000)
        self.forwardBox.setObjectName("forwardBox")
        self.gridLayout_3.addWidget(self.forwardBox, 0, 4, 1, 1)
        self.propagateButton = QtWidgets.QPushButton(self.layoutWidget1)
        self.propagateButton.setObjectName("propagateButton")
        self.gridLayout_3.addWidget(self.propagateButton, 0, 9, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.layoutWidget1)
        self.label_2.setObjectName("label_2")
        self.gridLayout_3.addWidget(self.label_2, 1, 0, 1, 1)
        self.focusButton = QtWidgets.QPushButton(self.layoutWidget1)
        self.focusButton.setObjectName("focusButton")
        self.gridLayout_3.addWidget(self.focusButton, 1, 9, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(60, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_3.addItem(spacerItem, 0, 2, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(60, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_3.addItem(spacerItem1, 0, 5, 1, 1)
        self.numberBox = QtWidgets.QSpinBox(self.layoutWidget1)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.numberBox.sizePolicy().hasHeightForWidth())
        self.numberBox.setSizePolicy(sizePolicy)
        self.numberBox.setMaximum(1000)
        self.numberBox.setProperty("value", 200)
        self.numberBox.setObjectName("numberBox")
        self.gridLayout_3.addWidget(self.numberBox, 0, 7, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.layoutWidget1)
        self.label_4.setObjectName("label_4")
        self.gridLayout_3.addWidget(self.label_4, 0, 6, 1, 1)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_3.addItem(spacerItem2, 0, 8, 1, 1)
        self.focusSlider = QtWidgets.QSlider(self.layoutWidget1)
        self.focusSlider.setOrientation(QtCore.Qt.Horizontal)
        self.focusSlider.setObjectName("focusSlider")
        self.gridLayout_3.addWidget(self.focusSlider, 1, 1, 1, 7)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_3.addItem(spacerItem3, 1, 8, 1, 1)
        self.verticalLayout_2.addLayout(self.gridLayout_3)
        self.verticalFocusView = PropagationView(self.layoutWidget1)
        self.verticalFocusView.setMinimumSize(QtCore.QSize(200, 0))
        self.verticalFocusView.setObjectName("verticalFocusView")
        self.verticalLayout_2.addWidget(self.verticalFocusView)
        self.horizontalFocusView = PropagationView(self.layoutWidget1)
        self.horizontalFocusView.setObjectName("horizontalFocusView")
        self.verticalLayout_2.addWidget(self.horizontalFocusView)
        self.horizontalLayout_2.addWidget(self.splitter_2)
        self.tabWidget.addTab(self.probe, "")
        self.fourier = QtWidgets.QWidget()
        self.fourier.setObjectName("fourier")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.fourier)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.tabWidget.addTab(self.fourier, "")
        self.gridLayout_2.addWidget(self.tabWidget, 1, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1082, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.setTabOrder(self.filenameBox, self.browseButton)
        MainWindow.setTabOrder(self.browseButton, self.loadButton)
        MainWindow.setTabOrder(self.loadButton, self.tabWidget)