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
7
namespace
MR
8
{
9
10
class
RibbonMenuItemAdder
11
{
12
public
:
14
MRVIEWER_API
RibbonMenuItemAdder
( std::shared_ptr<RibbonMenuItem> item );
15
17
MRVIEWER_API
~RibbonMenuItemAdder
();
18
19
private
:
20
std::shared_ptr<RibbonMenuItem> item_;
21
};
22
23
template
<
typename
T>
24
class
RibbonMenuItemAdderT
:
RibbonMenuItemAdder
25
{
26
public
:
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
}
33
private
:
34
template
<
typename
... Args>
35
static
auto
makeT_( Args&&... args )
36
{
37
MR_TIMER
;
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
MRRibbonMenuItem.h
MRTimer.h
MR_TIMER
#define MR_TIMER
Definition
MRTimer.h:56
MR::RibbonMenuItemAdderT
Definition
MRRibbonRegisterItem.h:25
MR::RibbonMenuItemAdderT::RibbonMenuItemAdderT
RibbonMenuItemAdderT(Args &&... args)
Definition
MRRibbonRegisterItem.h:30
MR::RibbonMenuItemAdder
Definition
MRRibbonRegisterItem.h:11
MR::RibbonMenuItemAdder::RibbonMenuItemAdder
MRVIEWER_API RibbonMenuItemAdder(std::shared_ptr< RibbonMenuItem > item)
calls RibbonSchemaHolder::addItem( item_ = item );
MR::RibbonMenuItemAdder::~RibbonMenuItemAdder
MRVIEWER_API ~RibbonMenuItemAdder()
calls RibbonSchemaHolder::delItem( item_ );
MR
Definition
MRCameraOrientationPlugin.h:8
MeshLib
source
MRViewer
MRRibbonRegisterItem.h
Generated by
1.11.0