search_panel.cpp
Go to the documentation of this file.
1 
29 
30 namespace log_view {
31 
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 
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 
77  if (show_results_) {
78  show_results_ = false;
80  input_text_.clear();
81  setFocus(false);
82  hide(true);
83  }
84 }
85 
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