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{
13using MenuItemsList = std::vector<std::string>;
14using MenuItemsListMigration = std::function<void ( MenuItemsList& )>;
15using MenuItemsListMigrations = std::map<int, MenuItemsListMigration>;
16
17class RibbonMenu;
18
20class MRVIEWER_CLASS Toolbar
21{
22public:
24 MRVIEWER_API void setRibbonMenu( RibbonMenu* ribbonMenu );
25
28 MRVIEWER_API void drawToolbar();
31 MRVIEWER_API float getCurrentToolbarWidth() const { return currentWidth_; }
32 // enable toolbar customize window rendering
33 MRVIEWER_API void openCustomize();
36 MRVIEWER_API void drawCustomize();
37
39 MRVIEWER_API void readItemsList( const Json::Value& root );
42 MRVIEWER_API void resetItemsList();
44 MRVIEWER_API const MenuItemsList& getItemsList() const { return itemsList_; }
46 MRVIEWER_API int getItemsListVersion() const { return itemsListVersion_; }
48 MRVIEWER_API void setItemsListVersion( int version ) { itemsListVersion_ = version; }
50 MRVIEWER_API void setItemsListMigrations( const MenuItemsListMigrations& migrations ) { itemsListMigrations_ = migrations; }
51
52 MRVIEWER_API void setScaling( float scale ) { scaling_ = scale; }
53
54private:
56 void drawCustomizeModal_();
58 void drawCustomizeTabsList_();
60 void drawCustomizeItemsList_();
61
62 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 );
63 void dashedRect_( const Vector2f& leftTop, const Vector2f& rightBottom, float periodLength = 10.f, float fillRatio = 0.5f, const Color& color = Color::gray() );
64
65 RibbonMenu* ribbonMenu_;
66
67 float scaling_ = 1.f;
68
69 MenuItemsList itemsList_; // toolbar items list
70 MenuItemsList itemsListCustomize_; // toolbar preview items list for Toolbar Customize window
71 int itemsListVersion_{ 1 }; // items list version
72 MenuItemsListMigrations itemsListMigrations_; // items list's upgrade rules
73
74 float currentWidth_{ 0.0f };
75 bool dragDrop_ = false; // active drag&drop in Toolbar Customize window
76 bool openCustomizeFlag_ = false; // flag to open Toolbar Customize window
77 int customizeTabNum_ = 0; // number active tab
78 std::string searchString_;
79 std::vector<std::vector<std::string>> searchResult_;
80};
81
82}
Definition MRRibbonMenu.h:43
class to draw toolbar and toolbar customize windows
Definition MRToolbar.h:21
MRVIEWER_API int getItemsListVersion() const
get item list version
Definition MRToolbar.h:46
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:50
MRVIEWER_API void openCustomize()
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:44
MRVIEWER_API void setScaling(float scale)
Definition MRToolbar.h:52
MRVIEWER_API void drawCustomize()
MRVIEWER_API void setItemsListVersion(int version)
set item list version
Definition MRToolbar.h:48
MRVIEWER_API float getCurrentToolbarWidth() const
Definition MRToolbar.h:31
MRVIEWER_API void resetItemsList()
std::function< void(MenuItemsList &)> MenuItemsListMigration
Definition MRToolbar.h:14
std::vector< std::string > MenuItemsList
Definition MRRibbonMenuItem.h:9
std::map< int, MenuItemsListMigration > MenuItemsListMigrations
Definition MRToolbar.h:15
Definition MRMesh/MRColor.h:9