Salome HOME
0022324: [CEA 931] YACS: "ShrinkNodes" and "UnShrinkNodes"
authorimn <imn@opencascade.com>
Thu, 14 Nov 2013 10:33:14 +0000 (10:33 +0000)
committerimn <imn@opencascade.com>
Thu, 14 Nov 2013 10:33:14 +0000 (10:33 +0000)
src/genericgui/Menus.cxx
src/genericgui/SceneComposedNodeItem.cxx
src/genericgui/SceneNodeItem.cxx
src/genericgui/SceneProcItem.cxx
src/genericgui/SceneProcItem.hxx

index 5121e15bf72693d715ecbd751fc73af92adf343e..4b627cff53baca8c36618dadcc92ce57c9c71436 100644 (file)
@@ -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);
index 6f8dfaad7cb7337be0a2e7459b3624fba5254957..83f89e5e1b36bf158743b873956fe5f509fdebf1 100644 (file)
@@ -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());
index 69d07967547b65c779515613cae5bf1650468c68..844ec6681bbcfa5287222abe1ac699f4a7e9a922 100644 (file)
@@ -294,8 +294,6 @@ void SceneNodeItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
 void SceneNodeItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
 {
   DEBTRACE("SceneNodeItem::mouseDoubleClickEvent");
-  if (dynamic_cast<SceneProcItem*>(this))
-    return;
   QtGuiContext::getQtCurrent()->getGMain()->_guiEditor->shrinkExpand();
 }
 
index 965d68e3abc1c353133969fe0a0f1d5326dad7be..4ff34bc6f5a1f8bae6ce65bc7f05081acb79ca54 100644 (file)
 
 #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<AbstractSceneItem*>::const_iterator it=_children.begin(); it!=_children.end(); ++it)
+    {
+      SceneItem* item = dynamic_cast<SceneItem*>(*it);
+      SceneNodeItem *sni = dynamic_cast<SceneNodeItem*>(item);
+      if (sni->isExpanded()) {
+         isExpanding = false;
+         break;
+      }
+    }
+  for (list<AbstractSceneItem*>::const_iterator it=_children.begin(); it!=_children.end(); ++it)
+    {
+      SceneItem* item = dynamic_cast<SceneItem*>(*it);
+      SceneNodeItem *sni = dynamic_cast<SceneNodeItem*>(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();
+}
+
index 49ec006d8a734acf5686a5d77e60904af9c69f20..617396e6a9a9121728a8ffc5095e89d06e9847a6 100644 (file)
@@ -33,6 +33,7 @@ namespace YACS
                     QString label, Subject *subject);
       virtual ~SceneProcItem();
       virtual void popupMenu(QWidget *caller, const QPoint &globalPos);
+      virtual void reorganizeShrinkExpand();
     };
   }
 }