12#include "../GraphUtil.h"
13#include "../../MetaInstruments/Spectrometer.h"
14#include "../../Instruments/InterModuleCommunicator.h"
76 virtual const char*
GetParamClassTag() const noexcept
override {
return "SpectrumViewerParams"; }
81 "InterModuleCommunicator",
"Inter-module communicator",
"Inter-module communicator to control this module with",
DynExpUI::Icons::Instrument,
true };
107 constexpr static auto Name() noexcept {
return "Spectrum Viewer"; }
108 constexpr static auto Category() noexcept {
return "Image Capturing"; }
117 std::chrono::milliseconds
GetMainLoopDelay() const override final {
return std::chrono::milliseconds(50); }
122 void ResetImpl(dispatch_tag<QMLModuleBase>)
override final;
125 QAnyStringView
GetModuleSourceUri() const noexcept override final {
return "Modules.SpectrumViewer"; }
127 void UpdateUIChild(
const ModuleBase::ModuleDataGetterType& ModuleDataGetter)
override final;
Provides common events for inter-module communication. Also refer to DynExp::InterModuleEventBase.
Defines DynExp's core module as an interface between the UI and DynExp objects.
Events for inter-module communication handled by the DynExpModule::SpectrumViewer::SpectrumViewer mod...
CapturingStateType
Possible spectrometer states.
std::chrono::milliseconds TimeType
Time type describing the spectrometer's times like its exposure time.
SpectrumViewerConfigurator()=default
virtual ~SpectrumViewerConfigurator()=default
virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core) const override final
Override to make derived classes call DynExp::MakeParams with the correct configurator type derived f...
DynExpInstr::SpectrometerData::TimeType CurrentExposureTime
DynExpInstr::SpectrometerData::CapturingStateType CapturingState
virtual ~SpectrumViewerData()=default
std::string AutoSaveFilename
SampleDataType CurrentSpectrum
DynExpInstr::SpectrometerData::TimeType MinExposureTime
double CurrentLowerFrequency
DynExp::LinkedObjectWrapperContainer< DynExpInstr::InterModuleCommunicator > Communicator
bool IsUIInitialized() const noexcept
DynExpInstr::SpectrometerData::TimeType MaxExposureTime
void SetUIInitialized() noexcept
Graph::LineGraphPlotInfo PlotInfo
virtual void ResetImpl(dispatch_tag< SpectrumViewerData >)
DynExp::LinkedObjectWrapperContainer< DynExpInstr::Spectrometer > Spectrometer
bool SpectrumRecordingPaused
void ResetImpl(dispatch_tag< QMLModuleDataBase >) override final
double CurrentUpperFrequency
virtual const char * GetParamClassTag() const noexcept override
This function is intended to be overridden once in each derived class returning the name of the respe...
void ConfigureParamsImpl(dispatch_tag< QMLModuleParamsBase >) override final
Param< DynExp::ObjectLink< DynExpInstr::Spectrometer > > Spectrometer
SpectrumViewerParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
virtual ~SpectrumViewerParams()=default
Param< DynExp::ObjectLink< DynExpInstr::InterModuleCommunicator > > Communicator
void OnExit(DynExp::ModuleInstance *Instance) const override final
This event is triggered right before the module thread terminates (not due to an exception,...
static constexpr auto Category() noexcept
void SaveSpectrum(Util::SynchronizedPointer< SpectrumViewerData > &ModuleData)
void OnUpperLimitChanged(DynExp::ModuleInstance *Instance, double Value) const
void MakeConnections(QObject *Backend) override final
Use QModuleBase::Connect() to connect Qt QML signals to the module's event functions.
Util::DynExpErrorCodes::DynExpErrorCodes ModuleMainLoop(DynExp::ModuleInstance &Instance) override final
Module main loop. The function is executed periodically by the module thread. Also refer to GetMainLo...
size_t NumFailedUpdateAttempts
SpectrumViewer(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
void OnRunClicked(DynExp::ModuleInstance *Instance) const
void OnInit(DynExp::ModuleInstance *Instance) const override final
This event is triggered right before the module thread starts. Override it to lock instruments this m...
void OnPauseSpectrumRecording(DynExp::ModuleInstance *Instance) const
QAnyStringView GetModuleSourceTypeName() const noexcept override final
Used by QModuleBase::MakeUIWidget to construct the module's user interface QML widget.
std::atomic_bool IsSavingData
If data is currently being saved to file, do not update internal data.
QAnyStringView GetModuleSourceUri() const noexcept override final
Used by QModuleBase::MakeUIWidget to construct the module's user interface QML widget.
void OnLowerLimitChanged(DynExp::ModuleInstance *Instance, double Value) const
virtual ~SpectrumViewer()=default
void OnTrigger(DynExp::ModuleInstance *Instance) const
QObject SignalContext
Does nothing but ensures that this module's Qt connections are disconnected when SignalContext is des...
void OnSetFilename(DynExp::ModuleInstance *Instance, const std::string &SaveFilename) const
void UpdateUIChild(const ModuleBase::ModuleDataGetterType &ModuleDataGetter) override final
virtual std::string GetName() const override
Returns the name of this Object type.
static constexpr auto Name() noexcept
void OnSaveSpectrum() const
void OnSilentModeToggled(DynExp::ModuleInstance *Instance, bool Checked) const
void OnStop(DynExp::ModuleInstance *Instance) const
virtual std::string GetCategory() const override
Returns the category of this Object type.
void FinishedSavingData() const noexcept
void OnResumeSpectrumRecording(DynExp::ModuleInstance *Instance) const
void OnStopClicked(DynExp::ModuleInstance *Instance) const
std::chrono::milliseconds GetMainLoopDelay() const override final
Specifies in which time intervals the module's event queue runs to handle pending events.
void ResetImpl(dispatch_tag< QMLModuleBase >) override final
void OnExposureTimeChanged(DynExp::ModuleInstance *Instance, int Value) const
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
This class holds a pointer (LinkedObjectWrapperPointer) to a LinkedObjectWrapper. Intances of this cl...
const std::unique_ptr< ModuleDataType > ModuleData
Module data belonging to this ModuleBase instance.
Refer to ParamsBase::dispatch_tag.
Defines data for a thread belonging to a ModuleBase instance. Refer to RunnableInstance.
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
const auto & GetCore() const noexcept
Returns a reference to DynExp's core.
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
const DynExpCore & Core
Reference to DynExp's core.
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
Base class for modules with a QML-based user interface. Derive from this class to implement modules w...
QMLModuleBase(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
Constructs a QMLModuleBase instance.
Configurator class for QMLModuleBase.
Data class for QMLModuleBase.
Parameter class for QMLModuleBase.
QMLModuleParamsBase(ItemIDType ID, const DynExpCore &Core)
Constructs the parameters for a QMLModuleBase instance.
Holds a CallableMemberWrapper and invokes its callable when being destroyed.
Pointer to lock a class derived from ISynchronizedPointerLockable for synchronizing between threads....
constexpr auto Instrument
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
size_t ItemIDType
ID type of objects/items managed by DynExp.
DynExpErrorCodes
DynExp's error codes
Accumulates include statements to provide a precompiled header.
std::string ToStr(DynExpInstr::SpectrometerData::TimeType ExposureTime, const DynExpModule::Graph::LineGraphPlotInfo &PlotInfo) const