Files
slsDetectorPackage/pyctbgui/pyctbgui/ui/plot.ui
Dhanya Thattil 5b61ff24bb Dev/pyctbgui merge (#960)
* added empty c extension

* added rotation to the decoding

* added color map, options and findex

* minor

* move checks to before acquisition

* added pixel map based decoder

* cleanup

* no thread creation for single thread processing

* added rotation and test to compare

* allow high and low water mark for zmq (also buffer size) for fast readouts

* removed roatation during decoding

* added Transpose to image and invert Y False to invert it

* retains the zoomed state after the first image of gui, catch and display exception if no detector connected

* moved start frame to dockable widget, removed extra frame number label, moved current measurement also to dockable widget, hide frame plot entirely when showing patternviewer

* first image dependin on which plot

* remember settings of main window size and position, dockewidget if docked, its size and posisiotn as well, then update it next time the gui is opened

* change in comment

* using c decoder for moench 04 and matterhorn

* catch exception from invalid image from decoder

* clean up

* update row and col when choosing image type, neeeded to show values

* fix for previous PR

* disable resetting colormap values
keep the range selected for every new acquisition

* fix typos + tested on virtual matterhorn

* minor print

* refactored Slow ADCs Tab

* refactored DAC tab

* refactored power supplies

* refactored signals tab

* refactored transceiver tab

* fix typo

* fix typo2

* remove commented code

* delete commented code

* delete commented code

* delete commented signals code

* remove commented code for transceiver tab

* refactor adc tab

* refactor Pattern Tab

* Refactor transceivers tab (PR#5) (#118)

* refactored transceiver tab

* remove commented code for transceiver tab

---------

Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>

* refactor adc tab (PR#6) (#119)


* refactor adc tab

* refactored Plot and Acquisition Tabs

* fix the regression issue

* restructure project files

* applying singleton and renaming tabs to services

* working install using pip

* applies singleton to tab classes and remove CI erros

* added pyzmq and pillow

* remove the singleton implementation and keep changes

* fix merge errors in mainWindow

* moved misplaced init file

* rename service to tab

* reorganize imports

* iterate over tabs

* reorder tabs

* add slowadc to the list

* saving changes (buggy)
power supply ui not showing in the gui

* split power supply tab

* fixed tests

* add hardcoded values to defines file

* fix error

* separate power supply

* fix errors for powerSuppliesTab

* split dacs

* split slow adcs

* split signals tab

* added tests for bit_utils

* add slowAdc class to defines

* split transceiver ui file

* split adc.ui

* split pattern ui file

* split plot and acquisition ui file

* added basic test for parsing bit names

* removed redundant code in read_alias_file

* fix dacs ui position

* testing for correct exception

* cmd and args at split

* group radio buttons

* fix comments from PR#1

* show legend

* added python version and dev requirements to setup.py

* fix dac issue

* moved _decoder into pkg

* added inplace build

* removed clear

* fixed dependencies

* make tests run without slsdet

* updated name of action

* define colcount

* fixed loading of alias file

* add yapf and ruff

* apply formatting

* fix E and F rules

* add more ruff rules

* change variable name

* squashing gh debugging commits and add pre-commit

* update label values to mv units

* add hook for yapf

* reconfigure yapf precommit hook

* add format and check_format to makefile

* change gh actions

* update readme

* added check_format

* WIP

* added linting in github action

* updated readme]

* add more control for color choice

* remove useless file

* fix un-updated line after refactoring Defines
BIT0_31_MASK is not found in Defines.signals

* visually improve the interface

* fix last commit

* add only selected plots for legend

* add hide legend button

* change hide legend to show legend
checkbox show legend is checked by default

* add support for saving in numpy

* solve conversations

* fix acq index offset

* fix browse button in pattern error

* fix other browse button errors

* finish tests and add usage.md

* remove buffer

* add file,numpy-like interface and tests

* remove useless .npy files

* subscriptible npz files

* remove useless files

* remove repetetive tests

* save changes

* add mode r+, add with support,remove logging

* remove offset of acqIndex between raw and numpy saving

* fix only saving last frame

* save signals of multiple devices

* add comments and move condition for clearer code

* fix bug when vieweing pattern file

* iterate over enabled and plotted plots

* add padestal substraction to transceiver and analog data

* init pedestal frames to detector.frames

* restore old exception

* add pedestal substraction for digital signals

* remove frames spinbox from plotTab

* remove comments and use str instead of Path

* avoid saving all frames

* correct exception and log error's trace

* add gui tests

* add waveform test

* add pedestal test

* refactor by using fixtures

* add tests for moench analog and pattern

* add pytest-qt to dependencies

* add save and load gui parameters

* remove nohup file

* fix old bug IndexError

* save plot type

* a

* handle canceling load, loading matterhorn pedestal for moench

* remove comparing .png files for pattern test

* save plot type

* red error on status bar when shape mismatch for loaded pedestal

* fix makefile and docstrings

* fix PRs conversation

* move code into different function

* fix wrong function names for power supply

* removed old ctbgui

* removed unnecessary files

---------

Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>
Co-authored-by: Braham Bechir <braham_b@pc11979.psi.ch>
Co-authored-by: Bechir <bechir.braham@psi.ch>
Co-authored-by: Bechir <bechir.brahem420@gmail.com>
2024-09-10 16:00:04 +02:00

1056 lines
29 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>860</width>
<height>800</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>860</width>
<height>800</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QFrame" name="frame_12">
<property name="geometry">
<rect>
<x>10</x>
<y>50</y>
<width>841</width>
<height>141</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_21">
<item row="0" column="0">
<widget class="QLabel" name="label_110">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Type:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QRadioButton" name="radioButtonDistribution">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Distribution</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1" colspan="4">
<widget class="QStackedWidget" name="stackedWidgetPlotType">
<property name="currentIndex">
<number>2</number>
</property>
<widget class="QWidget" name="pageWaveform">
<layout class="QGridLayout" name="gridLayout_23">
<item row="0" column="2">
<widget class="QLabel" name="labelDigitalWaveformOption">
<property name="text">
<string>Digital plot:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QRadioButton" name="radioButtonOverlay">
<property name="text">
<string>Overlay</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_2</string>
</attribute>
</widget>
</item>
<item row="0" column="5">
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBoxShowLegend">
<property name="text">
<string>show legend</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QRadioButton" name="radioButtonStripe">
<property name="text">
<string>Stripe</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_2</string>
</attribute>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="pageDistribution"/>
<widget class="QWidget" name="pageImage">
<layout class="QGridLayout" name="gridLayout_22">
<item row="0" column="1">
<widget class="QComboBox" name="comboBoxPlot">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>31</height>
</size>
</property>
<property name="toolTip">
<string>Image decoder</string>
</property>
<item>
<property name="text">
<string>Matterhorn</string>
</property>
</item>
<item>
<property name="text">
<string>Moench04</string>
</property>
</item>
<item>
<property name="text">
<string/>
</property>
</item>
</widget>
</item>
<item row="0" column="5">
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="4">
<widget class="QComboBox" name="comboBoxColorMap">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>120</width>
<height>31</height>
</size>
</property>
<property name="toolTip">
<string>Color map of the image</string>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer_18">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Decoder: </string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Color Map: </string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelPlotOptions">
<property name="text">
<string>Options:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="radioButtonNoPlot">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>No Plot</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="3" column="1" colspan="2">
<widget class="QComboBox" name="comboBoxZMQHWM">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>31</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If set to high readout, zmq HWM is set to 2 and buffer size to 1MB to drop zmq packets to catch up.&lt;/p&gt;&lt;p&gt;If set to low readout (default), zmq HWM is set to zmq default (1000) and buffer size to os default to not drop any zmq packets.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
<string>Low - drop no zmq packet</string>
</property>
</item>
<item>
<property name="text">
<string>High - drop zmq packets to catch up</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelZMQHWM">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If set to high readout, zmq HWM is set to 2 and buffer size to 1MB to drop zmq packets to catch up.&lt;/p&gt;&lt;p&gt;If set to low readout (default), zmq HWM is set to zmq default (1000) and buffer size to os default to not drop any zmq packets.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Readout speed:</string>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QRadioButton" name="radioButtonImage">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Image</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="0" column="2">
<widget class="QRadioButton" name="radioButtonWaveform">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Waveform</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frame_10">
<property name="geometry">
<rect>
<x>0</x>
<y>480</y>
<width>841</width>
<height>311</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QGridLayout" name="gridLayout_16">
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="label_122">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Fit Panel ADC:</string>
</property>
</widget>
</item>
<item row="4" column="11">
<widget class="QLabel" name="label_120">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Max:</string>
</property>
</widget>
</item>
<item row="6" column="8" colspan="2">
<widget class="QLabel" name="labelValues">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Values</string>
</property>
</widget>
</item>
<item row="0" column="10" colspan="2">
<widget class="QLabel" name="label_113">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Dynamic Range:</string>
</property>
</widget>
</item>
<item row="1" column="11">
<widget class="QLabel" name="label_116">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Y:</string>
</property>
</widget>
</item>
<item row="4" column="12">
<widget class="QSpinBox" name="spinBoxPedestalMax">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="8" colspan="2">
<widget class="QSpinBox" name="spinBoxImageX">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="6" colspan="2">
<widget class="QLabel" name="label_118">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Min:</string>
</property>
</widget>
</item>
<item row="1" column="7">
<widget class="QLabel" name="label_115">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>X:</string>
</property>
</widget>
</item>
<item row="3" column="8" colspan="2">
<widget class="QSpinBox" name="spinBoxRawMin">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="8" colspan="2">
<widget class="QSpinBox" name="spinBoxNCount">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="12">
<widget class="QSpinBox" name="spinBoxRawMax">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="3" colspan="4">
<widget class="QSpinBox" name="spinBoxFit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="label_114">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Image Pixels:</string>
</property>
</widget>
</item>
<item row="0" column="2" colspan="3">
<widget class="QSpinBox" name="spinBoxSerialOffset">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="8" colspan="2">
<widget class="QSpinBox" name="spinBoxPedestalMin">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="5">
<widget class="QLabel" name="labelY">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Y</string>
</property>
</widget>
</item>
<item row="4" column="6" colspan="2">
<widget class="QLabel" name="label_119">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Min:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="labelX">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>X</string>
</property>
</widget>
</item>
<item row="3" column="11">
<widget class="QLabel" name="label_121">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Max:</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_111">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Serial offset:</string>
</property>
</widget>
</item>
<item row="1" column="12">
<widget class="QSpinBox" name="spinBoxImageY">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="8" colspan="3">
<widget class="QLabel" name="label_123">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Plot Bit:</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxRaw">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Raw Data</string>
</property>
</widget>
</item>
<item row="6" column="11" colspan="2">
<widget class="QPushButton" name="pushButtonReferesh">
<property name="minimumSize">
<size>
<width>0</width>
<height>31</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(199, 213, 207);</string>
</property>
<property name="text">
<string>Referesh</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="4">
<widget class="QCheckBox" name="checkBoxPedestal">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Pedestal Subtract</string>
</property>
</widget>
</item>
<item row="0" column="12">
<widget class="QSpinBox" name="spinBoxDynamicRange">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="11" colspan="2">
<widget class="QSpinBox" name="spinBoxPlot">
<property name="enabled">
<bool>false</bool>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="5" colspan="3">
<widget class="QLabel" name="label_112">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>N Counters:</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QFrame" name="frame">
<property name="geometry">
<rect>
<x>10</x>
<y>219</y>
<width>841</width>
<height>81</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>-7</y>
<width>841</width>
<height>111</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Color Range:</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget" native="true">
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>121</width>
<height>91</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="radioButtonAutomatic">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>15</height>
</size>
</property>
<property name="text">
<string>All</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_4</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonCenter">
<property name="enabled">
<bool>true</bool>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>15</height>
</size>
</property>
<property name="text">
<string>3-97%</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_4</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonFixed">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>15</height>
</size>
</property>
<property name="text">
<string>Fixed</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_4</string>
</attribute>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>min:</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="cminSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<double>-1000.000000000000000</double>
</property>
<property name="maximum">
<double>100000.000000000000000</double>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>max:</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="cmaxSpinBox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="maximum">
<double>100000.000000000000000</double>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<widget class="QFrame" name="frame_2">
<property name="geometry">
<rect>
<x>10</x>
<y>330</y>
<width>841</width>
<height>101</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget_2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>841</width>
<height>51</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_117">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Pedestal:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelPedestalFrames">
<property name="minimumSize">
<size>
<width>250</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>recorded frames: 0</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonPedestalRecord">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Record</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_3</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonPedestalApply">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Apply </string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_3</string>
</attribute>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonPedestalReset">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>31</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(199, 213, 207);</string>
</property>
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="horizontalLayoutWidget_3">
<property name="geometry">
<rect>
<x>-1</x>
<y>49</y>
<width>841</width>
<height>51</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButtonLoadPedestal">
<property name="minimumSize">
<size>
<width>120</width>
<height>31</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(199, 213, 207);</string>
</property>
<property name="text">
<string>Load Pedestal</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonSavePedestal">
<property name="minimumSize">
<size>
<width>120</width>
<height>31</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(199, 213, 207);</string>
</property>
<property name="text">
<string>Save Pedestal</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</widget>
<resources/>
<connections/>
<buttongroups>
<buttongroup name="buttonGroup_2"/>
<buttongroup name="buttonGroup_4"/>
<buttongroup name="buttonGroup"/>
<buttongroup name="buttonGroup_3"/>
</buttongroups>
</ui>