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 
rosmon::UI::m_style_bar
Terminal::Style m_style_bar
Definition: ui.h:103
rosmon::UI::update
void update()
Definition: ui.cpp:517
rosmon::UI::m_terminalCheckTimer
ros::WallTimer m_terminalCheckTimer
Definition: ui.h:86
rosmon::UI::log
void log(const LogEvent &event)
Definition: ui.cpp:420
rosmon
Definition: diagnostics_publisher.cpp:34
rosmon::UI::m_refresh_required
bool m_refresh_required
Definition: ui.h:79
rosmon::UI::checkWindowSize
void checkWindowSize()
Definition: ui.cpp:544
rosmon::UI::ChannelInfo::ChannelInfo
ChannelInfo(Terminal *term)
Definition: ui.h:34
rosmon::UI::m_style_nodeCrashed
Terminal::Style m_style_nodeCrashed
Definition: ui.h:112
wall_timer.h
rosmon::UI::m_searchSelectedIndex
unsigned int m_searchSelectedIndex
Definition: ui.h:96
rosmon::LogEvent
Definition: log_event.h:13
boost::shared_ptr< FDWatcher >
fd_watcher.h
rosmon::UI::UI
UI(monitor::Monitor *monitor, const FDWatcher::Ptr &fdWatcher)
Definition: ui.cpp:36
rosmon::UI::m_sizeTimer
ros::WallTimer m_sizeTimer
Definition: ui.h:85
rosmon::UI
Definition: ui.h:20
rosmon::UI::unmuteAll
void unmuteAll()
Definition: ui.cpp:781
rosmon::UI::m_style_barLine
Terminal::Style m_style_barLine
Definition: ui.h:102
rosmon::UI::m_style_nodeRunningFaded
Terminal::Style m_style_nodeRunningFaded
Definition: ui.h:116
rosmon::UI::m_nodeColorMap
std::map< std::string, ChannelInfo > m_nodeColorMap
Definition: ui.h:88
rosmon::UI::ChannelInfo::ChannelInfo
ChannelInfo(Terminal *term, uint32_t color)
Definition: ui.h:39
monitor.h
ros::WallTimer
rosmon::UI::m_selectedNode
int m_selectedNode
Definition: ui.h:90
rosmon::UI::m_style_nodeIdleFaded
Terminal::Style m_style_nodeIdleFaded
Definition: ui.h:115
rosmon::UI::m_style_nodeRunning
Terminal::Style m_style_nodeRunning
Definition: ui.h:111
rosmon::UI::m_searchNodes
std::vector< unsigned int > m_searchNodes
Definition: ui.h:97
rosmon::UI::m_searchActive
bool m_searchActive
Definition: ui.h:94
rosmon::UI::stderrOnly
bool stderrOnly()
Definition: ui.cpp:792
rosmon::UI::stopAll
void stopAll()
Definition: ui.cpp:769
rosmon::UI::setupColors
void setupColors()
Definition: ui.cpp:98
rosmon::UI::m_fdWatcher
FDWatcher::Ptr m_fdWatcher
Definition: ui.h:78
rosmon::UI::m_style_nodeWaitingFaded
Terminal::Style m_style_nodeWaitingFaded
Definition: ui.h:118
rosmon::UI::m_style_nodeIdle
Terminal::Style m_style_nodeIdle
Definition: ui.h:110
rosmon::UI::m_nodeLabelWidth
unsigned int m_nodeLabelWidth
Definition: ui.h:120
rosmon::monitor::Monitor
Definition: monitor.h:24
log_event.h
rosmon::Terminal::Parser
Terminal escape sequence parser.
Definition: terminal.h:102
rosmon::UI::m_style_nodeWaiting
Terminal::Style m_style_nodeWaiting
Definition: ui.h:113
rosmon::UI::m_style_nodeKey
Terminal::Style m_style_nodeKey
Definition: ui.h:107
rosmon::UI::anyMuted
bool anyMuted() const
Definition: ui.cpp:756
rosmon::UI::ChannelInfo::labelColor
uint32_t labelColor
Definition: ui.h:47
rosmon::UI::m_style_nodeKeyMuted
Terminal::Style m_style_nodeKeyMuted
Definition: ui.h:108
rosmon::UI::nodeDisplayName
std::string nodeDisplayName(monitor::NodeMonitor &node, std::size_t maxWidth=std::string::npos)
Definition: ui.cpp:146
rosmon::UI::m_term
Terminal m_term
Definition: ui.h:82
rosmon::UI::readInput
void readInput()
Definition: ui.cpp:557
rosmon::UI::ChannelInfo
Definition: ui.h:29
rosmon::UI::m_strSetColor
std::string m_strSetColor
Definition: ui.h:92
rosmon::UI::checkTerminal
void checkTerminal()
Definition: ui.cpp:566
rosmon::UI::toggleStderrOnly
void toggleStderrOnly()
Definition: ui.cpp:797
rosmon::UI::muteAll
void muteAll()
Definition: ui.cpp:775
rosmon::UI::drawStatusLine
void drawStatusLine()
Definition: ui.cpp:161
rosmon::UI::m_color_bar
Terminal::Color m_color_bar
Definition: ui.h:100
rosmon::Terminal::Color
Definition: terminal.h:54
rosmon::UI::handleKey
void handleKey(int key)
Definition: ui.cpp:575
rosmon::UI::ChannelInfo::stdoutParser
Terminal::Parser stdoutParser
Definition: ui.h:45
rosmon::UI::ChannelInfo::stderrParser
Terminal::Parser stderrParser
Definition: ui.h:46
rosmon::UI::m_columns
int m_columns
Definition: ui.h:84
rosmon::UI::ChannelInfo::ChannelInfo
ChannelInfo()
Definition: ui.h:31
rosmon::UI::m_style_nodeCrashedFaded
Terminal::Style m_style_nodeCrashedFaded
Definition: ui.h:117
rosmon::UI::m_monitor
monitor::Monitor * m_monitor
Definition: ui.h:77
rosmon::UI::m_searchDisplayColumns
unsigned int m_searchDisplayColumns
Definition: ui.h:98
rosmon::Terminal
Encapsulates terminal control.
Definition: terminal.h:22
rosmon::UI::m_style_barHighlight
Terminal::Style m_style_barHighlight
Definition: ui.h:105
rosmon::UI::startAll
void startAll()
Definition: ui.cpp:763
terminal.h
rosmon::UI::m_style_barKey
Terminal::Style m_style_barKey
Definition: ui.h:104
rosmon::Terminal::Style
Definition: terminal.h:76
rosmon::UI::scheduleUpdate
void scheduleUpdate()
Definition: ui.cpp:787
rosmon::UI::m_stderr_only
bool m_stderr_only
Definition: ui.h:80
rosmon::UI::m_searchString
std::string m_searchString
Definition: ui.h:95
rosmon::UI::~UI
~UI()
Definition: ui.cpp:93
rosmon::monitor::NodeMonitor
Monitors a single node process.
Definition: node_monitor.h:27


rosmon_core
Author(s): Max Schwarz
autogenerated on Wed Feb 21 2024 04:01:14