Exemplo n.º 1
0
// 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]);
  }
}
Exemplo n.º 2
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();
}
Exemplo n.º 3
0
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(); }
}
Exemplo n.º 4
0
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();
}
Exemplo n.º 5
0
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++;


            }
        }
    }

}
Exemplo n.º 6
0
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();
}