Program Listing for File log_view.h

Return to documentation for file (include/log_view/log_view.h)

#ifndef LOG_VIEW_LOG_VIEW_H_
#define LOG_VIEW_LOG_VIEW_H_

#include <log_view/log_filter.h>
#include <log_view/log_store.h>
#include <log_view/panel_interface.h>
#include <log_view/panels/exclude_panel.h>
#include <log_view/panels/filter_panel.h>
#include <log_view/panels/help_panel.h>
#include <log_view/panels/level_panel.h>
#include <log_view/panels/log_panel.h>
#include <log_view/panels/node_panel.h>
#include <log_view/panels/search_panel.h>
#include <log_view/panels/status_panel.h>
#include <curses.h>
#include <panel.h>
#include <rclcpp/rclcpp.hpp>

namespace log_view {

class LogView {
public:
  explicit LogView(LogStorePtr& logs);
  ~LogView();

  void init();
  void close();

  bool exited() const;

  void setRosTime(const rclcpp::Time& time);
  void setSystemTime(const rclcpp::Time& time);

  void update();

private:
  void refreshLayout();

  size_t viewSize() const;

  void tab();
  void focusNext(const PanelInterfacePtr& panel);
  void unfocusOthers(const PanelInterfacePtr& focused);

  LogStorePtr logs_;
  LogFilter log_filter_;

  bool exited_ = false;
  bool mouse_down_ = false;

  bool node_select_ = true;
  bool log_scroll_ = false;

  std::vector<PanelInterfacePtr> panels_;
  StatusPanelPtr status_panel_;
  LevelPanelPtr level_panel_;
  SearchPanelPtr search_panel_;
  FilterPanelPtr filter_panel_;
  ExcludePanelPtr exclude_panel_;
  LogPanelPtr log_panel_;
  NodePanelPtr node_panel_;
  HelpPanelPtr help_panel_;
};

}  // namespace log_view

#endif  // LOG_VIEW_LOG_VIEW_H_