From d38d624b51f0981e4097c807f8cb115211045c6b Mon Sep 17 00:00:00 2001 From: peri4 Date: Sat, 29 Apr 2023 14:31:04 +0300 Subject: [PATCH] PIValueTreeEdit::Permissions feature add designer plugin for PIValueTreeEdit --- icons/valuetreeeditor.png | Bin 0 -> 24496 bytes libs/piqt_utils/pivaluetree_edit.cpp | 45 +++++++++++ libs/piqt_utils/pivaluetree_edit.h | 42 ++++++++++- .../piqt_utils/pivaluetree_edit_parameters.ui | 4 +- libs/piqt_utils/plugin/CMakeLists.txt | 1 + .../plugin/pivaluetree_edit_plugin.cpp | 70 ++++++++++++++++++ .../plugin/pivaluetree_edit_plugin.h | 36 +++++++++ libs/piqt_utils/plugin/qad_piqt_utils.cpp | 17 +++++ libs/piqt_utils/plugin/qad_piqt_utils.h | 24 ++++++ libs/piqt_utils/qad_piqt_widgets.qrc | 1 + 10 files changed, 234 insertions(+), 6 deletions(-) create mode 100644 icons/valuetreeeditor.png create mode 100644 libs/piqt_utils/plugin/CMakeLists.txt create mode 100644 libs/piqt_utils/plugin/pivaluetree_edit_plugin.cpp create mode 100644 libs/piqt_utils/plugin/pivaluetree_edit_plugin.h create mode 100644 libs/piqt_utils/plugin/qad_piqt_utils.cpp create mode 100644 libs/piqt_utils/plugin/qad_piqt_utils.h diff --git a/icons/valuetreeeditor.png b/icons/valuetreeeditor.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc306574ca3cc682a47f13ebd7c9fb16202846c GIT binary patch literal 24496 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 hq2Q>#M;FL6v#8(?exDvyfZTS-#L&{Y>EH? literal 0 HcmV?d00001 diff --git a/libs/piqt_utils/pivaluetree_edit.cpp b/libs/piqt_utils/pivaluetree_edit.cpp index 5354136..ae02018 100644 --- a/libs/piqt_utils/pivaluetree_edit.cpp +++ b/libs/piqt_utils/pivaluetree_edit.cpp @@ -122,6 +122,18 @@ void PIValueTreeEdit::setReadOnly(bool yes) { } +void PIValueTreeEdit::setPermissions(Permissions p) { + perm = p; + applyPermissions(); +} + + +void PIValueTreeEdit::setPermission(Permission p, bool on) { + perm.setFlag(p, on); + applyPermissions(); +} + + void PIValueTreeEdit::rollback() { current = source; build(); @@ -261,6 +273,38 @@ void PIValueTreeEdit::applyValues() const { } +void PIValueTreeEdit::applyPermissions() { + auto * wp = widget_params; + wp->actionValue->setVisible(perm.testFlag(AddValue)); + wp->actionGroup->setVisible(perm.testFlag(AddGroup)); + wp->actionArray->setVisible(perm.testFlag(AddArray)); + wp->actionCut->setVisible(perm.testFlag(CanCut)); + wp->actionCopy->setVisible(perm.testFlag(CanCopy)); + wp->actionPaste->setVisible(perm.testFlag(CanPaste)); + wp->actionPasteAfter->setVisible(perm.testFlag(CanPaste)); + wp->actionPasteBefore->setVisible(perm.testFlag(CanPaste)); + wp->checkHidden->setVisible(perm.testFlag(ChangeHidden)); + wp->checkLabel->setVisible(perm.testFlag(ChangeLabel)); + wp->checkReadOnly->setVisible(perm.testFlag(ChangeReadOnly)); + wp->lineComment->setVisible(perm.testFlag(ChangeComment)); + wp->labelComment->setVisible(perm.testFlag(ChangeComment)); + wp->comboType->setVisible(perm.testFlag(ChangeType)); + wp->labelType->setVisible(perm.testFlag(ChangeType)); + wp->menu_grouping.menuAction()->setVisible(perm.testFlag(ChangeGrouping)); + wp->actionRename->setVisible(perm.testFlag(CanRename)); + wp->actionRemove->setVisible(perm.testFlag(CanRemove)); + wp->actionReorder->setVisible(perm.testFlag(CanReorder)); + for (auto * c: {wp->checkHidden, wp->checkLabel, wp->checkReadOnly}) + if (!c->isEnabled()) c->setChecked(false); + grid->button_add->setVisible( + PIVector({wp->actionValue, wp->actionGroup, wp->actionArray, wp->actionPaste}).any([](QAction * a) { + return a->isVisible(); + })); + for (auto c: tree_edits) + c.second->setPermissions(perm); +} + + void PIValueTreeEdit::actionRename(QToolButton * button, const PIString & vn) { PIString nn = Q2PIString(QInputDialog::getText(nullptr, tr("Rename"), tr("Input new name:"), QLineEdit::Normal, PI2QString(vn))); if (nn.isEmpty() || (nn == vn)) return; @@ -475,6 +519,7 @@ PIValueTreeEdit * PIValueTreeEdit::addTreeEdit(const PIValueTree & vt) { ve->m_read_only = m_read_only; ve->setGrouping((Grouping)vt.attribute(Attribute::grouping, PIVariantEditorBase::createGrouping()).toEnum().selectedValue()); ve->setFullEditMode(is_full_edit); + ve->setPermissions(permissions()); ve->setValue(vt); switch (cur_grouping) { case Indent: grid->add(vt, vt.name(), ve, vt.comment(), true); break; diff --git a/libs/piqt_utils/pivaluetree_edit.h b/libs/piqt_utils/pivaluetree_edit.h index 28c724c..1b76f69 100644 --- a/libs/piqt_utils/pivaluetree_edit.h +++ b/libs/piqt_utils/pivaluetree_edit.h @@ -40,7 +40,10 @@ class PIValueTreeEditArray; class QAD_PIQT_UTILS_EXPORT PIValueTreeEdit: public QWidget { Q_OBJECT - Q_ENUMS(Grouping) + Q_PROPERTY(Grouping grouping READ grouping WRITE setGrouping) + Q_PROPERTY(bool fullEditMode READ isFullEditMode WRITE setFullEditMode) + Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly) + Q_PROPERTY(Permissions permissions READ permissions WRITE setPermissions) public: PIValueTreeEdit(QWidget * parent = nullptr); @@ -51,17 +54,46 @@ public: Groups, Tabs }; + Q_ENUM(Grouping) + + enum Permission { + AddValue = 0x1, + AddGroup = 0x2, + AddArray = 0x4, + ChangeHidden = 0x8, + ChangeLabel = 0x10, + ChangeReadOnly = 0x20, + ChangeComment = 0x40, + ChangeType = 0x80, + ChangeGrouping = 0x100, + CanCut = 0x200, + CanCopy = 0x400, + CanPaste = 0x800, + CanRename = 0x1000, + CanRemove = 0x2000, + CanReorder = 0x4000, + PermissionsAll = 0xFFFFFFFF + }; + Q_ENUM(Permission) + Q_DECLARE_FLAGS(Permissions, Permission) + Q_FLAG(Permissions) void setValue(const PIValueTree & v); PIValueTree value() const; Grouping grouping() const { return cur_grouping; } void setGrouping(Grouping g); + bool isFullEditMode() const { return is_full_edit; } void setFullEditMode(bool yes); + bool isReadOnly() const { return m_read_only; } void setReadOnly(bool yes); + Permissions permissions() const { return perm; } + void setPermissions(Permissions p); + void setPermission(Permission p, bool on); + void setAllowedNamesFunction(std::function f) { allowed_names = f; } void setValueForNameFunction(std::function f) { value_by_name = f; } @@ -81,6 +113,7 @@ private: void removeAll(); void build(); void applyValues() const; + void applyPermissions(); void actionRename(QToolButton * button, const PIString & vn); void actionRemove(QToolButton * button, const PIString & vn); void actionChange(QToolButton * button, const PIString & vn); @@ -145,10 +178,11 @@ private: PIMap value_edits; PIMap tree_edits; PIMap comm_labels, label_labels; - QTabWidget * tab_widget = nullptr; + QTabWidget * tab_widget = nullptr; Ui::PIValueTreeEditArray * ui_array = nullptr; - GridWidgets * grid = nullptr; - Grouping cur_grouping = Groups; + GridWidgets * grid = nullptr; + Grouping cur_grouping = Groups; + Permissions perm = PermissionsAll; mutable PIValueTree source, current; bool is_full_edit = false, m_read_only = false; std::function allowed_names; diff --git a/libs/piqt_utils/pivaluetree_edit_parameters.ui b/libs/piqt_utils/pivaluetree_edit_parameters.ui index 74f2466..90d46ab 100644 --- a/libs/piqt_utils/pivaluetree_edit_parameters.ui +++ b/libs/piqt_utils/pivaluetree_edit_parameters.ui @@ -38,7 +38,7 @@ - + Type: @@ -48,7 +48,7 @@ - + Comment: diff --git a/libs/piqt_utils/plugin/CMakeLists.txt b/libs/piqt_utils/plugin/CMakeLists.txt new file mode 100644 index 0000000..a9ecba7 --- /dev/null +++ b/libs/piqt_utils/plugin/CMakeLists.txt @@ -0,0 +1 @@ +qad_plugin(piqt_utils "Gui;Widgets" "") diff --git a/libs/piqt_utils/plugin/pivaluetree_edit_plugin.cpp b/libs/piqt_utils/plugin/pivaluetree_edit_plugin.cpp new file mode 100644 index 0000000..a257051 --- /dev/null +++ b/libs/piqt_utils/plugin/pivaluetree_edit_plugin.cpp @@ -0,0 +1,70 @@ +#include "pivaluetree_edit_plugin.h" + +#include "pivaluetree_edit.h" + +#include + + +PIValueTreeEditPlugin::PIValueTreeEditPlugin(QObject * parent): QObject(parent) { + m_initialized = m_designer = false; +} + + +void PIValueTreeEditPlugin::initialize(QDesignerFormEditorInterface * /* core */) { + m_designer = true; + if (m_initialized) return; + + // Add extension registrations, etc. here + + m_initialized = true; +} + + +bool PIValueTreeEditPlugin::isInitialized() const { + return m_initialized; +} + + +QWidget * PIValueTreeEditPlugin::createWidget(QWidget * parent) { + return new PIValueTreeEdit(parent); +} + + +QString PIValueTreeEditPlugin::name() const { + return QLatin1String("PIValueTreeEdit"); +} + + +QString PIValueTreeEditPlugin::group() const { + return QLatin1String("Editor Widgets"); +} + + +QIcon PIValueTreeEditPlugin::icon() const { + return QIcon(":/icons/valuetreeeditor.png"); +} + + +QString PIValueTreeEditPlugin::toolTip() const { + return QLatin1String(""); // QLatin1String("Widget for display any math graphics with grid and navigation"); +} + + +QString PIValueTreeEditPlugin::whatsThis() const { + return QLatin1String(""); +} + + +bool PIValueTreeEditPlugin::isContainer() const { + return false; +} + + +QString PIValueTreeEditPlugin::domXml() const { + return QLatin1String("\n\n"); +} + + +QString PIValueTreeEditPlugin::includeFile() const { + return QLatin1String("pivaluetree_edit.h"); +} diff --git a/libs/piqt_utils/plugin/pivaluetree_edit_plugin.h b/libs/piqt_utils/plugin/pivaluetree_edit_plugin.h new file mode 100644 index 0000000..9128818 --- /dev/null +++ b/libs/piqt_utils/plugin/pivaluetree_edit_plugin.h @@ -0,0 +1,36 @@ +#ifndef pivaluetree_edit_plugin_H +#define pivaluetree_edit_plugin_H + +#include +#if QT_VERSION >= 0x050000 +# include +#else +# include +#endif + +class PIValueTreeEditPlugin + : public QObject + , public QDesignerCustomWidgetInterface { + Q_OBJECT + Q_INTERFACES(QDesignerCustomWidgetInterface) + +public: + PIValueTreeEditPlugin(QObject * parent = 0); + + bool isContainer() const; + bool isInitialized() const; + QIcon icon() const; + QString domXml() const; + QString group() const; + QString includeFile() const; + QString name() const; + QString toolTip() const; + QString whatsThis() const; + QWidget * createWidget(QWidget * parent); + void initialize(QDesignerFormEditorInterface * core); + +private: + bool m_initialized, m_designer; +}; + +#endif diff --git a/libs/piqt_utils/plugin/qad_piqt_utils.cpp b/libs/piqt_utils/plugin/qad_piqt_utils.cpp new file mode 100644 index 0000000..ba999e3 --- /dev/null +++ b/libs/piqt_utils/plugin/qad_piqt_utils.cpp @@ -0,0 +1,17 @@ +#include "qad_piqt_utils.h" + +#include "pivaluetree_edit_plugin.h" + +QADPiQtUtils::QADPiQtUtils(QObject * parent): QObject(parent) { + m_widgets.append(new PIValueTreeEditPlugin(this)); +} + + +QList QADPiQtUtils::customWidgets() const { + return m_widgets; +} + + +#if QT_VERSION < 0x050000 +Q_EXPORT_PLUGIN2(qad_piqt_utils_plugin, QADPiQtUtils) +#endif diff --git a/libs/piqt_utils/plugin/qad_piqt_utils.h b/libs/piqt_utils/plugin/qad_piqt_utils.h new file mode 100644 index 0000000..28189b3 --- /dev/null +++ b/libs/piqt_utils/plugin/qad_piqt_utils.h @@ -0,0 +1,24 @@ +#ifndef qad_piqt_utils_H +#define qad_piqt_utils_H + +#include +#include + +class QADPiQtUtils + : public QObject + , public QDesignerCustomWidgetCollectionInterface { + Q_OBJECT + Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "qad.piqt_utils") +#endif + +public: + explicit QADPiQtUtils(QObject * parent = 0); + virtual QList customWidgets() const; + +private: + QList m_widgets; +}; + +#endif diff --git a/libs/piqt_utils/qad_piqt_widgets.qrc b/libs/piqt_utils/qad_piqt_widgets.qrc index 98468f6..21dc5bf 100644 --- a/libs/piqt_utils/qad_piqt_widgets.qrc +++ b/libs/piqt_utils/qad_piqt_widgets.qrc @@ -13,5 +13,6 @@ ../../icons/document-edit.png ../../icons/layer-visible-off.png ../../icons/layer-visible-on.png + ../../icons/valuetreeeditor.png