39 ,
public Nano::Observer
70 static constexpr int RowRole = Qt::UserRole + 1;
72 static constexpr int GroupRole = Qt::UserRole + 2;
75 static constexpr int SearchRole = Qt::UserRole + 3;
77 static constexpr int PortTypeRole = Qt::UserRole + 4;
86 const std::vector<ConnectionRow>& rows() const noexcept {
return m_rows; }
89 bool refreshPending() const noexcept {
return m_scheduled || m_dirty; }
91 QTreeView& view() const noexcept {
return *m_view; }
92 QLineEdit& searchField() const noexcept {
return *m_search; }
93 QComboBox& groupingBox() const noexcept {
return *m_grouping; }
94 QComboBox& kindBox() const noexcept {
return *m_kinds; }
97 int rowAt(
const QModelIndex& viewIndex)
const;
99 QModelIndex viewIndexOf(
int row)
const;
102 std::vector<int> selectedRows()
const;
104 std::vector<ConnectionRow> rowsAt(
const std::vector<int>& rows)
const;
106 void selectInDocument(
const std::vector<int>& rows);
108 void reveal(
const ConnectionRow& row);
116 void goToEnd(
int row,
bool from);
118 void removeConnections(
const std::vector<ConnectionRow>& rows);
120 void setCableType(
const std::vector<ConnectionRow>& rows, Process::CableType t);
122 void fillContextMenu(QMenu& menu,
int clickedRow);
129 void populate(
const ossia::hash_set<const QObject*>& selected);
130 ossia::hash_set<const QObject*> selectedObjects()
const;
137 void watchDocument();
138 void unwatchDocument();
139 void onViewSelectionChanged();
140 void contextMenu(
const QPoint& pos);
141 void showEvent(QShowEvent* ev)
override;
142 bool eventFilter(QObject* obj, QEvent* ev)
override;
148 bool alive() const noexcept {
return m_ctx && !m_document.isNull(); }
150 QPointer<const score::Document> m_document;
151 std::vector<ConnectionRow> m_rows;
153 std::vector<QStandardItem*> m_items;
155 ossia::hash_map<const QObject*, ossia::small_vector<int, 1>> m_rowsOf;
157 std::vector<std::pair<QStandardItem*, QString>> m_groups;
159 ossia::hash_set<QString> m_collapsed;
161 QLineEdit* m_search{};
162 QComboBox* m_grouping{};
163 QComboBox* m_kinds{};
165 QStandardItemModel* m_model{};
166 QSortFilterProxyModel* m_proxy{};
169 QObject* m_tracking{};
171 ossia::hash_set<QObject*> m_tracked;
172 std::vector<QMetaObject::Connection> m_documentConnections;
173 QPointer<QObject> m_watchedScenario;
177 bool m_syncingSelection{};
179 bool m_selectionPending{};
Definition DocumentContext.hpp:18