MeshLib C++ Docs
Loading...
Searching...
No Matches
MRRibbonRegisterItem.h
Go to the documentation of this file.
1#pragma once
2
3#include "exports.h"
4#include "MRRibbonMenuItem.h"
5
6namespace MR
7{
8
10{
11public:
13 MRVIEWER_API RibbonMenuItemAdder( std::shared_ptr<RibbonMenuItem> item );
14
16 MRVIEWER_API ~RibbonMenuItemAdder();
17
18private:
19 std::shared_ptr<RibbonMenuItem> item_;
20};
21
22template<typename T>
24{
25public:
26 static_assert( std::is_base_of_v<RibbonMenuItem, T> );
27
28 template<typename... Args>
29 RibbonMenuItemAdderT( Args&&... args ) : RibbonMenuItemAdder( std::make_shared<T>( std::forward<Args>( args )... ) )
30 {
31 }
32};
33
35#define MR_REGISTER_RIBBON_ITEM(pluginType) \
36 static MR::RibbonMenuItemAdderT<pluginType> ribbonMenuItemAdder##pluginType##_;
37
38} //namespace MR
Definition MRRibbonRegisterItem.h:24
RibbonMenuItemAdderT(Args &&... args)
Definition MRRibbonRegisterItem.h:29
Definition MRRibbonRegisterItem.h:10
MRVIEWER_API RibbonMenuItemAdder(std::shared_ptr< RibbonMenuItem > item)
calls RibbonSchemaHolder::addItem( item_ = item );
MRVIEWER_API ~RibbonMenuItemAdder()
calls RibbonSchemaHolder::delItem( item_ );