Added hover on properties as well, fixes #64
This commit is contained in:
parent
ad84df7974
commit
28e30b2af0
@ -82,6 +82,7 @@ public:
|
|||||||
|
|
||||||
void slotCollapsed(const QModelIndex &index);
|
void slotCollapsed(const QModelIndex &index);
|
||||||
void slotExpanded(const QModelIndex &index);
|
void slotExpanded(const QModelIndex &index);
|
||||||
|
void onHoverPropertyChanged(QtBrowserItem *item);
|
||||||
|
|
||||||
QColor calculatedBackgroundColor(QtBrowserItem *item) const;
|
QColor calculatedBackgroundColor(QtBrowserItem *item) const;
|
||||||
|
|
||||||
@ -129,12 +130,17 @@ public:
|
|||||||
{ return itemFromIndex(index); }
|
{ return itemFromIndex(index); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void mouseMoveEvent(QMouseEvent *event) override;
|
||||||
|
void leaveEvent(QEvent *event) override;
|
||||||
void keyPressEvent(QKeyEvent *event);
|
void keyPressEvent(QKeyEvent *event);
|
||||||
void mousePressEvent(QMouseEvent *event);
|
void mousePressEvent(QMouseEvent *event);
|
||||||
void drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
void drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void hoverPropertyChanged(QtBrowserItem *item);
|
||||||
private:
|
private:
|
||||||
QtTreePropertyBrowserPrivate *m_editorPrivate;
|
QtTreePropertyBrowserPrivate *m_editorPrivate;
|
||||||
|
QModelIndex current;
|
||||||
};
|
};
|
||||||
|
|
||||||
QtPropertyEditorView::QtPropertyEditorView(QWidget *parent) :
|
QtPropertyEditorView::QtPropertyEditorView(QWidget *parent) :
|
||||||
@ -172,6 +178,21 @@ void QtPropertyEditorView::drawRow(QPainter *painter, const QStyleOptionViewItem
|
|||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtPropertyEditorView::mouseMoveEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
QModelIndex index = indexAt(event->pos());
|
||||||
|
if (index!=current) {
|
||||||
|
current = index;
|
||||||
|
Q_EMIT hoverPropertyChanged(m_editorPrivate->indexToBrowserItem(index));
|
||||||
|
}
|
||||||
|
QTreeWidget::mouseMoveEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void QtPropertyEditorView::leaveEvent(QEvent *event)
|
||||||
|
{
|
||||||
|
Q_EMIT hoverPropertyChanged(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
void QtPropertyEditorView::keyPressEvent(QKeyEvent *event)
|
void QtPropertyEditorView::keyPressEvent(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
switch (event->key()) {
|
switch (event->key()) {
|
||||||
@ -489,6 +510,7 @@ void QtTreePropertyBrowserPrivate::init(QWidget *parent)
|
|||||||
QObject::connect(m_treeWidget, SIGNAL(collapsed(const QModelIndex &)), q_ptr, SLOT(slotCollapsed(const QModelIndex &)));
|
QObject::connect(m_treeWidget, SIGNAL(collapsed(const QModelIndex &)), q_ptr, SLOT(slotCollapsed(const QModelIndex &)));
|
||||||
QObject::connect(m_treeWidget, SIGNAL(expanded(const QModelIndex &)), q_ptr, SLOT(slotExpanded(const QModelIndex &)));
|
QObject::connect(m_treeWidget, SIGNAL(expanded(const QModelIndex &)), q_ptr, SLOT(slotExpanded(const QModelIndex &)));
|
||||||
QObject::connect(m_treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), q_ptr, SLOT(slotCurrentTreeItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
|
QObject::connect(m_treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), q_ptr, SLOT(slotCurrentTreeItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
|
||||||
|
QObject::connect(m_treeWidget, SIGNAL(hoverPropertyChanged(QtBrowserItem *)), q_ptr, SLOT(onHoverPropertyChanged(QtBrowserItem *)));
|
||||||
}
|
}
|
||||||
|
|
||||||
QtBrowserItem *QtTreePropertyBrowserPrivate::currentItem() const
|
QtBrowserItem *QtTreePropertyBrowserPrivate::currentItem() const
|
||||||
@ -688,6 +710,12 @@ void QtTreePropertyBrowserPrivate::slotExpanded(const QModelIndex &index)
|
|||||||
emit q_ptr->expanded(idx);
|
emit q_ptr->expanded(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QtTreePropertyBrowserPrivate::onHoverPropertyChanged(QtBrowserItem *item)
|
||||||
|
{
|
||||||
|
emit q_ptr->hoverPropertyChanged(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void QtTreePropertyBrowserPrivate::slotCurrentBrowserItemChanged(QtBrowserItem *item)
|
void QtTreePropertyBrowserPrivate::slotCurrentBrowserItemChanged(QtBrowserItem *item)
|
||||||
{
|
{
|
||||||
if (!m_browserChangedBlocked && item != currentItem())
|
if (!m_browserChangedBlocked && item != currentItem())
|
||||||
|
@ -115,7 +115,7 @@ Q_SIGNALS:
|
|||||||
|
|
||||||
void collapsed(QtBrowserItem *item);
|
void collapsed(QtBrowserItem *item);
|
||||||
void expanded(QtBrowserItem *item);
|
void expanded(QtBrowserItem *item);
|
||||||
|
void hoverPropertyChanged(QtBrowserItem *item);
|
||||||
protected:
|
protected:
|
||||||
virtual void itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem);
|
virtual void itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem);
|
||||||
virtual void itemRemoved(QtBrowserItem *item);
|
virtual void itemRemoved(QtBrowserItem *item);
|
||||||
@ -130,7 +130,8 @@ private:
|
|||||||
Q_PRIVATE_SLOT(d_func(), void slotCollapsed(const QModelIndex &))
|
Q_PRIVATE_SLOT(d_func(), void slotCollapsed(const QModelIndex &))
|
||||||
Q_PRIVATE_SLOT(d_func(), void slotExpanded(const QModelIndex &))
|
Q_PRIVATE_SLOT(d_func(), void slotExpanded(const QModelIndex &))
|
||||||
Q_PRIVATE_SLOT(d_func(), void slotCurrentBrowserItemChanged(QtBrowserItem *))
|
Q_PRIVATE_SLOT(d_func(), void slotCurrentBrowserItemChanged(QtBrowserItem *))
|
||||||
Q_PRIVATE_SLOT(d_func(), void slotCurrentTreeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *))
|
Q_PRIVATE_SLOT(d_func(), void slotCurrentTreeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *))
|
||||||
|
Q_PRIVATE_SLOT(d_func(), void onHoverPropertyChanged(QtBrowserItem *))
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), sel
|
|||||||
propertyEditor->show();
|
propertyEditor->show();
|
||||||
propertyEditor->treeWidget()->setContextMenuPolicy(Qt::CustomContextMenu);
|
propertyEditor->treeWidget()->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
propertyEditor->treeWidget()->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
propertyEditor->treeWidget()->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
|
propertyEditor->treeWidget()->viewport()->setMouseTracking(true);
|
||||||
|
|
||||||
searchEdit = new QLineEdit();
|
searchEdit = new QLineEdit();
|
||||||
searchEdit->setClearButtonEnabled(true);
|
searchEdit->setClearButtonEnabled(true);
|
||||||
@ -177,6 +178,7 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), sel
|
|||||||
connect(propertyEditor->treeWidget(), &QTreeWidget::customContextMenuRequested, this,
|
connect(propertyEditor->treeWidget(), &QTreeWidget::customContextMenuRequested, this,
|
||||||
&DesignWidget::prepareMenuProperty);
|
&DesignWidget::prepareMenuProperty);
|
||||||
connect(propertyEditor->treeWidget(), &QTreeWidget::itemDoubleClicked, this, &DesignWidget::onItemDoubleClicked);
|
connect(propertyEditor->treeWidget(), &QTreeWidget::itemDoubleClicked, this, &DesignWidget::onItemDoubleClicked);
|
||||||
|
connect(propertyEditor, &QtTreePropertyBrowser::hoverPropertyChanged, this, &DesignWidget::onHoverPropertyChanged);
|
||||||
|
|
||||||
connect(treeView, &TreeView::customContextMenuRequested, this, &DesignWidget::prepareMenuTree);
|
connect(treeView, &TreeView::customContextMenuRequested, this, &DesignWidget::prepareMenuTree);
|
||||||
connect(treeView, &TreeView::doubleClicked, this, &DesignWidget::onDoubleClicked);
|
connect(treeView, &TreeView::doubleClicked, this, &DesignWidget::onDoubleClicked);
|
||||||
@ -832,4 +834,22 @@ void DesignWidget::onHoverIndexChanged(QModelIndex index)
|
|||||||
Q_EMIT hover(DecalXY());
|
Q_EMIT hover(DecalXY());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DesignWidget::onHoverPropertyChanged(QtBrowserItem *item)
|
||||||
|
{
|
||||||
|
if (item!=nullptr) {
|
||||||
|
QtProperty *selectedProperty = item->property();
|
||||||
|
ElementType type = getElementTypeByName(selectedProperty->propertyId());
|
||||||
|
if (type != ElementType::NONE) {
|
||||||
|
IdString value = ctx->id(selectedProperty->valueText().toStdString());
|
||||||
|
if (value!=IdString()) {
|
||||||
|
auto node = treeModel->nodeForIdType(type, value);
|
||||||
|
if (node) {
|
||||||
|
Q_EMIT hover(getDecals((*node)->type(), (*node)->id()).at(0));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Q_EMIT hover(DecalXY());
|
||||||
|
}
|
||||||
NEXTPNR_NAMESPACE_END
|
NEXTPNR_NAMESPACE_END
|
||||||
|
@ -83,6 +83,7 @@ class DesignWidget : public QWidget
|
|||||||
void onDoubleClicked(const QModelIndex &index);
|
void onDoubleClicked(const QModelIndex &index);
|
||||||
void onSearchInserted();
|
void onSearchInserted();
|
||||||
void onHoverIndexChanged(QModelIndex index);
|
void onHoverIndexChanged(QModelIndex index);
|
||||||
|
void onHoverPropertyChanged(QtBrowserItem *item);
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void newContext(Context *ctx);
|
void newContext(Context *ctx);
|
||||||
void updateTree();
|
void updateTree();
|
||||||
|
Loading…
Reference in New Issue
Block a user