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#include <MRMesh/MRTimer.h>
6
7namespace MR
8{
9
11{
12public:
14 MRVIEWER_API RibbonMenuItemAdder( std::shared_ptr<RibbonMenuItem> item );
15
17 MRVIEWER_API ~RibbonMenuItemAdder();
18
19private:
20 std::shared_ptr<RibbonMenuItem> item_;
21};
22
23template<typename T>
25{
26public:
27 static_assert( std::is_base_of_v<RibbonMenuItem, T> );
28
29 template<typename... Args>
30 RibbonMenuItemAdderT( Args&&... args ) : RibbonMenuItemAdder( makeT_( std::forward<Args>( args )... ) )
31 {
32 }
33private:
34 template<typename... Args>
35 static auto makeT_( Args&&... args )
36 {
38 return std::make_shared<T>( std::forward<Args>( args )... );
39 }
40};
41
43#define MR_REGISTER_RIBBON_ITEM(pluginType) \
44 static MR::RibbonMenuItemAdderT<pluginType> ribbonMenuItemAdder##pluginType##_;
45
46} //namespace MR
#define MR_TIMER
Definition MRTimer.h:56
Definition MRRibbonRegisterItem.h:25
RibbonMenuItemAdderT(Args &&... args)
Definition MRRibbonRegisterItem.h:30
Definition MRRibbonRegisterItem.h:11
MRVIEWER_API RibbonMenuItemAdder(std::shared_ptr< RibbonMenuItem > item)
calls RibbonSchemaHolder::addItem( item_ = item );
MRVIEWER_API ~RibbonMenuItemAdder()
calls RibbonSchemaHolder::delItem( item_ );
Definition MRCameraOrientationPlugin.h:8