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{
13
14
15class RibbonButtonDrawer;
16class RibbonFontManager;
17
19class MRVIEWER_CLASS RibbonMenuSearch
20{
21public:
23 const char* windowName() const { return "##RibbonGlobalSearchPopup[rect_allocator_ignore]"; }
25 void pushRecentItem( const std::shared_ptr<RibbonMenuItem>& item );
26
34 MRVIEWER_API void drawMenuUI( const Parameters& params );
35
37 void setSmallUI( bool on ) { isSmallUI_ = on; }
38
41 MRVIEWER_API float getWidthMenuUI() const;
42
44 MRVIEWER_API float getSearchStringWidth() const;
45
47 MRVIEWER_API void activate();
48
50 void setRequirementsFunc( const RequirementsFunction& requirementsFunc )
51 { requirementsFunc_ = requirementsFunc; }
52
56 Signal<void( std::shared_ptr<RibbonMenuItem> )> onToolActivateSignal;
57private:
58 bool smallSearchButton_();
59
60 void drawWindow_( const Parameters& params );
61
62 void deactivateSearch_();
63
64 bool searchInputText_( const char* label, std::string& str );
65
66 void updateSearchResult_();
67
68 std::string searchLine_;
69 std::vector<RibbonSchemaHolder::SearchResult> searchResult_;
70 std::vector<RibbonSchemaHolder::SearchResultWeight> searchResultWeight_;
71 std::vector<RibbonSchemaHolder::SearchResult> recentItems_;
72 int hightlightedSearchItem_{ 0 };
73 int captionCount_ = 0;
74
75
76 bool isSmallUI_ = false;
77 bool active_ = false;
78 bool prevFrameActive_ = false;
79 bool isSmallUILast_ = false;
80 bool mainInputFocused_ = false;
81 bool blockSearchBtn_ = false;
82 bool setInputFocus_ = false;
83 RequirementsFunction requirementsFunc_;
84#ifndef NDEBUG
85 bool showResultWeight_ = false;
86#endif
87};
88
89}
class for drawing ribbon menu buttons
Definition MRRibbonButtonDrawer.h:53
Definition MRRibbonFontManager.h:15
separate class for search in ribbon menu
Definition MRRibbonMenuSearch.h:20
RibbonFontManager & fontManager
Definition MRRibbonMenuSearch.h:30
void setRequirementsFunc(const RequirementsFunction &requirementsFunc)
set function to get a requirements line for some tool
Definition MRRibbonMenuSearch.h:50
const char * windowName() const
returns search imgui popup window name
Definition MRRibbonMenuSearch.h:23
Signal< void(std::shared_ptr< RibbonMenuItem >)> onToolActivateSignal
this signal is emitted when tool is activated within search
Definition MRRibbonMenuSearch.h:56
MRVIEWER_API void activate()
activate search from outside (i.e. shortcut)
MRVIEWER_API float getWidthMenuUI() const
void setSmallUI(bool on)
set draw mode (true - small button, false - input string )
Definition MRRibbonMenuSearch.h:37
void pushRecentItem(const std::shared_ptr< RibbonMenuItem > &item)
add item to recent items list
Signal< void()> onFocusSignal
this signal is emitted when search bar is focused
Definition MRRibbonMenuSearch.h:54
MRVIEWER_API void drawMenuUI(const Parameters &params)
draws search elements and window with its logic
std::function< void(int)> changeTabFunc
Definition MRRibbonMenuSearch.h:31
RibbonButtonDrawer & btnDrawer
Definition MRRibbonMenuSearch.h:29
MRVIEWER_API float getSearchStringWidth() const
get search string width (+ item spacing)
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRRibbonMenuSearch.h:28
Definition MRSignal.h:27