4#include "MRPch/MRJson.h"
5#include "MRMesh/MRphmap.h"
25 std::shared_ptr<RibbonMenuItem>
item;
71 MRVIEWER_API
static bool addItem(
const std::shared_ptr<RibbonMenuItem>& item );
75 MRVIEWER_API
static bool delItem(
const std::shared_ptr<RibbonMenuItem>& item );
87 float captionWeight{ 1.f };
88 float captionOrderWeight{ 1.f };
89 float tooltipWeight{ 1.f };
90 float tooltipOrderWeight{ 1.f };
93 MRVIEWER_API
static std::vector<SearchResult>
search(
const std::string& searchStr,
int* captionCount =
nullptr,
94 std::vector<SearchResultWeight>* weights =
nullptr );
97 MRVIEWER_API
static int findItemTab(
const std::shared_ptr<RibbonMenuItem>& item );
120 MRVIEWER_API
virtual std::vector<std::filesystem::path>
getStructureFiles_(
const std::string& fileExtension )
const;
127 MRVIEWER_API
void readUIJson_(
const std::filesystem::path& path )
const;
136 static_assert( std::is_base_of_v<RibbonMenuItem, T> );
138 template<
typename... Args>
150 std::shared_ptr<T> item_;
156 static_assert( std::is_base_of_v<RibbonMenuItem, T> );
162 for (
const auto& item : items )
164 auto plugin = std::dynamic_pointer_cast< T >( item.second.item );
167 f( plugin_ = std::move( plugin ) );
177 std::shared_ptr<T> plugin_;
178 std::function<void(std::shared_ptr<T>)> g_;
182#define MR_REGISTER_RIBBON_ITEM(pluginType) \
183 static MR::RibbonMenuItemAdder<pluginType> ribbonMenuItemAdder##pluginType##_;
186#define MR_RIBBON_ITEM_CALL(pluginType,f,g) \
187 static MR::RibbonMenuItemCall<pluginType> ribbonMenuItemCall##func##pluginType##_( f, g );
Definition MRRibbonSchema.h:65
static MRVIEWER_API RibbonSchema & schema()
static MRVIEWER_API bool delItem(const std::shared_ptr< RibbonMenuItem > &item)
static MRVIEWER_API bool addItem(const std::shared_ptr< RibbonMenuItem > &item)
static MRVIEWER_API std::vector< SearchResult > search(const std::string &searchStr, int *captionCount=nullptr, std::vector< SearchResultWeight > *weights=nullptr)
static MRVIEWER_API int findItemTab(const std::shared_ptr< RibbonMenuItem > &item)
returns item tab index in schema.tabsOrder or -1 if no tab found (e.g. scene fast access panel or hea...
Definition MRRibbonSchema.h:105
virtual ~RibbonSchemaLoader()=default
MRVIEWER_API void sortFilesByOrder_(std::vector< std::filesystem::path > &files) const
static MRVIEWER_API void recalcItemSizes()
virtual MRVIEWER_API std::vector< std::filesystem::path > getStructureFiles_(const std::string &fileExtension) const
MRVIEWER_API void readUIJson_(const std::filesystem::path &path) const
MRVIEWER_API void readItemsJson_(const Json::Value &root) const
MRVIEWER_API void readItemsJson_(const std::filesystem::path &path) const
virtual MRVIEWER_API void loadSchema() const
MRVIEWER_API void readUIJson_(const Json::Value &root) const
static MRVIEWER_API void readMenuItemsList(const Json::Value &root, MenuItemsList &list)
RibbonSchemaLoader()=default
std::vector< std::pair< std::string_view, float > > SplitCaptionInfo
Definition MRRibbonSchema.h:15
HashMap< std::string, MenuItemInfo > ItemMap
Definition MRRibbonSchema.h:33
std::vector< std::string > MenuItemsList
Definition MRRibbonMenuItem.h:9
HashMap< std::string, std::vector< std::string > > TabsGroupsMap
Definition MRRibbonSchema.h:34
TabsGroupsMap GroupsItemsMap
Definition MRRibbonSchema.h:35
phmap::flat_hash_map< K, V, Hash, Eq > HashMap
Definition MRMesh/MRMeshFwd.h:505
ancillary struct to hold information for search result order
Definition MRRibbonSchema.h:86
struct to hold information for search result presentation
Definition MRRibbonSchema.h:79
Definition MRRibbonSchema.h:46
MRVIEWER_API void eliminateEmptyGroups()
deletes empty groups (and references on them from tabs)
MenuItemsList sceneButtonsList
Definition MRRibbonSchema.h:53
MenuItemsList defaultQuickAccessList
Definition MRRibbonSchema.h:51
TabsGroupsMap tabsMap
Definition MRRibbonSchema.h:48
GroupsItemsMap groupsMap
Definition MRRibbonSchema.h:49
std::vector< RibbonTab > tabsOrder
Definition MRRibbonSchema.h:47
MRVIEWER_API void sortTabsByPriority()
re-order items in tabsOrder according to their priority, the order of items having same priority is p...
ItemMap items
Definition MRRibbonSchema.h:50
MenuItemsList headerQuickAccessList
Definition MRRibbonSchema.h:52
Definition MRRibbonSchema.h:38
bool experimental
Definition MRRibbonSchema.h:41
int priority
Definition MRRibbonSchema.h:40
std::string name
Definition MRRibbonSchema.h:39