MeshLib C++ Docs
Loading...
Searching...
No Matches
MRToolbar.h
Go to the documentation of this file.
1#pragma once
2
3#include "exports.h"
4#include "MRMesh/MRMeshFwd.h"
5#include "MRMesh/MRColor.h"
6#include <json/forwards.h>
7#include <map>
8#include <vector>
9#include <string>
10
11namespace MR
12{
15
16using MenuItemsList = std::vector<std::string>;
17using MenuItemsListMigration = std::function<void ( MenuItemsList& )>;
18using MenuItemsListMigrations = std::map<int, MenuItemsListMigration>;
19
20class RibbonMenu;
21
23class MRVIEWER_CLASS Toolbar
24{
25public:
27 MRVIEWER_API void setRibbonMenu( RibbonMenu* ribbonMenu );
28
31 MRVIEWER_API void drawToolbar();
34 MRVIEWER_API float getCurrentToolbarWidth() const { return currentWidth_; }
36 MRVIEWER_API void openCustomize();
39 MRVIEWER_API void drawCustomize();
40
42 MRVIEWER_API void readItemsList( const Json::Value& root );
45 MRVIEWER_API void resetItemsList();
47 MRVIEWER_API const MenuItemsList& getItemsList() const { return itemsList_; }
49 MRVIEWER_API int getItemsListVersion() const { return itemsListVersion_; }
51 MRVIEWER_API void setItemsListVersion( int version ) { itemsListVersion_ = version; }
53 MRVIEWER_API void setItemsListMigrations( const MenuItemsListMigrations& migrations ) { itemsListMigrations_ = migrations; }
54
55 void setMaxItemCount( int maxItemCount ) { maxItemCount_ = maxItemCount; }
56 int getMaxItemCount() const { return maxItemCount_; }
57
58private:
60 void drawCustomizeModal_();
62 void drawCustomizeTabsList_();
64 void drawCustomizeItemsList_();
65
66 void dashedLine_( const Vector2f& org, const Vector2f& dest, float periodLength = 10.f, float fillRatio = 0.5f, const Color& color = Color::gray(), float periodStart = 0.f );
67 void dashedRect_( const Vector2f& leftTop, const Vector2f& rightBottom, float periodLength = 10.f, float fillRatio = 0.5f, const Color& color = Color::gray() );
68
69 RibbonMenu* ribbonMenu_;
70
71 MenuItemsList itemsList_;
72 MenuItemsList itemsListCustomize_;
73 int itemsListVersion_{ 1 };
74 MenuItemsListMigrations itemsListMigrations_;
75
76 float currentWidth_{ 0.0f };
77 bool dragDrop_ = false;
78 bool openCustomizeFlag_ = false;
79 int customizeTabNum_ = 0;
80 std::string searchString_;
81 std::vector<std::vector<std::string>> searchResult_;
82
83 int maxItemCount_ = 14;
84};
85
86}
Definition MRRibbonMenu.h:27
class to draw toolbar and toolbar customize windows
Definition MRToolbar.h:24
int getMaxItemCount() const
Definition MRToolbar.h:56
std::function< void(MenuItemsList &)> MenuItemsListMigration
Definition MRToolbar.h:17
MRVIEWER_API int getItemsListVersion() const
get item list version
Definition MRToolbar.h:49
MRVIEWER_API void readItemsList(const Json::Value &root)
read toolbar items from json
MRVIEWER_API void drawToolbar()
MRVIEWER_API void setItemsListMigrations(const MenuItemsListMigrations &migrations)
set item list's upgrade rules
Definition MRToolbar.h:53
MRVIEWER_API void openCustomize()
enable toolbar customize window rendering
MRVIEWER_API void setRibbonMenu(RibbonMenu *ribbonMenu)
set pointer on ribbon menu to access it
MRVIEWER_API const MenuItemsList & getItemsList() const
get access to items
Definition MRToolbar.h:47
MRVIEWER_API void drawCustomize()
std::vector< std::string > MenuItemsList
Definition MRRibbonMenuItem.h:12
MRVIEWER_API void setItemsListVersion(int version)
set item list version
Definition MRToolbar.h:51
void setMaxItemCount(int maxItemCount)
Definition MRToolbar.h:55
MRVIEWER_API float getCurrentToolbarWidth() const
Definition MRToolbar.h:34
std::map< int, MenuItemsListMigration > MenuItemsListMigrations
Definition MRToolbar.h:18
MRVIEWER_API void resetItemsList()
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRColor.h:12