File indexing completed on 2025-02-02 04:11:26
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QAbstractProxyModel> 0010 0011 #include "model/document_node.hpp" 0012 #include "item_models/document_model_base.hpp" 0013 #include "custom_treeview.hpp" 0014 0015 0016 namespace glaxnimate::gui { 0017 0018 class LayerView : public CustomTreeView 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 LayerView(QWidget* parent = nullptr); 0024 ~LayerView(); 0025 0026 void set_base_model(item_models::DocumentModelBase* base_model); 0027 item_models::DocumentModelBase* base_model() const; 0028 void set_current_node(model::DocumentNode* node); 0029 model::VisualNode* node(const QModelIndex& index) const; 0030 model::VisualNode* current_node() const; 0031 0032 void set_composition(model::Composition* comp); 0033 0034 void replace_selection(model::VisualNode* node); 0035 void update_selection(const std::vector<model::VisualNode*>& selected, const std::vector<model::VisualNode*>& deselected); 0036 0037 Q_SIGNALS: 0038 void selection_changed(const std::vector<model::VisualNode*>& selected, const std::vector<model::VisualNode*>& deselected); 0039 void current_node_changed(model::VisualNode* node); 0040 0041 private: 0042 void on_selection_changed(const QItemSelection &selected, const QItemSelection &deselected); 0043 void on_current_node_changed(const QModelIndex& index); 0044 0045 protected: 0046 void mouseReleaseEvent(QMouseEvent * event) override; 0047 0048 private: 0049 class Private; 0050 std::unique_ptr<Private> d; 0051 }; 0052 0053 } // namespace glaxnimate::gui