MeshLib
 
Loading...
Searching...
No Matches
MRRibbonSceneObjectsListDrawer.h
Go to the documentation of this file.
1#pragma once
2#include "MRMesh/MRMeshFwd.h"
4
5namespace MR
6{
7
8class RibbonMenu;
9
12{
13public:
14 MRVIEWER_API virtual void draw( float height, float scaling ) override;
15
16 MRVIEWER_API void initRibbonMenu( RibbonMenu* ribbonMenu );
17
19 void setCloseContextOnChange( bool deselect ) { closeContextOnChange_ = deselect; }
21 bool getCloseContextOnChange() { return closeContextOnChange_; }
22
23protected:
24 MRVIEWER_API virtual void drawCustomObjectPrefixInScene_( const Object& obj, bool opened ) override;
25 MRVIEWER_API virtual void drawSceneContextMenu_( const std::vector<std::shared_ptr<Object>>& selected, const std::string& uniqueStr ) override;
26 MRVIEWER_API virtual bool collapsingHeader_( const std::string& uniqueName, ImGuiTreeNodeFlags flags ) override;
27
28 MRVIEWER_API virtual std::string objectLineStrId_( const Object& object, const std::string& uniqueStr ) override;
29
30 MRVIEWER_API virtual bool drawObject_( Object& object, const std::string& uniqueStr, int depth ) override;
31 MRVIEWER_API virtual bool drawSkippedObject_( Object& object, const std::string& uniqueStr, int depth ) override;
32private:
33 // return icon (now it is symbol in icons font) based on typename
34 MRVIEWER_API virtual const char* getSceneItemIconByTypeName_( const std::string& typeName ) const;
35
36 bool drawTreeOpenedState_( Object& object, bool leaf, const std::string& uniqueStr, int depth );
37 void drawObjectLine_( Object& object, const std::string& uniqueStr, bool opened );
38 void drawEyeButton_( Object& object, const std::string& uniqueStr, bool frameHovered );
39
40 void drawHierarhyLine_( const Vector2f& startScreenPos, int depth, bool skipped );
41
42 struct LastDepthInfo
43 {
44 float screenPosY{ 0.0f };
45 int id{ 0 };
46 };
47 // depth -> pos Y of last element of this depth
48 std::vector<LastDepthInfo> lastDrawnSibling_;
49 int currentElementId_{ 0 };
50 RibbonMenu* ribbonMenu_ = nullptr;
51 bool closeContextOnChange_ = true;
52};
53
54}
named object in the data model
Definition MRObject.h:60
Definition MRRibbonMenu.h:32
class for drawing a list of scene objects in RibbonMenu style
Definition MRRibbonSceneObjectsListDrawer.h:12
virtual MRVIEWER_API void drawSceneContextMenu_(const std::vector< std::shared_ptr< Object > > &selected, const std::string &uniqueStr) override
virtual MRVIEWER_API void drawCustomObjectPrefixInScene_(const Object &obj, bool opened) override
MRVIEWER_API void initRibbonMenu(RibbonMenu *ribbonMenu)
bool getCloseContextOnChange()
get flag closing scene context menu on any change
Definition MRRibbonSceneObjectsListDrawer.h:21
void setCloseContextOnChange(bool deselect)
set closing scene context menu on any change
Definition MRRibbonSceneObjectsListDrawer.h:19
virtual MRVIEWER_API bool drawSkippedObject_(Object &object, const std::string &uniqueStr, int depth) override
draw dummy container for skipped object
virtual MRVIEWER_API bool drawObject_(Object &object, const std::string &uniqueStr, int depth) override
override this to customize whole object line
virtual MRVIEWER_API void draw(float height, float scaling) override
virtual MRVIEWER_API std::string objectLineStrId_(const Object &object, const std::string &uniqueStr) override
virtual MRVIEWER_API bool collapsingHeader_(const std::string &uniqueName, ImGuiTreeNodeFlags flags) override
override this to customize CollapsingHeader draw
class for drawing a list of scene objects (and handling interaction with it)
Definition MRSceneObjectsListDrawer.h:15
int ImGuiTreeNodeFlags
Definition MRSceneObjectsListDrawer.h:71
Definition MRCameraOrientationPlugin.h:8