src
panels
search_panel.cpp
Go to the documentation of this file.
1
28
#include <
log_view/panels/search_panel.h
>
29
30
namespace
log_view
{
31
32
void
SearchPanel::refresh
() {
33
if
(
show_results_
) {
34
wattron(
window_
, COLOR_PAIR(
CP_DEFAULT_GREY
));
35
std::string background(
width_
,
' '
);
36
mvwprintw(
window_
, 0, 0, background.c_str());
37
std::string text =
"match: "
+
filter_
.
getSearch
();
38
mvwprintw(
window_
, 0, 0, text.c_str());
39
40
std::string
help
=
" Press Enter/Backspace to move forward/backward through search results"
;
41
if
(
help
.length() + text.length() <=
width_
) {
42
mvwprintw(
window_
, 0,
width_
-
help
.length(),
help
.c_str());
43
}
44
45
wattroff(
window_
, COLOR_PAIR(
CP_DEFAULT_GREY
));
46
}
47
else
{
48
mvwprintw(
window_
, 0, 0,
"search: %s"
,
input_text_
.c_str());
49
}
50
}
51
52
bool
SearchPanel::handleInput
(
int
val) {
53
if
(!
canInput
() || !
focus_
) {
54
return
false
;
55
}
56
57
if
(val ==
KEY_ENTER_VAL
) {
58
if
(
input_text_
.empty()) {
59
hide
(
true
);
60
setFocus
(
false
);
61
return
true
;
62
}
63
64
filter_
.
search
(
input_text_
);
65
show_results_
=
true
;
66
input_text_
.clear();
67
input_loc_
= -1;
68
setFocus
(
false
);
69
refresh
();
70
return
true
;
71
}
72
73
return
PanelInterface::handleInput
(val);
74
}
75
76
void
SearchPanel::clearSearch
() {
77
if
(
show_results_
) {
78
show_results_
=
false
;
79
filter_
.
clearSearch
();
80
input_text_
.clear();
81
setFocus
(
false
);
82
hide
(
true
);
83
}
84
}
85
86
void
SearchPanel::toggle
() {
87
if
(!
hidden_
&&
show_results_
) {
88
input_text_
.clear();
89
input_loc_
= -1;
90
show_results_
=
false
;
91
setFocus
(
true
);
92
}
93
else
if
(!
hidden_
) {
94
hide
(
true
);
95
}
96
else
{
97
show_results_
=
false
;
98
setFocus
(
true
);
99
hide
(
false
);
100
}
101
}
102
103
}
// namespace log_view
log_view::LogFilter::search
void search(const std::string &pattern)
Definition:
log_filter.cpp:259
help
std::string help()
log_view::PanelInterface::hide
virtual void hide(bool enable)
Definition:
panel_interface.cpp:185
log_view::PanelInterface::width_
int width_
Definition:
panel_interface.h:98
log_view
Definition:
datatypes.h:35
search_panel.h
log_view::SearchPanel::refresh
virtual void refresh()
Definition:
search_panel.cpp:32
log_view::PanelInterface::focus_
bool focus_
Definition:
panel_interface.h:104
log_view::SearchPanel::handleInput
virtual bool handleInput(int val)
Definition:
search_panel.cpp:52
log_view::PanelInterface::input_loc_
int input_loc_
Definition:
panel_interface.h:106
log_view::SearchPanel::canInput
virtual bool canInput() const
Definition:
search_panel.h:48
log_view::SearchPanel::filter_
LogFilter & filter_
Definition:
search_panel.h:51
log_view::LogFilter::clearSearch
void clearSearch()
Definition:
log_filter.cpp:301
log_view::PanelInterface::handleInput
virtual bool handleInput(int key)
Definition:
panel_interface.cpp:66
log_view::PanelInterface::window_
WINDOW * window_
Definition:
panel_interface.h:94
log_view::PanelInterface::input_text_
std::string input_text_
Definition:
panel_interface.h:105
KEY_ENTER_VAL
#define KEY_ENTER_VAL
Definition:
panel_interface.h:37
log_view::SearchPanel::clearSearch
virtual void clearSearch()
Definition:
search_panel.cpp:76
log_view::PanelInterface::setFocus
virtual bool setFocus(bool enable)
Definition:
panel_interface.cpp:206
log_view::LogFilter::getSearch
std::string getSearch() const
Definition:
log_filter.h:86
log_view::SearchPanel::show_results_
bool show_results_
Definition:
search_panel.h:53
log_view::SearchPanel::toggle
virtual void toggle()
Definition:
search_panel.cpp:86
log_view::CP_DEFAULT_GREY
@ CP_DEFAULT_GREY
Definition:
utils.h:38
log_view::PanelInterface::hidden_
bool hidden_
Definition:
panel_interface.h:101
log_view
Author(s): Marc Alban
autogenerated on Sat Sep 17 2022 02:22:53