- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung - 44 Export-Header Include-Pfade korrigiert (_export.h) - 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h) - INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros - Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits) - FATAL_LOG Makro hinzugefügt - InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h) - FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h) - AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp) - SymbolAppearance Klasse vollständig definiert mit content() Methode - BuildingComponentFilter Klasse definiert mit Copy-Konstruktor - Ftc Factory: nullptr Return (abstract class) - AesFilter Klasse in aes.hpp hinzugefügt - Dtc Klasse in ppm.hpp mit participantChanged Signal - AesType Enum: alle 15 At* Werte definiert - AesEffectState_def: EsReceived hinzugefügt - DataModification Enum: eAdded/eModified/eRemoved - function_reply_object.h → core_types.h Include-Pfad (72 Dateien) - Enum-Class-Streaming Template-Operator in INGLLogger.h - ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen - ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge - QRegExp → QRegularExpression in tpm_js_parser.cpp - .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert - Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
198 lines
4.4 KiB
C++
Executable File
198 lines
4.4 KiB
C++
Executable File
|
|
|
|
|
|
#pragma once
|
|
#include <QObject>
|
|
|
|
#include "ltswidgets_export.h"
|
|
#include "lts_message_dialog.h"
|
|
|
|
#include <QWidget>
|
|
#include <QPushButton>
|
|
|
|
namespace Ui
|
|
{
|
|
class LtsDialogButtonBox;
|
|
}
|
|
|
|
namespace LtsWidgets
|
|
{
|
|
enum class DialogButton
|
|
{
|
|
|
|
ReadOnly,
|
|
Ok,
|
|
Apply,
|
|
Close,
|
|
Yes,
|
|
No,
|
|
|
|
|
|
Remove,
|
|
Hide,
|
|
Add,
|
|
Help,
|
|
Edit,
|
|
Save,
|
|
Load,
|
|
Show,
|
|
Import,
|
|
Export,
|
|
CenterMap,
|
|
ZoomMapTo,
|
|
Library,
|
|
Print,
|
|
|
|
#ifdef LTS_DEBUG
|
|
_debug_,
|
|
#endif
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LTSWIDGETS_EXPORT LtsDialogButtonBox : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit LtsDialogButtonBox(QWidget *parent);
|
|
~LtsDialogButtonBox();
|
|
|
|
|
|
|
|
template <typename Func2>
|
|
void connectButton(DialogButton button, const typename QtPrivate::FunctionPointer<Func2>::Object *receiver,
|
|
Func2 slot, Qt::ConnectionType type = Qt::AutoConnection)
|
|
{
|
|
|
|
{
|
|
switch (button)
|
|
{
|
|
#ifdef LTS_DEBUG
|
|
case DialogButton::_debug_:
|
|
#endif
|
|
case DialogButton::Close:
|
|
case DialogButton::Ok:
|
|
case DialogButton::ReadOnly:
|
|
case DialogButton::Apply:
|
|
case DialogButton::Help:
|
|
{
|
|
LtsMessageDialog::showMessage(this,
|
|
QStringLiteral("Bitte den fuer das Plugin verantwortlichen kontaktieren:<br />"
|
|
"m_buttonBox nicht mit Ok, Apply, Help, _debug_ oder Close verbinden<br />"
|
|
"Note: Bitte nur m_buttonBox verwenden, keine LtsDialogButtonBox selber erstellen"
|
|
"Ok & Apply werden automatisch zur virtual Methode 'apply()' im LtsDialog weitergeleitet.<br />"
|
|
"Close schließt einfach den Dialog - im Destruktor oder in 'aboutToClose()' ist der 'Close Code' gut aufgehoben.<br />"
|
|
"<br />"
|
|
"FIXEN !!!!!"),
|
|
QStringLiteral("--- STOP --- !!! FIXEN !!! ---"));
|
|
break;
|
|
}
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
QPushButton *theSender = getButton(button);
|
|
|
|
if (!theSender)
|
|
return;
|
|
|
|
|
|
switch (button)
|
|
{
|
|
case DialogButton::Remove:
|
|
{
|
|
connect(this, &LtsDialogButtonBox::signalRemoveClicked, receiver, slot, type);
|
|
connect(theSender, &QPushButton::clicked, this, &LtsDialogButtonBox::slotRemoveClicked);
|
|
|
|
break;
|
|
}
|
|
case DialogButton::Export:
|
|
case DialogButton::Import:
|
|
{
|
|
if (m_isTablet)
|
|
{
|
|
theSender->setVisible(false);
|
|
return;
|
|
}
|
|
Q_FALLTHROUGH();
|
|
}
|
|
default:
|
|
connect(theSender, &QPushButton::clicked, receiver, slot, type);
|
|
break;
|
|
}
|
|
|
|
setButtonsVisible(theSender);
|
|
}
|
|
template <typename Func1, typename Func2>
|
|
bool connectLibraryButton(const typename QtPrivate::FunctionPointer<Func2>::Object *receiver,
|
|
Func1 slotLoad,
|
|
Func2 slotSave,
|
|
Qt::ConnectionType type = Qt::AutoConnection)
|
|
{
|
|
QPushButton *theSender = getButton(DialogButton::Library);
|
|
if (!theSender)
|
|
return false;
|
|
if (m_isTablet)
|
|
{
|
|
theSender->setVisible(false);
|
|
return true;
|
|
}
|
|
setButtonsVisible(theSender);
|
|
type = static_cast<Qt::ConnectionType>(type | Qt::UniqueConnection);
|
|
return (connect(this, &LtsDialogButtonBox::signalLibraryLoadClicked, receiver, slotLoad, type) &&
|
|
connect(this, &LtsDialogButtonBox::signalLibrarySaveClicked, receiver, slotSave, type));
|
|
}
|
|
|
|
|
|
|
|
void setText(DialogButton button, const QString &text);
|
|
|
|
void setToolTip(DialogButton button, const QString &text);
|
|
void setIcon(DialogButton button, const QIcon &icon);
|
|
void setMenu(DialogButton button, QMenu *menu);
|
|
|
|
|
|
|
|
void setButtonEnabled(DialogButton button, bool enabled = true);
|
|
bool isButtonEnabled(DialogButton button) const;
|
|
|
|
void setButtonVisible(DialogButton button, bool visible = true);
|
|
bool isButtonVisible(DialogButton button) const;
|
|
|
|
|
|
|
|
QPushButton *getButton(DialogButton button) const;
|
|
|
|
|
|
|
|
void _setVisibilityForAll(bool visible);
|
|
|
|
signals:
|
|
void signalRemoveClicked();
|
|
void signalHelpClicked();
|
|
void signalLibraryLoadClicked();
|
|
void signalLibrarySaveClicked();
|
|
|
|
private slots:
|
|
void slotRemoveClicked();
|
|
|
|
private:
|
|
const bool m_isTablet;
|
|
|
|
|
|
|
|
void setButtonsVisible(QPushButton *pb);
|
|
|
|
Ui::LtsDialogButtonBox *m_ui;
|
|
};
|
|
|
|
}
|