Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
# Created by Hannes Fritsche, SLSE, 2017-09-05
|
||||
#
|
||||
|
||||
SET(SRCS
|
||||
mainwindow.cpp
|
||||
mainwindow.h
|
||||
main.cpp
|
||||
message_model.cpp
|
||||
message_model.h
|
||||
ui/mainwindow.ui
|
||||
)
|
||||
|
||||
NGL_WRAP_UI(SRCS ui/mainwindow.ui)
|
||||
|
||||
NGL_ADD_EXECUTABLE(WS NO_TRANSLATION CnrProxyTester ${SRCS})
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(CnrProxyTester
|
||||
Qt5::Widgets
|
||||
Qt5::Core
|
||||
Qt5::WebSockets
|
||||
nglapplication
|
||||
LtsDataView
|
||||
LtsWidgets
|
||||
nglwidgets
|
||||
LtsPluginLoader
|
||||
StylePluginInterface
|
||||
LtsUtilsCoreHeaderOnly
|
||||
)
|
||||
|
||||
NGL_INSTALL_TARGET_DEVEL(CnrProxyTester)
|
||||
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hannes Fritsche, SLSE, 2017-09-06
|
||||
*/
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include <nglapplication/nglapplication.h>
|
||||
|
||||
#include <LtsPluginManager/lts_plugin_loader.h>
|
||||
#include <PluginInterfaces/style_plugin_interface.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
NGLApplication app(argc, argv);
|
||||
app.createLogger("CNR Proxy Tester");
|
||||
QCoreApplication::setApplicationName(QLatin1String("CNR Proxy Tester"));
|
||||
QCoreApplication::setOrganizationName(QLatin1String("RME"));
|
||||
|
||||
LtsPluginManager::LtsPluginLoader::getInstance()->loadPlugins(LtsPluginManager::PluginType::STYLE, nullptr
|
||||
, QStringList() << QStringLiteral("rme.light")); // load style plugin
|
||||
|
||||
|
||||
MainWindow w;
|
||||
w.show();
|
||||
|
||||
app.setQuitOnLastWindowClosed(true);
|
||||
|
||||
int retval = app.exec();
|
||||
|
||||
return retval;
|
||||
}
|
||||
Executable
+130
@@ -0,0 +1,130 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hannes Fritsche, SLSE, 2017-09-06
|
||||
*/
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include "message_model.h"
|
||||
#include <nglsettings/nglsettings_settings.h>
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QtWebSockets/QWebSocket>
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: NGLMainWindow(parent)
|
||||
, m_ui(new Ui::MainWindow)
|
||||
, m_socket(new QWebSocket(QString(), QWebSocketProtocol::Version13, this))
|
||||
, m_messageModel(new MessageModel(this))
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
setWindowTitle(QLatin1String("CNR Tester"));
|
||||
|
||||
connect(m_ui->pbConnect, &QPushButton::clicked,
|
||||
this, &MainWindow::onConnectClicked);
|
||||
connect(m_ui->pbDisconnect, &QPushButton::clicked,
|
||||
this, &MainWindow::onDisconnectClicked);
|
||||
connect(m_ui->pbGetPositionsCnr, &QPushButton::clicked,
|
||||
this, &MainWindow::onSendGetPositionsCnrClicked);
|
||||
connect(m_ui->pbSendError, &QPushButton::clicked,
|
||||
this, &MainWindow::onSendErrorClicked);
|
||||
connect(m_ui->pbSendGetConfigCnr, &QPushButton::clicked,
|
||||
this, &MainWindow::onSendGetConfigCnrClicked);
|
||||
connect(m_ui->pbSendGetEssentials, &QPushButton::clicked,
|
||||
this, &MainWindow::onSendGetEssentialsClicked);
|
||||
connect(m_socket, &QWebSocket::stateChanged,
|
||||
this, &MainWindow::onNewSocketState);
|
||||
connect(m_socket, &QWebSocket::textMessageReceived,
|
||||
this, &MainWindow::onNewTextMessageFromSocket);
|
||||
connect(m_ui->pbClearMessages, &QPushButton::clicked,
|
||||
m_messageModel, &MessageModel::clear);
|
||||
|
||||
m_ui->dvMessages->setModel(m_messageModel);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
delete m_ui;
|
||||
}
|
||||
|
||||
void MainWindow::onSendGetEssentialsClicked()
|
||||
{
|
||||
newMessageToServer(QLatin1String("getEssentials"));
|
||||
}
|
||||
|
||||
void MainWindow::onSendGetConfigCnrClicked()
|
||||
{
|
||||
newMessageToServer(QLatin1String("getConfigCNR"));
|
||||
}
|
||||
|
||||
void MainWindow::onSendGetPositionsCnrClicked()
|
||||
{
|
||||
int32_t repeat = m_ui->leCnrPosRepeat->text().toInt();
|
||||
|
||||
QJsonObject obj;
|
||||
|
||||
obj.insert(QLatin1String("repeat"), repeat);
|
||||
|
||||
newMessageToServer(QLatin1String("getPositionsCNR"), QUuid::createUuid().toString(), obj);
|
||||
}
|
||||
|
||||
void MainWindow::onSendErrorClicked()
|
||||
{
|
||||
QJsonObject obj;
|
||||
|
||||
obj.insert(QLatin1String("errorClass"), m_ui->leErrorClass->text().toInt());
|
||||
obj.insert(QLatin1String("errorMessage"), m_ui->leErrorMessage->text());
|
||||
obj.insert(QLatin1String("uuid"), m_ui->leErrorUuid->text());
|
||||
|
||||
newMessageToServer(QLatin1String("error"), QString(), obj);
|
||||
}
|
||||
|
||||
void MainWindow::onConnectClicked()
|
||||
{
|
||||
m_socket->open(QUrl(QStringLiteral("ws://%1:%2").arg(m_ui->leHost->text(), m_ui->lePort->text())));
|
||||
}
|
||||
|
||||
void MainWindow::onDisconnectClicked()
|
||||
{
|
||||
m_socket->close();
|
||||
}
|
||||
|
||||
void MainWindow::onNewSocketState(QAbstractSocket::SocketState state)
|
||||
{
|
||||
m_ui->lbState->setText(QVariant::fromValue(state).toString());
|
||||
|
||||
m_ui->pbConnect->setEnabled(state != QAbstractSocket::ConnectedState);
|
||||
m_ui->pbDisconnect->setEnabled(state == QAbstractSocket::ConnectedState);
|
||||
}
|
||||
|
||||
void MainWindow::onNewTextMessageFromSocket(const QString &message)
|
||||
{
|
||||
m_messageModel->addMessage(MessageModel::FROM_PROXY, message);
|
||||
}
|
||||
|
||||
void MainWindow::newMessageToServer(const QString &type, const QString &uuid, const QJsonObject &data)
|
||||
{
|
||||
if (!m_socket || m_socket->state() != QAbstractSocket::ConnectedState)
|
||||
return;
|
||||
|
||||
QJsonObject obj;
|
||||
|
||||
obj.insert(QLatin1String("type"), type);
|
||||
obj.insert(QLatin1String("data"), data);
|
||||
if (!uuid.isNull())
|
||||
obj.insert(QLatin1String("uuid"), uuid);
|
||||
|
||||
m_socket->sendTextMessage(QString::fromUtf8(QJsonDocument(obj).toJson()));
|
||||
m_messageModel->addMessage(MessageModel::TO_PROXY, type, uuid, obj.value(QLatin1String("data")).toString());
|
||||
}
|
||||
|
||||
void MainWindow::setVersionView()
|
||||
{
|
||||
return;
|
||||
// m_versionView = new VersionView(NGLSettings::instance(), tr("CNR Proxy Tester"), this);
|
||||
// connect(m_versionView, SIGNAL(destroyed()), this, SLOT(onVersionViewDeleted()), Qt::DirectConnection);
|
||||
}
|
||||
Executable
+54
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hannes Fritsche, SLSE, 2017-09-06
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <nglwidgets/nglmainwindow.h>
|
||||
#include <QJsonObject>
|
||||
#include <QUuid>
|
||||
#include <QtNetwork/QAbstractSocket>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
class QWebSocket;
|
||||
class MessageModel;
|
||||
|
||||
class MainWindow
|
||||
: public NGLMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
|
||||
private Q_SLOTS:
|
||||
void onSendGetEssentialsClicked();
|
||||
void onSendGetConfigCnrClicked();
|
||||
void onSendGetPositionsCnrClicked();
|
||||
void onSendErrorClicked();
|
||||
void onConnectClicked();
|
||||
void onDisconnectClicked();
|
||||
void onNewSocketState(QAbstractSocket::SocketState state);
|
||||
void onNewTextMessageFromSocket(const QString &message);
|
||||
|
||||
void setVersionView() override final;
|
||||
|
||||
|
||||
private: // methods
|
||||
void newMessageToServer(const QString &type, const QString &uuid = QUuid::createUuid().toString(), const QJsonObject &data = QJsonObject());
|
||||
|
||||
private: // attributes
|
||||
Ui::MainWindow *m_ui;
|
||||
QWebSocket *m_socket;
|
||||
MessageModel *m_messageModel;
|
||||
|
||||
};
|
||||
Executable
+112
@@ -0,0 +1,112 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* The MessageModel class handles message related data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hannes Fritsche, SLSE, 2017-09-06
|
||||
*/
|
||||
|
||||
#include "message_model.h"
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonArray>
|
||||
|
||||
MessageModel::MessageModel(QObject *parent)
|
||||
: LtsAbstractTableModel<MessageInfo>( { tr("Time"), tr("Direction"), tr("Type"), tr("UUID"), tr("Data") }, parent)
|
||||
{
|
||||
setData(QVector<MessageInfo>());
|
||||
}
|
||||
|
||||
void MessageModel::addMessage(MessageModel::MessageDirection direction, const QString &message)
|
||||
{
|
||||
QJsonParseError parseError;
|
||||
|
||||
QString uuid = QLatin1String("-");
|
||||
QString data = uuid;
|
||||
|
||||
QJsonDocument doc = QJsonDocument::fromJson(message.toLatin1(), &parseError);
|
||||
|
||||
QString type;
|
||||
|
||||
if (parseError.error != QJsonParseError::NoError)
|
||||
type = parseError.errorString();
|
||||
else if (!doc.isObject())
|
||||
type = QLatin1String("invalid");
|
||||
else
|
||||
{
|
||||
QJsonObject obj = doc.object();
|
||||
|
||||
type = obj.value(QLatin1String("type")).toString(QLatin1String("not present"));
|
||||
uuid = obj.value(QLatin1String("uuid")).toString(QLatin1String("not present"));
|
||||
|
||||
QJsonObject dataObj = obj.value(QLatin1String("data")).toObject();
|
||||
|
||||
if (dataObj.isEmpty())
|
||||
data = QLatin1String("not present");
|
||||
else
|
||||
data = QString::fromUtf8(QJsonDocument(dataObj).toJson());
|
||||
}
|
||||
|
||||
addMessage(direction, type, uuid, data);
|
||||
}
|
||||
|
||||
void MessageModel::addMessage(MessageModel::MessageDirection direction, const QString &type, const QString &uuid, const QString &data)
|
||||
{
|
||||
int32_t rows = rowCount();
|
||||
|
||||
onDataChanged({rows, toString(direction), type, uuid, data}, DataModification::eAdded);
|
||||
}
|
||||
|
||||
QVariant MessageModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
if (role != Qt::DisplayRole || !indexIsValid(index))
|
||||
return QVariant();
|
||||
|
||||
const MessageInfo &infoData = m_vecData.at(index.row());
|
||||
|
||||
switch (index.column())
|
||||
{
|
||||
case TIME:
|
||||
return infoData.time.toString();
|
||||
case DIRECTION:
|
||||
return infoData.direction;
|
||||
case TYPE:
|
||||
return infoData.type;
|
||||
case UUID:
|
||||
return infoData.uuid;
|
||||
case DATA:
|
||||
{
|
||||
if (!infoData.data.size())
|
||||
return infoData.data;
|
||||
|
||||
QJsonObject obj = QJsonDocument::fromJson(infoData.data.toLatin1()).object();
|
||||
QString result = infoData.data;
|
||||
const QStringList keys = obj.keys();
|
||||
|
||||
for (const QString ¤tKey : keys)
|
||||
{
|
||||
const QJsonValue subObj = obj.value(currentKey);
|
||||
if (subObj.isArray())
|
||||
result.prepend(QStringLiteral("%1 size: %2\n").arg(currentKey).arg(subObj.toArray().size()));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QString MessageModel::toString(MessageModel::MessageDirection direction) const
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case TO_PROXY:
|
||||
return tr(" > to Proxy");
|
||||
case FROM_PROXY:
|
||||
return tr(" < from Proxy");
|
||||
default:
|
||||
return QString();
|
||||
}
|
||||
}
|
||||
Executable
+79
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* The MessageModel class handles message related data
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Hannes Fritsche, SLSE, 2017-09-06
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LtsWidgets/lts_abstract_table_model.h>
|
||||
#include <QDateTime>
|
||||
|
||||
class QWebSocket;
|
||||
|
||||
struct MessageInfo
|
||||
{
|
||||
QDateTime time;
|
||||
int32_t idVal;
|
||||
QString direction;
|
||||
QString type;
|
||||
QString uuid;
|
||||
QString data;
|
||||
|
||||
MessageInfo(int32_t id, const QString &direction, const QString &type, const QString &uuid, const QString &data)
|
||||
: time(QDateTime::currentDateTime())
|
||||
, idVal(id)
|
||||
, direction(direction)
|
||||
, type(type)
|
||||
, uuid(uuid)
|
||||
, data(data)
|
||||
{}
|
||||
|
||||
MessageInfo()
|
||||
: time(QDateTime::currentDateTime())
|
||||
, idVal(-1)
|
||||
, direction(QLatin1String("-"))
|
||||
, type(QLatin1String("-"))
|
||||
, uuid(QLatin1String("-"))
|
||||
, data(QLatin1String("-"))
|
||||
{}
|
||||
|
||||
int32_t id() const { return idVal; }
|
||||
};
|
||||
|
||||
class MessageModel
|
||||
: public LtsWidgets::LtsAbstractTableModel<MessageInfo>
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum MessageDirection
|
||||
{
|
||||
TO_PROXY,
|
||||
FROM_PROXY
|
||||
};
|
||||
|
||||
enum Column
|
||||
{
|
||||
TIME,
|
||||
DIRECTION,
|
||||
TYPE,
|
||||
UUID,
|
||||
DATA
|
||||
};
|
||||
|
||||
MessageModel(QObject *parent = nullptr);
|
||||
|
||||
void addMessage(MessageDirection direction, const QString &message);
|
||||
void addMessage(MessageDirection direction, const QString &type, const QString &uuid, const QString &data);
|
||||
|
||||
QVariant data(const QModelIndex &index, int role) const override final;
|
||||
|
||||
private: // methods
|
||||
QString toString(MessageDirection direction) const;
|
||||
|
||||
public:
|
||||
};
|
||||
|
||||
Executable
+267
@@ -0,0 +1,267 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1101</width>
|
||||
<height>642</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Host:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="leHost">
|
||||
<property name="text">
|
||||
<string notr="true">localhost</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Port:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lePort">
|
||||
<property name="text">
|
||||
<string notr="true">2081</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Connection State:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="lbState">
|
||||
<property name="text">
|
||||
<string notr="true">-</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QPushButton" name="pbConnect">
|
||||
<property name="text">
|
||||
<string>Connect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QPushButton" name="pbDisconnect">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Disconnect</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="Line" name="line1">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Get Essentials Message</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="pbSendGetEssentials">
|
||||
<property name="text">
|
||||
<string>Send</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Get Config CNR</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="0" column="0">
|
||||
<widget class="QPushButton" name="pbSendGetConfigCnr">
|
||||
<property name="text">
|
||||
<string>Send</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Get Positions CNR</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Repeat:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="leCnrPosRepeat">
|
||||
<property name="text">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pbGetPositionsCnr">
|
||||
<property name="text">
|
||||
<string>Send</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QGroupBox" name="groupBox_4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Error Message</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_6">
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="leErrorUuid"/>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pbSendError">
|
||||
<property name="text">
|
||||
<string>Send</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Message:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="leErrorMessage"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>UUID:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="leErrorClass"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Error Class:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QGroupBox" name="groupBox_5">
|
||||
<property name="title">
|
||||
<string>Messages</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="LtsDataView::LtsDataView" name="dvMessages" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="pbClearMessages">
|
||||
<property name="text">
|
||||
<string>Clear Messages</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>LtsDataView::LtsDataView</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>LtsDataView/lts_data_view.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
Reference in new issue
Block a user