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  : stdoutParser{term}
36  , stderrParser{term}
37  {}
38 
39  ChannelInfo(Terminal* term, uint32_t color)
40  : stdoutParser{term}
41  , stderrParser{term}
42  , labelColor(color)
43  {}
44 
47  uint32_t labelColor;
48  };
49 
50  void drawStatusLine();
51  void checkWindowSize();
52  void setupColors();
53 
54  void readInput();
55  void checkTerminal();
56 
57  void handleKey(int key);
58 
59  bool anyMuted() const;
60 
61  void startAll();
62 
63  void stopAll();
64 
65  void muteAll();
66 
67  void unmuteAll();
68 
69  bool stderrOnly();
70 
71  void toggleStderrOnly();
72 
73  void scheduleUpdate();
74 
75  std::string nodeDisplayName(monitor::NodeMonitor& node, std::size_t maxWidth = std::string::npos);
76 
79  bool m_refresh_required = true;
80  bool m_stderr_only = false;
81 
83 
84  int m_columns;
87 
88  std::map<std::string, ChannelInfo> m_nodeColorMap;
89 
91 
92  std::string m_strSetColor;
93 
94  bool m_searchActive = false;
95  std::string m_searchString;
96  unsigned int m_searchSelectedIndex;
97  std::vector<unsigned int> m_searchNodes;
98  unsigned int m_searchDisplayColumns = 0;
99 
101 
106 
109 
114 
119 
120  unsigned int m_nodeLabelWidth = 20;
121 };
122 
123 }
124 
125 #endif
126 
Definition: ui.h:20
~UI()
Definition: ui.cpp:93
std::map< std::string, ChannelInfo > m_nodeColorMap
Definition: ui.h:88
int m_selectedNode
Definition: ui.h:90
void scheduleUpdate()
Definition: ui.cpp:787
bool m_stderr_only
Definition: ui.h:80
ChannelInfo(Terminal *term, uint32_t color)
Definition: ui.h:39
void setupColors()
Definition: ui.cpp:98
std::string m_searchString
Definition: ui.h:95
Monitors a single node process.
Definition: node_monitor.h:27
bool m_refresh_required
Definition: ui.h:79
std::string nodeDisplayName(monitor::NodeMonitor &node, std::size_t maxWidth=std::string::npos)
Definition: ui.cpp:146
std::string m_strSetColor
Definition: ui.h:92
Terminal::Parser stdoutParser
Definition: ui.h:45
void checkTerminal()
Definition: ui.cpp:566
FDWatcher::Ptr m_fdWatcher
Definition: ui.h:78
UI(monitor::Monitor *monitor, const FDWatcher::Ptr &fdWatcher)
Definition: ui.cpp:36
Terminal::Style m_style_nodeIdle
Definition: ui.h:110
Terminal::Style m_style_barLine
Definition: ui.h:102
void startAll()
Definition: ui.cpp:763
Terminal::Style m_style_nodeWaitingFaded
Definition: ui.h:118
unsigned int m_searchSelectedIndex
Definition: ui.h:96
monitor::Monitor * m_monitor
Definition: ui.h:77
bool stderrOnly()
Definition: ui.cpp:792
Terminal::Style m_style_nodeCrashed
Definition: ui.h:112
bool anyMuted() const
Definition: ui.cpp:756
ros::WallTimer m_sizeTimer
Definition: ui.h:85
void update()
Definition: ui.cpp:517
Terminal::Style m_style_nodeWaiting
Definition: ui.h:113
Terminal::Style m_style_nodeIdleFaded
Definition: ui.h:115
Terminal::Parser stderrParser
Definition: ui.h:46
bool m_searchActive
Definition: ui.h:94
void toggleStderrOnly()
Definition: ui.cpp:797
Terminal::Style m_style_nodeRunningFaded
Definition: ui.h:116
unsigned int m_nodeLabelWidth
Definition: ui.h:120
Terminal::Style m_style_bar
Definition: ui.h:103
Terminal::Style m_style_nodeKeyMuted
Definition: ui.h:108
Terminal::Style m_style_nodeKey
Definition: ui.h:107
void drawStatusLine()
Definition: ui.cpp:161
std::vector< unsigned int > m_searchNodes
Definition: ui.h:97
Terminal m_term
Definition: ui.h:82
void checkWindowSize()
Definition: ui.cpp:544
Terminal::Color m_color_bar
Definition: ui.h:100
void readInput()
Definition: ui.cpp:557
void unmuteAll()
Definition: ui.cpp:781
uint32_t labelColor
Definition: ui.h:47
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:111
Terminal::Style m_style_barKey
Definition: ui.h:104
Terminal escape sequence parser.
Definition: terminal.h:102
unsigned int m_searchDisplayColumns
Definition: ui.h:98
void muteAll()
Definition: ui.cpp:775
ros::WallTimer m_terminalCheckTimer
Definition: ui.h:86
void handleKey(int key)
Definition: ui.cpp:575
Terminal::Style m_style_nodeCrashedFaded
Definition: ui.h:117
Terminal::Style m_style_barHighlight
Definition: ui.h:105
void stopAll()
Definition: ui.cpp:769
int m_columns
Definition: ui.h:84


rosmon_core
Author(s): Max Schwarz
autogenerated on Fri Jun 16 2023 02:15:06