DynExp
Highly flexible laboratory automation for dynamically changing experiments.
|
Base class for modules with a Qt-based user interface. Derive from this class to implement modules with a user interface. More...
Public Types | |
using | ParamsType = QModuleParamsBase |
Type of the parameter class belonging to this Object type. Declare this alias in every derived class with the respective parameter class accompanying the derived Object . More... | |
using | ConfigType = QModuleConfiguratorBase |
Type of the configurator class belonging to this Object type. Declare this alias in every derived class with the respective configurator class accompanying the derived Object . More... | |
using | ModuleDataType = QModuleDataBase |
Type of the data class belonging to this ModuleBase type. Declare this alias in every derived class with the respective data class accompanying the derived ModuleBase . More... | |
Public Types inherited from DynExp::ModuleBase | |
using | ParamsType = ModuleParamsBase |
Type of the parameter class belonging to this Object type. Declare this alias in every derived class with the respective parameter class accompanying the derived Object . More... | |
using | ConfigType = ModuleConfiguratorBase |
Type of the configurator class belonging to this Object type. Declare this alias in every derived class with the respective configurator class accompanying the derived Object . More... | |
using | ModuleDataType = ModuleDataBase |
Type of the data class belonging to this ModuleBase type. Declare this alias in every derived class with the respective data class accompanying the derived ModuleBase . More... | |
using | ModuleDataTypeSyncPtrType = Util::SynchronizedPointer< ModuleDataType > |
Alias for the return type of ModuleBase::GetModuleData(). Data class instances wrapped into Util::SynchronizedPointer can be accessed in a thread-safe way. More... | |
using | ModuleDataTypeSyncPtrConstType = Util::SynchronizedPointer< const ModuleDataType > |
Alias for the return type of ModuleBase::GetModuleData() const. Data class instances wrapped into Util::SynchronizedPointer can be accessed in a thread-safe way. More... | |
using | ModuleDataGetterType = Util::CallableMemberWrapper< ModuleBase, ModuleDataTypeSyncPtrType(ModuleBase::*)(const std::chrono::milliseconds)> |
Invoking an instance of this alias is supposed to call ModuleBase::GetModuleData() of the instance the Util::CallableMemberWrapper has been constructed with. More... | |
Public Types inherited from DynExp::RunnableObject | |
using | ParamsType = RunnableObjectParams |
Type of the parameter class belonging to this Object type. Declare this alias in every derived class with the respective parameter class accompanying the derived Object . More... | |
using | ConfigType = RunnableObjectConfigurator |
Type of the configurator class belonging to this Object type. Declare this alias in every derived class with the respective configurator class accompanying the derived Object . More... | |
Public Types inherited from DynExp::Object | |
using | ParamsType = ParamsBase |
Type of the parameter class belonging to this Object type. Declare this alias in every derived class with the respective parameter class accompanying the derived Object . More... | |
using | ParamsTypeSyncPtrType = Util::SynchronizedPointer< ParamsType > |
Alias for the return type of Object::GetParams(). Parameters wrapped into Util::SynchronizedPointer can be accessed in a thread-safe way. More... | |
using | ParamsConstTypeSyncPtrType = Util::SynchronizedPointer< const ParamsType > |
Alias for the return type of Object::GetParams() const. Parameters wrapped into Util::SynchronizedPointer can be accessed in a thread-safe way. More... | |
using | ConfigType = ConfiguratorBase |
Type of the configurator class belonging to this Object type. Declare this alias in every derived class with the respective configurator class accompanying the derived Object . More... | |
using | ParamsGetterType = Util::CallableMemberWrapper< Object, decltype(&Object::GetParams)> |
Invoking an instance of this alias is supposed to call Object::GetParams() of the instance the Util::CallableMemberWrapper has been constructed with. More... | |
Public Member Functions | |
QModuleBase (const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params) | |
Constructs a QModuleBase instance. More... | |
virtual | ~QModuleBase ()=0 |
bool | HasUI () const noexcept override final |
Determines whether this module possesses a user interface (UI) which is shown in a window dedicated to the module. More... | |
Main thread only | |
These functions must not be called by module thread. Logical const-ness: Not const to hide from the module thread. | |
QAction & | InitUI (DynExpManager &DynExpMgr, QMdiArea *const MdiArea) |
Sets up the module's user interface widgets and window frames. Called by the main user interface thread in DynExpManager::RegisterModuleUI(). More... | |
void | HideUI () |
Removes MdiSubWindow, DockWidget, and ModuleWindowFocusAction setting them to nullptr . More... | |
void | DisableUI () |
Disables all user interface controls in Widget. Does nothing if Widget is nullptr . More... | |
void | UpdateUI () |
Enables the user interface controls in Widget. Does nothing if Widget is nullptr . Calls UpdateUIChild() . More... | |
void | UpdateModuleWindowFocusAction () |
Updates the icon assigned to ModuleWindowFocusAction depending on whether Widget is docked to or undocked from MdiArea. Called by the main user interface thread in DynExpManager::UpdateModuleWindowsActionIcons(). More... | |
void | DockWindow () noexcept |
Docks Widget to MdiArea. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr . More... | |
void | UndockWindow () noexcept |
Undocks Widget from MdiArea. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr . More... | |
void | DockUndockWindow () noexcept |
Toggles the docking state of Widget. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr . More... | |
void | SetFocus () noexcept |
Focuses/activates Widget and moves it on top of other windows if possible. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr . More... | |
void | FocusMainWindow () noexcept |
Focuses/activates DynExp's main window calling DynExpManager::FocusMainWindow(). Does nothing if Widget is nullptr . More... | |
void | SendKeyPressEventToMainWindow (QKeyEvent *Event) noexcept |
Sends a Qt key press event to DynExp's main window calling DynExpManager::PostKeyPressEvent(). Does nothing if Widget is nullptr . More... | |
bool | IsWindowDocked () noexcept |
Checks whether Widget is docked. More... | |
bool | IsActiveWindow () |
Checks whether Widget is docked and active. More... | |
Public Member Functions inherited from DynExp::ModuleBase | |
ModuleBase (const std::thread::id OwnerThreadID, ParamsBasePtrType &&Params) | |
Constructs a ModuleBase instance. More... | |
virtual | ~ModuleBase ()=0 |
virtual std::string | GetCategory () const override |
Returns the category of this Object type. More... | |
void | RestoreWindowStatesFromParams () |
RestoreWindowStatesFromParams() only calls RestoreWindowStatesFromParamsChild() . Override RestoreWindowStatesFromParamsChild() to restore the styles of possibly owned windows according to the style saved in the module's parameters. More... | |
void | UpdateParamsFromWindowStates () |
UpdateParamsFromWindowStates() only calls UpdateParamsFromWindowStatesChild() . Override UpdateParamsFromWindowStatesChild() to store the styles of possibly owned windows in the module's parameters. More... | |
ModuleDataTypeSyncPtrType | GetModuleData (const std::chrono::milliseconds Timeout=GetModuleDataTimeoutDefault) |
Locks the mutex of the module data class instance ModuleData assigned to this ModuleBase instance and returns a pointer to the locked ModuleData. Module data should not be locked by having called this function while subsequently calling a derived module's method which also makes use of the module's data by locking it. If this happens, the module data's mutex is locked recursively. In principle, this does no harm since Util::ISynchronizedPointerLockable supports that. But, it is not considered good practice. More... | |
ModuleDataTypeSyncPtrConstType | GetModuleData (const std::chrono::milliseconds Timeout=GetModuleDataTimeoutDefault) const |
Locks the mutex of the module data class instance ModuleData assigned to this ModuleBase instance and returns a pointer to the locked ModuleData. Module data should not be locked by having called this function while subsequently calling a derived module's method which also makes use of the module's data by locking it. If this happens, the module data's mutex is locked recursively. In principle, this does no harm since Util::ISynchronizedPointerLockable supports that. But, it is not considered good practice. More... | |
void | EnqueueEvent (ModuleDataBase::EventPtrType &&Event) const |
Enqueues Event at the module event queue's back. Takes ownership of the event. Notifies the module owning the respective ModuleDataBase's instance that a new event has been enqueued. More... | |
template<typename ReceiverType , typename EventType , typename... ArgsTs> | |
void | MakeAndEnqueueEvent (ReceiverType *Receiver, EventType EventFuncPtr, ArgsTs &&...Args) const |
Calls MakeEvent() to construct a new event and subsequently enqueues the event into the module's event queue. Logical const-ness: this is a const member function to allow pointers to const ModuleBase inserting events into the module's event queue. These kind of pointers are e.g. returned by RunnableInstance::GetOwner() which can be called by events' EventBase::InvokeChild() functions. For const ModuleBase* , it is possible to insert events into the event queue, but not to change the ModuleBase object itself (e.g. calling Object::Reset()). More... | |
virtual bool | TreatModuleExceptionsAsWarnings () const |
Determines whether this module should be terminated if an exception leaves the module's main loop or respective event handlers. More... | |
virtual std::chrono::milliseconds | GetMainLoopDelay () const |
Specifies in which time intervals the module's event queue runs to handle pending events. More... | |
Public Member Functions inherited from DynExp::RunnableObject | |
RunnableObject (const std::thread::id OwnerThreadID, ParamsBasePtrType &&Params) | |
Constructs an Object instance. More... | |
virtual | ~RunnableObject ()=0 |
void | SetPaused (bool Pause, std::string Description="") |
Pauses or resumes a RunnableObject instance. Its thread stays running, but the instance does not perform any action while it is paused. More... | |
bool | IsRunning () const noexcept |
Returns Running. More... | |
bool | IsPaused () const noexcept |
Returns Paused. More... | |
bool | IsExiting () const noexcept |
Returns ShouldExit. More... | |
auto | GetStartupType () const noexcept |
Returns Startup. More... | |
auto | GetReasonWhyPaused () const |
Returns ReasonWhyPaused. More... | |
bool | Run (QWidget *ParentWidget=nullptr) |
Starts the RunnableObject instance's thread and ensures that all Object instances linked to this instance via ObjectLink parameters are in a ready state. Calls RunChild() which is to be overridden by derived classes to start a thread and to pass this thread back by calling StoreThread() . More... | |
bool | RunIfRunAutomatic () |
Calls Run() if RunnableObjectParams::Startup is set to RunnableObjectParams::Automatic. More... | |
bool | RunIfRunOnCreation () |
Calls Run() if RunnableObjectParams::Startup is set to RunnableObjectParams::OnCreation. More... | |
void | Terminate (bool Force=false, const std::chrono::milliseconds Timeout=TerminateTimeoutDefault) |
Notifies the RunnableObject instance's thread to terminate and waits until it has ended. Calls TerminateImpl(). More... | |
Public Member Functions inherited from Util::INonCopyable | |
INonCopyable (const INonCopyable &)=delete | |
INonCopyable & | operator= (const INonCopyable &)=delete |
Public Member Functions inherited from DynExp::Object | |
ItemIDType | GetID () const noexcept |
Returns the ID of this Object instance. Thread-safe since ID is const. More... | |
std::string | GetCategoryAndName () const |
Builds a string from an Object's category and name to allow the user to identify an Object's type. More... | |
void | EnsureReadyState (bool IsAutomaticStartup) |
Ensures that this Object instance is ready by possibly starting its worker thread or by opening connections to hardware devices. More... | |
void | CheckLinkedObjectStates () const |
Checks whether Object instances this instance uses are in a ready state. Override CheckLinkedObjectStatesChild() to implement this behavior. More... | |
void | Reset () |
Resets this Object instance (including all its derived classes) by calling ResetImpl() . A reset implies that the derived classes reload all their parameters from Params and that all LinkedObjectWrapper instances owned by this Object instance become invalidated. More... | |
void | BlockIfUnused (const std::chrono::milliseconds Timeout=Util::ILockable::DefaultTimeout) |
Blocks this Object instance setting Object::IsBlocked to true. Refer to Object::IsBlocked for the consequences. More... | |
ParamsConstTypeSyncPtrType | GetParams (const std::chrono::milliseconds Timeout=GetParamsTimeoutDefault) const |
Locks the mutex of the parameter class instance Params assigned to this Object instance and returns a pointer to the locked Params. More... | |
ParamsTypeSyncPtrType | GetParams (const std::chrono::milliseconds Timeout=GetParamsTimeoutDefault) |
Locks the mutex of the parameter class instance Params assigned to this Object instance and returns a pointer to the locked Params. More... | |
auto | GetObjectName (const std::chrono::milliseconds Timeout=GetParamsTimeoutDefault) const |
Returns the name of this Object instance. More... | |
bool | IsSharedUsageEnabled (const std::chrono::milliseconds Timeout=GetParamsTimeoutDefault) const |
Returns whether shared usage has been enabled for this Object instance. Refer to ParamsBase::UsageType. More... | |
void | SetWarning (std::string Description, int ErrorCode) const |
Setter for Object::Warning. Sets the warning by a description and an error code. More... | |
void | SetWarning (const Util::Exception &e) const |
Setter for Object::Warning. Sets the warning by retrieving the warning data from an exception e . More... | |
void | ClearWarning () const |
Resets Object::Warning. More... | |
auto | GetWarning () const |
Returns Object::Warning in a thread-safe way by copying its internal data. More... | |
std::exception_ptr | GetException (const std::chrono::milliseconds Timeout=Util::ILockable::DefaultTimeout) const |
Returns a pointer to the exception which has caused this Object instance to fail. More... | |
bool | IsReady () const |
Returns wheter this Object instance is ready (e.g. it is running or connected to a hardware device) and not blocked (refer to Object::IsBlocked). More... | |
auto | GetUseCount (const std::chrono::milliseconds Timeout=Util::ILockable::DefaultTimeout) const |
Counts the registered useres in a thread-safe way. More... | |
bool | IsUnused (const std::chrono::milliseconds Timeout=Util::ILockable::DefaultTimeout) const |
Returns whether this Object instance is used by other instances. More... | |
auto | GetUserIDs (const std::chrono::milliseconds Timeout=Util::ILockable::DefaultTimeout) const |
Returns a list of the IDs of the registered users in a thread-safe way. More... | |
auto | GetUserNamesString (const std::chrono::milliseconds Timeout=Util::ILockable::DefaultTimeout) const |
Builds a string describing which users are registered containing their object names, categories and type names in a thread-safe way. More... | |
virtual std::string | GetName () const =0 |
Returns the name of this Object type. More... | |
Protected Member Functions | |
template<typename SenderType , typename SignalType , typename ReceiverType , typename EventType > | |
void | Connect (SenderType *Sender, SignalType Signal, ReceiverType *Receiver, EventType Event) |
Uses Qt's connect mechanism to connect a QObject's signal to a DynExp module's event. By directly connecting slots to signals via QObject::connect() , the slot function runs in the user interface thread. In contrast, this function connects a signal to a lambda function, which itself enqueues an event in the module's event queue. The event runs in the module thread. Arguments passed from the signal to the lambda function are forwarded to the event. More... | |
template<typename WidgetType > | |
WidgetType * | GetWidget () const |
Getter for Widget. More... | |
Protected Member Functions inherited from DynExp::RunnableObject | |
void | Init () |
Initializes member variables in case of a reset. More... | |
std::promise< void > | MakeThreadExitedPromise () |
Helper function to be used by overridden RunChild() functions in derived classes to (re)initialize the ThreadExitedSignal future and to provide the derived class a promise to signal the RunnableObject instance that its thread has terminated. More... | |
void | StoreThread (std::thread &&Thread) noexcept |
Stores a thread constructed by a derived class overriding RunChild() in Thread taking ownership of the thread. Only call this function within RunChild()! More... | |
bool | IsCallFromRunnableThread () const |
Checks whether Thread's id matches the id of the calling thread. This is thread-safe if the function is called by the RunnableObject instance's thread since Terminate() joins the threads before changing the Thread member. It is also thread-safe if the function is called by the thread owning the the RunnableObject instance since Run() and Terminate() can only be called by this thread. Only Run() and Terminate() (indirectly) modify Thread . More... | |
void | EnsureCallFromRunnableThread () const |
Asserts that the call to this function is performed from the RunnableObject instance's thread by calling IsCallFromRunnableThread(). More... | |
void | SetReasonWhyPaused (std::string Description) |
Sets the reason why this RunnableObject instance has been paused. More... | |
void | SetReasonWhyPaused (const Util::Exception &e) |
Sets the reason why this RunnableObject instance has been paused. More... | |
void | ClearReasonWhyPaused () |
Removes the reason why this RunnableObject instance has been paused (since it is resumed). More... | |
Protected Member Functions inherited from Util::INonCopyable | |
constexpr | INonCopyable ()=default |
~INonCopyable ()=default | |
Protected Member Functions inherited from DynExp::Object | |
Object (const std::thread::id OwnerThreadID, ParamsBasePtrType &&Params) | |
Constructs an Object instance. More... | |
virtual | ~Object ()=0 |
void | EnsureCallFromOwningThread () const |
Asserts that the call to this function is performed from the thread which constructed this Object instance (the thread with the id stored in Object::OwnerThreadID). More... | |
ParamsTypeSyncPtrType | GetNonConstParams (const std::chrono::milliseconds Timeout=GetParamsTimeoutDefault) const |
Allows derived Objects to edit their own parameters - even in const task functions (for instruments) or event functions (for modules). More... | |
auto | LockUserList (const std::chrono::milliseconds Timeout=Util::ILockable::DefaultTimeout) |
Locks the user list for thread-safe manipulation. More... | |
void | DeregisterAllUnsafe () |
Deregisters all users and notifies them that they need to check the states of their used linked objects. More... | |
auto | GetUseCountUnsafe () |
auto | GetUserNamesStringUnsafe () const |
bool | IsUnusedUnsafe () |
Returns whether this Object instance is used by other instances (not thread-safe). More... | |
Private Member Functions | |
virtual void | RestoreWindowStatesFromParamsChild () override |
RestoreWindowStatesFromParams() only calls RestoreWindowStatesFromParamsChild() . Override RestoreWindowStatesFromParamsChild() to restore the styles of possibly owned windows according to the style saved in the module's parameters. More... | |
virtual void | UpdateParamsFromWindowStatesChild () override |
UpdateParamsFromWindowStates() only calls UpdateParamsFromWindowStatesChild() . Override UpdateParamsFromWindowStatesChild() to store the styles of possibly owned windows in the module's parameters. More... | |
void | SetWidgetProperties (QWidget *const WindowWidget) const |
Used by InitUI() to set the widget properties (such as title, icon, size constraints) of MdiSubWindow and DockWidget. More... | |
void | ResetImpl (dispatch_tag< ModuleBase >) override final |
Refer to DynExp::Object::Reset(). Using tag dispatch mechanism to ensure that ResetImpl() of every derived class gets called - starting from DynExp::Object, descending the inheritance hierarchy. More... | |
virtual void | ResetImpl (dispatch_tag< QModuleBase >)=0 |
Refer to DynExp::Object::Reset(). Using tag dispatch mechanism to ensure that ResetImpl() of every derived class gets called - starting from DynExp::Object, descending the inheritance hierarchy. More... | |
Override | |
Override by derived classes. | |
virtual std::unique_ptr< QModuleWidget > | MakeUIWidget ()=0 |
Used by InitUI() as a factory function for the module's user interface widget. Create the widget here using std::make_unique and then use Connect() to connect Qt signals to the module's event functions. More... | |
virtual void | UpdateUIChild (const ModuleBase::ModuleDataGetterType &ModuleDataGetter) |
Use this function to update the module's user interface widget according to the module data obtained from ModuleDataGetter . This function is called periodically from DynExp's main user interface thread. Do not access the module's widget anywhere else! More... | |
Private Attributes | |
QModuleWidget * | Widget |
User interface widget belonging to the module. More... | |
std::unique_ptr< QMdiSubWindow > | MdiSubWindow |
Frame for Widget when the module window is docked to MdiArea. More... | |
std::unique_ptr< QModuleDockWidget > | DockWidget |
Frame for Widget when the module window is undocked from MdiArea. More... | |
std::unique_ptr< QAction > | ModuleWindowFocusAction |
Qt action to push module window into focus. When triggered, QModuleWidget::OnFocusWindow() in invoked. More... | |
QMdiArea * | MdiArea |
Pointer to DynExpManager's QMdiArea. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from DynExp::ModuleBase | |
constexpr static auto | Category () noexcept |
Every derived class has to redefine this function. More... | |
Static Public Member Functions inherited from DynExp::Object | |
static std::string | CategoryAndNameToStr (const std::string &Category, const std::string &Name) |
Builds a string from an Object's category and name to allow the user to identify an Object's type. More... | |
Public Attributes inherited from DynExp::ModuleBase | |
ModuleThreadOnlyType | ModuleThreadOnly |
Allow exclusive access to some of ModuleBase's private methods to the module thread ModuleThreadMain() . More... | |
EventListenersOnlyType | EventListenersOnly |
Allow exclusive access to some of ModuleBase's private methods to any TypedEventListeners class. More... | |
Public Attributes inherited from DynExp::RunnableObject | |
RunnableInstanceOnlyType | RunnableInstanceOnly |
Allow exclusive access to some of RunnableObject's private methods to class RunnableInstance . More... | |
Public Attributes inherited from DynExp::Object | |
LinkedObjectWrapperOnlyType | LinkedObjectWrapperOnly |
Allow exclusive access to some of Object's private methods to any LinkedObjectWrapper<T>. More... | |
Static Public Attributes inherited from DynExp::ModuleBase | |
static constexpr auto | GetModuleDataTimeoutDefault = std::chrono::milliseconds(1000) |
Determines the default timeout for GetModuleData() to lock the mutex synchronizing the module's data ModuleData. More... | |
Static Public Attributes inherited from DynExp::RunnableObject | |
static constexpr auto | ShortTimeoutDefault = std::chrono::milliseconds(50) |
Default timeout e.g. used as a default for calls to InstrumentBase::GetInstrumentData or ModuleBase::GetModuleData. More... | |
static constexpr auto | TerminateTimeoutDefault = std::chrono::milliseconds(3000) |
Default timeout used as a default for calls to RunnableObject::Terminate. More... | |
Static Public Attributes inherited from DynExp::Object | |
static constexpr std::chrono::milliseconds | GetParamsTimeoutDefault = std::chrono::milliseconds(100) |
Default timeout used by Object::GetParams() to lock the mutex of the parameter instance assigned to this Object instance. More... | |
Static Protected Member Functions inherited from DynExp::ModuleBase | |
static auto | GetExceptionUnsafe (const ModuleDataTypeSyncPtrConstType &ModuleDataPtr) |
Getter for ModuleDataBase::ModuleException assuming that the module data has already been locked. More... | |
Base class for modules with a Qt-based user interface. Derive from this class to implement modules with a user interface.
Type of the data class belonging to this ModuleBase
type. Declare this alias in every derived class with the respective data class accompanying the derived ModuleBase
.
DynExp::QModuleBase::QModuleBase | ( | const std::thread::id | OwnerThreadID, |
DynExp::ParamsBasePtrType && | Params | ||
) |
Constructs a QModuleBase
instance.
OwnerThreadID | Thread id of the thread owning the Object instance to be constructed. |
Params | Parameter class instance to be assigned to the Object instance to be constructed. |
Util::InvalidArgException | is thrown if OwnerThreadID is an invalid thread id or if Params is nullptr. |
Util::InvalidArgException | is thrown if ModuleParamsBase::ModuleData of Params is nullptr. |
Definition at line 557 of file Module.cpp.
|
pure virtual |
Definition at line 562 of file Module.cpp.
|
protected |
Uses Qt's connect mechanism to connect a QObject's
signal to a DynExp module's event. By directly connecting slots to signals via QObject::connect()
, the slot function runs in the user interface thread. In contrast, this function connects a signal to a lambda function, which itself enqueues an event in the module's event queue. The event runs in the module thread. Arguments passed from the signal to the lambda function are forwarded to the event.
SenderType | Class derived from QObject . |
SignalType | Type of the function pointer pointing to the signal to be connected. |
ReceiverType | Class derived from ModuleBase . |
EventType | Type of the function pointer pointing to the event to which the signal is connected. It is expected that EventType points to a const member function of class ReceiverType returning void. The member function is expected to accept a pointer to the receiver's ModuleInstance as a first argument. Subsequent arguments must be compatible with the arguments of SignalType . They must not be references or pointers since Event is invoked later when references or pointers might have become invalid. Use pass-by-value. |
Sender | Pointer to a QObject instance whose signal to connect to an event. |
Signal | QObject's signal to connect to the event. |
Receiver | Pointer to a module to receive the event when the QObject's signal is emitted. |
Event | Event function to which the QObject's signal is connected. |
Util::InvalidArgException | is thrown if either Sender or Receiver are nullptr or if QObject::connect() fails. |
void DynExp::QModuleBase::DisableUI | ( | ) |
Disables all user interface controls in Widget. Does nothing if Widget is nullptr
.
Definition at line 612 of file Module.cpp.
|
noexcept |
Toggles the docking state of Widget. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr
.
Definition at line 665 of file Module.cpp.
|
noexcept |
Docks Widget to MdiArea. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr
.
Definition at line 640 of file Module.cpp.
|
noexcept |
Focuses/activates DynExp's main window calling DynExpManager::FocusMainWindow(). Does nothing if Widget is nullptr
.
Definition at line 695 of file Module.cpp.
|
protected |
Getter for Widget.
WidgetType | Type derived from QModuleWidget to cast Widget to. |
dynamic_cast
to WidgetType
. Util::InvalidStateException | is thrown if Widget is nullptr since it has not been created yet. |
|
inlinefinaloverridevirtualnoexcept |
Determines whether this module possesses a user interface (UI) which is shown in a window dedicated to the module.
Reimplemented from DynExp::ModuleBase.
void DynExp::QModuleBase::HideUI | ( | ) |
Removes MdiSubWindow, DockWidget, and ModuleWindowFocusAction setting them to nullptr
.
Definition at line 604 of file Module.cpp.
QAction & DynExp::QModuleBase::InitUI | ( | DynExpManager & | DynExpMgr, |
QMdiArea *const | MdiArea | ||
) |
Sets up the module's user interface widgets and window frames. Called by the main user interface thread in DynExpManager::RegisterModuleUI().
DynExpMgr | Pointer to DynExp's main window |
MdiArea | Pointer to DynExpManager's QMdiArea. |
Util::InvalidArgException | is thrown if MdiArea is nullptr . |
Util::InvalidDataException | is thrown if MakeUIWidget() returns nullptr . |
Definition at line 566 of file Module.cpp.
bool DynExp::QModuleBase::IsActiveWindow | ( | ) |
Checks whether Widget is docked and active.
Util::InvalidStateException | is thrown if either Widget or MdiSubWindow are nullptr since the user interface has not been created yet. |
Definition at line 720 of file Module.cpp.
|
noexcept |
Checks whether Widget is docked.
nullptr
since being docked is the default for a module's user interface window. Definition at line 711 of file Module.cpp.
|
privatepure virtual |
Used by InitUI()
as a factory function for the module's user interface widget. Create the widget here using std::make_unique
and then use Connect()
to connect Qt signals to the module's event functions.
Implemented in DynExpModule::Widefield::WidefieldMicroscope, DynExpModule::Trajectory1D, DynExpModule::Stage1D, DynExpModule::SpectrumViewer::SpectrumViewer, DynExpModule::SignalPlotter, DynExpModule::SignalDesigner, DynExpModule::OutputPortWriter, DynExpModule::ODMR::ODMR, DynExpModule::LockinAmplifierControl, DynExpModule::InputPortReader, and DynExpModule::ImageViewer::ImageViewer.
|
finaloverrideprivatevirtual |
Refer to DynExp::Object::Reset(). Using tag dispatch mechanism to ensure that ResetImpl()
of every derived class gets called - starting from DynExp::Object, descending the inheritance hierarchy.
Implements DynExp::ModuleBase.
Definition at line 768 of file Module.cpp.
|
privatepure virtual |
Refer to DynExp::Object::Reset(). Using tag dispatch mechanism to ensure that ResetImpl()
of every derived class gets called - starting from DynExp::Object, descending the inheritance hierarchy.
|
overrideprivatevirtual |
RestoreWindowStatesFromParams()
only calls RestoreWindowStatesFromParamsChild()
. Override RestoreWindowStatesFromParamsChild()
to restore the styles of possibly owned windows according to the style saved in the module's parameters.
Reimplemented from DynExp::ModuleBase.
Definition at line 731 of file Module.cpp.
|
noexcept |
Sends a Qt key press event to DynExp's main window calling DynExpManager::PostKeyPressEvent(). Does nothing if Widget is nullptr
.
Event | Qt event to send. Refer to Qt documentation. |
Definition at line 703 of file Module.cpp.
|
noexcept |
Focuses/activates Widget and moves it on top of other windows if possible. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr
.
Definition at line 678 of file Module.cpp.
|
private |
Used by InitUI()
to set the widget properties (such as title, icon, size constraints) of MdiSubWindow and DockWidget.
WindowWidget | Pointer to a Qt window widget whose properties to set |
Util::InvalidArgException | is thrown if WindowWidget is nullptr . |
Definition at line 755 of file Module.cpp.
|
noexcept |
Undocks Widget from MdiArea. Does nothing if any of Widget, MdiArea, MdiSubWindow, or DockWidget are nullptr
.
Definition at line 652 of file Module.cpp.
void DynExp::QModuleBase::UpdateModuleWindowFocusAction | ( | ) |
Updates the icon assigned to ModuleWindowFocusAction depending on whether Widget is docked to or undocked from MdiArea. Called by the main user interface thread in DynExpManager::UpdateModuleWindowsActionIcons().
Util::InvalidStateException | is thrown if any of Widget, MdiSubWindow, or ModuleWindowFocusAction are nullptr since the user interface has not been created yet. |
Definition at line 629 of file Module.cpp.
|
overrideprivatevirtual |
UpdateParamsFromWindowStates()
only calls UpdateParamsFromWindowStatesChild()
. Override UpdateParamsFromWindowStatesChild()
to store the styles of possibly owned windows in the module's parameters.
Reimplemented from DynExp::ModuleBase.
Definition at line 744 of file Module.cpp.
void DynExp::QModuleBase::UpdateUI | ( | ) |
Enables the user interface controls in Widget. Does nothing if Widget is nullptr
. Calls UpdateUIChild()
.
Definition at line 620 of file Module.cpp.
|
inlineprivatevirtual |
Use this function to update the module's user interface widget according to the module data obtained from ModuleDataGetter
. This function is called periodically from DynExp's main user interface thread. Do not access the module's widget anywhere else!
ModuleDataGetter | Getter to lock and obtain the module data |
|
private |
|
private |
Pointer to DynExpManager's
QMdiArea.
|
private |
|
private |
Qt action to push module window into focus. When triggered, QModuleWidget::OnFocusWindow() in invoked.
|
private |