// callback for number static void onelab_number_input_range_cb(Fl_Widget *w, void *data) { if(!data) return; std::string name((char*)data); std::vector<onelab::number> numbers; OnelabDatabase::instance()->get(numbers, name); if(numbers.size()){ inputRange *o = (inputRange*)w; onelab::number old = numbers[0]; if(o->doCallbackOnValues()){ numbers[0].setValue(o->value()); numbers[0].setMin(o->minimum()); numbers[0].setMax(o->maximum()); numbers[0].setStep(o->step()); numbers[0].setChoices(o->choices()); } o->doCallbackOnValues(true); numbers[0].setAttribute("Loop", o->loop()); numbers[0].setAttribute("Graph", o->graph()); setGmshOption(numbers[0]); OnelabDatabase::instance()->set(numbers[0], std::string("localGUI")); updateGraphs(); autoCheck(old, numbers[0]); } }
void SpeedTrainingMode::switchToMode() { setupTrainingWidgets(); m_ui->letter->show(); m_ui->changeSequence->show(); //m_ui->forModes->show(); m_ui->helpBar->setText("<font color=\"green\">Type the letter you hear ASAP. The keying will get faster.</font>"); m_ui->play->show(); m_ui->WPM->show(); setupSequences(); setupWidgets(m_trainingSequence, true, "S\np\ne\ne\nd\n \nR\na\nt\ni\nn\ng"); updateGraphs(); }
void LoggingWindow::on_Log() { qDebug() << "Logging! Time of this log is: " << QDateTime::currentDateTime().toString(); data[dataPointer] = new DataPoint(); data[dataPointer]->addData(eventToPass, 0, lastValue); lastValue = 0; emit updateGraphs(data[dataPointer]); this->addToTable(data[dataPointer]->className(), data[dataPointer]->airQuality(), data[dataPointer]->deltaAirQuality(), data[dataPointer]->year(), data[dataPointer]->boys(), data[dataPointer]->girls(), data[dataPointer]->timeOfLog()); QTableWidgetItem *nextCell = new QTableWidgetItem(); QTableWidgetItem *blankCell = new QTableWidgetItem(); QTableWidgetItem *nextLog = new QTableWidgetItem(); nextCell->setText("Next Log Time"); eventList[indexOfNextLog]->setLogDateTime((eventList[indexOfNextLog]->logDateTime().addDays(14))); nextLog->setText(eventList[indexOfNextLog]->logDateTime().toString()); indexOfNextLog ++; if (indexOfNextLog > numberOfEvents) { indexOfNextLog = 0; } ui->logPlanTable->setItem(eventList[indexOfNextLog]->slotID(), 2, nextCell); ui->logPlanTable->setItem(eventToPass->slotID(), 2, blankCell); ui->logPlanTable->setItem(eventToPass->slotID(), 1, nextLog); this->setupLogTimer(eventList[indexOfNextLog]); ui->nextLogLabel->setText(QString("Next Log: %1").arg(eventList[indexOfNextLog]->logDateTime().toString("hh:mm dd/MM/yy"))); dataPointer++; logsSinceLastBackup++; if (logsSinceLastBackup >= ui->logsPerBackup->text().toInt() && ui->enableBackups->isChecked()) { this->saveBackup(); } }
void onelab_cb(Fl_Widget *w, void *data) { if(!data) return; std::string action((const char*)data); if(action == "refresh"){ updateGraphs(); return; } if(action == "stop"){ // TODO send stop if server is not local //FlGui::instance()->onelab->stop(true); FlGui::instance()->onelab->setButtonMode("", ""); // wait for the client to stop OnelabServer::instance()->stopClients(); return; } if(FlGui::instance()->onelab->isBusy()){ Msg::Info("I'm busy! Ask me that later..."); return; } if(action == "reset"){ OnelabDatabase::instance()->clear(); // TODO keep persitant OnelabDatabase::instance()->run(action, "Gmsh"); FlGui::instance()->onelab->clearTree(true); action = "check"; } Msg::ResetErrorCounter(); FlGui::instance()->onelab->setButtonMode("", "stop"); OnelabDatabase::instance()->run(action); drawContext::global()->draw(); }
void LoggingWindow::on_loadBackupButton_clicked() { QString path = QDir::currentPath(); if (backupFolder != "") { path = backupFolder; } QString fileToOpen = QFileDialog::getOpenFileName(this, "Open Backup", path, tr("Backup File (*.backup)")); if (fileToOpen != "") { QFile backupFile(fileToOpen); QTextStream fileInput(&backupFile); if (backupFile.open(QIODevice::ReadOnly | QIODevice::Text)) { while (!fileInput.atEnd()) { qDebug() << "Loading line of Backup File"; QString line = fileInput.readLine(); data[dataPointer] = new DataPoint(this); data[dataPointer]->addBackupData(line); emit updateGraphs(data[dataPointer]); this->addToTable(data[dataPointer]->className(), data[dataPointer]->airQuality(), data[dataPointer]->deltaAirQuality(), data[dataPointer]->year(), data[dataPointer]->boys(), data[dataPointer]->girls(), data[dataPointer]->timeOfLog()); lastValue = data[dataPointer]->airQuality(); dataPointer++; } } } }
QTime SpeedTrainingMode::startNextTrainingKey() { if (runningMode() != RUNNING) return QTime(); qDebug() << "--- Start next training key"; int letterCount = 0; QList<QPair<QChar, float> > letters; float totalTime = 0.0, thisTime = 0.0, minTime = 0.0; MorseStat *stat = 0; QString currentLetterGoal; int badLetters = 0; //if (m_morse->audioMode() == Morse::PLAYING) // return; QString::iterator letter; QString::iterator lastLetter = m_trainingSequence.end(); for(letter = m_trainingSequence.begin(); letter != lastLetter; ++letter) { letterCount++; currentLetterGoal = (*letter).toUpper(); stat = getStat(*letter); if (stat->getTryCount() == 0 && m_doEntireSequence) { thisTime = 1000*60.0/(50.0*float(m_morse->currentWPMAccept())); } else { thisTime = stat->getAverageTime(); } totalTime += thisTime; if (minTime > thisTime) minTime = thisTime; if (stat->getTryCount() == 0 && !m_doEntireSequence) { // never keyed yet; do it immediately if we got this far qDebug() << "|keying: " << *letter; m_lastKey = *letter; m_lastKeys.append(*letter); setSequence(m_trainingSequence, letterCount); m_avewpmLabel->setText("All WPM: " + QString().setNum(msToPauseWPM(totalTime/letterCount)) + ", " + *letter + ": NEW"); if (m_morse->trainingMode() == Morse::SPEEDTRAIN) setWPMLabel(msToPauseWPMF((float(m_badCount + m_countWeight)/float(m_goodCount + m_countWeight)) * totalTime/float(letterCount))); else setWPMLabel(msToPauseWPMF(totalTime/float(letterCount))); m_lastTimes.push_back(m_morse->playIt(*letter, false)); updateGraphs(); return m_lastTimes.last(); } //qDebug() << " adding " << *letter << " / " << thisTime << " / " << msToPauseWPM(thisTime); letters.append(QPair<QChar, float>(*letter, thisTime)); if(msToPauseWPM(thisTime) < m_morse->currentWPMAccept()) { qDebug() << " too slow: " << *letter << " / " << thisTime << " / " << msToPauseWPM(thisTime); if (++badLetters >= m_maxBadLetters) { // we're not fast enough; break here break; } } } // we have all the letters available to pick from at random // Calculate our magic constant: int numLetters = letters.count(); int magicHelper; float currentAccept = m_morse->currentWPMAccept(); if (numLetters > 2) { //magicHelper = int(((50.0 + float(numLetters) * float(maxPercent))*0.5 - 50.0)/((float(numLetters) + 1.0)*0.5 - 1.0)); magicHelper = int(((currentAccept/2.0 + float(numLetters) * currentAccept)*0.5 - currentAccept/2.0)/((float(numLetters) + 1.0)*0.5 - 1.0)); } else magicHelper = currentAccept*2; float totalWPM = 0; QList<QPair<QChar, float> >::iterator aletter; QList<QPair<QChar, float> >::iterator last = letters.end(); for(aletter = letters.begin(); aletter != last; ++aletter) { float pauseWPM = qMax(msToPauseWPMF((*aletter).second), float(currentAccept)); (*aletter).second = pauseWPM; totalWPM += pauseWPM; } m_avewpmLabel->setText("All WPM: " + QString().setNum(msToPauseWPM(totalTime/letterCount)) + ", " + currentLetterGoal + " WPM: " + QString().setNum(msToPauseWPM(thisTime))); setWPMLabel(msToPauseWPMF((float(m_badCount + m_countWeight)/float(m_goodCount + m_countWeight)) * totalTime/float(letterCount))); // now pick a random time between 0 and the total of all the averages; averages with a slower speed are more likely float randWPM; randWPM = totalWPM*float(qrand())/float(RAND_MAX); float newTotal = 0; // qDebug() << "letter set random: " << randWPM << " total: " << totalTime << " min: " << minTime/2 << ", count: " << letters.count(); QList<QPair<QChar, float> >::iterator search; setSequence(m_trainingSequence, letterCount); for(search = letters.begin(); search != last; ++search) { //qDebug() << " -> " << (*search).first << "/" << (*search).second; newTotal += ((*search).second); if (newTotal > randWPM) { qDebug() << ">keying: " << (*search).first; m_lastKey = (*search).first; m_lastKeys.append((*search).first); m_lastTimes.push_back(m_morse->playIt((*search).first, false)); updateGraphs(); return m_lastTimes.last(); } } qDebug() << "**** shouldn't get here: " << randWPM << "," << totalTime; return QTime(); }