28 struct CustomContextMenuCheckbox
30 using Setter = std::function<void( std::shared_ptr<Object>
object,
ViewportId id,
bool checked )>;
44 MRVIEWER_API
static std::shared_ptr<RibbonMenu>
instance();
49 const std::string& name,
50 CustomContextMenuCheckbox customContextMenuCheckbox );
59 MRVIEWER_API
virtual void load_font(
int font_size = 13 )
override;
83 Vector2i
getSceneSize() {
return Vector2i(
int( sceneSize_.x ),
int( sceneSize_.y ) ); };
91 bool hasAnyActiveItem()
const {
return bool( activeBlockingItem_.item ) || !activeNonBlockingItems_.empty(); }
122 MRVIEWER_API
static void cloneTree(
const std::vector<std::shared_ptr<Object>>& selectedObjects );
150 MRVIEWER_API
virtual void drawSmallButtonsSet_(
const std::vector<std::string>& group,
int setFrontIndex,
int setLength,
157 int numSmallText{ 0 };
163 MRVIEWER_API
virtual void setupItemsGroup_(
const std::vector<std::string>& groupsInTab,
const std::string& tabName,
bool centerItems );
164 MRVIEWER_API
virtual void drawItemsGroup_(
const std::string& tabName,
const std::string& groupName,
169 MRVIEWER_API
virtual bool itemPressed_(
const std::shared_ptr<RibbonMenuItem>& item,
const std::string& requiremetnsHint = {} );
172 MRVIEWER_API
virtual std::string
getRequirements_(
const std::shared_ptr<RibbonMenuItem>& item )
const;
177 MRVIEWER_API
virtual void postResize_(
int width,
int height )
override;
182 std::shared_ptr<RibbonMenuItem>
item;
184 bool dialogPositionFixed{
false };
191 MRVIEWER_API
virtual void drawTopPanel_(
bool drawTabs =
true,
bool centerItems =
false );
257 void changeTab_(
int newTab );
259 void sortObjectsRecursive_( std::shared_ptr<Object>
object );
262 void drawHeaderPannel_();
264 ImVec2 activeListPos_{ 0,0 };
265 bool activeListPressed_{
false };
267 void beginTopPanel_();
269 void drawTopPanelOpened_(
bool drawTabs,
bool centerItems );
271 std::string transformClipboardText_;
273 int currentTopPanelHeight_ = 113;
274 int topPanelOpenedHeight_ = 113;
275 int topPanelHiddenHeight_ = 33;
277 ImVec2 sceneSize_{ 310, 0 };
278 float informationHeight_{ 0.f };
279 float transformHeight_{ 0.f };
281 RibbonMenuUIConfig menuUIConfig_;
284 float blockingHighlightTimer_{ 0.0f };
287 float tabPanelScroll_{ 0.0f };
289 bool autoCloseBlockingPlugins_{
true };
291 enum class CollapseState
296 } collapseState_{ CollapseState::Pinned };
298 float openedMaxSecs_{ 2.0f };
299 float openedTimer_{ openedMaxSecs_ };
301 int activeTabIndex_{ 0 };
302 RibbonFontManager fontManager_;
303 RibbonButtonDrawer buttonDrawer_;
305 std::unordered_map<std::string, CustomContextMenuCheckbox> customCheckBox_;
307 std::unique_ptr<Toolbar> toolbar_;
308 RibbonNotifier notifier_;
309#ifndef __EMSCRIPTEN__
310 AsyncRequest asyncRequest_;
Definition MRRibbonFontManager.h:15
class to hold and operate with notifications
Definition MRRibbonNotification.h:67
GLFW-based mesh viewer.
Definition MRViewer.h:69
Definition MRViewportId.h:16
MRVIEWER_API ~RibbonMenu()
bool hasAnyActiveItem() const
returns true if any plugin is now active
Definition MRRibbonMenu.h:91
virtual MRVIEWER_API void drawSceneListButtons_()
draw scene list buttons
int getTopPanelOpenedHeight() const
this functions allow you to get top panel height (before scaling)
Definition MRRibbonMenu.h:67
SelectedTypesMask
Definition ImGuiMenu.h:40
void setTopPanelMaxOpenedTimer(float sec)
Definition MRRibbonMenu.h:72
void showActiveList()
set active plugins list showed
Definition MRRibbonMenu.h:115
virtual MRVIEWER_API void drawSearchButton_()
header helper search bar at panel
void setActiveListPos(const ImVec2 &pos)
Definition MRRibbonMenu.h:112
bool drawCloneSelectionButton(const std::vector< std::shared_ptr< Object > > &selected)
bool drawGroupUngroupButton(const std::vector< std::shared_ptr< Object > > &selected)
======== selected objects options drawing
virtual MRVIEWER_API void setupShortcuts_() override
virtual MRVIEWER_API void setMenuUIConfig(const RibbonMenuUIConfig &newConfig)
virtual MRVIEWER_API void addRibbonItemShortcut_(const std::string &itemName, const ShortcutKey &key, ShortcutCategory category)
virtual MRVIEWER_API void drawActiveNonBlockingDialogs_()
DialogItemPtr activeBlockingItem_
Definition MRRibbonMenu.h:186
virtual MRVIEWER_API void shutdown() override
This function is called before shutdown.
virtual MRVIEWER_API void drawShortcutsWindow_() override
A virtual function for drawing of the dialog with shortcuts. It can be overriden in the inherited cla...
virtual MRVIEWER_API void drawCollapseButton_()
header helper button to pin/unpin ribbon
virtual MRVIEWER_API void drawSmallButtonsSet_(const std::vector< std::string > &group, int setFrontIndex, int setLength, bool withText)
draw set of small text buttons
virtual MRVIEWER_API DrawTabConfig setupItemsGroupConfig_(const std::vector< std::string > &groupsInTab, const std::string &tabName, bool centerItems)
draw group of items
virtual MRVIEWER_API std::string getRequirements_(const std::shared_ptr< RibbonMenuItem > &item) const
returns requirements line for given tool, empty line means that tool is available
bool hasActiveBlockingItem() const
returns true if any blocking plugin is now active
Definition MRRibbonMenu.h:89
MRVIEWER_API bool isTopPannelPinned() const
static MRVIEWER_API std::shared_ptr< RibbonMenu > instance()
returns RibonMenu from ViewerInstance()
virtual MRVIEWER_API bool drawCollapsingHeader_(const char *label, ImGuiTreeNodeFlags flags=0) override
override this to have custom UI in "Selection Properties" window (under "Draw Options")
virtual MRVIEWER_API void highlightBlocking_()
bool getAutoCloseBlockingPlugins() const
returns flag defining if closing plugin on opening another one is enabled
Definition MRRibbonMenu.h:131
int getTopPanelHiddenHeight() const
Definition MRRibbonMenu.h:68
virtual MRVIEWER_API void drawActiveBlockingDialog_()
std::function< void(std::shared_ptr< Object > object, ViewportId id, bool checked)> Setter
Definition MRRibbonMenu.h:30
virtual MRVIEWER_API void readMenuItemsStructure_()
reads files with panel description
Vector2i getSceneSize()
get Scene List window size
Definition MRRibbonMenu.h:83
virtual MRVIEWER_API void drawNotifications_()
call this to draw RibbonNotifier with respect of scene size and ribbon top panel
virtual MRVIEWER_API void drawHelpButton_(const std::string &url)
header helper button link to help page
virtual MRVIEWER_API bool drawCollapsingHeaderTransform_() override
override this to customize appearance of collapsing headers for transform block
virtual MRVIEWER_API void drawBigButtonItem_(const MenuItemInfo &item)
draw single item
std::function< bool(std::shared_ptr< Object > object, ViewportId id)> Getter
Definition MRRibbonMenu.h:31
MRVIEWER_API void drawActiveList_()
need to be called if you override windows pipeline and use ActiveListPlugin
virtual MRVIEWER_API void drawRibbonSceneInformation_(const std::vector< std::shared_ptr< Object > > &selected)
virtual MRVIEWER_API void drawActiveListButton_(float btnSize)
helper list of active tools
virtual MRVIEWER_API void init(MR::Viewer *_viewer) override
This function is called when the viewer is initialized (no mesh will be loaded at this stage)
static MRVIEWER_API void cloneTree(const std::vector< std::shared_ptr< Object > > &selectedObjects)
clones given objects with sub-objects (except for ancillary and unrecognized children) and undo
virtual MRVIEWER_API void drawItemDialog_(DialogItemPtr &itemPtr)
MRVIEWER_API void pushNotification(const RibbonNotification ¬ification)
Checks if RibbonMenu is available, if it is - forwards notification to RibbonNotifier....
std::vector< std::shared_ptr< const Object > > prevFrameSelectedObjectsCache_
Definition MRRibbonMenu.h:213
virtual MRVIEWER_API void postResize_(int width, int height) override
Scene events.
virtual MRVIEWER_API void setQuickAccessListVersion(int version)
set quick access menu item list version
virtual MRVIEWER_API bool itemPressed_(const std::shared_ptr< RibbonMenuItem > &item, const std::string &requiremetnsHint={})
Getter getter
Definition MRRibbonMenu.h:33
virtual MRVIEWER_API Vector2f drawRibbonSceneResizeLine_()
virtual MRVIEWER_API void load_font(int font_size=13) override
MRVIEWER_API void resetQuickAccessList()
reset quick access menu items list to default
MRVIEWER_API RibbonMenu()
virtual MRVIEWER_API void drawItemsGroup_(const std::string &tabName, const std::string &groupName, DrawGroupConfig config)
void setAutoCloseBlockingPlugins(bool value)
sets flag defining if closing plugin on opening another one is enabled or not
Definition MRRibbonMenu.h:133
virtual MRVIEWER_API void setupItemsGroup_(const std::vector< std::string > &groupsInTab, const std::string &tabName, bool centerItems)
RibbonFontManager & getFontManager()
get access to Ribbon font manager
Definition MRRibbonMenu.h:101
RibbonNotifier & getRibbonNotifier()
get access to Ribbon notifier
Definition MRRibbonMenu.h:110
static MRVIEWER_API void cloneSelectedPart(const std::shared_ptr< Object > &object)
clones selected part of given object as separate object (faces, points)
virtual MRVIEWER_API void drawTopPanel_(bool drawTabs=true, bool centerItems=false)
Draw ribbon top panel.
virtual MRVIEWER_API void pinTopPanel(bool on)
set top panel pinned and unpinned
ShortcutCategory
Definition MRShortcutManager.h:31
bool drawSelectSubtreeButton(const std::vector< std::shared_ptr< Object > > &selected)
bool drawCloneButton(const std::vector< std::shared_ptr< Object > > &selected)
virtual MRVIEWER_API void drawHeaderQuickAccess_()
draw quick access bar at header level
virtual MRVIEWER_API std::filesystem::path getMenuFontPath() const override
virtual MRVIEWER_API void readQuickAccessList(const Json::Value &root)
read quick access menu items list from json
RibbonMenuSearch searcher_
Definition MRRibbonMenu.h:254
bool drawCustomCheckBox(const std::vector< std::shared_ptr< Object > > &selected, SelectedTypesMask selectedMask)
Setter setter
Definition MRRibbonMenu.h:32
Toolbar & getToolbar()
get access to Ribbon Toolbar
Definition MRRibbonMenu.h:107
std::vector< DialogItemPtr > activeNonBlockingItems_
Definition MRRibbonMenu.h:187
boost::signals2::signal< void(int prevTabId, int newTabId)> TabChangedSignal
Definition MRRibbonMenu.h:126
std::vector< DrawGroupConfig > DrawTabConfig
Definition MRRibbonMenu.h:160
virtual MRVIEWER_API void postRescale_(float x, float y) override
virtual MRVIEWER_API void updateTopPanelSize_(bool drawTabs)
this function changes internal sizes of topPanel when it is enabled or disabled
bool drawMergeSubtreeButton(const std::vector< std::shared_ptr< Object > > &selected)
RibbonButtonDrawer & getRibbonButtonDrawer()
get access to Ribbon button drawer
Definition MRRibbonMenu.h:104
int getTopPanelCurrentHeight() const
Definition MRRibbonMenu.h:69
MRVIEWER_API void setCustomContextCheckbox(const std::string &name, CustomContextMenuCheckbox customContextMenuCheckbox)
virtual MRVIEWER_API void drawRibbonSceneList_()
Draw scene list window with content.
const RibbonMenuUIConfig & getMenuUIConfig() const
returns current menu ui configuration (find more in RibbonMenuUIConfig comments)
Definition MRRibbonMenu.h:136
virtual MRVIEWER_API void fixViewportsSize_(int w, int h)
updates viewport sizes with respect to ribbon top and left panels
std::shared_ptr< RibbonMenuItem > item
Definition MRRibbonMenu.h:182
MRVIEWER_API void openToolbarCustomize()
open Toolbar Customize modal popup
virtual MRVIEWER_API bool drawTransformContextMenu_(const std::shared_ptr< Object > &selected) override
virtual MRVIEWER_API void pushNotification(const RibbonNotification ¬ification)
virtual MRVIEWER_API float drawHeaderHelpers_(float requiredTabSize)
int getActiveTabIndex() const
returns index of active tab in RibbonSchemaHolder::schema().tabsOrder
Definition MRRibbonMenu.h:97
virtual MRVIEWER_API void drawRibbonViewportsLabels_()
Draw viewport id and projection type for all viewporrts.
MRVIEWER_API void updateItemStatus(const std::string &itemName)
updates status of item if it was changed outside of menu
TabChangedSignal tabChangedSignal
this signal is called when active tab changes
Definition MRRibbonMenu.h:128
MRVIEWER_API void setSceneSize(const Vector2i &size)
set Scene List window size
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRRibbonNotification.h:41
Definition MRShortcutManager.h:16