7#include "MRMesh/MRphmap.h"
8#include <json/forwards.h>
37 std::vector<std::string>
tags;
42 std::shared_ptr<RibbonMenuItem>
item;
101class MRVIEWER_CLASS RibbonSchemaHolder
108 MRVIEWER_API
static bool addItem(
const std::shared_ptr<RibbonMenuItem>& item );
112 MRVIEWER_API
static bool delItem(
const std::shared_ptr<RibbonMenuItem>& item );
139 std::vector<SearchResultWeight>*
weights =
nullptr;
144 MRVIEWER_API
static std::vector<SearchResult>
search(
const std::string& searchStr,
const SearchParams& params );
147 MRVIEWER_API
static int findItemTab(
const std::shared_ptr<RibbonMenuItem>& item );
150 RibbonSchemaHolder() =
default;
170 MRVIEWER_API
virtual std::vector<std::filesystem::path>
getStructureFiles_(
const std::string& fileExtension )
const;
175 MRVIEWER_API
void readItemsJson_(
const Json::Value& root,
const std::string& schemaName = {} )
const;
177 MRVIEWER_API
void readUIJson_(
const std::filesystem::path& path )
const;
178 MRVIEWER_API
void readUIJson_(
const Json::Value& root, LocaleDomainId domainId = {} )
const;
185 static_assert( std::is_base_of_v<RibbonMenuItem, T> );
191 for (
const auto& item : items )
193 auto plugin = std::dynamic_pointer_cast< T >( item.second.item );
196 f( plugin_ = std::move( plugin ) );
206 std::shared_ptr<T> plugin_;
207 std::function<void(std::shared_ptr<T>)> g_;
211#define MR_RIBBON_ITEM_CALL(pluginType,f,g) \
212 static MR::RibbonMenuItemCall<pluginType> ribbonMenuItemCall##func##pluginType##_( f, g );
Definition MRRibbonSchema.h:57
void readUIJson_(const Json::Value &root, LocaleDomainId domainId={}) const
virtual ~RibbonSchemaLoader()=default
std::vector< std::pair< size_t, float > > SplitCaptionInfo
needed for big buttons text aligning
Definition MRRibbonSchema.h:22
MenuItemsList sceneButtonsList
Definition MRRibbonSchema.h:87
float tooltipOrderWeight
Definition MRRibbonSchema.h:130
std::string caption
Definition MRRibbonSchema.h:43
MenuItemsList defaultQuickAccessList
Definition MRRibbonSchema.h:85
TabsGroupsMap tabsMap
Definition MRRibbonSchema.h:82
friend class RibbonSchemaLoader
Definition MRRibbonSchema.h:62
void readItemsJson_(const Json::Value &root, const std::string &schemaName={}) const
static MenuItemInfo * findItem(const std::string &name)
returns the information about the item with given name, or nullptr if there is no such item
bool experimental
Definition MRRibbonSchema.h:74
std::string helpLink
already scaled
Definition MRRibbonSchema.h:47
std::vector< std::string > tags
Definition MRRibbonSchema.h:37
int priority
Definition MRRibbonSchema.h:73
void eliminateEmptyGroups()
deletes empty groups (and references on them from tabs)
std::function< std::string(const std::shared_ptr< RibbonMenuItem > &)> RequirementsFunction
Definition MRViewerFwd.h:88
GroupsItemsMap groupsMap
Definition MRRibbonSchema.h:83
HashMap< std::string, MenuItemInfo > ItemMap
Definition MRRibbonSchema.h:66
std::vector< RibbonTab > tabsOrder
Definition MRRibbonSchema.h:81
float captionOrderWeight
Definition MRRibbonSchema.h:128
int tabIndex
Definition MRRibbonSchema.h:120
std::string name
Definition MRRibbonSchema.h:72
RequirementsFunction requirementsFunc
sort the results according to the launch capability (empty requirements)
Definition MRRibbonSchema.h:141
SplitCaptionInfo splitInfo
Definition MRRibbonSchema.h:27
static std::vector< SearchResult > search(const std::string &searchStr, const SearchParams ¶ms)
searches for tools with the most appropriate names (captions) or tooltips
virtual void onRibbonSchemaLoad_()=0
void sortTabsByPriority()
re-order items in tabsOrder according to their priority, the order of items having same priority is p...
std::string icon
Definition MRRibbonSchema.h:45
const MenuItemInfo * item
-1 is default value if item has no tab
Definition MRRibbonSchema.h:121
LocaleDomainId localeDomainId
link to help page
Definition MRRibbonSchema.h:48
const std::string & getCaption() const
default keyboard shortcut, if any
Definition MRRibbonSchema.h:51
std::vector< std::string > MenuItemsList
Definition MRRibbonMenuItem.h:12
static bool addItem(const std::shared_ptr< RibbonMenuItem > &item)
static void recalcItemSizes()
Recalc items sizes.
void readItemsJson_(const std::filesystem::path &path) const
appends one menu items json info
void readUIJson_(const std::filesystem::path &path) const
appends one ui json info
void updateCaptions()
updates inner caption for all StateBasePlugins in schema
RibbonMenuItemCall(F f, std::function< void(std::shared_ptr< T >)> g)
Definition MRRibbonSchema.h:188
HashMap< std::string, std::vector< std::string > > TabsGroupsMap
Definition MRRibbonSchema.h:67
std::shared_ptr< RibbonMenuItem > item
Definition MRRibbonSchema.h:42
LocaleDomainId localeDomainId
Definition MRRibbonSchema.h:75
std::string tooltip
Definition MRRibbonSchema.h:44
float baseSize
Definition MRRibbonSchema.h:26
std::vector< SearchResultWeight > * weights
returns the coefficients of matching the search string for each tool found
Definition MRRibbonSchema.h:139
~RibbonMenuItemCall()
Definition MRRibbonSchema.h:200
ItemMap items
Definition MRRibbonSchema.h:84
static RibbonSchema & schema()
float tooltipWeight
Definition MRRibbonSchema.h:129
void sortFilesByOrder_(std::vector< std::filesystem::path > &files) const
sort structure json files by order
static void readMenuItemsList(const Json::Value &root, MenuItemsList &list)
Reads schema items list from root to list
TabsGroupsMap GroupsItemsMap
Definition MRRibbonSchema.h:68
virtual ~RibbonSchemaLoadListener()=default
Shortcut shortcut
Definition MRRibbonSchema.h:33
int * captionCount
gets the number of matches in the captions
Definition MRRibbonSchema.h:137
virtual std::vector< std::filesystem::path > getStructureFiles_(const std::string &fileExtension) const
finds structure json files in exe directory
MenuItemCaptionSize captionSize
Definition MRRibbonSchema.h:46
RibbonSchemaLoader()=default
static bool delItem(const std::shared_ptr< RibbonMenuItem > &item)
virtual void loadSchema() const
Loads schema from files.
float captionWeight
Definition MRRibbonSchema.h:127
phmap::flat_hash_map< K, V, Hash, Eq > HashMap
Definition MRMeshFwd.h:606
static 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...
MenuItemsList headerQuickAccessList
Definition MRRibbonSchema.h:86
std::optional< MenuItemShortcut > shortcut
needed for translation
Definition MRRibbonSchema.h:49
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
tool search options
Definition MRRibbonSchema.h:135
ancillary struct to hold information for search result order
Definition MRRibbonSchema.h:126
struct to hold information for search result presentation
Definition MRRibbonSchema.h:119
This structure describes UI schema of ribbon menu.
Definition MRRibbonSchema.h:80
Definition MRRibbonSchema.h:71
a keyboard shortcut: the keys to press and the category it is listed under
Definition MRShortcutKey.h:32