From 43df8eebfb45196aa6bb3347c9f8f459781c4987 Mon Sep 17 00:00:00 2001 From: imn Date: Thu, 14 Nov 2013 10:33:14 +0000 Subject: [PATCH] 0022324: [CEA 931] YACS: "ShrinkNodes" and "UnShrinkNodes" --- src/genericgui/Menus.cxx | 1 + src/genericgui/SceneComposedNodeItem.cxx | 7 ++-- src/genericgui/SceneNodeItem.cxx | 2 -- src/genericgui/SceneProcItem.cxx | 42 ++++++++++++++++++++++++ src/genericgui/SceneProcItem.hxx | 1 + 5 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/genericgui/Menus.cxx b/src/genericgui/Menus.cxx index 5121e15bf..4b627cff5 100644 --- a/src/genericgui/Menus.cxx +++ b/src/genericgui/Menus.cxx @@ -271,6 +271,7 @@ void ProcMenu::popupMenu(QWidget *caller, const QPoint &globalPos, const QString menu.addSeparator(); menu.addAction(gmain->_zoomToBlocAct); menu.addAction(gmain->_centerOnNodeAct); + menu.addAction(gmain->_shrinkExpand); menu.addAction(gmain->_computeLinkAct); // menu.addAction(gmain->_toggleAutomaticComputeLinkAct); // menu.addAction(gmain->_toggleSimplifyLinkAct); diff --git a/src/genericgui/SceneComposedNodeItem.cxx b/src/genericgui/SceneComposedNodeItem.cxx index 6f8dfaad7..83f89e5e1 100644 --- a/src/genericgui/SceneComposedNodeItem.cxx +++ b/src/genericgui/SceneComposedNodeItem.cxx @@ -102,11 +102,12 @@ void SceneComposedNodeItem::paint(QPainter *painter, QWidget *widget) { //DEBTRACE("SceneComposedNodeItem::paint " << _label.toStdString()); - - if (!isExpanded()) { + // IMN (14/11/2013) below block commented + // prevent bad resizing of scene in shrink mode + /* if (!isExpanded()) { _width = 2*Resource::Corner_Margin + 2*Resource::DataPort_Width + Resource::Space_Margin; _height = getHeaderBottom() + Resource::Corner_Margin; - }; + };*/ painter->save(); painter->setPen(getPenColor()); diff --git a/src/genericgui/SceneNodeItem.cxx b/src/genericgui/SceneNodeItem.cxx index 69d079675..844ec6681 100644 --- a/src/genericgui/SceneNodeItem.cxx +++ b/src/genericgui/SceneNodeItem.cxx @@ -294,8 +294,6 @@ void SceneNodeItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event) void SceneNodeItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { DEBTRACE("SceneNodeItem::mouseDoubleClickEvent"); - if (dynamic_cast(this)) - return; QtGuiContext::getQtCurrent()->getGMain()->_guiEditor->shrinkExpand(); } diff --git a/src/genericgui/SceneProcItem.cxx b/src/genericgui/SceneProcItem.cxx index 965d68e3a..4ff34bc6f 100644 --- a/src/genericgui/SceneProcItem.cxx +++ b/src/genericgui/SceneProcItem.cxx @@ -19,6 +19,10 @@ #include "SceneProcItem.hxx" #include "Menus.hxx" +#include "SceneLinkItem.hxx" +#include "QtGuiContext.hxx" +#include "Scene.hxx" +#include "Resource.hxx" //#define _DEVDEBUG_ @@ -47,3 +51,41 @@ void SceneProcItem::popupMenu(QWidget *caller, const QPoint &globalPos) ProcMenu m; m.popupMenu(caller, globalPos); } + +void SceneProcItem::reorganizeShrinkExpand() { + if (_children.size() == 0) + return; + bool isExpanding = true; + DEBTRACE("SceneProcItem::reorganizeShrinkExpand " << _expanded << " " << _label.toStdString()); + for (list::const_iterator it=_children.begin(); it!=_children.end(); ++it) + { + SceneItem* item = dynamic_cast(*it); + SceneNodeItem *sni = dynamic_cast(item); + if (sni->isExpanded()) { + isExpanding = false; + break; + } + } + for (list::const_iterator it=_children.begin(); it!=_children.end(); ++it) + { + SceneItem* item = dynamic_cast(*it); + SceneNodeItem *sni = dynamic_cast(item); + if (!isExpanding && sni->isExpanded()) { + sni->setExpanded(false); + item->shrinkExpandRecursive(false, true); + DEBTRACE("------------------------------- Hide " << item->getLabel().toStdString()); + } + if (isExpanding && !sni->isExpanded()) { + sni->setExpanded(true); + item->shrinkExpandRecursive(true, false); + DEBTRACE("------------------------------- Show " << item->getLabel().toStdString()); + } + item->shrinkExpandLink(isExpanding); + } + _ancestorShrinked = !isExpanding; + _width = _expandedWidth; + _height = _expandedHeight; + _shownState = expandShown; + adjustHeader(); +} + diff --git a/src/genericgui/SceneProcItem.hxx b/src/genericgui/SceneProcItem.hxx index 49ec006d8..617396e6a 100644 --- a/src/genericgui/SceneProcItem.hxx +++ b/src/genericgui/SceneProcItem.hxx @@ -33,6 +33,7 @@ namespace YACS QString label, Subject *subject); virtual ~SceneProcItem(); virtual void popupMenu(QWidget *caller, const QPoint &globalPos); + virtual void reorganizeShrinkExpand(); }; } } -- 2.39.2