/* PIQt Utils - Qt utilites for PIP Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef pivaluetree_edit_H #define pivaluetree_edit_H #include "pivaluetree.h" #include "qad_piqt_utils_export.h" #include "qicon.h" #include "qmenu.h" #include #include class QGridLayout; class QToolButton; class PIVariantEdit; namespace Ui { class PIValueTreeEditArray; class PIValueTreeEditParameters; } // namespace Ui class QAD_PIQT_UTILS_EXPORT PIValueTreeEdit: public QWidget { Q_OBJECT public: PIValueTreeEdit(QWidget * parent = nullptr); ~PIValueTreeEdit(); enum TreeStyle { Label }; void setValue(const PIValueTree & v); PIValueTree value() const; bool isGroupingEnabled() const { return is_grouping; } void setGroupingEnabled(bool yes); bool isFullEditMode() const { return is_full_edit; } void setFullEditMode(bool yes); void rollback(); void clear(); private: void changeEvent(QEvent * e) override; void removeAll(); void build(); void applyValues() const; void actionTriggered(QToolButton * button, const PIString & vn, QAction * a); class GridWidgets: public QWidget { public: GridWidgets(Ui::PIValueTreeEditParameters * ui_); int rowCount() const { return row_count; } int getRow(QWidget * w) const; void removeRow(int index); void add(const PIValueTree & vt, QString label, QWidget * w, const QString & comment); void add(const PIValueTree & vt, QWidget * w); int beginRow(const PIValueTree & vt); void rename(QString prev_name, QString new_name); void clear(); bool create_edit_buttons = false; PIValueTreeEdit * parent; private: void simplify(); int row_count = 0; QGridLayout * lay = nullptr; QMenu conf_menu; QWidgetList widgets; QList labels; QIcon icon_conf; Ui::PIValueTreeEditParameters * ui_params; }; QWidget * widget_array = nullptr; QDialog * widget_params; PIStringList root_path; PIVector array_edits; PIMap value_edits; PIMap tree_edits; Ui::PIValueTreeEditArray * ui_array; Ui::PIValueTreeEditParameters * ui_params; GridWidgets * grid = nullptr; mutable PIValueTree source; int last_IDs_count = -1; bool is_grouping = true, is_full_edit = false; }; #endif