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