void WindowPreview::mouseReleaseEvent(QMouseEvent *event) { if (event->x() < 0 || event->y() < 0 || event->x() >= width() || event->y() >= height()) { event->ignore(); } else if (m_didPress) { switch (event->button()) { case Qt::LeftButton: activateTask(); break; case Qt::RightButton: m_toolTip->popup(QCursor::pos(), m_task); break; case Qt::MidButton: if (m_task->isValid()) { m_toolTip->applet()->middleClickTask(m_task->abstractItem()); } default: break; } event->accept(); } else { event->ignore(); } m_didPress = false; }
void TrajectoryThread::ct_run() { if (goalAttained() || deactivationLatch) { switch (terminationStrategy) { case BACK_AND_FORTH: flipWaypoints(); setTrajectoryWaypoints(allWaypoints, true); break; case STOP_THREAD: stop(); break; case STOP_THREAD_DEACTIVATE: if(deactivateTask()){ stop(); }else{ std::cout << "[WARNING] Trajectory id = "<< ControlThread::threadId << " for task: " << originalTaskParams.name << " has attained its goal state, but cannot be deactivated." << std::endl; yarp::os::Time::delay(1.0); // try again in one second. deactivationDelay += 1.0; if(deactivationDelay >= deactivationTimeout){ std::cout << "[WARNING] Deactivation timeout." << std::endl; stop(); } } break; case WAIT: if (printWaitingNoticeOnce) { std::cout << "Trajectory id = "<< ControlThread::threadId << " for task: " << originalTaskParams.name << " has attained its goal state. Awaiting new commands." << std::endl; printWaitingNoticeOnce = false; } break; case WAIT_DEACTIVATE: if (printWaitingNoticeOnce) { if(deactivateTask()){ std::cout << "Trajectory id = "<< ControlThread::threadId << " for task: " << originalTaskParams.name << " has attained its goal state. Deactivating task and awaiting new commands." << std::endl; printWaitingNoticeOnce = false; deactivationLatch = true; }else{ std::cout << "Trajectory id = "<< ControlThread::threadId << " for task: " << originalTaskParams.name << " has attained its goal state and is awaiting new commands. [WARNING] Could not deactivate the task." << std::endl; yarp::os::Time::delay(1.0); // try again in one second. deactivationDelay += 1.0; if(deactivationDelay >= deactivationTimeout){ printWaitingNoticeOnce = false; std::cout << "[WARNING] Deactivation timeout." << std::endl; } } } break; } } else{ if (!currentTaskParams.isActive) { activateTask(); } desStateBottle.clear(); if (trajType==GAUSSIAN_PROCESS) { Eigen::MatrixXd desiredState_tmp; trajectory->getDesiredValues(yarp::os::Time::now(), desiredState_tmp, desiredVariance); desiredState << desiredState_tmp; for(int i=0; i<desiredState.size(); i++) { desStateBottle.addDouble(desiredState(i)); } #if USING_SMLT if(useVarianceModulation) { Eigen::VectorXd desiredWeights = varianceToWeights(desiredVariance); for(int i=0; i<desiredWeights.size(); i++) { desStateBottle.addDouble(desiredWeights(i)); } } #endif } else { desiredState << trajectory->getDesiredValues(yarp::os::Time::now()); for(int i=0; i<desiredState.size(); i++) { desStateBottle.addDouble(desiredState(i)); } } outputPort.write(desStateBottle); } }