MeshLib C++ Docs
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 "MRMesh/MRSignal.h"
6#include <string>
7#include <functional>
8
9namespace MR
10{
11
12class RibbonButtonDrawer;
13class RibbonFontManager;
14
15// separate class for search in ribbon menu
16class MRVIEWER_CLASS RibbonMenuSearch
17{
18public:
19 // returns search imgui popup window name
20 const char* windowName() const { return "##RibbonGlobalSearchPopup[rect_allocator_ignore]"; }
21 // add item to recent items list
22 void pushRecentItem( const std::shared_ptr<RibbonMenuItem>& item );
23
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();
45
47 void setRequirementsFunc( const RequirementsFunction& requirementsFunc )
48 { requirementsFunc_ = requirementsFunc; }
49
50 // this signal is emitted when search bar is focused
52 // this signal is emitted when tool is activated within search
53 Signal<void( std::shared_ptr<RibbonMenuItem> )> onToolActivateSignal;
54private:
55 bool smallSearchButton_( const Parameters& params );
56
57 void drawWindow_( const Parameters& params );
58
59 void deactivateSearch_();
60
61 bool searchInputText_( const char* label, std::string& str, const RibbonMenuSearch::Parameters& params );
62
63 void updateSearchResult_();
64
65 std::string searchLine_;
66 std::vector<RibbonSchemaHolder::SearchResult> searchResult_;
67 std::vector<RibbonSchemaHolder::SearchResultWeight> searchResultWeight_;
68 std::vector<RibbonSchemaHolder::SearchResult> recentItems_;
69 int hightlightedSearchItem_{ 0 };
70 int captionCount_ = 0;
71
72
73 bool isSmallUI_ = false;
74 bool active_ = false;
75 bool prevFrameActive_ = false;
76 bool isSmallUILast_ = false;
77 bool mainInputFocused_ = false;
78 bool blockSearchBtn_ = false;
79 bool setInputFocus_ = false;
80 RequirementsFunction requirementsFunc_;
81#ifndef NDEBUG
82 bool showResultWeight_ = false;
83#endif
84};
85
86}
class for drawing ribbon menu buttons
Definition MRRibbonButtonDrawer.h:50
Definition MRRibbonFontManager.h:11
Definition MRRibbonMenuSearch.h:17
void setRequirementsFunc(const RequirementsFunction &requirementsFunc)
set function to get a requirements line for some tool
Definition MRRibbonMenuSearch.h:47
const char * windowName() const
Definition MRRibbonMenuSearch.h:20
Signal< void(std::shared_ptr< RibbonMenuItem >)> onToolActivateSignal
Definition MRRibbonMenuSearch.h:53
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)
Signal< void()> onFocusSignal
Definition MRRibbonMenuSearch.h:51
MRVIEWER_API void drawMenuUI(const Parameters &params)
MRVIEWER_API float getSearchStringWidth() const
Definition MRCameraOrientationPlugin.h:8
std::function< std::string(const std::shared_ptr< RibbonMenuItem > &)> RequirementsFunction
Definition MRViewerFwd.h:78
Definition MRRibbonMenuSearch.h:25
RibbonFontManager & fontManager
Definition MRRibbonMenuSearch.h:27
std::function< void(int)> changeTabFunc
Definition MRRibbonMenuSearch.h:28
RibbonButtonDrawer & btnDrawer
Definition MRRibbonMenuSearch.h:26
Definition MRSignal.h:24