bool GridModel::setData(const QModelIndex& index, const QVariant& value, int role) { if( role == Qt::EditRole ) { Cell* subject = _grid.cellAt(index.row(), index.column()); char val = Cell::UNKNOWN; if( !value.toString().trimmed().isEmpty() ){ val = _grid.alphabet().indexOf( value.toString() ); } if( val != Cell::UNKNOWN && _grid.setCellAndUpdate(subject, val) ) { Logger::log(QString("Setting value of (%1,%2) to %3").arg( QString::number(subject->rowIndex()), QString::number(subject->columnIndex()), _grid.alphabet().at(subject->value()) )); // calculate change in table space cellsChanged(_grid.unwindHistorySince().toList()); return true; } else return false; } else return false; }
void GameOfLife::run() { int **fp, **fr; while ( true ) { QThread::msleep ( m_delay ); if ( !paused ) { ++m_time; qDebug() << "<<<" << m_time << "<<<"; development(); if ( samuBrain ) { samuBrain->learning ( lattices[latticeIndex], center_of_tape, 10, predictions, &fp, &fr ); qDebug() << m_time << " #MPUs:" << samuBrain->nofMPUs() << "Observation (MPU):" << samuBrain->get_foobar().c_str(); } //latticeIndex = ( latticeIndex+1 ) %2; emit cellsChanged ( lattices[latticeIndex], predictions, fp, fr ); qDebug() << ">>>" << m_time << ">>>"; } } }
void GridModel::undo(){ HistoryFrame* frame = _grid.undo(); if( frame == nullptr ) return; QList<Cell*> diff; for( auto i=frame->domainChanges.begin(); i!=frame->domainChanges.end(); ++i ){ diff << i.key(); } cellsChanged(diff); Logger::log("Reverting last change"); }
void GameOfLife::run() { while ( true ) { QThread::msleep ( m_delay ); if ( !paused ) { ++m_time; development(); learning(); latticeIndex = ( latticeIndex+1 ) %2; emit cellsChanged ( lattices[latticeIndex], predictions ); } } }
int QtTableModelInterface::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: cellsChanged((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< int(*)>(_a[4])),(*reinterpret_cast< const QList<QByteArray>(*)>(_a[5]))); break; case 1: rowsInserted((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 2: rowsRemoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 3: rowsMoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 4: columnsInserted((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 5: columnsRemoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 6: columnsMoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; default: ; } _id -= 7; } return _id; }
void RKVariable::setNumeric (int from_row, int to_row, double *data) { RK_TRACE (OBJECTS); RK_ASSERT (to_row < getLength ()); if (getDataType () == DataCharacter) { RK_ASSERT (false); // asserting false to catch cases of this use for now. it's not really a problem, though int i = 0; for (int row=from_row; row <= to_row; ++row) { setText (row, QString::number (data[i++], 'g', MAX_PRECISION)); } } else if (getDataType () == DataFactor) { int i = 0; for (int row=from_row; row <= to_row; ++row) { if (myData ()->cell_states[row] & RKVarEditData::Invalid) myData ()->cell_states[row] = RKVarEditData::UnsyncedInvalidState; else myData ()->cell_states[row] = 0; if (isnan (data[i]) || (!myData ()->value_labels) || (!myData ()->value_labels->contains (QString::number (data[i])))) { myData ()->cell_states[row] |= RKVarEditData::NA; } else { myData ()->cell_states[row] |= RKVarEditData::Valid; myData ()->cell_doubles[row] = data[i]; } ++i; } } else { int i = 0; for (int row=from_row; row <= to_row; ++row) { if (myData ()->cell_states[row] & RKVarEditData::Invalid) myData ()->cell_states[row] = RKVarEditData::UnsyncedInvalidState; else myData ()->cell_states[row] = 0; if (isnan (data[i])) { myData ()->cell_states[row] |= RKVarEditData::NA; } else { myData ()->cell_states[row] |= RKVarEditData::Valid; myData ()->cell_doubles[row] = data[i]; } ++i; } } cellsChanged (from_row, to_row); }
void GameOfLife::run() { while ( true ) { QThread::msleep ( m_delay ); if ( !paused ) { ++m_time; development(); learning(); latticeIndex = ( latticeIndex+1 ) %2; emit cellsChanged ( lattices[latticeIndex], predictions ); ++m_frame_num; { QMutexLocker lck(m_mutex); if(m_stopped) break; } } } }
void RKVariable::setCharacter (int from_row, int to_row, QString *data) { RK_TRACE (OBJECTS); RK_ASSERT (to_row < getLength ()); if (getDataType () == DataCharacter) { int i=0; for (int row=from_row; row <= to_row; ++row) { if (myData ()->cell_states[row] & RKVarEditData::Invalid) myData ()->cell_states[row] = RKVarEditData::UnsyncedInvalidState; else myData ()->cell_states[row] = 0; if (data[i].isNull ()) myData ()->cell_states[row] |= RKVarEditData::NA; else myData ()->cell_states[row] |= RKVarEditData::Valid; myData ()->cell_strings[row] = data[i++]; } } else { int i=0; for (int row=from_row; row <= to_row; ++row) { setText (row, data[i++]); } return; } cellsChanged (from_row, to_row); }
void GridModel::solve(){ cellsChanged(_grid.solve(true)); }
void GridModel::fillSingleDomains() { cellsChanged(_grid.solve(false)); }