+
+ myObjectBrowser->setFoldersState(aStates);
+
+ updateCommandStatus();
+}
+
+void XGUI_Workshop::onAutoApply()
+{
+ SessionPtr aMgr = ModelAPI_Session::get();
+ bool isBlocked = aMgr->isAutoUpdateBlocked();
+ aMgr->blockAutoUpdate(!isBlocked);
+ myDisplayer->updateViewer();
+}
+
+void XGUI_Workshop::updateAutoComputeState()
+{
+ SessionPtr aMgr = ModelAPI_Session::get();
+#ifdef HAVE_SALOME
+// QAction* aUpdateCmd;
+// QList<QAction*> aCommands = mySalomeConnector->commandList();
+// foreach(QAction* aCmd, aCommands) {
+// if (aCmd->data().toString() == "AUTOCOMPUTE_CMD") {
+// aUpdateCmd = aCmd;
+// break;
+// }
+// }
+// aUpdateCmd->setIcon(isComputeBlocked? QIcon(":pictures/autoapply_stop.png") :
+// QIcon(":pictures/autoapply_start.png"));
+#else
+ bool isComputeBlocked = aMgr->isAutoUpdateBlocked();
+ AppElements_MainMenu* aMenuBar = myMainWindow->menuObject();
+ AppElements_Command* aUpdateCmd = aMenuBar->feature("AUTOCOMPUTE_CMD");
+ aUpdateCmd->button()->setIcon(isComputeBlocked? QIcon(":pictures/autoapply_stop.png") :
+ QIcon(":pictures/autoapply_start.png"));
+#endif
+}
+
+
+void XGUI_Workshop::clearTemporaryDir()
+{
+ QDir aDir(myTmpDir.path());
+ if (!aDir.isEmpty()) {
+ QStringList aEntries;
+ aDir.entryList(aEntries);
+ foreach(QString aFile, aEntries) {
+ aDir.remove(aFile);
+ }
+ }
+}
+
+
+void XGUI_Workshop::onDockSizeChanged()
+{
+ QDockWidget* aDockWgt = dynamic_cast<QDockWidget*>(myObjectBrowser->parentWidget());
+ int aObWidth = aDockWgt->size().width();
+ if (myPropertyPanel->width() != aObWidth) {
+ QList<QDockWidget*> aWgtList;
+ aWgtList << myPropertyPanel << aDockWgt;
+ QList<int> aSizeList;
+ aSizeList << aObWidth << aObWidth;
+ desktop()->resizeDocks(aWgtList, aSizeList, Qt::Horizontal);
+ disconnect(myObjectBrowser, SIGNAL(sizeChanged()), this, SLOT(onDockSizeChanged()));
+ }
+}
+
+void XGUI_Workshop::deactivateCurrentSelector()
+{
+ myActiveControlMgr->deactivateSelector(myActiveControlMgr->activeSelector());
+}
+
+void XGUI_Workshop::changeIsoLines(const QObjectPtrList& theObjects)
+{
+ if (theObjects.isEmpty())
+ return;
+
+ QList<ResultPtr> aResultList;
+ ResultPtr aRes;
+ foreach(ObjectPtr aObj, theObjects) {
+ aRes = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);
+ if (aRes.get())
+ aResultList.append(aRes);
+ }
+
+ std::vector<int> aValues;
+ bool isVisible;
+ if (aResultList.size() == 1) {
+ ResultPtr aResult = aResultList.first();
+ if (aResult.get())
+ ModelAPI_Tools::getIsoLines(aResult, isVisible, aValues);
+ else
+ return;
+ }
+ if (aValues.size() == 0) {
+ aValues.push_back(1);
+ aValues.push_back(1);
+ }
+
+ if (!abortAllOperations())
+ return;
+
+ XGUI_PropertyDialog aDlg(desktop());
+ aDlg.setWindowTitle(tr("Number of Iso-lines"));
+
+ QWidget* aIsosWgt = new QWidget(&aDlg);
+ QFormLayout* aLayout = new QFormLayout(aIsosWgt);
+ ModuleBase_Tools::adjustMargins(aLayout);
+ aDlg.setContent(aIsosWgt);
+
+ QSpinBox* aUNb = new QSpinBox(&aDlg);
+ aUNb->setValue(aValues[0]);
+ aLayout->addRow("U:", aUNb);
+
+ QSpinBox* aVNb = new QSpinBox(&aDlg);
+ aVNb->setValue(aValues[1]);
+ aLayout->addRow("V:", aVNb);
+
+ if (aDlg.exec() == QDialog::Accepted) {
+ SessionPtr aMgr = ModelAPI_Session::get();
+ QString aDescription = contextMenuMgr()->action("ISOLINES_CMD")->text();
+ aMgr->startOperation(aDescription.toStdString());
+
+ aValues[0] = aUNb->value();
+ aValues[1] = aVNb->value();
+ foreach(ResultPtr aResult, aResultList) {
+ ModelAPI_Tools::setIsoLines(aResult, aValues);
+ }
+ mySelector->clearSelection();
+ Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY));
+ aMgr->finishOperation();
+ updateCommandStatus();
+ }