MeshLib
 
Loading...
Searching...
No Matches
MR::SceneObjectsListDrawer Class Reference

class for drawing a list of scene objects (and handling interaction with it) More...

#include <MRSceneObjectsListDrawer.h>

+ Inheritance diagram for MR::SceneObjectsListDrawer:

Public Member Functions

virtual ~SceneObjectsListDrawer ()=default
 
virtual MRVIEWER_API void draw (float height, float scaling)
 
void setShowNewSelectedObjects (bool show)
 set flag of the object visibility activation after selection
 
bool getShowNewSelectedObjects ()
 get flag of the object visibility activation after selection
 
void setDeselectNewHiddenObjects (bool deselect)
 set flag of deselect object after hidden
 
bool getDeselectNewHiddenObjects ()
 get flag of deselect object after hidden
 
MRVIEWER_API void changeSelection (bool isDown, bool isShift)
 
MRVIEWER_API void changeVisible (bool isDown)
 
MRVIEWER_API void selectAllObjects ()
 
MRVIEWER_API void setLeavesVisibility (bool visible)
 
MRVIEWER_API void setObjectTreeState (const Object *obj, bool open)
 set object collapse state (hiding children)
 
MRVIEWER_API void allowSceneReorder (bool allow)
 set possibility change object order
 
MRVIEWER_API void setNextFrameFixScroll ()
 helper method for fix scroll position after change available height
 

Protected Types

typedef int ImGuiTreeNodeFlags
 

Protected Member Functions

virtual MRVIEWER_API void drawCustomObjectPrefixInScene_ (const Object &, bool)
 
virtual MRVIEWER_API void drawSceneContextMenu_ (const std::vector< std::shared_ptr< Object > > &, const std::string &)
 
virtual MRVIEWER_API float drawCustomTreeObjectProperties_ (Object &obj, bool onlyCalcHeight)
 
virtual MRVIEWER_API bool collapsingHeader_ (const std::string &uniqueName, ImGuiTreeNodeFlags flags)
 override this to customize CollapsingHeader draw
 
virtual MRVIEWER_API std::string objectLineStrId_ (const Object &object, const std::string &uniqueStr)
 
virtual MRVIEWER_API bool drawObject_ (Object &object, const std::string &uniqueStr, int depth)
 override this to customize whole object line
 
virtual MRVIEWER_API bool drawSkippedObject_ (Object &object, const std::string &uniqueStr, int depth)
 draw dummy container for skipped object
 
MRVIEWER_API bool drawObjectCollapsingHeader_ (Object &object, const std::string &uniqueStr, bool hasRealChildren)
 function that draws collapsing header and process click on it
 
MRVIEWER_API void processItemClick_ (Object &object, const std::vector< std::shared_ptr< Object > > &selected)
 function that do click logic on object line (select/deselect/rename/open context)
 
MRVIEWER_API void makeDragDropSource_ (const std::vector< std::shared_ptr< Object > > &payload)
 payload object will be moved
 
MRVIEWER_API bool needDragDropTarget_ ()
 checking the need to draw a target
 
MRVIEWER_API void makeDragDropTarget_ (Object &target, bool before, bool betweenLine, const std::string &uniqueStr)
 
MRVIEWER_API void drawObjectVisibilityCheckbox_ (Object &object, const std::string &uniqueStr)
 

Protected Attributes

bool showNewSelectedObjects_ = true
 
bool deselectNewHiddenObjects_ = false
 
float menuScaling_ = 1.f
 
std::unordered_map< const Object *, bool > sceneOpenCommands_
 

Detailed Description

class for drawing a list of scene objects (and handling interaction with it)

Member Typedef Documentation

◆ ImGuiTreeNodeFlags

Constructor & Destructor Documentation

◆ ~SceneObjectsListDrawer()

virtual MR::SceneObjectsListDrawer::~SceneObjectsListDrawer ( )
virtualdefault

Member Function Documentation

◆ allowSceneReorder()

MRVIEWER_API void MR::SceneObjectsListDrawer::allowSceneReorder ( bool allow)

set possibility change object order

◆ changeSelection()

MRVIEWER_API void MR::SceneObjectsListDrawer::changeSelection ( bool isDown,
bool isShift )

change selection after pressed arrow up / down isDown - true if pressed arrow down, false - arrow up isShift - shift button holded

◆ changeVisible()

MRVIEWER_API void MR::SceneObjectsListDrawer::changeVisible ( bool isDown)

change visible (and selection) after pressed arrow up / down isDown - true if pressed F4, false - F3

◆ collapsingHeader_()

virtual MRVIEWER_API bool MR::SceneObjectsListDrawer::collapsingHeader_ ( const std::string & uniqueName,
ImGuiTreeNodeFlags flags )
protectedvirtual

override this to customize CollapsingHeader draw

Reimplemented in MR::RibbonSceneObjectsListDrawer.

◆ draw()

virtual MRVIEWER_API void MR::SceneObjectsListDrawer::draw ( float height,
float scaling )
virtual

Main method for drawing all \detail Not creat window. Use in window block (between ImGui::Begin and ImGui::End)

Reimplemented in MR::RibbonSceneObjectsListDrawer.

◆ drawCustomObjectPrefixInScene_()

virtual MRVIEWER_API void MR::SceneObjectsListDrawer::drawCustomObjectPrefixInScene_ ( const Object & ,
bool  )
inlineprotectedvirtual

override this to customize prefix for objects in scene \detail height should be less or equal ImGui::GetFrameHeight() method should save ImGui::CursorPosY

Reimplemented in MR::RibbonSceneObjectsListDrawer.

◆ drawCustomTreeObjectProperties_()

virtual MRVIEWER_API float MR::SceneObjectsListDrawer::drawCustomTreeObjectProperties_ ( Object & obj,
bool onlyCalcHeight )
protectedvirtual

override this to have custom UI in "Scene" window (under opened(expanded) object line) \detail if onlyHeight is true, should return drawing height without rendering return 0.f if nothing drawing

◆ drawObject_()

virtual MRVIEWER_API bool MR::SceneObjectsListDrawer::drawObject_ ( Object & object,
const std::string & uniqueStr,
int depth )
protectedvirtual

override this to customize whole object line

Reimplemented in MR::RibbonSceneObjectsListDrawer.

◆ drawObjectCollapsingHeader_()

MRVIEWER_API bool MR::SceneObjectsListDrawer::drawObjectCollapsingHeader_ ( Object & object,
const std::string & uniqueStr,
bool hasRealChildren )
protected

function that draws collapsing header and process click on it

◆ drawObjectVisibilityCheckbox_()

MRVIEWER_API void MR::SceneObjectsListDrawer::drawObjectVisibilityCheckbox_ ( Object & object,
const std::string & uniqueStr )
protected

◆ drawSceneContextMenu_()

virtual MRVIEWER_API void MR::SceneObjectsListDrawer::drawSceneContextMenu_ ( const std::vector< std::shared_ptr< Object > > & ,
const std::string &  )
inlineprotectedvirtual

override this add custom context menu for selected objects uniqueStr need to identify who call context menu

Reimplemented in MR::RibbonSceneObjectsListDrawer.

◆ drawSkippedObject_()

virtual MRVIEWER_API bool MR::SceneObjectsListDrawer::drawSkippedObject_ ( Object & object,
const std::string & uniqueStr,
int depth )
protectedvirtual

draw dummy container for skipped object

Reimplemented in MR::RibbonSceneObjectsListDrawer.

◆ getDeselectNewHiddenObjects()

bool MR::SceneObjectsListDrawer::getDeselectNewHiddenObjects ( )
inline

get flag of deselect object after hidden

◆ getShowNewSelectedObjects()

bool MR::SceneObjectsListDrawer::getShowNewSelectedObjects ( )
inline

get flag of the object visibility activation after selection

◆ makeDragDropSource_()

MRVIEWER_API void MR::SceneObjectsListDrawer::makeDragDropSource_ ( const std::vector< std::shared_ptr< Object > > & payload)
protected

payload object will be moved

◆ makeDragDropTarget_()

MRVIEWER_API void MR::SceneObjectsListDrawer::makeDragDropTarget_ ( Object & target,
bool before,
bool betweenLine,
const std::string & uniqueStr )
protected

"target" and "before" are "to" and "before" of SceneReorder struct betweenLine - if true requires to draw line (between two objects in tree, for ImGui to have target) counter - unique number of object in tree (needed for ImGui to differ new lines)

◆ needDragDropTarget_()

MRVIEWER_API bool MR::SceneObjectsListDrawer::needDragDropTarget_ ( )
protected

checking the need to draw a target

◆ objectLineStrId_()

virtual MRVIEWER_API std::string MR::SceneObjectsListDrawer::objectLineStrId_ ( const Object & object,
const std::string & uniqueStr )
protectedvirtual

◆ processItemClick_()

MRVIEWER_API void MR::SceneObjectsListDrawer::processItemClick_ ( Object & object,
const std::vector< std::shared_ptr< Object > > & selected )
protected

function that do click logic on object line (select/deselect/rename/open context)

◆ selectAllObjects()

MRVIEWER_API void MR::SceneObjectsListDrawer::selectAllObjects ( )

◆ setDeselectNewHiddenObjects()

void MR::SceneObjectsListDrawer::setDeselectNewHiddenObjects ( bool deselect)
inline

set flag of deselect object after hidden

◆ setLeavesVisibility()

MRVIEWER_API void MR::SceneObjectsListDrawer::setLeavesVisibility ( bool visible)

◆ setNextFrameFixScroll()

MRVIEWER_API void MR::SceneObjectsListDrawer::setNextFrameFixScroll ( )
inline

helper method for fix scroll position after change available height

◆ setObjectTreeState()

MRVIEWER_API void MR::SceneObjectsListDrawer::setObjectTreeState ( const Object * obj,
bool open )

set object collapse state (hiding children)

◆ setShowNewSelectedObjects()

void MR::SceneObjectsListDrawer::setShowNewSelectedObjects ( bool show)
inline

set flag of the object visibility activation after selection

Member Data Documentation

◆ deselectNewHiddenObjects_

bool MR::SceneObjectsListDrawer::deselectNewHiddenObjects_ = false
protected

◆ menuScaling_

float MR::SceneObjectsListDrawer::menuScaling_ = 1.f
protected

◆ sceneOpenCommands_

std::unordered_map<const Object*, bool> MR::SceneObjectsListDrawer::sceneOpenCommands_
protected

◆ showNewSelectedObjects_

bool MR::SceneObjectsListDrawer::showNewSelectedObjects_ = true
protected

The documentation for this class was generated from the following file: