Horizon
log_view.hpp
1 #pragma once
2 #include <gtkmm.h>
3 #include "logger/logger.hpp"
4 #include <set>
5 
6 namespace horizon {
7 class LogView : public Gtk::Box {
8 public:
9  LogView();
10  void push_log(const Logger::Item &it);
11  void append_widget(Gtk::Widget *w);
12 
13  typedef sigc::signal<void, const Logger::Item &> type_signal_logged;
14  type_signal_logged signal_logged()
15  {
16  return s_signal_logged;
17  }
18 
19 private:
20  class ListColumns : public Gtk::TreeModelColumnRecord {
21  public:
22  ListColumns()
23  {
24  Gtk::TreeModelColumnRecord::add(seq);
25  Gtk::TreeModelColumnRecord::add(message);
26  Gtk::TreeModelColumnRecord::add(detail);
27  Gtk::TreeModelColumnRecord::add(level);
28  Gtk::TreeModelColumnRecord::add(domain);
29  }
30  Gtk::TreeModelColumn<uint64_t> seq;
31  Gtk::TreeModelColumn<Glib::ustring> message;
32  Gtk::TreeModelColumn<Glib::ustring> detail;
33  Gtk::TreeModelColumn<Logger::Level> level;
34  Gtk::TreeModelColumn<Logger::Domain> domain;
35  };
36  ListColumns list_columns;
37 
38  Glib::RefPtr<Gtk::ListStore> store;
39  Gtk::TreeView *tree_view = nullptr;
40  Gtk::ScrolledWindow *sc = nullptr;
41 
42  Glib::RefPtr<Gtk::TreeModelFilter> store_filtered;
43 
44  Gtk::Box *bbox = nullptr;
45 
46  bool follow = true;
47  type_signal_logged s_signal_logged;
48 
49  std::set<Logger::Level> levels_visible;
50 
51  void copy_to_clipboard();
52 };
53 } // namespace horizon
Definition: log_view.hpp:7
Definition: logger.hpp:27