10#include <QFontMetrics>
14 std::string _portName,
19 portName(
std::move(_portName)),
20 theLogger(_theLogger),
21 system_message(_system_message),
22 displayYarprunTimestamp_enabled(true),
23 displayLocalTimestamp_enabled(true),
24 displaySystemTime_enabled(false),
25 displayNetworkTime_enabled(false),
26 displayExternalTime_enabled(false),
27 displayLogLevel_enabled(true),
28 displayFilename_enabled(false),
29 displayLine_enabled(false),
30 displayFunction_enabled(false),
31 displayHostname_enabled(false),
32 displayPid_enabled(false),
33 displayCmd_enabled(false),
34 displayArgs_enabled(false),
35 displayThreadId_enabled(false),
36 displayComponent_enabled(true),
37 displayId_enabled(true),
38 displayColors_enabled(true),
39 displayGrid_enabled(true),
40 toggleLineExpansion(false),
41 logTimer(new QTimer(this)),
47 clipboard(QApplication::clipboard())
63 connect(ui->listView,
SIGNAL(customContextMenuRequested(
const QPoint &)),
this, SLOT(ctxMenu(
const QPoint &)));
64 connect(ui->listView,
SIGNAL(doubleClicked(
const QModelIndex &)),
this, SLOT(expandLines()));
66 ui->listView->horizontalHeader()->setSectionsMovable(
true);
73 ui->listView->horizontalHeader()->setSectionResizeMode(
LogModel::LINE_COLUMN, QHeaderView::ResizeToContents);
75 ui->listView->horizontalHeader()->setSectionResizeMode(
LogModel::PID_COLUMN, QHeaderView::ResizeToContents);
76 ui->listView->horizontalHeader()->setSectionResizeMode(
LogModel::CMD_COLUMN, QHeaderView::ResizeToContents);
79 ui->listView->horizontalHeader()->setSectionResizeMode(
LogModel::ID_COLUMN, QHeaderView::ResizeToContents);
81 ui->listView->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
83 sectionHeight = QFontMetrics(qvariant_cast<QFont>(
logModel->
data(QModelIndex(), Qt::FontRole))).height() + 4;
84 ui->listView->verticalHeader()->setMinimumSectionSize(sectionHeight);
85 ui->listView->verticalHeader()->setDefaultSectionSize(sectionHeight);
91void LogTab::expandLines() {
92 toggleLineExpansion = !toggleLineExpansion;
93 ui->listView->setWordWrap(toggleLineExpansion);
96 if (toggleLineExpansion) {
97 ui->listView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
99 ui->listView->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
100 ui->listView->verticalHeader()->setMinimumSectionSize(sectionHeight);
101 ui->listView->verticalHeader()->setDefaultSectionSize(sectionHeight);
105void LogTab::ctxMenu(
const QPoint &pos)
107 auto* menu =
new QMenu;
108 menu->addAction(tr(
"Copy to clipboard"),
this, SLOT(on_copy_to_clipboard_action()));
109 menu->addAction(tr(
"Toggle line expansion"),
this, SLOT(expandLines()));
110 menu->exec(ui->listView->mapToGlobal(pos));
113void LogTab::on_copy_to_clipboard_action()
115 QString selected_test;
116 QString separator(
"\t");
117 foreach(
const QModelIndex &index, ui->listView->selectionModel()->selectedRows())
122 if (!prox_index_pre.isValid())
124 system_message->
addMessage(QString(
"Invalid prox_index_pre in copy_to_clipboard"));
128 if (!prox_index.isValid())
130 system_message->
addMessage(QString(
"Invalid prox_index in copy_to_clipboard"));
134 QModelIndex prox_index = index;
153 selected_test += list.join(separator);
154 selected_test +=
'\n';
179void LogTab::updateLog(
bool from_beginning)
182 std::list<yarp::yarpLogger::MessageEntry> messages;
201 ui->listView->setShowGrid(displayGrid_enabled);
207 displayYarprunTimestamp_enabled = enabled;
213 displayLocalTimestamp_enabled = enabled;
219 displaySystemTime_enabled = enabled;
225 displayNetworkTime_enabled = enabled;
231 displayExternalTime_enabled = enabled;
238 displayLogLevel_enabled = enabled;
244 displayFilename_enabled = enabled;
253 displayLine_enabled = enabled;
259 displayFunction_enabled = enabled;
268 displayHostname_enabled = enabled;
274 displayCmd_enabled = enabled;
280 displayArgs_enabled = enabled;
289 displayPid_enabled = enabled;
295 displayThreadId_enabled = enabled;
301 displayComponent_enabled = enabled;
307 displayId_enabled = enabled;
313 displayColors_enabled = enabled;
319 displayGrid_enabled = enabled;
320 ui->listView->setShowGrid(displayGrid_enabled);
int SIGNAL(int pid, int signum)
static constexpr int YARPRUNTIMESTAMP_COLUMN
static constexpr int LINE_COLUMN
void setWordWrap(bool wordwrap)
static constexpr int SYSTEMTIME_COLUMN
static constexpr int FUNCTION_COLUMN
void addMessages(const std::list< yarp::yarpLogger::MessageEntry > &messages)
static constexpr int CMD_COLUMN
static constexpr int COMPONENT_COLUMN
static constexpr int LOCALTIMESTAMP_COLUMN
static constexpr int PID_COLUMN
static constexpr int LOGLEVEL_COLUMN
static constexpr int FILENAME_COLUMN
static constexpr int ARGS_COLUMN
void setColor(bool enabled)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
static constexpr int THREADID_COLUMN
static constexpr int HOSTNAME_COLUMN
static constexpr int NETWORKTIME_COLUMN
static constexpr int ID_COLUMN
static constexpr int EXTERNALTIME_COLUMN
void displayGrid(bool enabled)
void displayPid(bool enabled)
void displayLocalTimestamp(bool enabled)
void displaySystemTime(bool enabled)
void displayExternalTime(bool enabled)
void displayLine(bool enabled)
void displayYarprunTimestamp(bool enabled)
LogTab(yarp::yarpLogger::LoggerEngine *_theLogger, MessageWidget *_system_message, std::string _portName, QWidget *parent=0, int refreshRate=100)
void displayFunction(bool enabled)
void displayLogLevel(bool enabled)
LogSortFilterProxyModel * proxyModelButtons
void displayId(bool enabled)
void displayHostname(bool enabled)
void displayColors(bool enabled)
void displayFilename(bool enabled)
LogSortFilterProxyModel * proxyModelSearch
void displayCmd(bool enabled)
void displayArgs(bool enabled)
void displayThreadId(bool enabled)
void displayNetworkTime(bool enabled)
void displayComponent(bool enabled)
void get_messages_by_port_complete(std::string port, std::list< MessageEntry > &messages, bool from_beginning=false)