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

@@ -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<PIStringList()> f) { allowed_names = f; }
void setValueForNameFunction(std::function<PIVariant(PIString)> 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<PIString, PIVariantEdit *> value_edits;
PIMap<PIString, PIValueTreeEdit *> tree_edits;
PIMap<PIString, QLabel *> 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<PIStringList()> allowed_names;