MeshLib C++ Docs
Loading...
Searching...
No Matches
MRStatePlugin.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRViewerPlugin.h"
4#include "MRSceneStateCheck.h"
8#include "MRRibbonMenuItem.h"
9#include "ImGuiHelpers.h"
10#include <filesystem>
11
12struct ImGuiContext;
13
14namespace MR
15{
18
58
59
73
74class Object;
75
76class MRVIEWER_CLASS StateBasePlugin :
77 public ViewerPlugin,
78 public RibbonMenuItem,
79 public virtual IPluginUpdate,
80 public virtual ISceneSelectionChange
81{
82public:
83 MRVIEWER_API StateBasePlugin( std::string name, StatePluginTabs tab = StatePluginTabs::Other );
84 virtual ~StateBasePlugin() = default;
85
86 MRVIEWER_API virtual void drawDialog( ImGuiContext* ctx );
87
88 virtual bool action() override { return enable( !isEnabled() ); }
89
90 virtual bool isActive() const override { return isEnabled(); };
91
92 virtual bool blocking() const override { return true; }
93
94 MRVIEWER_API virtual void shutdown() override;
95
96 MRVIEWER_API bool isEnabled() const;
97 MRVIEWER_API virtual bool enable( bool on );
98
99 MRVIEWER_API virtual bool dialogIsOpen() const;
100
101 MRVIEWER_API static const char* UINameSuffix();
102
103 virtual const std::string& uiName() const override { return plugin_name; }
104
106 MRVIEWER_API void setUIName( std::string name );
107
108 MRVIEWER_API StatePluginTabs getTab() const;
109
110 MRVIEWER_API static const char* getTabName( StatePluginTabs tab );
111
112 MRVIEWER_API virtual std::string getTooltip() const;
113
115 virtual std::string sortString() const { return name(); }
116
118 MRVIEWER_API bool checkStringMask( const std::string& mask ) const;
119
120 std::string plugin_name;
121
122protected:
126
127 MRVIEWER_API virtual bool onEnable_();
128 MRVIEWER_API virtual bool onDisable_();
129
130 bool isEnabled_{false};
131 bool dialogIsOpen_{false};
132 bool dialogIsCollapsed_{ false };
133
135};
136
137template<typename ...Connectables>
138class StateListenerPlugin : public StateBasePlugin, public MultiListener<Connectables...>
139{
140public:
142 virtual ~StateListenerPlugin() = default;
143
144 using PluginParent = StateListenerPlugin<Connectables...>;
145 using MultiListenerBase = MultiListener<Connectables...>;
146
147 virtual bool enable( bool on ) override final
148 {
149 if ( StateBasePlugin::enable( on ) )
150 {
151 if ( on )
153 MultiListenerBase::connect( viewer, 10, boost::signals2::at_front );
154 else
156 return true;
157 }
158 return false;
159 }
160};
161
162}
Definition MRDistanceMap.h:24
Interface for automatically update StatePlugins internal data.
Definition MRStatePluginUpdate.h:15
Interface for processing scene state change in RibbonItems.
Definition MRSceneSelectionChange.h:15
Definition MRStatePlugin.h:139
StateBasePlugin(std::string name, StatePluginTabs tab=StatePluginTabs::Other)
Definition MRViewerPlugin.h:30
void setUIName(std::string name)
set plugin name that will be used for dialog in ImGuiBeginWindow_
virtual bool enable(bool on)
static const char * UINameSuffix()
bool dialogIsOpen_
Definition MRStatePlugin.h:131
StateListenerPlugin< Connectables... > PluginParent
Definition MRStatePlugin.h:144
virtual bool isActive() const override
for state items returns true if activated
Definition MRStatePlugin.h:90
bool isEnabled_
Definition MRStatePlugin.h:130
bool isEnabled() const
virtual bool action() override
returns true if state of item changed
Definition MRStatePlugin.h:88
std::string plugin_name
Definition MRStatePlugin.h:120
virtual void drawDialog(ImGuiContext *ctx)
RibbonMenuItem(std::string name)
virtual bool ImGuiBeginWindow_(ImGui::CustomStatePluginWindowParameters params)
virtual bool dialogIsOpen() const
bool dialogIsCollapsed_
Definition MRStatePlugin.h:132
virtual const std::string & uiName() const override
Definition MRStatePlugin.h:103
bool checkStringMask(const std::string &mask) const
check if search mask satisfies for this plugin
virtual std::string getTooltip() const
MultiListener< Connectables... > MultiListenerBase
Definition MRStatePlugin.h:145
virtual bool enable(bool on) override final
Definition MRStatePlugin.h:147
virtual void shutdown() override
This function is called before shutdown.
virtual ~StateListenerPlugin()=default
StateBasePlugin(std::string name, StatePluginTabs tab=StatePluginTabs::Other)
StatePluginTabs
Definition MRStatePlugin.h:61
static const char * getTabName(StatePluginTabs tab)
virtual bool onDisable_()
virtual ~StateBasePlugin()=default
virtual bool onEnable_()
const std::string & name() const
Definition MRRibbonMenuItem.h:38
StatePluginTabs tab_
Definition MRStatePlugin.h:134
StatePluginTabs getTab() const
virtual void disconnect()
Definition MRViewerEventsListener.h:45
Viewer * viewer
Pointer to the main Viewer class.
Definition MRViewerPlugin.h:49
virtual std::string sortString() const
returns special string for sorting plugins in menu (plugin name by default)
Definition MRStatePlugin.h:115
virtual bool blocking() const override
true if this item is blocking (only one blocking item can be active at once)
Definition MRStatePlugin.h:92
virtual void connect(Viewer *viewer, int group=0, boost::signals2::connect_position pos=boost::signals2::connect_position::at_back)
Definition MRViewerEventsListener.h:38
@ Count
Definition MRPdf.h:42
@ Test
Definition MRStatePlugin.h:69
@ Voxels
Definition MRStatePlugin.h:67
@ Other
Definition MRStatePlugin.h:70
@ Analysis
Definition MRStatePlugin.h:68
@ Basic
Definition MRStatePlugin.h:62
@ Selection
Definition MRShortcutManager.h:37
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Structure that contains parameters for State plugin window with custom style.
Definition ImGuiHelpers.h:181
Definition MRMesh.h:23
Definition MRViewerEventsListener.h:32
Definition MRPointCloud.h:17