void MessageBoxInstance::buttonClicked() { bool ok = true; QString line; if(mMessageBox->clickedButton() == mMessageBox->button(QMessageBox::Yes)) { line = evaluateSubParameter(ok, mIfYes.actionParameter()); if(!ok) { closeAndDelete(); return; } if(mIfYes.action() == ActionTools::IfActionValue::GOTO) setNextLine(line); else if(mIfYes.action() == ActionTools::IfActionValue::CALLPROCEDURE) { if(!callProcedure(line)) { closeAndDelete(); return; } } } else if(mMessageBox->clickedButton() == mMessageBox->button(QMessageBox::No)) { line = evaluateSubParameter(ok, mIfNo.actionParameter()); if(!ok) { closeAndDelete(); return; } if(mIfNo.action() == ActionTools::IfActionValue::GOTO) setNextLine(line); else if(mIfNo.action() == ActionTools::IfActionValue::CALLPROCEDURE) { if(!callProcedure(line)) { closeAndDelete(); return; } } } closeAndDelete(); emit executionEnded(); }
void WindowConditionInstance::checkWindow() { ActionTools::WindowHandle foundWindow = findWindow(); if((foundWindow.isValid() && mCondition == Exists) || (!foundWindow.isValid() && mCondition == DontExists)) { bool ok = true; QString line = evaluateSubParameter(ok, mIfTrue.actionParameter()); if(!ok) return; if(mIfTrue.action() == ActionTools::IfActionValue::GOTO) setNextLine(line); else if(mIfTrue.action() == ActionTools::IfActionValue::CALLPROCEDURE) { if(!callProcedure(line)) return; } mTimer.stop(); executionEnded(); } }
void FindImageInstance::searchFinished(const ActionTools::MatchingPointList &matchingPointList) { bool ok = true; if(matchingPointList.empty()) { setCurrentParameter(QStringLiteral("ifNotFound"), QStringLiteral("line")); QString line = evaluateSubParameter(ok, mIfNotFound.actionParameter()); if(!ok) return; if(mIfNotFound.action() == ActionTools::IfActionValue::GOTO) { setNextLine(line); executionEnded(); } else if(mIfNotFound.action() == ActionTools::IfActionValue::CALLPROCEDURE) { if(!callProcedure(line)) return; executionEnded(); } else if(mIfNotFound.action() == ActionTools::IfActionValue::WAIT) { mWaitTimer.start(mSearchDelay); } else executionEnded(); return; } if(mMaximumMatches == 1) { const ActionTools::MatchingPoint &bestMatchingPoint = matchingPointList.first(); QPoint position = bestMatchingPoint.position; if(mSource != WindowSource || !mWindowRelativePosition) position += mImagesToSearchIn.at(bestMatchingPoint.imageIndex).second.topLeft(); setVariable(mPositionVariableName, Code::Point::constructor(position, scriptEngine())); setVariable(mConfidenceVariableName, bestMatchingPoint.confidence); } else { QScriptValue arrayResult = scriptEngine()->newArray(matchingPointList.size()); QScriptValue arrayConfidenceResult = scriptEngine()->newArray(matchingPointList.size()); for(int i = 0; i < matchingPointList.size(); ++i) { const ActionTools::MatchingPoint &matchingPoint = matchingPointList.at(i); QPoint position = matchingPoint.position; if(mSource != WindowSource || !mWindowRelativePosition) position += mImagesToSearchIn.at(matchingPoint.imageIndex).second.topLeft(); arrayResult.setProperty(i, Code::Point::constructor(position, scriptEngine())); arrayConfidenceResult.setProperty(i, matchingPoint.confidence); } setVariable(mPositionVariableName, arrayResult); setVariable(mConfidenceVariableName, arrayConfidenceResult); } setCurrentParameter(QStringLiteral("ifFound"), QStringLiteral("line")); QString line = evaluateSubParameter(ok, mIfFound.actionParameter()); if(!ok) return; if(mIfFound.action() == ActionTools::IfActionValue::GOTO) { setNextLine(line); executionEnded(); } else if(mIfFound.action() == ActionTools::IfActionValue::CALLPROCEDURE) { if(!callProcedure(line)) return; executionEnded(); } else if(mIfFound.action() == ActionTools::IfActionValue::WAIT) { mWaitTimer.start(mSearchDelay); } else executionEnded(); }
void WindowConditionInstance::startExecution() { bool ok = true; QString title = evaluateString(ok, QStringLiteral("title")); mCondition = evaluateListElement<Condition>(ok, conditions, QStringLiteral("condition")); mIfTrue = evaluateIfAction(ok, QStringLiteral("ifTrue")); ActionTools::IfActionValue ifFalse = evaluateIfAction(ok, QStringLiteral("ifFalse")); mPosition = evaluateVariable(ok, QStringLiteral("position")); mSize = evaluateVariable(ok, QStringLiteral("size")); mXCoordinate = evaluateVariable(ok, QStringLiteral("xCoordinate")); mYCoordinate = evaluateVariable(ok, QStringLiteral("yCoordinate")); mWidth = evaluateVariable(ok, QStringLiteral("width")); mHeight = evaluateVariable(ok, QStringLiteral("height")); mProcessId = evaluateVariable(ok, QStringLiteral("processId")); if(!ok) return; mTitleRegExp = QRegExp(title, Qt::CaseSensitive, QRegExp::WildcardUnix); ActionTools::WindowHandle foundWindow = findWindow(); if((foundWindow.isValid() && mCondition == Exists) || (!foundWindow.isValid() && mCondition == DontExists)) { QString line = evaluateSubParameter(ok, mIfTrue.actionParameter()); if(!ok) return; if(mIfTrue.action() == ActionTools::IfActionValue::GOTO) setNextLine(line); else if(mIfTrue.action() == ActionTools::IfActionValue::CALLPROCEDURE) { if(!callProcedure(line)) return; } executionEnded(); } else { QString line = evaluateSubParameter(ok, ifFalse.actionParameter()); if(!ok) return; if(ifFalse.action() == ActionTools::IfActionValue::GOTO) { setNextLine(line); executionEnded(); } else if(ifFalse.action() == ActionTools::IfActionValue::CALLPROCEDURE) { if(!callProcedure(line)) return; executionEnded(); } else if(ifFalse.action() == ActionTools::IfActionValue::WAIT) { connect(&mTimer, &QTimer::timeout, this, &WindowConditionInstance::checkWindow); mTimer.setInterval(100); mTimer.start(); } else executionEnded(); } }