ui.h
Go to the documentation of this file.
1 // console user interface
2 // Author: Max Schwarz <max.schwarz@uni-bonn.de>
3 
4 #ifndef UI_H
5 #define UI_H
6 
7 #include "monitor/monitor.h"
8 #include "fd_watcher.h"
9 #include "terminal.h"
10 #include "log_event.h"
11 
12 #include <ros/wall_timer.h>
13 
14 #include <map>
15 #include <unordered_set>
16 
17 namespace rosmon
18 {
19 
20 class UI
21 {
22 public:
23  explicit UI(monitor::Monitor* monitor, const FDWatcher::Ptr& fdWatcher);
24  ~UI();
25 
26  void update();
27  void log(const LogEvent& event);
28 private:
29  struct ChannelInfo
30  {
32  {}
33 
35  : parser{term}
36  {}
37 
38  ChannelInfo(Terminal* term, uint32_t color)
39  : parser{term}
40  , labelColor(color)
41  {}
42 
44  uint32_t labelColor;
45  };
46 
47  void drawStatusLine();
48  void checkWindowSize();
49  void setupColors();
50 
51  void readInput();
52  void checkTerminal();
53 
54  void handleKey(int key);
55 
56  bool anyMuted() const;
57 
58  void startAll();
59 
60  void stopAll();
61 
62  void muteAll();
63 
64  void unmuteAll();
65 
66  bool stderrOnly();
67 
68  void toggleStderrOnly();
69 
70  void scheduleUpdate();
71 
72  std::string nodeDisplayName(monitor::NodeMonitor& node, std::size_t maxWidth = std::string::npos);
73 
76  bool m_refresh_required = true;
77  bool m_stderr_only = false;
78 
80 
81  int m_columns;
84 
85  std::map<std::string, ChannelInfo> m_nodeColorMap;
86 
88 
89  std::string m_strSetColor;
90 
91  bool m_searchActive = false;
92  std::string m_searchString;
93  unsigned int m_searchSelectedIndex;
94  std::vector<unsigned int> m_searchNodes;
95  unsigned int m_searchDisplayColumns = 0;
96 
98 
103 
106 
111 
116 
117  unsigned int m_nodeLabelWidth = 20;
118 };
119 
120 }
121 
122 #endif
123 
Definition: ui.h:20
~UI()
Definition: ui.cpp:93
std::map< std::string, ChannelInfo > m_nodeColorMap
Definition: ui.h:85
int m_selectedNode
Definition: ui.h:87
void scheduleUpdate()
Definition: ui.cpp:783
bool anyMuted() const
Definition: ui.cpp:752
bool m_stderr_only
Definition: ui.h:77
ChannelInfo(Terminal *term, uint32_t color)
Definition: ui.h:38
void setupColors()
Definition: ui.cpp:98
std::string m_searchString
Definition: ui.h:92
Monitors a single node process.
Definition: node_monitor.h:25
bool m_refresh_required
Definition: ui.h:76
std::string nodeDisplayName(monitor::NodeMonitor &node, std::size_t maxWidth=std::string::npos)
Definition: ui.cpp:146
std::string m_strSetColor
Definition: ui.h:89
void checkTerminal()
Definition: ui.cpp:562
FDWatcher::Ptr m_fdWatcher
Definition: ui.h:75
UI(monitor::Monitor *monitor, const FDWatcher::Ptr &fdWatcher)
Definition: ui.cpp:36
Terminal::Style m_style_nodeIdle
Definition: ui.h:107
Terminal::Style m_style_barLine
Definition: ui.h:99
void startAll()
Definition: ui.cpp:759
Terminal::Style m_style_nodeWaitingFaded
Definition: ui.h:115
unsigned int m_searchSelectedIndex
Definition: ui.h:93
monitor::Monitor * m_monitor
Definition: ui.h:74
bool stderrOnly()
Definition: ui.cpp:788
Terminal::Style m_style_nodeCrashed
Definition: ui.h:109
ros::WallTimer m_sizeTimer
Definition: ui.h:82
void update()
Definition: ui.cpp:513
Terminal::Style m_style_nodeWaiting
Definition: ui.h:110
Terminal::Style m_style_nodeIdleFaded
Definition: ui.h:112
bool m_searchActive
Definition: ui.h:91
void toggleStderrOnly()
Definition: ui.cpp:793
Terminal::Style m_style_nodeRunningFaded
Definition: ui.h:113
unsigned int m_nodeLabelWidth
Definition: ui.h:117
Terminal::Style m_style_bar
Definition: ui.h:100
Terminal::Parser parser
Definition: ui.h:43
Terminal::Style m_style_nodeKeyMuted
Definition: ui.h:105
Terminal::Style m_style_nodeKey
Definition: ui.h:104
void drawStatusLine()
Definition: ui.cpp:161
std::vector< unsigned int > m_searchNodes
Definition: ui.h:94
Terminal m_term
Definition: ui.h:79
void checkWindowSize()
Definition: ui.cpp:540
Terminal::Color m_color_bar
Definition: ui.h:97
void readInput()
Definition: ui.cpp:553
void unmuteAll()
Definition: ui.cpp:777
uint32_t labelColor
Definition: ui.h:44
Encapsulates terminal control.
Definition: terminal.h:22
ChannelInfo(Terminal *term)
Definition: ui.h:34
void log(const LogEvent &event)
Definition: ui.cpp:420
Terminal::Style m_style_nodeRunning
Definition: ui.h:108
Terminal::Style m_style_barKey
Definition: ui.h:101
Terminal escape sequence parser.
Definition: terminal.h:102
unsigned int m_searchDisplayColumns
Definition: ui.h:95
void muteAll()
Definition: ui.cpp:771
ros::WallTimer m_terminalCheckTimer
Definition: ui.h:83
void handleKey(int key)
Definition: ui.cpp:571
Terminal::Style m_style_nodeCrashedFaded
Definition: ui.h:114
Terminal::Style m_style_barHighlight
Definition: ui.h:102
void stopAll()
Definition: ui.cpp:765
int m_columns
Definition: ui.h:81


rosmon_core
Author(s): Max Schwarz
autogenerated on Sat Jan 9 2021 03:35:43