From c728cdcae0e73c3046628838dc318f1d92c65b79 Mon Sep 17 00:00:00 2001 From: Sergiusz Bazanski Date: Wed, 1 Aug 2018 02:11:23 +0100 Subject: gui: restore menu for new tree model --- gui/designwidget.cc | 97 +++++++++++++++++++++++++++-------------------------- 1 file changed, 50 insertions(+), 47 deletions(-) (limited to 'gui') diff --git a/gui/designwidget.cc b/gui/designwidget.cc index fe99a3c2..d5c0c963 100644 --- a/gui/designwidget.cc +++ b/gui/designwidget.cc @@ -630,53 +630,56 @@ void DesignWidget::updateHighlightGroup(QList items, int group) void DesignWidget::prepareMenuProperty(const QPoint &pos) { - //QTreeWidget *tree = propertyEditor->treeWidget(); - //QList items; - //for (auto itemContextMenu : tree->selectedItems()) { - // QtBrowserItem *browserItem = propertyEditor->itemToBrowserItem(itemContextMenu); - // if (!browserItem) - // continue; - // QtProperty *selectedProperty = browserItem->property(); - // ElementType type = getElementTypeByName(selectedProperty->propertyId()); - // if (type == ElementType::NONE) - // continue; - // IdString value = ctx->id(selectedProperty->valueText().toStdString()); - // items.append(treeModel->nodeForIdType(type, value.c_str(ctx))); - //} - //int selectedIndex = -1; - //if (items.size() == 1) { - // LazyTreeItem *item = items.at(0); - // if (highlightSelected.contains(item)) - // selectedIndex = highlightSelected[item]; - //} - - //QMenu menu(this); - //QAction *selectAction = new QAction("&Select", this); - //connect(selectAction, &QAction::triggered, this, [this, items] { - // std::vector decals; - // for (auto clickItem : items) { - // std::vector d = getDecals(clickItem->type(), clickItem->id()); - // std::move(d.begin(), d.end(), std::back_inserter(decals)); - // } - // Q_EMIT selected(decals, false); - //}); - //menu.addAction(selectAction); - - //QMenu *subMenu = menu.addMenu("Highlight"); - //QActionGroup *group = new QActionGroup(this); - //group->setExclusive(true); - //for (int i = 0; i < 8; i++) { - // QPixmap pixmap(32, 32); - // pixmap.fill(QColor(highlightColors[i])); - // QAction *action = new QAction(QIcon(pixmap), ("Group " + std::to_string(i)).c_str(), this); - // action->setCheckable(true); - // subMenu->addAction(action); - // group->addAction(action); - // if (selectedIndex == i) - // action->setChecked(true); - // connect(action, &QAction::triggered, this, [this, i, items] { updateHighlightGroup(items, i); }); - //} - //menu.exec(tree->mapToGlobal(pos)); + QTreeWidget *tree = propertyEditor->treeWidget(); + QList items; + for (auto itemContextMenu : tree->selectedItems()) { + QtBrowserItem *browserItem = propertyEditor->itemToBrowserItem(itemContextMenu); + if (!browserItem) + continue; + QtProperty *selectedProperty = browserItem->property(); + ElementType type = getElementTypeByName(selectedProperty->propertyId()); + if (type == ElementType::NONE) + continue; + IdString value = ctx->id(selectedProperty->valueText().toStdString()); + auto node = treeModel->nodeForIdType(type, value); + if (!node) + continue; + items.append(*node); + } + int selectedIndex = -1; + if (items.size() == 1) { + LazyTreeItem *item = items.at(0); + if (highlightSelected.contains(item)) + selectedIndex = highlightSelected[item]; + } + + QMenu menu(this); + QAction *selectAction = new QAction("&Select", this); + connect(selectAction, &QAction::triggered, this, [this, items] { + std::vector decals; + for (auto clickItem : items) { + std::vector d = getDecals(clickItem->type(), clickItem->id()); + std::move(d.begin(), d.end(), std::back_inserter(decals)); + } + Q_EMIT selected(decals, false); + }); + menu.addAction(selectAction); + + QMenu *subMenu = menu.addMenu("Highlight"); + QActionGroup *group = new QActionGroup(this); + group->setExclusive(true); + for (int i = 0; i < 8; i++) { + QPixmap pixmap(32, 32); + pixmap.fill(QColor(highlightColors[i])); + QAction *action = new QAction(QIcon(pixmap), ("Group " + std::to_string(i)).c_str(), this); + action->setCheckable(true); + subMenu->addAction(action); + group->addAction(action); + if (selectedIndex == i) + action->setChecked(true); + connect(action, &QAction::triggered, this, [this, i, items] { updateHighlightGroup(items, i); }); + } + menu.exec(tree->mapToGlobal(pos)); } void DesignWidget::prepareMenuTree(const QPoint &pos) -- cgit v1.2.3