PIValueTreeEdit::Permissions feature
add designer plugin for PIValueTreeEdit
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user