void Interpreter::command(const QString &command) { QMutexLocker locker(&m_mutexInput); if (m_localProgramRunning) return; QStringList words = command.split(QRegExp("[\\s(),\\t]"), QString::SkipEmptyParts); if (m_waiting) { m_command = command; m_command.remove(QRegExp("[(),\\t]")); m_key = (Qt::Key)0; m_selection = RectA(0, 0, 0, 0); m_waitInput.wakeAll(); goto end; } if (words.size()==0) goto end; if (words[0]=="do") { clearLocalProgram(); beginLocalProgram(); } else if (words[0]=="done") { endLocalProgram(); locker.unlock(); runOrStopProgram(true); locker.relock(); } else if (words[0]=="list") listProgram(); else if (words[0].left(4)=="cont") { locker.unlock(); runOrStopProgram(true); locker.relock(); } else if (words[0]=="close") queueCommand(CLOSE); else handleCall(words); end: prompt(); }
void Interpreter::command(const QString &command) { QMutexLocker locker(&m_mutexInput); if (m_localProgramRunning) return; if (m_waiting) { m_command = command; m_command.remove(QRegExp("[(),\\t]")); m_key = (Qt::Key)0; m_waitInput.wakeAll(); return; } QStringList words = command.split(QRegExp("[\\s(),\\t]"), QString::SkipEmptyParts); if (words.size()==0) goto end; if (words[0]=="do") { clearLocalProgram(); beginLocalProgram(); } else if (words[0]=="done") { endLocalProgram(); runLocalProgram(); return; } else if (words[0]=="list") listProgram(); else if (words[0].left(4)=="cont") { if (runLocalProgram()>=0) return; } else if (words[0]=="rendermode") { if (words.size()>1) m_renderer->setMode(words[1].toInt()); else emit textOut("Missing mode parameter.\n"); } else if (words[0]=="region") { emit videoInput(VideoWidget::REGION); m_argvHost = words; } #if 0 else if (words[0]=="set") { if (words.size()==3) { words[1].remove(QRegExp("[\\s\\D]+")); m_renderer->m_blobs.setLabel(words[1], words[2]); } } #endif else { handleCall(words); return; // don't print prompt } end: prompt(); }