-// Copyright (C) 2006-2013 CEA/DEN, EDF R&D
+// Copyright (C) 2006-2016 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
_dwTree = new QDockWidget(_parent);
_dwTree->setVisible(false);
_dwTree->setWindowTitle("Tree View: edition mode");
+ _dwTree->setObjectName("yacsTreeViewDock");
_parent->addDockWidget(Qt::LeftDockWidgetArea, _dwTree);
_dwStacked = new QDockWidget(_parent);
_dwStacked->setVisible(false);
_dwStacked->setWindowTitle("Input Panel");
+ _dwStacked->setObjectName("yacsInputPanelDock");
_dwStacked->setMinimumWidth(270); // --- force a minimum until display
_parent->addDockWidget(Qt::RightDockWidgetArea, _dwStacked);
_dwCatalogs = new QDockWidget(_parent);
_dwCatalogs->setVisible(false);
_dwCatalogs->setWindowTitle("Catalogs");
+ _dwCatalogs->setObjectName("yacsCatalogsDock");
_parent->addDockWidget(Qt::RightDockWidgetArea, _dwCatalogs);
_catalogsWidget = new CatalogWidget(_dwCatalogs,
_builtinCatalog,
_dwCatalogs->setWidget(_catalogsWidget);
_parent->tabifyDockWidget(_dwStacked, _dwCatalogs);
- _parent->tabifyDockWidget(_dwTree, _wrapper->objectBrowser());
+ if (_wrapper->objectBrowser())
+ _parent->tabifyDockWidget(_dwTree, _wrapper->objectBrowser());
#if QT_VERSION >= 0x040500
_parent->setTabPosition(Qt::AllDockWidgetAreas, Resource::tabPanelsUp? QTabWidget::North: QTabWidget::South);
#endif
tr("Load Schema to run"), tr("Load a schema for run"),
0, _parent, false, this, SLOT(onLoadAndRunSchema()));
- _chooseBatchJobAct = _wrapper->createAction(getMenuId(), tr("Choose Batch Job for watch"), QIcon("icons:batch.png"),
- tr("Choose Batch Job for watch"), tr("Choose Batch Job for watch"),
+ _chooseBatchJobAct = _wrapper->createAction(getMenuId(), tr("Choose Batch Job to watch"), QIcon("icons:batch.png"),
+ tr("Choose Batch Job to watch"), tr("Choose Batch Job to watch"),
0, _parent, false, this, SLOT(onChooseBatchJob()));
_startResumeAct = _wrapper->createAction(getMenuId(), tr("Start or Resume Schema execution"), QIcon("icons:suspend_resume.png"),
tr("Create Container"), tr("Create a New Container"),
0, _parent, false, this, SLOT(onNewContainer()));
+ _newHPContainerAct = _wrapper->createAction(getMenuId(), tr("Create a New HP Container"), QIcon("icons:container.png"),
+ tr("Create HP Container"), tr("Create a New Homogeneous Pool Container."),
+ 0, _parent, false, this, SLOT(onNewHPContainer()));
+
_selectComponentInstanceAct = _wrapper->createAction(getMenuId(), tr("Select a Component Instance"), QIcon("icons:icon_select.png"),
tr("Select a Component Instance"), tr("Select a Component Instance"),
0, _parent, false, this, SLOT(onSelectComponentInstance()));
tr("shrink/expand"), tr("shrink or expand the selected node"),
0, _parent, false, this, SLOT(onShrinkExpand()));
+ _shrinkExpandChildren = _wrapper->createAction(getMenuId(), tr("shrink or expand direct children of the selected node"), QIcon("icons:shrinkExpand.png"),
+ tr("shrink/expand children"), tr("shrink or expand direct children of the selected node"),
+ 0, _parent, false, this, SLOT(onShrinkExpandChildren()));
+
+ _shrinkExpandElementaryRecursively = _wrapper->createAction(getMenuId(), tr("shrink or expand elementary nodes of the selected node recursively"), QIcon("icons:shrinkExpand.png"),
+ tr("shrink/expand elementary"), tr("shrink or expand elementary nodes of the selected node recursively"),
+ 0, _parent, false, this, SLOT(onShrinkExpandElementaryRecursively()));
+
_toggleStraightLinksAct = _wrapper->createAction(getMenuId(), tr("draw straight or orthogonal links"), QIcon("icons:straightLink.png"),
tr("straight/orthogonal"), tr("draw straight or orthogonal links"),
0, _parent, true, this, SLOT(onToggleStraightLinks(bool)));
void GenericGui::createTools()
{
- int aToolId = _wrapper->createTool ( tr( "YACS Toolbar" ) );
+ int aToolId = _wrapper->createTool ( tr( "YACS Toolbar" ), QString( "YACSToolbar" ) );
_wrapper->createTool( _newSchemaAct, aToolId );
_wrapper->createTool( _importSchemaAct, aToolId );
_wrapper->createTool( _wrapper->separator(), aToolId );
showBaseMenus(true);
}
+void GenericGui::hideAllMenus()
+{
+ showBaseMenus (false);
+ showCommonMenus (false);
+ showEditionMenus(false);
+ showExecMenus (false);
+}
+
void GenericGui::showBaseMenus(bool show)
{
DEBTRACE("GenericGui::showBaseMenus " << show);
_wrapper->setToolShown(_hideAllLinksAct, show);
}
-void GenericGui::switchContext(QWidget *view)
+void GenericGui::switchContext(QWidget *view, bool onExit)
{
DEBTRACE("GenericGui::switchContext " << view);
if (! _mapViewContext.count(view))
{
- initialMenus();
+ onExit ? hideAllMenus() : initialMenus();
_dwTree->setWidget(0);
_dwStacked->setWidget(0);
return;
break;
}
}
- int studyId = _wrapper->activeStudyId();
- if (context->getStudyId() == studyId)
+ _wrapper->deleteSchema(view);
+ DEBTRACE("delete context");
+ if (GuiExecutor* exec = context->getGuiExecutor())
{
- _wrapper->deleteSchema(view);
- DEBTRACE("delete context");
- if (GuiExecutor* exec = context->getGuiExecutor())
- {
- exec->closeContext();
- }
- delete context;
- _mapViewContext.erase(view);
- switchContext(newView);
+ exec->closeContext();
}
+ delete context;
+ _mapViewContext.erase(view);
+ switchContext(newView, onExit);
return true;
}
GraphicsView* gView = new GraphicsView(viewWindow);
gView->setScene(scene);
gView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
- int studyId = _wrapper->AssociateViewToWindow(gView, viewWindow);
- context->setStudyId(studyId);
- std::ostringstream value;
- value << studyId;
- proc->setProperty("DefaultStudyID",value.str());
+ _wrapper->AssociateViewToWindow(gView, viewWindow);
context->setScene(scene);
context->setView(gView);
context->setWindow(viewWindow);
{
DEBTRACE("GenericGui::setLoadedPresentation");
QtGuiContext::getQtCurrent()->setLoadingPresentation(true);
+ map<SceneNodeItem*, QPointF> nodesToMove;
map<YACS::ENGINE::Node*, PrsData> presNodes = _loader->getPrsData(proc);
if (!presNodes.empty())
{
inode->setWidth(pres._width);
inode->setHeight(pres._height);
inode->setExpanded(pres._expanded);
- inode->setExpandedPos(QPointF(pres._expx, pres._expy));
+ QPointF anExpandedPos = QPointF(pres._expx, pres._expy);
+ if (anExpandedPos.isNull())
+ anExpandedPos = inode->pos();
+ inode->setExpandedPos(anExpandedPos);
inode->setExpandedWH(pres._expWidth, pres._expHeight);
inode->setShownState(shownState(pres._shownState));
+
+ // collect nodes to correct it's Y-position if this collides with parent's header
+ if (inode->getParent() ) {
+ qreal anX = inode->x();
+ qreal anY = inode->y();
+ if (inode->getShownState() == shrinkHidden) {
+ anX = inode->getExpandedX();
+ anY = inode->getExpandedY();
+ }
+ if (anY < inode->getParent()->getHeaderBottom())
+ nodesToMove[inode] = QPointF(anX, inode->getParent()->getHeaderBottom()+1);
+ }
}
}
+ QtGuiContext::getQtCurrent()->setLoadingPresentation(false);
+
+ //after loading of presentation:
+
+ //move nodes because of progress bar, if any was added
+ map<SceneNodeItem*, QPointF>::iterator it = nodesToMove.begin();
+ for (; it!= nodesToMove.end(); ++it)
+ {
+ (*it).first->setTopLeft((*it).second);
+ }
+
+ //update links
if (Scene::_autoComputeLinks)
_guiEditor->rebuildLinks();
else
SceneComposedNodeItem *proc = dynamic_cast<SceneComposedNodeItem*>(item);
proc->updateLinks();
}
-
- QtGuiContext::getQtCurrent()->setLoadingPresentation(false);
}
// -----------------------------------------------------------------------------
{
DEBTRACE(logger->getStr());
}
- QString fn=QString::fromStdString(filename);
+ QString fn=QString::fromUtf8(filename.c_str());
if(edit)
createContext(proc, fn, "", true);
else
if (!fi.exists() && fi.suffix() != "xml")
fn += ".xml";
- DEBTRACE("file loaded : " <<fn.toStdString());
+ DEBTRACE("file loaded : " <<fn.toUtf8().constData());
YACS::ENGINE::Proc *proc = 0;
try {
- proc = _loader->load(fn.toLatin1());
+ proc = _loader->load(fn.toUtf8().constData());
}
catch (...) {
}
QString aCall = "salomeloader."+ fileExt+ " "+ fn + " " + tmpFileName + " > " + tmpOutput;
DEBTRACE(aCall.toStdString());
- int ret = system(aCall.toAscii());
+ int ret = system(aCall.toLatin1());
if(ret != 0)
{
// --- read file with logs
- fstream f(tmpOutput.toAscii());
+ fstream f(tmpOutput.toLatin1());
stringstream hfile;
hfile << f.rdbuf();
f.close();
filters << "XML files (*.xml)"
<< "Any files (*)";
dialog.setFileMode(QFileDialog::AnyFile);
- dialog.setFilters(filters);
- dialog.selectFilter("(*.xml)");
+ dialog.setNameFilters(filters);
+ dialog.selectNameFilter("(*.xml)");
dialog.setDefaultSuffix("xml");
dialog.setConfirmOverwrite(true);
//dialog.setConfirmOverwrite(false); // bug Qt4.3.3
}
if (fn.isEmpty()) return;
- DEBTRACE("GenericGui::onExportSchema: " << fn.toStdString());
+ DEBTRACE("GenericGui::onExportSchema: " << fn.toUtf8().constData());
//to be sure that all pending changes are effective
_parent->setFocus();
QtGuiContext::getQtCurrent()->setFileName(fn);
VisitorSaveGuiSchema aWriter(proc);
- aWriter.openFileSchema( fn.toStdString() );
+ aWriter.openFileSchema( fn.toUtf8().constData() );
aWriter.visitProc();
aWriter.closeFileSchema();
QtGuiContext::getQtCurrent()->setNotSaved(false);
QString fn = getSaveFileName(fo);
if (fn.isEmpty()) return;
- DEBTRACE("GenericGui::onExportSchemaAs: " << fn.toStdString());
+ DEBTRACE("GenericGui::onExportSchemaAs: " << fn.toUtf8().constData());
QtGuiContext::getQtCurrent()->setFileName(fn);
VisitorSaveGuiSchema aWriter(proc);
- aWriter.openFileSchema(fn.toStdString());
+ aWriter.openFileSchema(fn.toUtf8().constData());
aWriter.visitProc();
aWriter.closeFileSchema();
_isSaved = true;
_guiEditor->CreateContainer();
}
+void GenericGui::onNewHPContainer()
+{
+ DEBTRACE("GenericGui::onNewHPContainer");
+ _guiEditor->CreateHPContainer();
+}
+
void GenericGui::onNewSalomeComponent()
{
DEBTRACE("GenericGui::onNewSalomeComponent");
_guiEditor->shrinkExpand();
}
+void GenericGui::onShrinkExpandChildren() {
+ DEBTRACE("GenericGui::onShrinkExpandChildren");
+ _guiEditor->shrinkExpand(Qt::ControlModifier|Qt::ShiftModifier);
+}
+
+void GenericGui::onShrinkExpandElementaryRecursively() {
+ DEBTRACE("GenericGui::onShrinkExpandElementaryRecursively");
+ _guiEditor->shrinkExpand(Qt::ControlModifier);
+}
+
void GenericGui::onToggleStraightLinks(bool checked)
{
Scene::_straightLinks = checked;
{
DEBTRACE("GenericGui::onUndo");
if (QtGuiContext::getQtCurrent()->_setOfModifiedSubjects.empty())
+ {
QtGuiContext::getQtCurrent()->getInvoc()->undo();
+ // Empty the clipboard in order to avoid the copy of a destroyed object.
+ QtGuiContext::getQtCurrent()->setSubjectToCopy(NULL);
+ }
else Message("undo not possible when there are local modifications not confirmed");
}
{
DEBTRACE("GenericGui::onRedo");
if (QtGuiContext::getQtCurrent()->_setOfModifiedSubjects.empty())
+ {
QtGuiContext::getQtCurrent()->getInvoc()->redo();
+ // Empty the clipboard in order to avoid the copy of a destroyed object.
+ QtGuiContext::getQtCurrent()->setSubjectToCopy(NULL);
+ }
else Message("redo not possible when there are local modifications not confirmed");
}
void GenericGui::onCleanOnExit()
{
DEBTRACE("GenericGui::onCleanOnExit");
- int studyId = _wrapper->activeStudyId();
map<QWidget*, YACS::HMI::QtGuiContext*> mapViewContextCopy = _mapViewContext;
map<QWidget*, YACS::HMI::QtGuiContext*>::iterator it = mapViewContextCopy.begin();
for (; it != mapViewContextCopy.end(); ++it)