コード例 #1
0
bool Leaf::undoRename()
{
    QReadLocker locker (&lock);

    if (state->isLocked() || state->isRenameSucceeded() == Tribool::indeterminate)
        return false;

    if (!state->isRenameSucceeded()) {
        setStateReadyToRename();
        return true;
    }

    QDir dir;

    if (parentComponent)
        dir.setPath(parentComponent->fullPath());

    bool isSucceeded = dir.rename(newName, fileName);

    isSucceeded ? Log::log("undo SUCCEEDED : " + dir.absolutePath() + "/" + newName + " > " + fileName)
                : Log::log("undo ---FAILED : " + dir.absolutePath() + "/" + newName + " > " + fileName);

    locker.unlock();

    isSucceeded ? setStateReadyToRename()
                : setStateUndoFailed();

    return isSucceeded;
}
コード例 #2
0
static PyObject *meth_QReadLocker___exit__(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = NULL;

    {
        PyObject * a0;
        PyObject * a1;
        PyObject * a2;
        QReadLocker *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "BP0P0P0", &sipSelf, sipType_QReadLocker, &sipCpp, &a0, &a1, &a2))
        {
#line 71 "C:\\Users\\marcus\\Downloads\\PyQt-gpl-5.4\\PyQt-gpl-5.4\\sip/QtCore/qreadwritelock.sip"
        sipCpp->unlock();
#line 165 "C:\\Users\\marcus\\Downloads\\PyQt-gpl-5.4\\PyQt-gpl-5.4\\QtCore/sipQtCoreQReadLocker.cpp"

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    /* Raise an exception if the arguments couldn't be parsed. */
    sipNoMethod(sipParseErr, sipName_QReadLocker, sipName___exit__, doc_QReadLocker___exit__);

    return NULL;
}
コード例 #3
0
ファイル: tab_progress.cpp プロジェクト: zfalls/XtalOpt-2
  void TabProgress::clipPOSCARProgress_()
  {
    if (!m_context_xtal) {
      emit finishedBackgroundProcessing();
      return;
    }
    QReadLocker locker (m_context_xtal->lock());

    QString poscar = qobject_cast<XtalOpt*>(m_opt)->
      interpretTemplate("%POSCAR%", m_context_xtal);

    m_opt->setClipboard(poscar);

    // Clear context xtal pointer
    emit finishedBackgroundProcessing();
    locker.unlock();
    m_context_xtal = 0;
  }
コード例 #4
0
static PyObject *meth_QReadLocker_unlock(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = NULL;

    {
        QReadLocker *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_QReadLocker, &sipCpp))
        {
            sipCpp->unlock();

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    /* Raise an exception if the arguments couldn't be parsed. */
    sipNoMethod(sipParseErr, sipName_QReadLocker, sipName_unlock, doc_QReadLocker_unlock);

    return NULL;
}
コード例 #5
0
ファイル: tab_progress.cpp プロジェクト: ajshamp/XtalOpt-ajs
  void TabProgress::updateInfo_()
  {
    // Prep variables
    Structure *structure;

    m_infoUpdateTracker.lockForWrite();
    if (!m_infoUpdateTracker.popFirst(structure)) {
      m_infoUpdateTracker.unlock();
      return;
    }
    m_infoUpdateTracker.unlock();

    int i = m_opt->tracker()->list()->indexOf(structure);

    Scene *scene = qobject_cast<Scene*>(structure);

    if (i < 0 || i > ui.table_list->rowCount() - 1) {
      qDebug() << "TabProgress::updateInfo: Trying to update an index that doesn't exist...yet: (" << i << ") Waiting...";
      m_infoUpdateTracker.lockForWrite();
      m_infoUpdateTracker.append(scene);
      m_infoUpdateTracker.unlock();
      QTimer::singleShot(100, this, SLOT(updateInfo()));
      return;
    }

    RD_Prog_TableEntry e;
    uint totalOptSteps = m_opt->optimizer()->getNumberOfOptSteps();

    e.brush = QBrush(Qt::white);

    QReadLocker sceneLocker (scene->lock());

    e.rank    = scene->getRank();
    e.id      = scene->getIndex();
    e.elapsed = scene->getOptElapsed();
    e.jobID   = scene->getJobID();
    e.energy  = scene->getEnergy();

    switch (scene->getStatus()) {
    case Scene::InProcess: {
      sceneLocker.unlock();
      QueueInterface::QueueStatus state = m_opt->queueInterface()->getStatus(scene);
      sceneLocker.relock();
      switch (state) {
      case QueueInterface::Running:
        e.status = tr("Running (Opt Step %1 of %2, %3 failures)")
          .arg(QString::number(scene->getCurrentOptStep()))
          .arg(QString::number(totalOptSteps))
          .arg(QString::number(scene->getFailCount()));
        e.brush.setColor(Qt::green);
        break;
      case QueueInterface::Queued:
        e.status = tr("Queued (Opt Step %1 of %2, %3 failures)")
          .arg(QString::number(scene->getCurrentOptStep()))
          .arg(QString::number(totalOptSteps))
          .arg(QString::number(scene->getFailCount()));
        e.brush.setColor(Qt::cyan);
        break;
      case QueueInterface::Success:
        e.status = "Starting update...";
        break;
      case QueueInterface::Unknown:
        e.status = "Unknown";
        break;
      case QueueInterface::Error:
        e.status = "Error: Restarting job...";
        e.brush.setColor(Qt::darkRed);
        break;
      case QueueInterface::CommunicationError:
        e.status = "Communication Error";
        e.brush.setColor(Qt::darkRed);
        break;
        // Shouldn't happen; started and pending only occur when scene is "Submitted"
      case QueueInterface::Started:
      case QueueInterface::Pending:
      default:
        break;
      }
      break;
    }
    case Scene::Submitted:
      e.status = tr("Job submitted (%1 of %2)")
        .arg(QString::number(scene->getCurrentOptStep()))
        .arg(QString::number(totalOptSteps));
      e.brush.setColor(Qt::cyan);
      break;
    case Scene::Preoptimizing:
      e.status = tr("Preoptimizing: %1%")
        .arg(QString::number(scene->getPreOptProgress()));
      e.brush.setColor(Qt::green);
      break;
    case Scene::Restart:
      e.status = "Restarting job...";
      e.brush.setColor(Qt::cyan);
      break;
    case Scene::Killed:
    case Scene::Removed:
      e.status = "Killed";
      e.brush.setColor(Qt::darkGray);
      break;
    case Scene::Duplicate:
      e.status = tr("Duplicate of %1")
        .arg(scene->getDuplicateString());
      e.brush.setColor(Qt::darkGreen);
      break;
    case Scene::StepOptimized:
      e.status = "Checking status...";
      e.brush.setColor(Qt::cyan);
      break;
    case Scene::Optimized:
      e.status = "Optimized";
      e.brush.setColor(Qt::yellow);
      break;
    case Scene::WaitingForOptimization:
      e.status = tr("Waiting for Optimization (%1 of %2)")
        .arg(QString::number(scene->getCurrentOptStep()))
        .arg(QString::number(totalOptSteps));
      e.brush.setColor(Qt::darkCyan);
      break;
    case Scene::Error:
      e.status = tr("Job failed. Restarting...");
      e.brush.setColor(Qt::red);
      break;
    case Scene::Updating:
      e.status = "Updating structure...";
      e.brush.setColor(Qt::cyan);
      break;
    case Scene::Empty:
      e.status = "Structure empty...";
      break;
    }

    if (scene->getFailCount() != 0) {
      e.brush.setColor(Qt::red);
    }

    emit updateTableEntry(i, e);
  }
コード例 #6
0
ファイル: tab_progress.cpp プロジェクト: zfalls/XtalOpt-2
  void TabProgress::updateInfo_()
  {
    // Prep variables
    Structure *structure;
    m_infoUpdateTracker.lockForWrite();
    if (!m_infoUpdateTracker.popFirst(structure)) {
      m_infoUpdateTracker.unlock();
      return;
    }
    m_infoUpdateTracker.unlock();

    m_opt->tracker()->lockForRead();
    int i = m_opt->tracker()->list()->indexOf(structure);
    m_opt->tracker()->unlock();

    Xtal *xtal = qobject_cast<Xtal*>(structure);

    if (i < 0 || i > ui.table_list->rowCount() - 1) {
      qDebug() << "TabProgress::updateInfo: Trying to update an index that doesn't exist...yet: ("
               << i << ") Waiting...";
      m_infoUpdateTracker.lockForWrite();
      m_infoUpdateTracker.append(xtal);
      m_infoUpdateTracker.unlock();
      QTimer::singleShot(100, this, SLOT(updateInfo()));
      return;
    }

    XO_Prog_TableEntry e;
    uint totalOptSteps = m_opt->optimizer()->getNumberOfOptSteps();
    e.brush = QBrush (Qt::white);

    QReadLocker xtalLocker (xtal->lock());
    e.elapsed = xtal->getOptElapsed();
    e.gen     = xtal->getGeneration();
    e.id      = xtal->getIDNumber();
    e.parents = xtal->getParents();
    e.jobID   = xtal->getJobID();
    e.volume  = xtal->getVolume();
    e.spg     = QString::number( xtal->getSpaceGroupNumber()) + ": "
      + xtal->getSpaceGroupSymbol();

    if (xtal->hasEnthalpy() || xtal->getEnergy() != 0)
      e.enthalpy = xtal->getEnthalpy();
    else
      e.enthalpy = 0.0;

    switch (xtal->getStatus()) {
    case Xtal::InProcess: {
      xtalLocker.unlock();
      QueueInterface::QueueStatus state = m_opt->queueInterface()->getStatus(xtal);
      xtalLocker.relock();
      switch (state) {
      case QueueInterface::Running:
        e.status = tr("Running (Opt Step %1 of %2, %3 failures)")
          .arg(QString::number(xtal->getCurrentOptStep()))
          .arg(QString::number(totalOptSteps))
          .arg(QString::number(xtal->getFailCount()));
        e.brush.setColor(Qt::green);
        break;
      case QueueInterface::Queued:
        e.status = tr("Queued (Opt Step %1 of %2, %3 failures)")
          .arg(QString::number(xtal->getCurrentOptStep()))
          .arg(QString::number(totalOptSteps))
          .arg(QString::number(xtal->getFailCount()));
        e.brush.setColor(Qt::cyan);
        break;
      case QueueInterface::Success:
        e.status = "Starting update...";
        break;
      case QueueInterface::Unknown:
        e.status = "Unknown";
        e.brush.setColor(Qt::red);
        break;
      case QueueInterface::Error:
        e.status = "Error: Restarting job...";
        e.brush.setColor(Qt::darkRed);
        break;
      case QueueInterface::CommunicationError:
        e.status = "Communication Error";
        e.brush.setColor(Qt::darkRed);
        break;
      // Shouldn't happen; started and pending only occur when xtal is "Submitted"
      case QueueInterface::Started:
      case QueueInterface::Pending:
      default:
        break;
      }
      break;
    }
    case Xtal::Submitted:
      e.status = tr("Job submitted (%1 of %2)")
        .arg(QString::number(xtal->getCurrentOptStep()))
        .arg(QString::number(totalOptSteps));
      e.brush.setColor(Qt::cyan);
      break;
    case Xtal::Restart:
      e.status = "Restarting job...";
      e.brush.setColor(Qt::cyan);
      break;
    case Xtal::Killed:
    case Xtal::Removed:
      e.status = "Killed";
      e.brush.setColor(Qt::darkGray);
      break;
    case Xtal::Duplicate:
      e.status = tr("Duplicate of %1")
        .arg(xtal->getDuplicateString());
      e.brush.setColor(Qt::darkGreen);
      break;
    case Xtal::StepOptimized:
      e.status = "Checking status...";
      e.brush.setColor(Qt::cyan);
      break;
    case Xtal::Optimized:
      e.status = "Optimized";
      e.brush.setColor(Qt::yellow);
      break;
    case Xtal::WaitingForOptimization:
      e.status = tr("Waiting for Optimization (%1 of %2)")
        .arg(QString::number(xtal->getCurrentOptStep()))
        .arg(QString::number(totalOptSteps));
      e.brush.setColor(Qt::darkCyan);
      break;
    case Xtal::Error:
      e.status = "Job failed";
      e.brush.setColor(Qt::red);
      break;
    case Xtal::Updating:
      e.status = "Updating structure...";
      e.brush.setColor(Qt::cyan);
      break;
    case Xtal::Empty:
      e.status = "Structure empty...";
      break;
    }

    if (xtal->getFailCount() != 0) {
      e.brush.setColor(Qt::red);
    }
    emit updateTableEntry(i, e);
  }