Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

@@ -0,0 +1,109 @@
/**
* @RDE_HEADER@
* plugin manager dialog
* $Id$
* $HeadURL$
* $Author$
*
* Created by Mike Wille, SLSE, 2016-07-07
*/
#include "lts_plugin_manager_dialog.h"
#include "lts_plugin_manager_widget.h"
#include "ui_lts_plugin_manager_dialog.h"
#include "../lts_plugin_manager.h"
#include <QCoreApplication>
#include <QString>
#include <QDebug>
namespace LtsPluginManager
{
LtsPluginManagerDialog::LtsPluginManagerDialog(QWidget *parent)
: QDialog(parent)
, m_ui(new Ui::LtsPluginManagerDialog)
{
m_ui->setupUi(this);
// master splitter stretch
m_ui->masterSplitter->setStretchFactor(m_ui->masterSplitter->indexOf(m_ui->pluginsWidget), 20);
m_ui->masterSplitter->setStretchFactor(m_ui->masterSplitter->indexOf(m_ui->lwErrorLog), 0);
}
LtsPluginManagerDialog::~LtsPluginManagerDialog()
{
delete m_ui;
}
void LtsPluginManagerDialog::setServiceMissing(const QString &newPluginFilename, const QString &missingPluginName)
{
m_ui->lwErrorLog->addItem(tr("ERROR: Plugin '%1' needs the plugin '%2', which is not available!").arg(newPluginFilename, missingPluginName));
getPluginWidget(newPluginFilename)->setStatus(LtsPluginWidget::MISSING_SERVICE);
if (!isVisible())
show();
QCoreApplication::processEvents();
}
void LtsPluginManagerDialog::setOptionalServiceMissing(const QString &newPluginFilename, const QString &missingPluginName)
{
m_ui->lwErrorLog->addItem(tr("INFO: Plugin %1 asked for plugin %2, which is not available!").arg(newPluginFilename, missingPluginName));
if (!isVisible())
show();
QCoreApplication::processEvents();
}
void LtsPluginManagerDialog::setInvalidPlugin(const QString &newPluginFilename)
{
m_ui->lwErrorLog->addItem(tr("INFO: Invalid plugin '%1'").arg(newPluginFilename));
}
LtsPluginWidget *LtsPluginManagerDialog::getPluginWidget(const QString &filename)
{
LtsPluginWidget *pluginWidget = findChild<LtsPluginWidget *>(filename); // find existing plugin widget and change its status
if (!pluginWidget)
{
pluginWidget = new LtsPluginWidget(filename);
pluginWidget->setObjectName(filename);
qobject_cast<QHBoxLayout *>(m_ui->pluginsWidget->layout())->insertWidget(0, pluginWidget);
}
return pluginWidget;
}
void LtsPluginManagerDialog::setPluginLogStatus(const QString &filename, const LtsPluginWidget::Status &status)
{
getPluginWidget(filename)->setStatus(status);
QCoreApplication::processEvents();
}
void LtsPluginManagerDialog::setPluginLogType(const QString &filename, const QString &type)
{
getPluginWidget(filename)->setType(type);
QCoreApplication::processEvents();
}
void LtsPluginManagerDialog::setPluginLogIdent(const QString &filename, const QString &ident)
{
getPluginWidget(filename)->setIdent(ident);
QCoreApplication::processEvents();
}
} // namespace LtsPluginManager
+45
View File
@@ -0,0 +1,45 @@
/**
* @RDE_HEADER@
* plugin manager dialog
* $Id$
* $HeadURL$
* $Author$
*
* Created by Mike Wille, SLSE, 2016-07-07
*/
#pragma once
#include <LtsPluginManager/lts_plugin_manager_export.h>
#include "lts_plugin_manager_widget.h"
#include <QDialog>
namespace Ui
{
class LtsPluginManagerDialog;
}
namespace LtsPluginManager
{
class LTSPLUGINMANAGER_EXPORT LtsPluginManagerDialog : public QDialog
{
Q_OBJECT
public:
explicit LtsPluginManagerDialog(QWidget *parent = nullptr);
~LtsPluginManagerDialog();
void setServiceMissing(const QString &newPluginFilename, const QString &missingPluginName);
void setOptionalServiceMissing(const QString &newPluginFilename, const QString &missingPluginName);
void setInvalidPlugin(const QString &newPluginFilename);
void setPluginLogStatus(const QString &filename, const LtsPluginWidget::Status &status);
void setPluginLogType(const QString &filename, const QString &type);
void setPluginLogIdent(const QString &filename, const QString &ident);
private:
Ui::LtsPluginManagerDialog *m_ui;
LtsPluginWidget *getPluginWidget(const QString &filename);
};
} // namespace LtsPluginManager
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LtsPluginManagerDialog</class>
<widget class="QWidget" name="LtsPluginManagerDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>492</width>
<height>342</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QSplitter" name="masterSplitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QWidget" name="pluginsWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>250</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>493</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QListWidget" name="lwErrorLog">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
@@ -0,0 +1,137 @@
/**
* @RDE_HEADER@
* plugin manager widget
* $Id$
* $HeadURL$
* $Author$
*
* Created by Mike Wille, SLSE, 2016-07-07
*/
#include "lts_plugin_manager_widget.h"
#include "ui_lts_plugin_manager_widget.h"
using namespace LtsPluginManager;
LtsPluginWidget::LtsPluginWidget(const QString &filename, QWidget *parent)
: QWidget(parent)
, m_ui(new Ui::LtsPluginWidget)
{
m_ui->setupUi(this);
m_ui->leFilename->setText(filename);
setStatus(UNKNOWN);
setType();
setIdent();
// not impl yet
m_ui->lbGuiPlugins->hide();
m_ui->lbDtc->hide();
m_ui->lwDtcs->hide();
m_ui->lbFtc->hide();
m_ui->lwFtcs->hide();
}
LtsPluginWidget::~LtsPluginWidget()
{
delete m_ui;
}
void LtsPluginWidget::setStatus(Status status)
{
QString statusText;
switch (status)
{
case INVALID: // not a DataPlugin: not a GuiPlugin
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(189, 106, 98);"));
statusText = tr("Invalid");
break;
}
case LOADED: // valid and loaded and probably used
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(124, 189, 124);"));
statusText = tr("Loaded");
break;
}
case CONFLICT: // conflicting with other plugin(s), was unloaded for safety
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(189, 106, 98);"));
statusText = tr("CONFLICT!");
break;
}
case UNLOADED: // unloaded by user
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(100, 100, 100);"));
statusText = tr("Unloaded");
break;
}
case INIT_FAILED: // init() has failed on the plugin
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(189, 106, 98);"));
statusText = tr("INIT FAILED!");
break;
}
case MISSING_SERVICE: // service is requiered that is not available
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(189, 106, 98);"));
statusText = tr("MISSING SERVICE!");
break;
}
case OBLIBATORY_INTERFACES_MISSING: // some plugins did not pronounce their interfaces
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(189, 106, 98);"));
statusText = tr("OBLIGATORY INTERFACES MISSING!");
break;
}
case INVALID_PLUGIN_VERSION: // plugin manager not compatible
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(189, 106, 98);"));
statusText = tr("INVALID PLUGIN VERSION!");
break;
}
default:
{
m_ui->frStatus->setStyleSheet(QLatin1String("background-color: rgb(100, 100, 100);"));
statusText = tr("Unknown (%1)").arg(status);
break;
}
}
m_ui->leStatus->setText(statusText);
}
void LtsPluginWidget::setType(const QString &type)
{
if (type.isEmpty())
{
m_ui->leType->hide();
m_ui->lbType->hide();
}
else
{
m_ui->leType->show();
m_ui->lbType->show();
m_ui->leType->setText(type);
}
}
void LtsPluginWidget::setIdent(const QString &ident)
{
if (ident.isEmpty())
{
m_ui->leIdent->hide();
m_ui->lbIdent->hide();
}
else
{
m_ui->leIdent->show();
m_ui->lbIdent->show();
m_ui->leIdent->setText(ident);
}
}
+52
View File
@@ -0,0 +1,52 @@
/**
* @RDE_HEADER@
* plugin manager widget
* $Id$
* $HeadURL$
* $Author$
*
* Created by Mike Wille, SLSE, 2016-07-07
*/
#pragma once
#include <lts_plugin_manager.h>
#include <QWidget>
namespace Ui
{
class LtsPluginWidget;
}
namespace LtsPluginManager
{
class LtsPluginWidget : public QWidget
{
Q_OBJECT
public:
enum Status
{
UNKNOWN = 0, // not a real status, more like an error
INVALID, // not a DataPlugin, not a GuiPlugin
LOADED, // valid and loaded and probably used
CONFLICT, // conflicting with other plugin(s), was unloaded for safety
UNLOADED, // unloaded by user
INIT_FAILED, // init() has failed on the plugin
MISSING_SERVICE, // service is requiered that is not available
OBLIBATORY_INTERFACES_MISSING, // some plugins did not pronounce their interfaces
INVALID_PLUGIN_VERSION, // plugin manager not compatible
};
explicit LtsPluginWidget(const QString &filename, QWidget *parent = nullptr);
~LtsPluginWidget();
void setStatus(Status status);
void setType(const QString &type = QString());
void setIdent(const QString &ident = QString());
private:
Ui::LtsPluginWidget *m_ui;
};
} // namespace LtsPluginManager
+196
View File
@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LtsPluginWidget</class>
<widget class="QWidget" name="LtsPluginWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>481</width>
<height>580</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QFrame" name="frStatus">
<property name="minimumSize">
<size>
<width>15</width>
<height>60</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>15</width>
<height>60</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="1">
<widget class="QLineEdit" name="leFilename">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbFilename">
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbType">
<property name="text">
<string>Type:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbStatus">
<property name="text">
<string>Status:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbIdent">
<property name="text">
<string>Ident:</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="lbGuiPlugins">
<property name="text">
<string>Gui Plugins:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QWidget" name="guiPluginsWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout"/>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="leStatus">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="leType">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="leIdent">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="lbDtc">
<property name="text">
<string>Foreign Data Topic Clients:</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="lbFtc">
<property name="text">
<string>Foreign Function Topic Clients:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QListWidget" name="lwDtcs">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QListWidget" name="lwFtcs">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>