Program Listing for File log_panel.h

Return to documentation for file (/tmp/ws/src/log_view/include/log_view/panels/log_panel.h)

#ifndef LOG_VIEW_LOG_PANEL_H_
#define LOG_VIEW_LOG_PANEL_H_

#include <log_view/log_filter.h>
#include <log_view/log_store.h>
#include <log_view/panel_interface.h>

namespace log_view {

class LogPanel : public PanelInterface {
  public:
  LogPanel(int height, int width, int y, int x, LogStorePtr& logs, LogFilter& filter) : PanelInterface(height, width, y, x), logs_(logs), filter_(filter) {}
  virtual ~LogPanel() {}
  virtual void refresh();
  virtual void selectAll();
  virtual void startSelect(int row);
  virtual void endSelect(int row);
  virtual bool handleMouse(const MEVENT& event);
  virtual bool handleKey(int key);
  virtual void resize(int height, int width, int y, int x);

  protected:
  virtual bool canNavigate() const { return true; }
  virtual size_t getContentSize() const { return filter_.indices().size(); }
  virtual int getContentWidth() const;
  virtual void setCursor(int64_t cursor) { filter_.setCursor(cursor); }
  virtual int64_t getCursor() const { return filter_.getCursor(); }
  virtual void copyToClipboard();
  std::string getPrefix(const LogEntry& entry, size_t line) const;
  void printEntry(size_t row, const LogEntry& entry, size_t line, size_t index);

  LogStorePtr logs_;
  LogFilter& filter_;

  bool mouse_down_ = false;
  bool filled_ = false;
};
typedef std::shared_ptr<LogPanel> LogPanelPtr;

}  // namespace log_view

#endif  // LOG_VIEW_LOG_PANEL_H_