MeshLib
 
Loading...
Searching...
No Matches
MRRibbonMenuSearch.h
Go to the documentation of this file.
1#pragma once
2#include "MRViewerFwd.h"
3#include "MRMesh/MRVector2.h"
4#include "MRRibbonSchema.h"
5#include <string>
6#include <functional>
7
8namespace MR
9{
10
11class RibbonButtonDrawer;
12class RibbonFontManager;
13
14// separate class for search in ribbon menu
15class MRVIEWER_CLASS RibbonMenuSearch
16{
17public:
18 // returns search imgui popup window name
19 const char* windowName() const { return "##RibbonGlobalSearchPopup[rect_allocator_ignore]"; }
20 // add item to recent items list
21 void pushRecentItem( const std::shared_ptr<RibbonMenuItem>& item );
22
30 // draws search elements and window with its logic
31 MRVIEWER_API void drawMenuUI( const Parameters& params );
32
33 // set draw mode (true - small button, false - input string )
34 void setSmallUI( bool on ) { isSmallUI_ = on; }
35
36 // get width ui element in top panel
37 // return unscaled value
38 MRVIEWER_API float getWidthMenuUI() const;
39
40 // get search string width (+ item spacing)
41 MRVIEWER_API float getSearchStringWidth() const;
42
43 // activate search from outside (i.e. shortcut)
44 MRVIEWER_API void activate();
45private:
46 bool smallSearchButton_( const Parameters& params );
47
48 void drawWindow_( const Parameters& params );
49
50 void deactivateSearch_();
51
52 bool searchInputText_( const char* label, std::string& str, const RibbonMenuSearch::Parameters& params );
53
54 void updateSearchResult_();
55
56 std::string searchLine_;
57 std::vector<RibbonSchemaHolder::SearchResult> searchResult_;
58 std::vector<RibbonSchemaHolder::SearchResultWeight> searchResultWeight_;
59 std::vector<RibbonSchemaHolder::SearchResult> recentItems_;
60 int hightlightedSearchItem_{ 0 };
61 int captionCount_ = 0;
62
63
64 bool isSmallUI_ = false;
65 bool active_ = false;
66 bool isSmallUILast_ = false;
67 bool mainInputFocused_ = false;
68 bool blockSearchBtn_ = false;
69 bool setInputFocus_ = false;
70#ifndef NDEBUG
71 bool showResultWeight_ = false;
72#endif
73};
74
75}
class for drawing ribbon menu buttons
Definition MRRibbonButtonDrawer.h:48
Definition MRRibbonFontManager.h:11
Definition MRRibbonMenuSearch.h:16
const char * windowName() const
Definition MRRibbonMenuSearch.h:19
MRVIEWER_API void activate()
MRVIEWER_API float getWidthMenuUI() const
void setSmallUI(bool on)
Definition MRRibbonMenuSearch.h:34
void pushRecentItem(const std::shared_ptr< RibbonMenuItem > &item)
MRVIEWER_API void drawMenuUI(const Parameters &params)
MRVIEWER_API float getSearchStringWidth() const
Definition MRCameraOrientationPlugin.h:7
Definition MRRibbonMenuSearch.h:24
RibbonFontManager & fontManager
Definition MRRibbonMenuSearch.h:26
float scaling
Definition MRRibbonMenuSearch.h:28
std::function< void(int)> changeTabFunc
Definition MRRibbonMenuSearch.h:27
RibbonButtonDrawer & btnDrawer
Definition MRRibbonMenuSearch.h:25