51 setlocale(LC_ALL,
"");
66 mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, NULL);
67 printf(
"\033[?1003h\n");
96 help_panel_ = std::make_shared<HelpPanel>(21, COLS - 8, 2, 4);
109 printf(
"\033[?1003l\n");
135 bool key_used =
false;
136 if (ch == KEY_MOUSE) {
138 if (getmouse(&event) == OK) {
139 if (event.bstate & BUTTON4_PRESSED) {
146 bool pressed =
event.bstate & (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED);
148 for (
size_t i = 0; i <
panels_.size(); i++) {
149 size_t idx =
panels_.size() - (i + 1);
151 if (panel->handleMouse(event)) {
158 panel->handleMouse(event);
168 key_used = panel->handleKey(ch);
175 if (!key_used && panel->focus()) {
176 key_used = panel->handleInput(ch);
178 if (!panel->focus()) {
182 if (!panel->visible()) {
191 for (
size_t i = 1; i <=
panels_.size(); i++) {
201 if (ch == KEY_RESIZE)
205 else if (ch ==
ctrl(
'q') || ch ==
ctrl(
'c')) {
208 else if (ch ==
'\t') {
211 else if (ch ==
ctrl(
's')) {
221 else if (ch ==
ctrl(
'x')) {
225 else if (ch == KEY_BACKSPACE) {
233 else if (ch ==
ctrl(
'e')) {
243 else if (ch ==
ctrl(
'f')) {
253 else if (ch ==
ctrl(
'h')) {
256 else if (ch ==
ctrl(
'n')) {
265 else if (ch == KEY_F(1)) {
268 else if (ch == KEY_F(2)) {
271 else if (ch == KEY_F(3)) {
274 else if (ch == KEY_F(4)) {
277 else if (ch == KEY_F(5)) {
280 else if (ch == KEY_F(7)) {
323 for (
size_t i = 0; i <
panels_.size(); i++) {
334 for (
size_t i = 1; i <
panels_.size() + 1; i++) {
335 int next = (idx + i) %
panels_.size();
336 if (
panels_[next]->setFocus(
true)) {
344 if (panel != focused) {
345 panel->setFocus(
false);
352 for (
size_t i = 0; i <
panels_.size(); i++) {
363 for (
size_t i = 1; i <
panels_.size(); i++) {
364 int next = (idx + i) %
panels_.size();
365 if (
panels_[next]->setFocus(
true)) {
std::shared_ptr< PanelInterface > PanelInterfacePtr
void setRosTime(const ros::Time &time)
std::shared_ptr< LogStore > LogStorePtr
LevelPanelPtr level_panel_
std::vector< PanelInterfacePtr > panels_
void unfocusOthers(const PanelInterfacePtr &focused)
ExcludePanelPtr exclude_panel_
LogView(LogStorePtr &logs)
void setConnected(bool connected)
FilterPanelPtr filter_panel_
SearchPanelPtr search_panel_
void setSystemTime(const ros::WallTime &time)
StatusPanelPtr status_panel_
void focusNext(const PanelInterfacePtr &panel)