25    struct CustomContextMenuCheckbox
 
   27        using Setter = std::function<void( std::shared_ptr<Object> 
object, 
ViewportId id, 
bool checked )>;
 
   28        using Getter = std::function<bool( std::shared_ptr<Object> 
object, 
ViewportId id )>;
 
   41    MRVIEWER_API 
static std::shared_ptr<RibbonMenu> 
instance();
 
   46        const std::string& name,
 
   47        CustomContextMenuCheckbox customContextMenuCheckbox );
 
   56    MRVIEWER_API 
virtual void load_font( 
int font_size = 13 ) 
override;
 
   80    Vector2i 
getSceneSize() { 
return Vector2i( 
int( sceneSize_.x ), 
int( sceneSize_.y ) ); };
 
   88    bool hasAnyActiveItem()
 const { 
return bool( activeBlockingItem_.item ) || !activeNonBlockingItems_.empty(); }
 
  119    MRVIEWER_API 
static void cloneTree( 
const std::vector<std::shared_ptr<Object>>& selectedObjects );
 
  147    MRVIEWER_API 
virtual void drawSmallButtonsSet_( 
const std::vector<std::string>& group, 
int setFrontIndex, 
int setLength,
 
  154        int numSmallText{ 0 };
 
 
  160    MRVIEWER_API 
virtual void setupItemsGroup_( 
const std::vector<std::string>& groupsInTab, 
const std::string& tabName, 
bool centerItems );
 
  161    MRVIEWER_API 
virtual void drawItemsGroup_( 
const std::string& tabName, 
const std::string& groupName,
 
  166    MRVIEWER_API 
virtual bool itemPressed_( 
const std::shared_ptr<RibbonMenuItem>& item, 
const std::string& requiremetnsHint = {} );
 
  169    MRVIEWER_API 
virtual std::string 
getRequirements_( 
const std::shared_ptr<RibbonMenuItem>& item ) 
const;
 
  174    MRVIEWER_API 
virtual void postResize_( 
int width, 
int height ) 
override;
 
  179        std::shared_ptr<RibbonMenuItem> 
item;
 
  181        bool dialogPositionFixed{ 
false };
 
 
  188    MRVIEWER_API 
virtual void drawTopPanel_( 
bool drawTabs = 
true, 
bool centerItems = 
false );
 
  254    void changeTab_( 
int newTab );
 
  256    void sortObjectsRecursive_( std::shared_ptr<Object> 
object );
 
  259    void drawHeaderPannel_();
 
  261    ImVec2 activeListPos_{ 0,0 };
 
  262    bool activeListPressed_{ 
false };
 
  264    void beginTopPanel_();
 
  266    void drawTopPanelOpened_( 
bool drawTabs, 
bool centerItems );
 
  268    std::string transformClipboardText_;
 
  270    int currentTopPanelHeight_ = 113;
 
  271    int topPanelOpenedHeight_ = 113;
 
  272    int topPanelHiddenHeight_ = 33;
 
  274    ImVec2 sceneSize_{ 310, 0 };
 
  275    float informationHeight_{ 0.f };
 
  276    float transformHeight_{ 0.f };
 
  278    RibbonMenuUIConfig menuUIConfig_;
 
  281    float blockingHighlightTimer_{ 0.0f };
 
  284    float tabPanelScroll_{ 0.0f };
 
  286    bool autoCloseBlockingPlugins_{ 
true };
 
  288    enum class CollapseState
 
  293    } collapseState_{ CollapseState::Pinned };
 
  295    float openedMaxSecs_{ 2.0f };
 
  296    float openedTimer_{ openedMaxSecs_ };
 
  298    int activeTabIndex_{ 0 };
 
  299    RibbonFontManager fontManager_;
 
  300    RibbonButtonDrawer buttonDrawer_;
 
  302    std::unordered_map<std::string, CustomContextMenuCheckbox> customCheckBox_;
 
  304    std::unique_ptr<Toolbar> toolbar_;
 
  305    RibbonNotifier notifier_;
 
  306#ifndef __EMSCRIPTEN__ 
  307    AsyncRequest asyncRequest_;