PIValueTreeEdit::Permissions feature

add designer plugin for PIValueTreeEdit
This commit is contained in:
2023-04-29 14:31:04 +03:00
parent ffd1bc7e0e
commit d38d624b51
10 changed files with 234 additions and 6 deletions

View File

@@ -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<QAction *>({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;