Qt5 built in qwt (#570)

- qt4->qt5
- in built qt5 6.1.5 because rhel7 is not upto date with qt5, removed findqwt.cmake
- made a fix in qwt lib (qwt_plot_layout.h) to work with 5.15 and lower versions for qrect constr.
- qt5 forms fixed, qt4 many hard coding forms switched to forms including qtabwidget, scrolls etc, fonts moved to forms
 - docking option enabled by default, removed option to disable docking feature from "Mode"
- added qVersionResolve utility functions to handle compatibility before and after qt5.12
- qtplots (ian's code) takes in gain mode enable to set some settings within the class, with proper gain plot ticks
- ensure gain plots have no zooming of z axis in 2d and y axis in 1d
- removed placeholder text in qpalette in main window form as its not supportd until 5.12 (so using qt5.9 designer insted of qt5.15 to cope)
- tab order
Servers:
- fixed some error messages that were empty for fail in funcs (mostly minor as if this error, major issues)
This commit is contained in:
Dhanya Thattil
2022-11-11 15:15:10 +01:00
committed by GitHub
parent 05f657c106
commit 38cd10d4e6
1697 changed files with 255572 additions and 4708 deletions

View File

@ -1,9 +1,12 @@
# SPDX-License-Identifier: LGPL-3.0-or-other
# Copyright (C) 2021 Contributors to the SLS Detector Package
set(CMAKE_AUTOMOC ON)
find_package(Qt4 REQUIRED)
find_package(Qwt 6.1 REQUIRED)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
find_package(Qt5 5.9 COMPONENTS Widgets Core Gui REQUIRED)
find_package(PNG REQUIRED)
find_package(ZLIB REQUIRED)
@ -24,6 +27,7 @@ set(SOURCES
src/qTabDeveloper.cpp
src/qTabMessages.cpp
src/qDacWidget.cpp
src/qVersionResolve.cpp
)
set(FORMS
@ -41,7 +45,7 @@ set(FORMS
forms/form_cloneplot.ui
)
qt4_wrap_ui(FORMS_H ${FORMS})
qt5_wrap_ui(FORMS_H ${FORMS})
set(HEADERS
slsDetectorPlotting/include/SlsQt1DPlot.h
@ -62,15 +66,16 @@ set(HEADERS
include/qTabDeveloper.h
include/qTabMessages.h
include/qDacWidget.h
include/qVersionResolve.h
)
set(RESOURCES
include/icons.qrc
)
qt4_add_resources(RESOURCES_SRCS ${RESOURCES})
qt5_add_resources(RESOURCES_SRCS ${RESOURCES})
add_definitions(
-DPRINT_LOG #-DVERBOSE
${Qt5Widgets_DEFINITIONS} -DPRINT_LOG #-DVERBOSE
)
add_executable(slsDetectorGui
@ -84,23 +89,20 @@ target_include_directories(slsDetectorGui PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/slsDetectorPlotting/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
"$<BUILD_INTERFACE:${QT_INCLUDE_DIR}>"
"$<BUILD_INTERFACE:${QT_QTCORE_INCLUDE_DIR}>"
"$<BUILD_INTERFACE:${QT_QTGUI_INCLUDE_DIR}>"
"$<BUILD_INTERFACE:${QWT_INCLUDE_DIR}>"
"$<BUILD_INTERFACE:${QT5Widgets_INCLUDE_DIRS}>"
"$<BUILD_INTERFACE:${SLS_INTERNAL_QWT_DIR}/include>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
)
target_link_libraries(slsDetectorGui PUBLIC
slsProjectOptions
slsDetectorStatic
${QT_QTCORE_LIBRARIES}
${QT_QTGUI_LIBRARIES}
${QWT_LIBRARIES}
${SLS_INTERNAL_QWT_DIR}/lib/libqwt.so.6.1.5
PNG::PNG
ZLIB::ZLIB
Qt4::QtOpenGL
Qt4::QtSvg
Qt5::Widgets
Qt5::Gui
Qt5::Core
expat
PRIVATE
@ -109,6 +111,8 @@ target_link_libraries(slsDetectorGui PUBLIC
set_target_properties(slsDetectorGui PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
#Instruct CMake to run moc automatically when needed
AUTOMOC ON
)
if((CMAKE_BUILD_TYPE STREQUAL "Release") AND SLS_LTO_AVAILABLE)
set_property(TARGET slsDetectorGui PROPERTY INTERPROCEDURAL_OPTIMIZATION True)

View File

@ -16,44 +16,17 @@
<height>300</height>
</size>
</property>
<property name="font">
<font>
<family>Carlito</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QGroupBox" name="boxPlot">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Sans Serif</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Sample Plot</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="plotLayout">
<property name="margin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lblCompleteImage">
<property name="sizePolicy">
@ -218,7 +191,16 @@
</size>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
@ -376,6 +358,48 @@
</layout>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QGroupBox" name="boxPlot">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Carlito</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Sample Plot</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="flat">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="plotLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
@ -384,7 +408,7 @@
<x>0</x>
<y>0</y>
<width>376</width>
<height>27</height>
<height>17</height>
</rect>
</property>
<widget class="QMenu" name="menuSave">

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>300</width>
<height>30</height>
<height>28</height>
</rect>
</property>
<property name="sizePolicy">
@ -19,25 +19,102 @@
<property name="minimumSize">
<size>
<width>300</width>
<height>30</height>
<height>28</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>300</width>
<height>30</height>
<height>28</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<property name="margin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="lblDac">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>90</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>vref_comp_fe:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLabel" name="lblDacmV">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>70</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>2999 mV</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="spinDac">
<property name="minimumSize">
@ -52,6 +129,18 @@
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>Set dac in dac units</string>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::PlusMinus</enum>
</property>
<property name="keyboardTracking">
<bool>false</bool>
</property>
@ -61,57 +150,26 @@
<property name="maximum">
<double>10000.000000000000000</double>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblDac">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>120</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>120</width>
<height>25</height>
</size>
</property>
<property name="text">
<string>TextLabel</string>
<property name="value">
<double>2799.000000000000000</double>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="lblDacmV">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="minimumSize">
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>60</width>
<height>25</height>
<width>5</width>
<height>20</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>25</height>
</size>
</property>
<property name="text">
<string>---mV</string>
</property>
</widget>
</spacer>
</item>
</layout>
</widget>

View File

@ -10,7 +10,7 @@
<x>0</x>
<y>0</y>
<width>800</width>
<height>906</height>
<height>882</height>
</rect>
</property>
<property name="sizePolicy">
@ -139,7 +139,8 @@
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
@ -149,6 +150,9 @@
<iconset resource="../include/icons.qrc">
<normaloff>:/icons/images/mountain.png</normaloff>:/icons/images/mountain.png</iconset>
</property>
<property name="toolTip">
<string/>
</property>
<property name="inputMethodHints">
<set>Qt::ImhNone</set>
</property>
@ -171,84 +175,616 @@
<property name="minimumSize">
<size>
<width>0</width>
<height>395</height>
<height>400</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>524287</width>
<height>395</height>
</size>
</property>
<layout class="QGridLayout" name="layoutTabs"/>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>25</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>25</height>
<height>400</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="defaultUp">
<bool>false</bool>
</property>
<property name="nativeMenuBar">
<bool>true</bool>
</property>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>&amp;Help</string>
</property>
<addaction name="actionAbout"/>
</widget>
<widget class="QMenu" name="menuUtilities">
<property name="title">
<string>Utilities</string>
</property>
<addaction name="actionLoadConfiguration"/>
<addaction name="actionLoadTrimbits"/>
<addaction name="actionSaveTrimbits"/>
<addaction name="actionLoadParameters"/>
</widget>
<widget class="QMenu" name="menuModes">
<property name="title">
<string>Modes</string>
</property>
<addaction name="actionDebug"/>
<addaction name="actionExpert"/>
<addaction name="actionDockable"/>
</widget>
<addaction name="menuUtilities"/>
<addaction name="menuModes"/>
<addaction name="menuHelp"/>
<layout class="QGridLayout" name="layoutTabs">
<item row="0" column="0">
<widget class="QTabWidget" name="tabs">
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>185</red>
<green>185</green>
<blue>185</blue>
</color>
</brush>
</colorrole>
<colorrole role="Button">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Text">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>185</red>
<green>185</green>
<blue>185</blue>
</color>
</brush>
</colorrole>
<colorrole role="ButtonText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>185</red>
<green>185</green>
<blue>185</blue>
</color>
</brush>
</colorrole>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 255);</string>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tMeasurement">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Measurement</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QScrollArea" name="scrollMeasurement">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>778</width>
<height>351</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tSettings">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Settings</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollSettings">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>333</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tDataOutput">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Data Output</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollDataOutput">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_3">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>333</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tPlot">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Plot</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollPlot">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_4">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>333</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tAdvanced">
<property name="enabled">
<bool>true</bool>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Advanced</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollAdvanced">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_5">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>333</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tDebugging">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Debugging</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollDebugging">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_6">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>333</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tDeveloper">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Developer</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_12">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollDeveloper">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_7">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>333</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tTerminal">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>Terminal</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_14">
<item row="0" column="0">
<widget class="QScrollArea" name="scrollTerminal">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_8">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>760</width>
<height>333</height>
</rect>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QDockWidget" name="dockWidgetPlot">
<property name="enabled">
@ -262,8 +798,8 @@
</property>
<property name="minimumSize">
<size>
<width>36</width>
<height>425</height>
<width>50</width>
<height>54</height>
</size>
</property>
<property name="maximumSize">
@ -274,24 +810,15 @@
</property>
<property name="font">
<font>
<family>Sans Serif</family>
<pointsize>11</pointsize>
<family>Cantarell</family>
<pointsize>10</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Left Click :zoom in&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Righ&lt;/span&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;t Click &lt;/span&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;: zoom out by 1&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Middle Click : panning&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; color:#00007f;&quot;&gt;Ctrl+Right Click : zoom out to full size&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;
&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; color:#00007f;&quot;&gt;Left Click :zoom in&lt;/span&gt;&lt;br&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; color:#00007f;&quot;&gt;Right Click : zoom out by 1&lt;/span&gt;&lt;br&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; color:#00007f;&quot;&gt;Middle Click : panning&lt;/span&gt;&lt;br&gt;&lt;span style=&quot; font-family:'Sans Serif'; font-size:9pt; color:#00007f;&quot;&gt;Ctrl+Right Click : zoom out to full size&lt;/span&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="statusTip">
<string/>
@ -300,7 +827,7 @@ p, li { white-space: pre-wrap; }
<enum>Qt::LeftToRight</enum>
</property>
<property name="features">
<set>QDockWidget::NoDockWidgetFeatures</set>
<set>QDockWidget::DockWidgetFloatable</set>
</property>
<property name="allowedAreas">
<set>Qt::BottomDockWidgetArea</set>
@ -321,7 +848,7 @@ p, li { white-space: pre-wrap; }
<property name="minimumSize">
<size>
<width>0</width>
<height>400</height>
<height>0</height>
</size>
</property>
<property name="maximumSize">
@ -369,27 +896,125 @@ p, li { white-space: pre-wrap; }
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
<family>Cantarell</family>
<pointsize>10</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menu">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<widget class="QMenu" name="menuUtilities">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Utilities</string>
</property>
<addaction name="actionLoadConfiguration"/>
<addaction name="actionLoadTrimbits"/>
<addaction name="actionSaveTrimbits"/>
<addaction name="actionLoadParameters"/>
</widget>
<widget class="QMenu" name="menuModes">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Modes</string>
</property>
<addaction name="actionDebug"/>
<addaction name="actionExpert"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Help</string>
</property>
<addaction name="actionAbout"/>
</widget>
<addaction name="menuUtilities"/>
<addaction name="menuModes"/>
<addaction name="menuHelp"/>
</widget>
<action name="actionLoadConfiguration">
<property name="text">
<string>Load Configuration</string>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
<action name="actionLoadTrimbits">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Load Trimbits</string>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
<action name="actionSaveTrimbits">
<property name="text">
<string>Save Trimbits</string>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
<action name="actionLoadParameters">
<property name="text">
<string>Load Parameters</string>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
<action name="actionDebug">
<property name="checkable">
@ -398,6 +1023,12 @@ p, li { white-space: pre-wrap; }
<property name="text">
<string>Debug</string>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
<action name="actionExpert">
<property name="checkable">
@ -406,23 +1037,36 @@ p, li { white-space: pre-wrap; }
<property name="text">
<string>Expert</string>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
<action name="actionDockable">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Dockable Windows</string>
<string>Dockable</string>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
<action name="actionAbout">
<property name="text">
<string>&amp;About</string>
<string>About</string>
</property>
</action>
<action name="actionSaveTrimbits">
<property name="text">
<string>Save Trimbits</string>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
</action>
</widget>

View File

@ -16,6 +16,12 @@
<height>425</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
@ -77,6 +83,15 @@
</disabled>
</palette>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ROI enabled at Receiver level (affects only file write)&lt;/p&gt;&lt;p&gt;#rx_roi#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Rx Roi Enabled</string>
</property>
@ -95,8 +110,10 @@
</property>
<property name="font">
<font>
<family>Sans Serif</family>
<family>Cantarell</family>
<pointsize>10</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="title">
@ -109,7 +126,16 @@
<bool>true</bool>
</property>
<layout class="QGridLayout" name="plotLayout">
<property name="margin">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<property name="spacing">
@ -138,8 +164,26 @@
<height>16</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Data Statistics&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
@ -165,6 +209,12 @@
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Max: </string>
</property>
@ -181,6 +231,12 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>-</string>
</property>
@ -219,6 +275,12 @@
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Min: </string>
</property>
@ -235,6 +297,12 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>-</string>
</property>
@ -248,6 +316,12 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>-</string>
</property>
@ -286,6 +360,12 @@
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Sum: </string>
</property>
@ -367,6 +447,15 @@
</disabled>
</palette>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If sub images have missing packets&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Complete Image</string>
</property>
@ -432,6 +521,14 @@
</disabled>
</palette>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If sub images have missing packets&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Missing Packets</string>
</property>

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>775</width>
<height>345</height>
<width>770</width>
<height>364</height>
</rect>
</property>
<property name="sizePolicy">
@ -24,10 +24,16 @@
</property>
<property name="maximumSize">
<size>
<width>775</width>
<height>365</height>
<width>770</width>
<height>370</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
@ -37,6 +43,12 @@
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>File</string>
</property>
@ -55,6 +67,18 @@
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>105</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The file path can be different depending on the Module chosen.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
@ -111,8 +135,14 @@
</disabled>
</palette>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Name of file. Can be modified in Measurement tab.&lt;br/&gt;#fname# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Name of data file in receiver. Can be modified in Measurement tab.&lt;br/&gt;#fname# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Name Prefix: </string>
@ -127,14 +157,20 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>35</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
Disabled if receiver pc is not same as client pc.
</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Directory where one saves the data in receiver. &lt;br/&gt;#fpath# &lt;br/&gt;&lt;br/&gt;Disabled if receiver pc is not same as client pc. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Browse</string>
@ -196,8 +232,14 @@ Disabled if receiver pc is not same as client pc.
</disabled>
</palette>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;File Format&lt;br/&gt;#fileformat# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;File Format of data file in receiver&lt;br/&gt;#fformat# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Format:</string>
@ -218,8 +260,20 @@ Disabled if receiver pc is not same as client pc.
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>105</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;File Format&lt;br/&gt;#fileformat# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;File Format of data file in receiver&lt;br/&gt;#fformat# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
@ -284,13 +338,14 @@ Disabled if receiver pc is not same as client pc.
</disabled>
</palette>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Directory where one saves the data in receiver. &lt;br/&gt;#fpath# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Path:</string>
@ -314,9 +369,15 @@ Directory where one saves the data.
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
<height>28</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
@ -348,9 +409,14 @@ Directory where one saves the data.
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>Overwrite Enable
#overwrite#</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Overwrite enable of data file in receiver&lt;/p&gt;&lt;p&gt; #foverwrite#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Overwrite</string>
@ -397,16 +463,23 @@ Directory where one saves the data.
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Directory where one saves the data.
&lt;/nobr&gt;&lt;br&gt;
#outdir#
&lt;br&gt;
</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Directory where one saves the data in receiver. &lt;br/&gt;#fpath# &lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@ -431,6 +504,12 @@ Directory where one saves the data.
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="boxCorrection_2">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="title">
<string>Options</string>
</property>
@ -448,6 +527,15 @@ Directory where one saves the data.
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Speed of Detector readout&lt;/p&gt;&lt;p&gt;#speed#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Clock Divider:</string>
</property>
@ -483,9 +571,18 @@ Directory where one saves the data.
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Speed of Detector readout&lt;/p&gt;&lt;p&gt;#speed#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<item>
<property name="text">
<string>Full Speed</string>
@ -521,6 +618,25 @@ Directory where one saves the data.
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="chkTenGiga">
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable 10GbE&lt;/p&gt;&lt;p&gt;#tengiga#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>10GbE</string>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
@ -528,6 +644,15 @@ Directory where one saves the data.
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable Parallel readout&lt;/p&gt;&lt;p&gt;#parallel#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Parallel Readout</string>
</property>
@ -535,23 +660,6 @@ Directory where one saves the data.
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="chkTenGiga">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;nobr&gt;
Compression using Root. Available only for Gotthard in Expert Mode.
&lt;/nobr&gt;&lt;br&gt;&lt;nobr&gt;
#r_compression#
&lt;/nobr&gt;</string>
</property>
<property name="text">
<string>10GbE</string>
</property>
</widget>
</item>
<item row="3" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
@ -559,6 +667,15 @@ Compression using Root. Available only for Gotthard in Expert Mode.
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Enable Rate Correction&lt;/p&gt;&lt;p&gt;#ratecorr#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Rate:</string>
</property>
@ -569,6 +686,15 @@ Compression using Root. Available only for Gotthard in Expert Mode.
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Default Dead Time for Rate Correction&lt;/p&gt;&lt;p&gt;#ratecorr#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Default Dead Time</string>
</property>
@ -584,7 +710,7 @@ Compression using Root. Available only for Gotthard in Expert Mode.
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<width>20</width>
<height>20</height>
</size>
</property>
@ -595,6 +721,15 @@ Compression using Root. Available only for Gotthard in Expert Mode.
<property name="enabled">
<bool>false</bool>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Custom Dead Time for Rate Correction&lt;/p&gt;&lt;p&gt;#ratecorr#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Custom Dead Time:</string>
</property>
@ -617,6 +752,21 @@ Compression using Root. Available only for Gotthard in Expert Mode.
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Custom Dead Time for Rate Correction&lt;/p&gt;&lt;p&gt;#ratecorr#&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="keyboardTracking">
<bool>false</bool>
</property>
@ -652,6 +802,19 @@ Compression using Root. Available only for Gotthard in Expert Mode.
</item>
</layout>
</item>
<item row="5" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
@ -663,6 +826,13 @@ Compression using Root. Available only for Gotthard in Expert Mode.
<tabstop>btnOutputBrowse</tabstop>
<tabstop>comboFileFormat</tabstop>
<tabstop>chkOverwriteEnable</tabstop>
<tabstop>chkParallel</tabstop>
<tabstop>comboClkDivider</tabstop>
<tabstop>chkRate</tabstop>
<tabstop>radioDefaultDeadtime</tabstop>
<tabstop>radioCustomDeadtime</tabstop>
<tabstop>spinCustomDeadTime</tabstop>
<tabstop>chkTenGiga</tabstop>
</tabstops>
<resources>
<include location="../include/icons.qrc"/>

File diff suppressed because it is too large Load Diff

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>775</width>
<height>345</height>
<width>740</width>
<height>320</height>
</rect>
</property>
<property name="sizePolicy">
@ -24,40 +24,140 @@
</property>
<property name="maximumSize">
<size>
<width>775</width>
<height>400</height>
<width>740</width>
<height>330</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="3">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="1" column="0" colspan="5">
<widget class="QTabWidget" name="tabWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>5</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>330</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="tabDAC">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>330</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>DACs</string>
</attribute>
<layout class="QGridLayout" name="gridlayoutDac"/>
<layout class="QGridLayout" name="gridlayoutDac">
<property name="topMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number>
</property>
<property name="horizontalSpacing">
<number>10</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
</layout>
</widget>
<widget class="QWidget" name="tabADC">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<attribute name="title">
<string>ADCs</string>
</attribute>
<layout class="QGridLayout" name="gridlayoutAdc"/>
<layout class="QGridLayout" name="gridlayoutAdc">
<property name="horizontalSpacing">
<number>10</number>
</property>
</layout>
</widget>
</widget>
</item>
<item row="0" column="1">
<item row="0" column="0" colspan="2">
<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>350</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QLabel" name="lblReadout">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Readout: </string>
</property>
</widget>
</item>
<item row="0" column="3" colspan="2">
<widget class="QComboBox" name="comboDetector">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
@ -68,42 +168,32 @@
<property name="minimumSize">
<size>
<width>0</width>
<height>28</height>
<height>25</height>
</size>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<property name="maximumSize">
<size>
<width>500</width>
<height>20</height>
<width>16777215</width>
<height>25</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lblReadout">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Readout: </string>
<property name="toolTip">
<string>Select readout to read dac or adc info</string>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>comboDetector</tabstop>
<tabstop>tabWidget</tabstop>
</tabstops>
<resources>
<include location="../include/icons.qrc"/>
</resources>

File diff suppressed because it is too large Load Diff

View File

@ -28,12 +28,24 @@
<height>345</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1" colspan="3">
<widget class="QTextEdit" name="dispLog">
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
@ -47,11 +59,23 @@
<property name="minimumSize">
<size>
<width>0</width>
<height>25</height>
<height>26</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>28</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Up arrow key picks up the previous command.&lt;/p&gt;&lt;p&gt;Down arrow key clears the current command.&lt;/p&gt;&lt;p&gt;Return or Enter key executes the current command&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/icons/images/upload.png&quot;/&gt; = previous command&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;:/icons/images/download.png&quot;/&gt; = clears current command&lt;/p&gt;&lt;p&gt;[Return or Enter key] = executes current command&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@ -63,12 +87,27 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>35</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>35</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>Clear log</string>
</property>
<property name="text">
<string>Clear</string>
</property>
@ -86,12 +125,27 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>35</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>35</height>
</size>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="toolTip">
<string>Save log</string>
</property>
<property name="text">
<string>Save</string>
</property>
@ -109,6 +163,12 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Cantarell</family>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Command:</string>
</property>
@ -130,9 +190,9 @@
</layout>
</widget>
<tabstops>
<tabstop>dispCommand</tabstop>
<tabstop>btnClear</tabstop>
<tabstop>btnSave</tabstop>
<tabstop>btnClear</tabstop>
<tabstop>dispCommand</tabstop>
</tabstops>
<resources>
<include location="../include/icons.qrc"/>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -41,7 +41,10 @@ class qDefs : public QWidget {
*/
qDefs(){};
static const int Q_FONT_SIZE = 9;
static QFont GetDefaultFont() {
return QFont("Cantarell", 10, QFont::Normal);
}
static const int DATA_GAIN_PLOT_RATIO = 5;
static const int MIN_HEIGHT_GAIN_PLOT_1D = 75;
static const int GUI_ZMQ_RCV_HWM = 2;

View File

@ -4,9 +4,6 @@
#include "qDefs.h"
#include "sls/Detector.h"
#include "ui_form_detectormain.h"
#include <QTabWidget>
class QScrollArea;
class QResizeEvent;
namespace sls {
@ -21,15 +18,6 @@ class qTabDebugging;
class qTabDeveloper;
class qTabMessages;
/** To Over-ride the QTabWidget class to get the tabBar protected
* methodTabWidget */
class MyTabWidget : public QTabWidget {
public:
MyTabWidget(QWidget *parent = 0) { setParent(parent); }
/** Overridden protected method from QTabWidget */
QTabBar *tabBar() { return QTabWidget::tabBar(); }
};
class qDetectorMain : public QMainWindow, private Ui::DetectorMainObject {
Q_OBJECT
@ -75,8 +63,6 @@ class qDetectorMain : public QMainWindow, private Ui::DetectorMainObject {
slsDetectorDefs::detectorType detType;
std::unique_ptr<Detector> det;
qDrawPlot *plot;
MyTabWidget *tabs;
QScrollArea *scroll[NumberOfTabs];
qTabMeasurement *tabMeasurement;
qTabDataOutput *tabDataOutput;
qTabPlot *tabPlot;
@ -85,9 +71,7 @@ class qDetectorMain : public QMainWindow, private Ui::DetectorMainObject {
qTabDebugging *tabDebugging;
qTabDeveloper *tabDeveloper;
qTabMessages *tabMessages;
int isDeveloper;
int heightPlotWindow;
int heightCentralWidget;
int isDeveloper{false};
QString zoomToolTip;
QColor defaultTabColor;
};

View File

@ -4,9 +4,6 @@
#include "sls/Detector.h"
#include "ui_form_tab_debugging.h"
class QTreeWidget;
class QTreeWidgetItem;
namespace sls {
class qTabDebugging : public QWidget, private Ui::TabDebuggingObject {
@ -18,22 +15,20 @@ class qTabDebugging : public QWidget, private Ui::TabDebuggingObject {
void Refresh();
private slots:
void GetDetectorStatus();
void GetInfo();
void SetParameters(QTreeWidgetItem *item);
void EnableTest();
void TestDetector();
private:
void SetupWidgetWindow();
void Initialization();
void PopulateDetectors();
void GetFirmwareVersion();
void GetServerSoftwareVersion();
void GetReceiverVersion();
void GetDetectorStatus();
Detector *det;
/** Tree Widget displaying the detectors, modules */
QTreeWidget *treeDet;
QLabel *lblDetectorHostname;
QLabel *lblDetectorFirmware;
QLabel *lblDetectorSoftware;
};
} // namespace sls

View File

@ -38,8 +38,8 @@ class qTabPlot : public QWidget, private Ui::TabPlotObject {
void CheckAspectRatio();
void SetZRange();
void SetStreamingFrequency();
void SetStreamingHwm(int value);
void SetReceivingHwm(int value);
void SelectHwm(int value);
void SetHwm(int value);
signals:
void DisableZoomSignal(bool);
@ -50,8 +50,11 @@ class qTabPlot : public QWidget, private Ui::TabPlotObject {
void Select1DPlot(bool enable);
void GetGapPixels();
void GetStreamingFrequency();
void GetHwm();
void GetStreamingHwm();
void SetStreamingHwm(int value);
void GetReceivingHwm();
void SetReceivingHwm(int value);
void SetXYRange();
void MaintainAspectRatio(int dimension);
@ -66,6 +69,8 @@ class qTabPlot : public QWidget, private Ui::TabPlotObject {
static QString defaultImageXAxisTitle;
static QString defaultImageYAxisTitle;
static QString defaultImageZAxisTitle;
enum { SND_HWM, RX_HWM };
};
} // namespace sls

View File

@ -0,0 +1,13 @@
// SPDX-License-Identifier: LGPL-3.0-or-other
// Copyright (C) 2021 Contributors to the SLS Detector Package
#pragma once
#include <QFontMetrics>
#include <QString>
namespace sls {
int qResolve_GetQFontWidth(const QFontMetrics fm, const QString &text,
int len = -1);
} // namespace sls

View File

@ -92,7 +92,7 @@ class SlsQt1DPlot : public QwtPlot {
Q_OBJECT
public:
SlsQt1DPlot(QWidget * = NULL);
SlsQt1DPlot(QWidget * = NULL, bool gain = false);
~SlsQt1DPlot();
void SetTitle(QString title);
@ -145,6 +145,8 @@ class SlsQt1DPlot : public QwtPlot {
void DisableRoiBox();
private:
bool gainPlot{false};
SlsQtH1DList *hist_list{nullptr};
SlsQt1DZoomer *zoomer{nullptr};
QwtPlotPanner *panner{nullptr};

View File

@ -19,7 +19,7 @@ class SlsQt2DPlot : public QwtPlot {
Q_OBJECT
public:
SlsQt2DPlot(QWidget * = NULL);
SlsQt2DPlot(QWidget * = NULL, bool gain = false);
~SlsQt2DPlot();
void SetTitle(QString title);
void SetXTitle(QString title);
@ -87,6 +87,8 @@ class SlsQt2DPlot : public QwtPlot {
private:
void SetupZoom();
void SetupColorMap();
bool gainPlot{false};
QwtLinearColorMap *myColourMap(QVector<double> colourStops);
QwtLinearColorMap *myColourMap(int log = 0);

View File

@ -3,7 +3,10 @@
/* TODO! short description */
#include "SlsQt1DPlot.h"
#include "qDefs.h"
#include "qVersionResolve.h"
#include "sls/logger.h"
#include <iostream>
#include <qwt_legend.h>
#include <qwt_math.h>
@ -333,7 +336,8 @@ void SlsQtH1DList::Remove(SlsQtH1D *hist) {
}
// 1d plot stuff
SlsQt1DPlot::SlsQt1DPlot(QWidget *parent) : QwtPlot(parent) {
SlsQt1DPlot::SlsQt1DPlot(QWidget *parent, bool gain)
: QwtPlot(parent), gainPlot(gain) {
// n_histograms_attached=0;
hline = vline = nullptr;
hist_list = new SlsQtH1DList();
@ -351,6 +355,19 @@ SlsQt1DPlot::SlsQt1DPlot(QWidget *parent) : QwtPlot(parent) {
axisScaleEngine(QwtPlot::yLeft)->setAttribute(QwtScaleEngine::Floating);
axisScaleEngine(QwtPlot::xBottom)->setAttribute(QwtScaleEngine::Floating);
setFont(qDefs::GetDefaultFont());
SetTitleFont(qDefs::GetDefaultFont());
SetXFont(qDefs::GetDefaultFont());
SetYFont(qDefs::GetDefaultFont());
if (gainPlot) {
SetTitle("");
SetYTitle("Gain");
DisableZoom(true);
// set only major ticks from 0 to 3
auto div = axisScaleEngine(QwtPlot::yLeft)->divideScale(0, 3, 3, 0, 1);
setAxisScaleDiv(QwtPlot::yLeft, div);
}
}
SlsQt1DPlot::~SlsQt1DPlot() {
@ -543,7 +560,7 @@ void SlsQt1DPlot::InsertVLine(double x) {
void SlsQt1DPlot::SetupZoom() {
// LeftButton for the zooming
// MidButton for the panning
// MiddleButton for the panning
// RightButton: zoom out by 1
// Ctrl+RighButton: zoom out to full size
@ -555,15 +572,14 @@ void SlsQt1DPlot::SetupZoom() {
panner = new QwtPlotPanner((QwtPlotCanvas *)canvas());
panner->setAxisEnabled(QwtPlot::yRight, false);
panner->setMouseButton(Qt::MidButton);
panner->setMouseButton(Qt::MiddleButton);
// Avoid jumping when labels with more/less digits
// appear/disappear when scrolling vertically
const QFontMetrics fm(axisWidget(QwtPlot::yLeft)->font());
QwtScaleDraw *sd = axisScaleDraw(QwtPlot::yLeft);
sd->setMinimumExtent(fm.width("100.00"));
sd->setMinimumExtent(qResolve_GetQFontWidth(fm, "100.00"));
const QColor c(Qt::darkBlue);
zoomer->setRubberBandPen(c);
zoomer->setTrackerPen(c);
@ -630,7 +646,7 @@ void SlsQt1DPlot::DisableZoom(bool disable) {
Qt::RightButton);
}
if (panner)
panner->setMouseButton(Qt::MidButton);
panner->setMouseButton(Qt::MiddleButton);
}
}
}

View File

@ -1,10 +1,11 @@
// SPDX-License-Identifier: LGPL-3.0-or-other
// Copyright (C) 2021 Contributors to the SLS Detector Package
#include "SlsQt2DPlot.h"
#include "qDefs.h"
#include "qVersionResolve.h"
#include "sls/logger.h"
#include <qlist.h>
#include <qprinter.h>
#include <qtoolbutton.h>
#include <qwt_color_map.h>
#include <qwt_plot_layout.h>
@ -20,7 +21,8 @@
namespace sls {
SlsQt2DPlot::SlsQt2DPlot(QWidget *parent) : QwtPlot(parent) {
SlsQt2DPlot::SlsQt2DPlot(QWidget *parent, bool gain)
: QwtPlot(parent), gainPlot(gain) {
isLog = 0;
axisScaleEngine(QwtPlot::yLeft)->setAttribute(QwtScaleEngine::Floating);
axisScaleEngine(QwtPlot::xBottom)->setAttribute(QwtScaleEngine::Floating);
@ -32,7 +34,23 @@ SlsQt2DPlot::SlsQt2DPlot(QWidget *parent) : QwtPlot(parent) {
d_spectrogram->attach(this);
plotLayout()->setAlignCanvasToScales(true);
FillTestPlot();
setFont(qDefs::GetDefaultFont());
SetTitleFont(qDefs::GetDefaultFont());
SetXFont(qDefs::GetDefaultFont());
SetYFont(qDefs::GetDefaultFont());
SetZFont(qDefs::GetDefaultFont());
Update();
if (gainPlot) {
setTitle("Gain");
SetZTitle("");
enableAxis(QwtPlot::yLeft, false);
enableAxis(QwtPlot::xBottom, false);
DisableZoom(true);
// set only major ticks from 0 to 3
auto div = axisScaleEngine(QwtPlot::yRight)->divideScale(0, 3, 3, 0, 1);
setAxisScaleDiv(QwtPlot::yRight, div);
}
}
SlsQt2DPlot::~SlsQt2DPlot() = default;
@ -118,7 +136,7 @@ void SlsQt2DPlot::FillTestPlot(int mode) {
void SlsQt2DPlot::SetupZoom() {
// LeftButton for the zooming
// MidButton for the panning
// MiddleButton for the panning
// RightButton: zoom out by 1
// Ctrl+RighButton: zoom out to full size
@ -129,15 +147,14 @@ void SlsQt2DPlot::SetupZoom() {
zoomer->setMousePattern(QwtEventPattern::MouseSelect3, Qt::RightButton);
panner = new QwtPlotPanner(canvas());
panner->setAxisEnabled(QwtPlot::yRight, false);
panner->setMouseButton(Qt::MidButton);
panner->setMouseButton(Qt::MiddleButton);
// Avoid jumping when labels with more/less digits
// appear/disappear when scrolling vertically
const QFontMetrics fm(axisWidget(QwtPlot::yLeft)->font());
QwtScaleDraw *sd = axisScaleDraw(QwtPlot::yLeft);
sd->setMinimumExtent(fm.width("100.00"));
sd->setMinimumExtent(qResolve_GetQFontWidth(fm, "100.00"));
const QColor c(Qt::darkBlue);
zoomer->setRubberBandPen(c);
zoomer->setTrackerPen(c);
@ -221,7 +238,7 @@ void SlsQt2DPlot::DisableZoom(bool disable) {
Qt::RightButton);
}
if (panner)
panner->setMouseButton(Qt::MidButton);
panner->setMouseButton(Qt::MiddleButton);
}
}
}
@ -265,10 +282,12 @@ void SlsQt2DPlot::Update() {
hist->SetMinimumToFirstGreaterThanZero();
const QwtInterval zInterval = d_spectrogram->data()->interval(Qt::ZAxis);
rightAxis->setColorMap(zInterval, myColourMap(isLog));
if (!zoomer->zoomRectIndex())
UnZoom();
setAxisScale(QwtPlot::yRight, zInterval.minValue(), zInterval.maxValue());
if (!gainPlot) {
setAxisScale(QwtPlot::yRight, zInterval.minValue(),
zInterval.maxValue());
}
plotLayout()->setAlignCanvasToScales(true);
replot();
}

View File

@ -49,7 +49,6 @@ void qCloneWidget::SetupWidgetWindow(QString title) {
std::string(" - ") + Logger::Timestamp();
setWindowTitle(QString(winTitle.c_str()));
boxPlot->setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
boxPlot->setTitle(title);
// 1d
@ -108,7 +107,7 @@ void qCloneWidget::SavePlot() {
QString fName = filePath + QString('/') + fileName + QString("_clone") +
QString("%1").arg(id) + QString("_acq") +
QString("%1").arg(acqIndex) + QString(".png");
LOG(logINFO) << "Saving Clone:" << fName.toAscii().constData();
LOG(logINFO) << "Saving Clone:" << fName.toLatin1().constData();
// save
QImage img(centralwidget->size().width(), centralwidget->size().height(),
QImage::Format_RGB32);

View File

@ -61,7 +61,7 @@ void qDacWidget::GetDac() {
void qDacWidget::SetDac() {
int val = (int)spinDac->value();
LOG(logINFO) << "Setting dac:" << lblDac->text().toAscii().data() << " : "
LOG(logINFO) << "Setting dac:" << lblDac->text().toLatin1().data() << " : "
<< val;
try {

View File

@ -16,9 +16,7 @@
#include "sls/versionAPI.h"
#include <QFileDialog>
#include <QPlastiqueStyle>
#include <QResizeEvent>
#include <QScrollArea>
#include <QSizePolicy>
#include "sls/Version.h"
@ -102,7 +100,6 @@ int main(int argc, char **argv) {
}
QApplication app(argc, argv);
app.setStyle(new QPlastiqueStyle); // style is deleted by QApplication
try {
sls::qDetectorMain det(multiId, fname, isDeveloper);
det.show();
@ -120,7 +117,7 @@ namespace sls {
qDetectorMain::qDetectorMain(int multiId, const std::string &fname,
bool isDevel)
: QMainWindow(nullptr), detType(slsDetectorDefs::GENERIC),
isDeveloper(isDevel), heightPlotWindow(0), heightCentralWidget(0) {
isDeveloper(isDevel) {
setupUi(this);
SetUpDetector(fname, multiId);
@ -129,94 +126,45 @@ qDetectorMain::qDetectorMain(int multiId, const std::string &fname,
qDetectorMain::~qDetectorMain() {
disconnect(tabs, SIGNAL(currentChanged(int)), this, SLOT(Refresh(int)));
for (int i = 0; i < NumberOfTabs; ++i) {
delete scroll[i];
}
}
void qDetectorMain::SetUpWidgetWindow() {
setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
// plot setup
plot = new qDrawPlot(dockWidgetPlot, det.get());
LOG(logDEBUG) << "DockPlot ready";
dockWidgetPlot->setWidget(plot);
// tabs setup
tabs = new MyTabWidget(this);
layoutTabs->addWidget(tabs);
dockWidgetPlot->setFloating(false);
zoomToolTip = dockWidgetPlot->toolTip();
// creating all the other tab widgets
tabMeasurement = new qTabMeasurement(this, det.get(), plot);
tabDataOutput = new qTabDataOutput(this, det.get());
tabPlot = new qTabPlot(this, det.get(), plot);
tabSettings = new qTabSettings(this, det.get());
tabAdvanced = new qTabAdvanced(this, det.get(), plot);
tabDebugging = new qTabDebugging(this, det.get());
tabDeveloper = new qTabDeveloper(this, det.get());
tabMeasurement = new qTabMeasurement(tMeasurement, det.get(), plot);
tabDataOutput = new qTabDataOutput(tDataOutput, det.get());
tabPlot = new qTabPlot(tPlot, det.get(), plot);
tabSettings = new qTabSettings(tSettings, det.get());
tabAdvanced = new qTabAdvanced(tAdvanced, det.get(), plot);
tabDebugging = new qTabDebugging(tDebugging, det.get());
tabDeveloper = new qTabDeveloper(tDeveloper, det.get());
// creating the scroll area widgets for the tabs
for (int i = 0; i < NumberOfTabs; ++i) {
scroll[i] = new QScrollArea();
scroll[i]->setFrameShape(QFrame::NoFrame);
}
// setting the tab widgets to the scrollareas
scroll[MEASUREMENT]->setWidget(tabMeasurement);
scroll[DATAOUTPUT]->setWidget(tabDataOutput);
scroll[PLOT]->setWidget(tabPlot);
scroll[SETTINGS]->setWidget(tabSettings);
scroll[ADVANCED]->setWidget(tabAdvanced);
scroll[DEBUGGING]->setWidget(tabDebugging);
scroll[DEVELOPER]->setWidget(tabDeveloper);
// inserting all the tabs
tabs->insertTab(MEASUREMENT, scroll[MEASUREMENT], "Measurement");
tabs->insertTab(DATAOUTPUT, scroll[DATAOUTPUT], "Data Output");
tabs->insertTab(PLOT, scroll[PLOT], "Plot");
tabs->insertTab(SETTINGS, scroll[SETTINGS], "Settings");
tabs->insertTab(ADVANCED, scroll[ADVANCED], "Advanced");
tabs->insertTab(DEBUGGING, scroll[DEBUGGING], "Debugging");
tabs->insertTab(DEVELOPER, scroll[DEVELOPER], "Developer");
// no scroll buttons this way
tabs->insertTab(MESSAGES, tabMessages, "Terminal");
scrollMeasurement->setWidget(tabMeasurement);
scrollDataOutput->setWidget(tabDataOutput);
scrollPlot->setWidget(tabPlot);
scrollSettings->setWidget(tabSettings);
scrollAdvanced->setWidget(tabAdvanced);
scrollDebugging->setWidget(tabDebugging);
scrollDeveloper->setWidget(tabDeveloper);
scrollTerminal->setWidget(tabMessages);
// swap tabs so that messages is last tab
tabs->tabBar()->moveTab(tabs->indexOf(tabMeasurement), MEASUREMENT);
tabs->tabBar()->moveTab(tabs->indexOf(tabSettings), SETTINGS);
tabs->tabBar()->moveTab(tabs->indexOf(tabDataOutput), DATAOUTPUT);
tabs->tabBar()->moveTab(tabs->indexOf(tabPlot), PLOT);
tabs->tabBar()->moveTab(tabs->indexOf(tabAdvanced), ADVANCED);
tabs->tabBar()->moveTab(tabs->indexOf(tabDebugging), DEBUGGING);
tabs->tabBar()->moveTab(tabs->indexOf(tabDeveloper), DEVELOPER);
tabs->tabBar()->moveTab(tabs->indexOf(tabMessages), MESSAGES);
tabs->setCurrentIndex(MEASUREMENT);
// other tab properties
// Default tab color
defaultTabColor = tabs->tabBar()->tabTextColor(DATAOUTPUT);
// Set the current tab(measurement) to blue as it is the current one
// set current tab to blue
tabs->tabBar()->setTabTextColor(0, QColor(0, 0, 200, 255));
tabs->tabBar()->setExpanding(true);
// mode setup - to set up the tabs initially as disabled, not in form so
// done here
LOG(logINFO)
<< "Dockable Mode: 0, Debug Mode: 0, Expert Mode: 0, Developer Mode: "
<< isDeveloper;
tabs->setTabEnabled(DEBUGGING, false);
tabs->setTabEnabled(ADVANCED, false);
tabs->setTabEnabled(DEVELOPER, isDeveloper);
actionLoadTrimbits->setVisible(false);
actionSaveTrimbits->setVisible(false);
dockWidgetPlot->setFloating(false);
dockWidgetPlot->setFeatures(QDockWidget::NoDockWidgetFeatures);
// Other setup
// Height of plot and central widget
heightPlotWindow = dockWidgetPlot->size().height();
heightCentralWidget = centralwidget->size().height();
// Default zoom Tool Tip
zoomToolTip = dockWidgetPlot->toolTip();
LOG(logINFO) << "Debug Mode: 0, Expert Mode: 0, Developer Mode: "
<< isDeveloper;
Initialization();
}
@ -227,7 +175,7 @@ void qDetectorMain::SetUpDetector(const std::string &config_file, int multiID) {
det = make_unique<Detector>(multiID);
// create messages tab to capture config file loading logs
tabMessages = new qTabMessages(this);
tabMessages = new qTabMessages(tTerminal);
// loads the config file at startup
if (!config_file.empty())
@ -357,18 +305,8 @@ void qDetectorMain::EnableModes(QAction *action) {
actionSaveTrimbits->setVisible(visible);
tabSettings->SetExportMode(enable);
LOG(logINFO) << "Expert Mode: " << qDefs::stringEnable(enable);
}
// Set DockableMode
else {
enable = actionDockable->isChecked();
if (enable) {
dockWidgetPlot->setFeatures(QDockWidget::DockWidgetFloatable);
} else {
dockWidgetPlot->setFloating(false);
dockWidgetPlot->setFeatures(QDockWidget::NoDockWidgetFeatures);
}
LOG(logINFO) << "Dockable Mode: " << qDefs::stringEnable(enable);
} else {
LOG(logERROR) << "Unknown action";
}
}
@ -385,7 +323,7 @@ void qDetectorMain::ExecuteUtilities(QAction *action) {
// Gets called when cancelled as well
if (!fName.isEmpty()) {
refreshTabs = true;
det->loadConfig(std::string(fName.toAscii().constData()));
det->loadConfig(std::string(fName.toLatin1().constData()));
qDefs::Message(qDefs::INFORMATION,
"The Configuration Parameters have been "
"configured successfully.",
@ -403,7 +341,7 @@ void qDetectorMain::ExecuteUtilities(QAction *action) {
// Gets called when cancelled as well
if (!fName.isEmpty()) {
refreshTabs = true;
det->loadParameters(std::string(fName.toAscii().constData()));
det->loadParameters(std::string(fName.toLatin1().constData()));
qDefs::Message(qDefs::INFORMATION,
"The Detector Parameters have been "
"configured successfully.",
@ -423,7 +361,7 @@ void qDetectorMain::ExecuteUtilities(QAction *action) {
fileDialog->setFileMode(QFileDialog::AnyFile);
if (fileDialog->exec() == QDialog::Accepted) {
fName = fileDialog->selectedFiles()[0];
det->loadTrimbits(std::string(fName.toAscii().constData()));
det->loadTrimbits(std::string(fName.toLatin1().constData()));
qDefs::Message(qDefs::INFORMATION,
"The Trimbits have been loaded successfully.",
"qDetectorMain::ExecuteUtilities");
@ -439,7 +377,7 @@ void qDetectorMain::ExecuteUtilities(QAction *action) {
this, tr("Save Detector Trimbits"), fPath,
tr("Trimbit files (*.trim noise.sn*);;All Files(*)"));
if (!fName.isEmpty()) {
det->saveTrimbits(std::string(fName.toAscii().constData()));
det->saveTrimbits(std::string(fName.toLatin1().constData()));
qDefs::Message(qDefs::INFORMATION,
"The Trimbits have been saved successfully.",
"qDetectorMain::ExecuteUtilities");
@ -549,36 +487,17 @@ void qDetectorMain::Refresh(int index) {
void qDetectorMain::ResizeMainWindow(bool b) {
LOG(logDEBUG1) << "Resizing Main Window: height:" << height();
// undocked from the main window
if (b) {
// sets the main window height to a smaller maximum to get rid of space
setMaximumHeight(height() - heightPlotWindow - 9);
dockWidgetPlot->setMinimumHeight(0);
LOG(logINFO) << "Undocking from main window";
setMaximumHeight(centralwidget->height() + menu->height());
LOG(logINFO) << "Plot undocked from main window";
} else {
setMaximumHeight(QWIDGETSIZE_MAX);
// the minimum for plot will be set when the widget gets resized
// automatically
LOG(logINFO) << "Plot docked back to main window";
}
}
void qDetectorMain::resizeEvent(QResizeEvent *event) {
if (!dockWidgetPlot->isFloating()) {
dockWidgetPlot->setMinimumHeight(height() - centralwidget->height() -
50);
centralwidget->setMaximumHeight(heightCentralWidget);
}
// adjusting tab width
if (width() >= 800) {
tabs->tabBar()->setFixedWidth(width() + 61);
} else {
tabs->tabBar()->setMinimumWidth(0);
tabs->tabBar()->setExpanding(true);
tabs->tabBar()->setUsesScrollButtons(true);
}
tabs->tabBar()->setFixedWidth(width());
event->accept();
}

View File

@ -12,7 +12,7 @@
#include <QFileDialog>
#include <QPainter>
#include <QResizeEvent>
#include <QtConcurrentRun>
#include <QtConcurrent/QtConcurrentRun>
#include <qwt_scale_engine.h>
namespace sls {
@ -99,8 +99,6 @@ void qDrawPlot::Initialization() {
}
void qDrawPlot::SetupPlots() {
setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
// default image size
slsDetectorDefs::xy res = det->getDetectorSize();
nPixelsX = res.x;
@ -108,10 +106,10 @@ void qDrawPlot::SetupPlots() {
LOG(logINFO) << "nPixelsX:" << nPixelsX;
LOG(logINFO) << "nPixelsY:" << nPixelsY;
boxPlot->setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
widgetStatistics->hide();
lblCompleteImage->hide();
lblInCompleteImage->hide();
lblRxRoiEnabled->hide();
// setup 1d data
@ -137,11 +135,6 @@ void qDrawPlot::SetupPlots() {
hists1d.append(h);
// setup 1d plot
plot1d = new SlsQt1DPlot(boxPlot);
plot1d->setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot1d->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot1d->SetXFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot1d->SetYFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot1d->SetTitle("");
plot1d->SetXTitle(xTitle1d);
plot1d->SetYTitle(yTitle1d);
@ -159,24 +152,11 @@ void qDrawPlot::SetupPlots() {
gainhist1d->SetLineColor(0);
gainhist1d->setStyleLinesorDots(isLines);
gainhist1d->setSymbolMarkers(isMarkers);
// setup 1d gain plot
gainplot1d = new SlsQt1DPlot(boxPlot);
gainplot1d->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
gainplot1d->SetYFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
gainplot1d->SetTitle("");
gainplot1d->SetYTitle("Gain");
// set ticks to just 3
QList<double> majorTicks({0, 1, 2, 3});
QwtScaleDiv div(0, 3, QList<double>(), QList<double>(), majorTicks);
gainplot1d->setAxisScaleDiv(QwtPlot::yLeft, div);
gainhist1d->setItemAttribute(QwtPlotItem::Legend, false);
// setup 1d gain plot
gainplot1d = new SlsQt1DPlot(boxPlot, true);
gainhist1d->Attach(gainplot1d);
gainplot1d->DisableZoom(true);
gainplot1d->hide();
connect(plot1d, SIGNAL(PlotZoomedSignal(const QRectF &)), this,
SLOT(Zoom1DGainPlot(const QRectF &)));
@ -205,32 +185,15 @@ void qDrawPlot::SetupPlots() {
plot2d = new SlsQt2DPlot(boxPlot);
plot2d->SetData(nPixelsX, -0.5, nPixelsX - 0.5, nPixelsY, -0.5,
nPixelsY - 0.5, data2d);
plot2d->setFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot2d->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot2d->SetXFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot2d->SetYFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot2d->SetZFont(QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
plot2d->setTitle("");
plot2d->SetXTitle(xTitle2d);
plot2d->SetYTitle(yTitle2d);
plot2d->SetZTitle(zTitle2d);
gainplot2d = new SlsQt2DPlot(boxPlot);
gainplot2d = new SlsQt2DPlot(boxPlot, true);
gainplot2d->SetData(nPixelsX, -0.5, nPixelsX - 0.5, nPixelsY, -0.5,
nPixelsY - 0.5, gainData);
gainplot2d->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
gainplot2d->setTitle("Gain");
gainplot2d->SetZTitle("");
gainplot2d->enableAxis(QwtPlot::yLeft, false);
// gainplot2d->enableAxis(1, false);
gainplot2d->enableAxis(QwtPlot::xBottom, false);
// set ticks to just 3
gainplot2d->setAxisScaleDiv(QwtPlot::yRight, div);
gainplot2d->DisableZoom(true);
gainplot2d->hide();
connect(plot2d, SIGNAL(PlotZoomedSignal(const QRectF &)), this,
SLOT(Zoom2DGainPlot(const QRectF &)));
@ -301,13 +264,13 @@ void qDrawPlot::Select1dPlot(bool enable) {
void qDrawPlot::SetPlotTitlePrefix(QString title) {
std::lock_guard<std::mutex> lock(mPlots);
LOG(logINFO) << "Setting Title to " << title.toAscii().constData();
LOG(logINFO) << "Setting Title to " << title.toLatin1().constData();
plotTitlePrefix = title;
}
void qDrawPlot::SetXAxisTitle(QString title) {
std::lock_guard<std::mutex> lock(mPlots);
LOG(logINFO) << "Setting X Axis Title to " << title.toAscii().constData();
LOG(logINFO) << "Setting X Axis Title to " << title.toLatin1().constData();
if (is1d) {
xTitle1d = title;
} else {
@ -317,7 +280,7 @@ void qDrawPlot::SetXAxisTitle(QString title) {
void qDrawPlot::SetYAxisTitle(QString title) {
std::lock_guard<std::mutex> lock(mPlots);
LOG(logINFO) << "Setting Y Axis Title to " << title.toAscii().constData();
LOG(logINFO) << "Setting Y Axis Title to " << title.toLatin1().constData();
if (is1d) {
yTitle1d = title;
} else {
@ -327,7 +290,7 @@ void qDrawPlot::SetYAxisTitle(QString title) {
void qDrawPlot::SetZAxisTitle(QString title) {
std::lock_guard<std::mutex> lock(mPlots);
LOG(logINFO) << "Setting Z Axis Title to " << title.toAscii().constData();
LOG(logINFO) << "Setting Z Axis Title to " << title.toLatin1().constData();
zTitle2d = title;
}
@ -509,7 +472,7 @@ void qDrawPlot::EnableGainPlot(bool enable) {
void qDrawPlot::SetSaveFileName(QString val) {
std::lock_guard<std::mutex> lock(mPlots);
LOG(logDEBUG) << "Setting Clone/Save File Name to "
<< val.toAscii().constData();
<< val.toLatin1().constData();
fileSaveName = val;
}
@ -524,14 +487,6 @@ void qDrawPlot::ClonePlot() {
if (is1d) {
LOG(logDEBUG) << "Cloning 1D Image";
cloneplot1D = new SlsQt1DPlot();
cloneplot1D->setFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot1D->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot1D->SetXFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot1D->SetYFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot1D->SetTitle(plot1d->title().text());
cloneplot1D->SetXTitle(xTitle1d);
cloneplot1D->SetYTitle(yTitle1d);
@ -551,36 +506,14 @@ void qDrawPlot::ClonePlot() {
h->setStyleLinesorDots(isLines);
h->setSymbolMarkers(isMarkers);
h->setItemAttribute(QwtPlotItem::Legend, false);
clonegainplot1D = new SlsQt1DPlot();
clonegainplot1D->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
clonegainplot1D->SetYFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
clonegainplot1D->SetTitle("");
clonegainplot1D->SetYTitle("Gain");
// set ticks to just 3
QList<double> majorTicks({0, 1, 2, 3});
QwtScaleDiv div(0, 3, QList<double>(), QList<double>(), majorTicks);
clonegainplot1D->setAxisScaleDiv(QwtPlot::yLeft, div);
clonegainplot1D->DisableZoom(true);
clonegainplot1D = new SlsQt1DPlot(NULL, true);
h->Attach(clonegainplot1D);
connect(cloneplot1D, SIGNAL(PlotZoomedSignal(const QRectF &)),
clonegainplot1D, SLOT(SetZoomX(const QRectF &)));
}
} else {
LOG(logDEBUG) << "Cloning 2D Image";
cloneplot2D = new SlsQt2DPlot();
cloneplot2D->setFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot2D->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot2D->SetXFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot2D->SetYFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot2D->SetZFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
cloneplot2D->setTitle(plot2d->title().text());
cloneplot2D->SetXTitle(xTitle2d);
cloneplot2D->SetYTitle(yTitle2d);
@ -590,25 +523,9 @@ void qDrawPlot::ClonePlot() {
cloneplot2D->SetZRange(isZRange[0], isZRange[1], zRange[0], zRange[1]);
if (isGainDataExtracted) {
clonegainplot2D = new SlsQt2DPlot();
clonegainplot2D->SetTitleFont(
QFont("Sans Serif", qDefs::Q_FONT_SIZE, QFont::Normal));
clonegainplot2D->SetTitle("Gain");
clonegainplot2D->SetZTitle("");
clonegainplot2D->enableAxis(QwtPlot::yLeft, false);
clonegainplot2D->enableAxis(QwtPlot::xBottom, false);
// set ticks to just 3
QList<double> majorTicks({0, 1, 2, 3});
QwtScaleDiv div(0, 3, QList<double>(), QList<double>(), majorTicks);
clonegainplot2D->setAxisScaleDiv(QwtPlot::yRight, div);
clonegainplot2D->enableAxis(0, false);
clonegainplot2D->enableAxis(1, false);
clonegainplot2D->enableAxis(2, false);
clonegainplot2D = new SlsQt2DPlot(NULL, true);
clonegainplot2D->SetData(nPixelsX, -0.5, nPixelsX - 0.5, nPixelsY,
-0.5, nPixelsY - 0.5, gainData);
clonegainplot2D->DisableZoom(true);
connect(cloneplot2D, SIGNAL(PlotZoomedSignal(const QRectF &)),
clonegainplot2D, SLOT(SetZoom(const QRectF &)));
}
@ -1141,14 +1058,12 @@ void qDrawPlot::Update1dXYRange() {
if (!isXYRange[qDefs::YMIN] && !isXYRange[qDefs::YMAX]) {
plot1d->EnableYAutoScaling();
gainplot1d->EnableYAutoScaling();
} else {
double ymin = (isXYRange[qDefs::YMIN] ? xyRange[qDefs::YMIN]
: plot1d->GetYMinimum());
double ymax = (isXYRange[qDefs::YMAX] ? xyRange[qDefs::YMAX]
: plot1d->GetYMaximum());
plot1d->SetYMinMax(ymin, ymax);
gainplot1d->SetYMinMax(ymin, ymax);
}
plot1d->Update();
gainplot1d->Update();

View File

@ -400,7 +400,7 @@ void qTabAdvanced::GetRxrZMQIP() {
void qTabAdvanced::SetDetector() {
LOG(logDEBUG) << "Set Detector: "
<< comboDetector->currentText().toAscii().data();
<< comboDetector->currentText().toLatin1().data();
GetControlPort();
GetStopPort();
@ -441,7 +441,7 @@ void qTabAdvanced::SetDetectorUDPIP(bool force) {
// return forces modification (inconsistency from command line)
if (dispDetectorUDPIP->isModified() || force) {
dispDetectorUDPIP->setModified(false);
std::string s = dispDetectorUDPIP->text().toAscii().constData();
std::string s = dispDetectorUDPIP->text().toLatin1().constData();
LOG(logINFO) << "Setting Detector UDP IP:" << s;
try {
det->setSourceUDPIP(IpAddr{s}, {comboDetector->currentIndex()});
@ -458,7 +458,7 @@ void qTabAdvanced::SetDetectorUDPMAC(bool force) {
// return forces modification (inconsistency from command line)
if (dispDetectorUDPMAC->isModified() || force) {
dispDetectorUDPMAC->setModified(false);
std::string s = dispDetectorUDPMAC->text().toAscii().constData();
std::string s = dispDetectorUDPMAC->text().toLatin1().constData();
LOG(logINFO) << "Setting Detector UDP MAC:" << s;
try {
det->setSourceUDPMAC(MacAddr{s}, {comboDetector->currentIndex()});
@ -485,7 +485,7 @@ void qTabAdvanced::SetCltZMQIP(bool force) {
// return forces modification (inconsistency from command line)
if (dispZMQIP->isModified() || force) {
dispZMQIP->setModified(false);
std::string s = dispZMQIP->text().toAscii().constData();
std::string s = dispZMQIP->text().toLatin1().constData();
LOG(logINFO) << "Setting Client ZMQ IP:" << s;
try {
det->setClientZmqIp(IpAddr{s}, {comboDetector->currentIndex()});
@ -502,7 +502,7 @@ void qTabAdvanced::SetRxrHostname(bool force) {
// return forces modification (inconsistency from command line)
if (dispRxrHostname->isModified() || force) {
dispRxrHostname->setModified(false);
std::string s = dispRxrHostname->text().toAscii().constData();
std::string s = dispRxrHostname->text().toLatin1().constData();
LOG(logINFO) << "Setting Receiver Hostname:" << s;
try {
det->setRxHostname(s, {comboDetector->currentIndex()});
@ -542,7 +542,7 @@ void qTabAdvanced::SetRxrUDPIP(bool force) {
// return forces modification (inconsistency from command line)
if (dispRxrUDPIP->isModified() || force) {
dispRxrUDPIP->setModified(false);
std::string s = dispRxrUDPIP->text().toAscii().constData();
std::string s = dispRxrUDPIP->text().toLatin1().constData();
LOG(logINFO) << "Setting Receiver UDP IP:" << s;
try {
det->setDestinationUDPIP(IpAddr{s},
@ -560,7 +560,7 @@ void qTabAdvanced::SetRxrUDPMAC(bool force) {
// return forces modification (inconsistency from command line)
if (dispRxrUDPMAC->isModified() || force) {
dispRxrUDPMAC->setModified(false);
std::string s = dispRxrUDPMAC->text().toAscii().constData();
std::string s = dispRxrUDPMAC->text().toLatin1().constData();
LOG(logINFO) << "Setting Receiver UDP MAC:" << s;
try {
det->setDestinationUDPMAC(MacAddr{s},
@ -588,7 +588,7 @@ void qTabAdvanced::SetRxrZMQIP(bool force) {
// return forces modification (inconsistency from command line)
if (dispRxrZMQIP->isModified() || force) {
dispRxrZMQIP->setModified(false);
std::string s = dispRxrZMQIP->text().toAscii().constData();
std::string s = dispRxrZMQIP->text().toLatin1().constData();
LOG(logINFO) << "Setting Receiver ZMQ IP:" << s;
try {
det->setRxZmqIP(IpAddr{s}, {comboDetector->currentIndex()});

View File

@ -192,7 +192,7 @@ void qTabDataOutput::SetOutputDir(bool force) {
dispOutputDir->setModified(false);
QString path = dispOutputDir->text();
LOG(logDEBUG) << "Setting output directory to "
<< path.toAscii().constData();
<< path.toLatin1().constData();
// empty
if (path.isEmpty()) {
@ -208,7 +208,7 @@ void qTabDataOutput::SetOutputDir(bool force) {
path.chop(1);
}
}
std::string spath = std::string(path.toAscii().constData());
std::string spath = std::string(path.toLatin1().constData());
try {
det->setFilePath(spath, {comboDetector->currentIndex() - 1});
}
@ -245,7 +245,7 @@ void qTabDataOutput::GetFileFormat() {
void qTabDataOutput::SetFileFormat(int format) {
LOG(logINFO) << "Setting File Format to "
<< comboFileFormat->currentText().toAscii().data();
<< comboFileFormat->currentText().toLatin1().data();
try {
det->setFileFormat(static_cast<slsDetectorDefs::fileFormat>(
comboFileFormat->currentIndex()));
@ -388,7 +388,7 @@ void qTabDataOutput::GetSpeed() {
void qTabDataOutput::SetSpeed(int speed) {
LOG(logINFO) << "Setting Readout Speed to "
<< comboClkDivider->currentText().toAscii().data();
<< comboClkDivider->currentText().toLatin1().data();
try {
det->setReadoutSpeed(static_cast<slsDetectorDefs::speedLevel>(speed));
}

View File

@ -3,49 +3,36 @@
#include "qTabDebugging.h"
#include "qDefs.h"
#include "sls/ToString.h"
#include <QDesktopWidget>
#include <QGridLayout>
#include <QTreeWidget>
namespace sls {
qTabDebugging::qTabDebugging(QWidget *parent, Detector *detector)
: QWidget(parent), det(detector), treeDet(nullptr),
lblDetectorHostname(nullptr), lblDetectorFirmware(nullptr),
lblDetectorSoftware(nullptr) {
: QWidget(parent), det(detector) {
setupUi(this);
SetupWidgetWindow();
LOG(logDEBUG) << "Debugging ready";
}
qTabDebugging::~qTabDebugging() {
delete treeDet;
delete lblDetectorHostname;
delete lblDetectorFirmware;
delete lblDetectorSoftware;
}
qTabDebugging::~qTabDebugging() {}
void qTabDebugging::SetupWidgetWindow() {
// enabling according to det type
if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
lblDetector->setText("Half Module:");
chkDetectorFirmware->setEnabled(false);
chkDetectorBus->setEnabled(false);
btnTest->setEnabled(false);
groupTest->setEnabled(false);
} else {
EnableTest();
}
PopulateDetectors();
Initialization();
Refresh();
}
void qTabDebugging::Initialization() {
connect(comboDetector, SIGNAL(currentIndexChanged(int)), this,
SLOT(GetDetectorStatus()));
connect(btnGetInfo, SIGNAL(clicked()), this, SLOT(GetInfo()));
if (btnTest->isEnabled()) {
SLOT(GetInfo()));
connect(chkDetectorFirmware, SIGNAL(toggled(bool)), this,
SLOT(EnableTest()));
connect(chkDetectorBus, SIGNAL(toggled(bool)), this, SLOT(EnableTest()));
if (groupTest->isEnabled()) {
connect(btnTest, SIGNAL(clicked()), this, SLOT(TestDetector()));
}
}
@ -53,20 +40,73 @@ void qTabDebugging::Initialization() {
void qTabDebugging::PopulateDetectors() {
LOG(logDEBUG) << "Populating detectors";
comboDetector->clear();
auto res = det->getHostname();
for (auto &it : res) {
comboDetector->addItem(QString(it.c_str()));
try {
comboDetector->clear();
comboDetector->addItem("All");
auto res = det->getHostname();
if (det->size() > 1) {
for (auto &it : res) {
comboDetector->addItem(QString(it.c_str()));
}
}
comboDetector->setCurrentIndex(0);
}
CATCH_DISPLAY("Could not populate readouts for debugging",
"qTabDebugging::PopulateDetectors")
}
void qTabDebugging::GetFirmwareVersion() {
LOG(logDEBUG) << "Firmware Version";
try {
auto retval =
det->getFirmwareVersion({comboDetector->currentIndex() - 1})
.squash(-1);
std::string s = "inconsistent";
if (retval != -1) {
if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
s = ToString(retval);
} else {
s = ToStringHex(retval);
}
}
dispFirmwareVersion->setText(s.c_str());
}
CATCH_DISPLAY("Could not get firmware version.",
"qTabDebugging::GetFirmwareVersion")
}
void qTabDebugging::GetServerSoftwareVersion() {
LOG(logDEBUG) << "Server Software Version";
try {
std::string s =
det->getDetectorServerVersion({comboDetector->currentIndex() - 1})
.squash("inconsistent");
dispSoftwareVersion->setText(s.c_str());
}
CATCH_DISPLAY("Could not get on-board software version.",
"qTabDebugging::GetServerSoftwareVersion")
}
void qTabDebugging::GetReceiverVersion() {
LOG(logDEBUG) << "Server Receiver Version";
try {
std::string s =
det->getReceiverVersion({comboDetector->currentIndex() - 1})
.squash("inconsistent");
dispReceiverVersion->setText(s.c_str());
}
CATCH_DISPLAY("Could not receiver version.",
"qTabDebugging::GetReceiverVersion")
}
void qTabDebugging::GetDetectorStatus() {
LOG(logDEBUG) << "Getting Status";
try {
std::string status = ToString(
det->getDetectorStatus({comboDetector->currentIndex()})[0]);
lblStatus->setText(QString(status.c_str()).toUpper());
std::string s =
ToString(det->getDetectorStatus({comboDetector->currentIndex() - 1})
.squash(defs::runStatus::ERROR));
lblStatus->setText(QString(s.c_str()).toUpper());
}
CATCH_DISPLAY("Could not get detector status.",
"qTabDebugging::GetDetectorStatus")
@ -74,172 +114,53 @@ void qTabDebugging::GetDetectorStatus() {
void qTabDebugging::GetInfo() {
LOG(logDEBUG) << "Getting Readout Info";
// open info in a new popup
QFrame *popup1 = new QFrame(this, Qt::Popup | Qt::SubWindow);
QList<QTreeWidgetItem *> items;
QGridLayout *layout = new QGridLayout(popup1);
treeDet = new QTreeWidget(popup1);
layout->addWidget(treeDet, 0, 0);
QFrame *dispFrame = new QFrame(popup1);
QGridLayout *formLayout = new QGridLayout(dispFrame);
lblDetectorHostname = new QLabel("");
lblDetectorFirmware = new QLabel("");
lblDetectorSoftware = new QLabel("");
// to make sure the size is constant
lblDetectorFirmware->setFixedWidth(100);
layout->addWidget(dispFrame, 0, 1);
QString detName =
QString(ToString(det->getDetectorType().squash()).c_str());
switch (det->getDetectorType().squash()) {
case slsDetectorDefs::EIGER:
formLayout->addWidget(new QLabel("Half Module:"), 0, 0);
formLayout->addItem(
new QSpacerItem(15, 20, QSizePolicy::Fixed, QSizePolicy::Fixed), 0,
1);
formLayout->addWidget(lblDetectorHostname, 0, 2);
formLayout->addWidget(new QLabel("Half Module Firmware Version:"), 1,
0);
formLayout->addWidget(lblDetectorFirmware, 1, 2);
formLayout->addWidget(new QLabel("Half Module Software Version:"), 2,
0);
formLayout->addWidget(lblDetectorSoftware, 2, 2);
treeDet->setHeaderLabel("Eiger Detector");
// get num modules
for (int i = 0; i < comboDetector->count() / 2; ++i)
items.append(
new QTreeWidgetItem((QTreeWidget *)nullptr,
QStringList(QString("Module %1").arg(i))));
treeDet->insertTopLevelItems(0, items);
// gets det names
for (int i = 0; i < comboDetector->count(); ++i) {
QList<QTreeWidgetItem *> childItems;
childItems.append(new QTreeWidgetItem(
(QTreeWidget *)nullptr,
QStringList(QString("Half Module (%1)")
.arg(comboDetector->itemText(i)))));
treeDet->topLevelItem(i * 2)->insertChildren(0, childItems);
}
break;
default:
formLayout->addWidget(new QLabel("Module:"), 0, 0);
formLayout->addItem(
new QSpacerItem(15, 20, QSizePolicy::Fixed, QSizePolicy::Fixed), 0,
1);
formLayout->addWidget(lblDetectorHostname, 0, 2);
formLayout->addWidget(new QLabel("Module Firmware Version:"), 1, 0);
formLayout->addWidget(lblDetectorFirmware, 1, 2);
formLayout->addWidget(new QLabel("Module Software Version:"), 2, 0);
formLayout->addWidget(lblDetectorSoftware, 2, 2);
treeDet->setHeaderLabel(QString(detName + " Detector"));
// gets det names
for (int i = 0; i < comboDetector->count(); ++i)
items.append(new QTreeWidgetItem(
(QTreeWidget *)nullptr,
QStringList(
QString("Module (%1)").arg(comboDetector->itemText(i)))));
treeDet->insertTopLevelItems(0, items);
break;
}
// show and center widget
int x = ((parentWidget()->width()) - (popup1->frameGeometry().width())) / 2;
int y =
((parentWidget()->height()) - (popup1->frameGeometry().height())) / 2;
QDesktopWidget *desktop = QApplication::desktop();
int screen = desktop->screenNumber(this);
popup1->setWindowModality(Qt::WindowModal);
popup1->move((desktop->screenGeometry(screen).x()) + x,
(desktop->screenGeometry(screen).y()) + y);
popup1->show();
// put the first parameters
SetParameters(treeDet->topLevelItem(0));
// connect to slots
connect(treeDet, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this,
SLOT(SetParameters(QTreeWidgetItem *)));
GetFirmwareVersion();
GetServerSoftwareVersion();
GetReceiverVersion();
GetDetectorStatus();
}
void qTabDebugging::SetParameters(QTreeWidgetItem *item) {
// eiger: if half module clicked, others: true always
bool ignoreOrHalfModuleClicked = true;
if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
if (!(item->text(0).contains("Half Module"))) {
ignoreOrHalfModuleClicked = false;
}
}
if (ignoreOrHalfModuleClicked) {
// find index
for (int i = 0; i < comboDetector->count(); ++i) {
if (item == treeDet->topLevelItem(i))
break;
}
try {
auto retval = std::string("0x") +
std::to_string((unsigned long)det->getFirmwareVersion(
{comboDetector->currentIndex()})[0]);
lblDetectorFirmware->setText(QString(retval.c_str()));
retval = det->getDetectorServerVersion(
{comboDetector->currentIndex()})[0];
lblDetectorSoftware->setText(QString(retval.c_str()));
}
CATCH_DISPLAY("Could not get versions.", "qTabDebugging::SetParameters")
}
void qTabDebugging::EnableTest() {
btnTest->setEnabled(chkDetectorFirmware->isChecked() ||
chkDetectorBus->isChecked());
lblBusTestOk->hide();
lblBusTestFail->hide();
lblFwTestOk->hide();
lblFwTestFail->hide();
}
void qTabDebugging::TestDetector() {
LOG(logINFO) << "Testing Readout";
try {
QString moduleName = "Module";
if (det->getDetectorType().squash() == slsDetectorDefs::EIGER) {
moduleName = "Half Module";
// hide results if clicking button again
EnableTest();
// detector firmware
if (chkDetectorFirmware->isChecked()) {
try {
det->executeFirmwareTest({comboDetector->currentIndex() - 1});
LOG(logINFO) << "Detector Firmware Test: Pass";
lblFwTestOk->show();
} catch (std::exception &e) {
LOG(logWARNING)
<< "Detector Firmware Test: Fail (" << e.what() << ")";
lblFwTestFail->show();
}
}
// detector CPU-FPGA bus
if (chkDetectorBus->isChecked()) {
try {
det->executeBusTest({comboDetector->currentIndex() - 1});
LOG(logINFO) << "Detector Bus Test: Pass";
lblBusTestOk->show();
} catch (std::exception &e) {
LOG(logWARNING) << "Detector Bus Test: Fail (" << e.what() << ")";
lblBusTestFail->show();
}
// construct message
QString message = QString("<nobr>Test Results for %1:</nobr><br><br>")
.arg(comboDetector->currentText());
// detector firmware
if (chkDetectorFirmware->isChecked()) {
try {
det->executeFirmwareTest({comboDetector->currentIndex()});
message.append(QString("<nobr>%1 Firmware: PASS</nobr><br>")
.arg(moduleName));
LOG(logINFO) << "Detector Firmware Test: Pass";
}
CATCH_DISPLAY("Firmware test failed.",
"qTabDebugging::TestDetector")
}
// detector CPU-FPGA bus
if (chkDetectorBus->isChecked()) {
try {
det->executeBusTest({comboDetector->currentIndex()});
message.append(
QString("<nobr>%1 Bus: PASS</nobr><br>").arg(moduleName));
LOG(logINFO) << "Detector Bus Test: Pass";
}
CATCH_DISPLAY("Bus test failed.", "qTabDebugging::TestDetector")
}
// display message
qDefs::Message(qDefs::INFORMATION, message.toAscii().constData(),
"qTabDebugging::TestDetector");
}
CATCH_DISPLAY("Could not execute digital test.",
"qTabDebugging::TestDetector")
}
void qTabDebugging::Refresh() {
LOG(logDEBUG) << "**Updating Debugging Tab";
GetDetectorStatus();
LOG(logDEBUG) << "**Updated Debugging Tab";
}
void qTabDebugging::Refresh() { GetInfo(); }
} // namespace sls

View File

@ -279,15 +279,19 @@ void qTabDeveloper::Initialization() {
void qTabDeveloper::PopulateDetectors() {
LOG(logDEBUG) << "Populating detectors";
comboDetector->clear();
comboDetector->addItem("All");
auto res = det->getHostname();
if (det->size() > 1) {
for (auto &it : res) {
comboDetector->addItem(QString(it.c_str()));
try {
comboDetector->clear();
comboDetector->addItem("All");
auto res = det->getHostname();
if (det->size() > 1) {
for (auto &it : res) {
comboDetector->addItem(QString(it.c_str()));
}
}
comboDetector->setCurrentIndex(0);
}
comboDetector->setCurrentIndex(0);
CATCH_DISPLAY("Could not populate readouts for dacs/adcs",
"qTabDeveloper::PopulateDetectors")
}
slsDetectorDefs::dacIndex

View File

@ -20,6 +20,7 @@ qTabMeasurement::qTabMeasurement(QWidget *parent, Detector *detector,
qTabMeasurement::~qTabMeasurement() { delete progressTimer; }
void qTabMeasurement::SetupWidgetWindow() {
setFont(QFont("Carlito", 9, QFont::Normal));
// palette
red = QPalette();
red.setColor(QPalette::Active, QPalette::WindowText, Qt::red);
@ -384,7 +385,7 @@ void qTabMeasurement::GetTimingMode() {
void qTabMeasurement::SetTimingMode(int val) {
LOG(logINFO) << "Setting timing mode:"
<< comboTimingMode->currentText().toAscii().data();
<< comboTimingMode->currentText().toLatin1().data();
try {
det->setTimingMode(static_cast<slsDetectorDefs::timingMode>(val));
EnableWidgetsforTimingMode();
@ -420,7 +421,7 @@ void qTabMeasurement::GetBurstMode() {
void qTabMeasurement::SetBurstMode(int val) {
LOG(logINFO) << "Setting burst mode:"
<< comboBurstMode->currentText().toAscii().data();
<< comboBurstMode->currentText().toLatin1().data();
try {
det->setBurstMode(static_cast<slsDetectorDefs::burstMode>(val));
ShowTriggerDelay();
@ -800,7 +801,7 @@ void qTabMeasurement::SetFileName(bool force) {
if (dispFileName->isModified() || force) {
dispFileName->setModified(false);
std::string val =
std::string(dispFileName->text().toAscii().constData());
std::string(dispFileName->text().toLatin1().constData());
LOG(logINFO) << "Setting File Name Prefix:" << val;
try {
det->setFileNamePrefix(val);
@ -966,7 +967,7 @@ void qTabMeasurement::AcquireFinished() {
void qTabMeasurement::AbortAcquire(QString exmsg) {
LOG(logINFORED) << "Abort Acquire";
qDefs::ExceptionMessage("Acquire unsuccessful.",
exmsg.toAscii().constData(),
exmsg.toLatin1().constData(),
"qDrawPlot::AcquireFinished");
isAcquisitionStopped = true;
AcquireFinished();
@ -978,8 +979,7 @@ void qTabMeasurement::Enable(bool enable) {
// shortcut each time, else it doesnt work a second time
btnStart->setShortcut(QApplication::translate("TabMeasurementObject",
"Shift+Space", nullptr,
QApplication::UnicodeUTF8));
"Shift+Space", nullptr));
}
void qTabMeasurement::Refresh() {

View File

@ -78,9 +78,9 @@ void qTabMessages::ExecuteCommand() {
QString command = param.at(0);
param.removeFirst();
LOG(logINFO) << "Executing Command:[" << command.toAscii().constData()
LOG(logINFO) << "Executing Command:[" << command.toLatin1().constData()
<< "] with Arguments:["
<< param.join(" ").toAscii().constData() << "]";
<< param.join(" ").toLatin1().constData() << "]";
process->setProcessChannelMode(QProcess::MergedChannels);
process->start(command, param);
@ -117,15 +117,15 @@ void qTabMessages::SaveLog() {
outfile.setFileName(fName);
if (outfile.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&outfile);
out << dispLog->toPlainText() << endl;
out << dispLog->toPlainText() << '\n';
std::string mess =
std::string("The Log has been successfully saved to ") +
fName.toAscii().constData();
fName.toLatin1().constData();
qDefs::Message(qDefs::INFORMATION, mess, "TabMessages::SaveLog");
LOG(logINFO) << mess;
} else {
LOG(logWARNING) << "Attempt to save log file failed: "
<< fName.toAscii().constData();
<< fName.toLatin1().constData();
qDefs::Message(qDefs::WARNING, "Attempt to save log file failed.",
"qTabMessages::SaveLog");
}

View File

@ -29,6 +29,7 @@ void qTabPlot::SetupWidgetWindow() {
stackedWidget1D->setCurrentIndex(0);
stackedWidget2D->setCurrentIndex(0);
// Plot Axis
// its not spinboxes to not take value when checkbox checked
dispXMin->setValidator(new QDoubleValidator(dispXMin));
dispYMin->setValidator(new QDoubleValidator(dispYMin));
dispZMin->setValidator(new QDoubleValidator(dispZMin));
@ -73,9 +74,11 @@ void qTabPlot::SetupWidgetWindow() {
Initialization();
Refresh();
// set zmq high water mark to GUI_ZMQ_RCV_HWM (2)
spinSndHwm->setValue(qDefs::GUI_ZMQ_RCV_HWM);
spinRcvHwm->setValue(qDefs::GUI_ZMQ_RCV_HWM);
// update both zmq high water mark to GUI_ZMQ_RCV_HWM (2)
comboHwm->setCurrentIndex(SND_HWM);
spinHwm->setValue(qDefs::GUI_ZMQ_RCV_HWM);
comboHwm->setCurrentIndex(RX_HWM);
spinHwm->setValue(qDefs::GUI_ZMQ_RCV_HWM);
if (chkGapPixels->isEnabled()) {
chkGapPixels->setChecked(true);
@ -85,10 +88,9 @@ void qTabPlot::SetupWidgetWindow() {
void qTabPlot::Initialization() {
// Plotting frequency box
connect(chkNoPlot, SIGNAL(toggled(bool)), this, SLOT(SetPlot()));
connect(spinSndHwm, SIGNAL(valueChanged(int)), this,
SLOT(SetStreamingHwm(int)));
connect(spinRcvHwm, SIGNAL(valueChanged(int)), this,
SLOT(SetReceivingHwm(int)));
connect(comboHwm, SIGNAL(currentIndexChanged(int)), this,
SLOT(SelectHwm(int)));
connect(spinHwm, SIGNAL(valueChanged(int)), this, SLOT(SetHwm(int)));
connect(comboFrequency, SIGNAL(currentIndexChanged(int)), this,
SLOT(SetStreamingFrequency()));
connect(comboTimeGapUnit, SIGNAL(currentIndexChanged(int)), this,
@ -196,15 +198,14 @@ void qTabPlot::Initialization() {
void qTabPlot::Select1DPlot(bool enable) {
LOG(logDEBUG) << "Selecting " << (enable ? "1" : "2") << "D Plot";
is1d = enable;
box1D->setEnabled(enable);
box2D->setEnabled(!enable);
chkZAxis->setEnabled(!enable);
dispZAxis->setEnabled(!enable);
chkZMin->setEnabled(!enable);
chkZMax->setEnabled(!enable);
dispZMin->setEnabled(!enable);
dispZMax->setEnabled(!enable);
plot->Select1dPlot(enable);
stackedPlotOptions->setCurrentIndex(is1d ? 0 : 1);
chkZAxis->setEnabled(!is1d);
dispZAxis->setEnabled(!is1d);
chkZMin->setEnabled(!is1d);
chkZMax->setEnabled(!is1d);
dispZMin->setEnabled(!is1d);
dispZMax->setEnabled(!is1d);
plot->Select1dPlot(is1d);
SetTitles();
SetXYRange();
if (!is1d) {
@ -221,14 +222,12 @@ void qTabPlot::SetPlot() {
plotEnable = true;
}
comboFrequency->setEnabled(plotEnable);
lblSndHwm->setEnabled(plotEnable);
spinSndHwm->setEnabled(plotEnable);
lblRcvHwm->setEnabled(plotEnable);
spinRcvHwm->setEnabled(plotEnable);
comboHwm->setEnabled(plotEnable);
spinHwm->setEnabled(plotEnable);
stackedTimeInterval->setEnabled(plotEnable);
box1D->setEnabled(plotEnable);
box2D->setEnabled(plotEnable);
boxSave->setEnabled(plotEnable);
stackedPlotOptions->setEnabled(plotEnable);
btnSave->setEnabled(plotEnable);
btnClone->setEnabled(plotEnable);
boxPlotAxis->setEnabled(plotEnable);
if (plotEnable) {
@ -249,8 +248,6 @@ void qTabPlot::Set1DPlotOptionsRight() {
stackedWidget1D->setCurrentIndex(0);
else
stackedWidget1D->setCurrentIndex(i + 1);
box1D->setTitle(
QString("1D Plot Options %1").arg(stackedWidget1D->currentIndex() + 1));
}
void qTabPlot::Set1DPlotOptionsLeft() {
@ -260,8 +257,6 @@ void qTabPlot::Set1DPlotOptionsLeft() {
stackedWidget1D->setCurrentIndex(stackedWidget1D->count() - 1);
else
stackedWidget1D->setCurrentIndex(i - 1);
box1D->setTitle(
QString("1D Plot Options %1").arg(stackedWidget1D->currentIndex() + 1));
}
void qTabPlot::Set2DPlotOptionsRight() {
@ -271,8 +266,6 @@ void qTabPlot::Set2DPlotOptionsRight() {
stackedWidget2D->setCurrentIndex(0);
else
stackedWidget2D->setCurrentIndex(i + 1);
box2D->setTitle(
QString("2D Plot Options %1").arg(stackedWidget2D->currentIndex() + 1));
}
void qTabPlot::Set2DPlotOptionsLeft() {
@ -282,8 +275,6 @@ void qTabPlot::Set2DPlotOptionsLeft() {
stackedWidget2D->setCurrentIndex(stackedWidget2D->count() - 1);
else
stackedWidget2D->setCurrentIndex(i - 1);
box2D->setTitle(
QString("2D Plot Options %1").arg(stackedWidget2D->currentIndex() + 1));
}
void qTabPlot::EnablePersistency(bool enable) {
@ -711,20 +702,34 @@ void qTabPlot::SetStreamingFrequency() {
&qTabPlot::GetStreamingFrequency)
}
void qTabPlot::SelectHwm(int value) { GetHwm(); }
void qTabPlot::GetHwm() {
if (comboHwm->currentIndex() == SND_HWM)
GetStreamingHwm();
else
GetReceivingHwm();
}
void qTabPlot::SetHwm(int value) {
if (comboHwm->currentIndex() == SND_HWM)
SetStreamingHwm(value);
else
SetReceivingHwm(value);
}
void qTabPlot::GetStreamingHwm() {
LOG(logDEBUG) << "Getting Streaming Hwm for receiver";
disconnect(spinSndHwm, SIGNAL(valueChanged(int)), this,
SLOT(SetStreamingHwm(int)));
disconnect(spinHwm, SIGNAL(valueChanged(int)), this, SLOT(SetHwm(int)));
try {
int value = det->getRxZmqHwm().tsquash(
"Inconsistent streaming hwm for all receivers.");
LOG(logDEBUG) << "Got streaming hwm for receiver " << value;
spinSndHwm->setValue(value);
spinHwm->setValue(value);
}
CATCH_DISPLAY("Could not get streaming hwm for receiver.",
"qTabPlot::GetStreamingHwm")
connect(spinSndHwm, SIGNAL(valueChanged(int)), this,
SLOT(SetStreamingHwm(int)));
connect(spinHwm, SIGNAL(valueChanged(int)), this, SLOT(SetHwm(int)));
}
void qTabPlot::SetStreamingHwm(int value) {
@ -733,17 +738,20 @@ void qTabPlot::SetStreamingHwm(int value) {
det->setRxZmqHwm(value);
}
CATCH_HANDLE("Could not set streaming hwm for receiver.",
"qTabPlot::SetStreamingHwm", this, &qTabPlot::GetStreamingHwm)
"qTabPlot::SetStreamingHwm", this, &qTabPlot::GetHwm)
}
void qTabPlot::GetReceivingHwm() {
LOG(logDEBUG) << "Getting Receiving Hwm for client";
disconnect(spinHwm, SIGNAL(valueChanged(int)), this, SLOT(SetHwm(int)));
try {
int value = det->getClientZmqHwm();
LOG(logDEBUG) << "Got receiving hwm for client " << value;
spinHwm->setValue(value);
}
CATCH_DISPLAY("Could not get receiving hwm for client.",
"qTabPlot::GetReceivingHwm")
connect(spinHwm, SIGNAL(valueChanged(int)), this, SLOT(SetHwm(int)));
}
void qTabPlot::SetReceivingHwm(int value) {
@ -752,7 +760,7 @@ void qTabPlot::SetReceivingHwm(int value) {
det->setClientZmqHwm(value);
}
CATCH_HANDLE("Could not set receiving hwm from client.",
"qTabPlot::SetReceivingHwm", this, &qTabPlot::GetReceivingHwm)
"qTabPlot::SetReceivingHwm", this, &qTabPlot::GetHwm)
}
void qTabPlot::Refresh() {
@ -760,19 +768,8 @@ void qTabPlot::Refresh() {
if (!plot->GetIsRunning()) {
boxFrequency->setEnabled(true);
// streaming frequency
if (!chkNoPlot->isChecked()) {
comboFrequency->setEnabled(true);
stackedTimeInterval->setEnabled(true);
lblSndHwm->setEnabled(true);
spinSndHwm->setEnabled(true);
lblRcvHwm->setEnabled(true);
spinRcvHwm->setEnabled(true);
}
GetStreamingFrequency();
GetStreamingHwm();
GetReceivingHwm();
GetHwm();
// gain plot, gap pixels enable
switch (det->getDetectorType().squash()) {
case slsDetectorDefs::EIGER:

View File

@ -18,7 +18,6 @@ qTabSettings::qTabSettings(QWidget *parent, Detector *detector)
qTabSettings::~qTabSettings() {}
void qTabSettings::SetupWidgetWindow() {
comboHV->hide();
lblComboHV->hide();
lblSpinHV->hide();
@ -402,7 +401,7 @@ void qTabSettings::SetGainMode(int index) {
}
LOG(logINFO) << "Setting Gain Mode to "
<< comboGainMode->currentText().toAscii().data();
<< comboGainMode->currentText().toLatin1().data();
auto val = static_cast<slsDetectorDefs::gainMode>(index);
try {
@ -449,7 +448,7 @@ void qTabSettings::GetDynamicRange() {
void qTabSettings::SetDynamicRange(int index) {
LOG(logINFO) << "Setting dynamic range to "
<< comboDynamicRange->currentText().toAscii().data();
<< comboDynamicRange->currentText().toLatin1().data();
try {
switch (index) {
case DYNAMICRANGE_32:

View File

@ -0,0 +1,17 @@
// SPDX-License-Identifier: LGPL-3.0-or-other
// Copyright (C) 2021 Contributors to the SLS Detector Package
#include "qVersionResolve.h"
#include <iostream>
namespace sls {
int qResolve_GetQFontWidth(const QFontMetrics fm, const QString &text,
int len) {
#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
return fm.horizontalAdvance(text, len);
#else
return fm.width(text, len);
#endif
};
} // namespace sls