void ProjectModel::commit(QModelIndex &index) { ProjectTreeItem *item = static_cast<ProjectTreeItem*>(index.internalPointer()); QVariant var = item->data(0, Qt::UserRole); CompleteAnnotationItem *oldAnnot = var.value<CompleteAnnotationItem*>(); AnnotationItem* oldItem = oldAnnot->getItem(); AnnotationItem* newItem = new AnnotationItem(oldItem->getId(), new ConllGraph(*oldItem->getOriginalParse()), new ConllGraph(*oldItem->getEditableParse())); RevisionAnnotationList revisions; for(int i = 0; i < oldAnnot->getRevisionsCount(); i++) revisions << oldAnnot->getRevision(i); revisions << Revision<AnnotationItem*>(oldItem); CompleteAnnotationItem *newAnnot = new CompleteAnnotationItem(oldAnnot->id(), newItem, revisions); item->setData(QVariant::fromValue(newAnnot)); //Which file the item belongs ? QString filename = item->parent()->data(0).toString(); //Get the annotation and update int indexFile = item->project()->findFile(filename); item->project()->changeAnnotation( indexFile , index.row(), newAnnot ); //item->project()->addModified( indexFile, index.row() ); }
void SelectionDelegate::initialize() { // remove any existing rows if (m_label->childCount()) model()->removeRows(m_label, 0, m_label->childCount()); QList<QString> names = m_widget->namedSelections(); // add the selectionss... model()->insertRows(m_label, 0, names.size()); for (int i = 0; i < m_label->childCount(); ++i) { ProjectTreeItem *item = m_label->child(i); item->setData(0, names.at(i)); item->setData(1, QString("%1").arg(i)); // set the primitive PrimitiveList primitives = m_widget->namedSelectionPrimitives(i); item->setPrimitives(primitives); } }
void BondDelegate::primitiveUpdated(Primitive *primitive) { if (primitive->type() == Primitive::MoleculeType) { initialize(); return; } if (primitive->type() != Primitive::BondType) return; ProjectTreeItem *item = m_label->child(primitive->index()); item->setData(0, tr("bond %1").arg(primitive->index())); }
bool ProjectModel::setData(const QModelIndex &index, const QVariant &value, int role) { if(!index.isValid()) return false; if(role == Qt::EditRole) { ProjectTreeItem *item = static_cast<ProjectTreeItem*>(index.internalPointer()); item->setData(value); return true; } return false; }
void BondDelegate::primitiveAdded(Primitive *primitive) { if (primitive->type() != Primitive::BondType) return; // add the new primitive to the end model()->insertRows(m_label, m_label->childCount(), 1); // get the item ProjectTreeItem *item = m_label->child(m_label->childCount() - 1); item->setData(0, tr("bond %1").arg(primitive->index())); // set the primitive PrimitiveList primitives; primitives.append(primitive); item->setPrimitives(primitives); }
void BondDelegate::primitiveRemoved(Primitive *primitive) { if (primitive->type() != Primitive::BondType) return; // remove the row model()->removeRows(m_label, primitive->index(), 1); // loop over all atoms to fix their index if needed if ((primitive->index() + 1) < (unsigned long) m_label->childCount()) { for (int i = primitive->index(); i < m_label->childCount(); ++i) { ProjectTreeItem *item = m_label->child(i); item->setData(0, tr("bond %1").arg(i)); } } }
void BondDelegate::initialize() { Molecule *molecule = m_widget->molecule(); // remove any existing rows if (m_label->childCount()) model()->removeRows(m_label, 0, m_label->childCount()); // add the bonds... model()->insertRows(m_label, 0, molecule->numBonds()); for (int i = 0; i < m_label->childCount(); ++i) { ProjectTreeItem *item = m_label->child(i); item->setData(0, tr("bond %1").arg(i)); // set the primitive PrimitiveList primitives; primitives.append(molecule->bond(i)); item->setPrimitives(primitives); } }
void ProjectModel::rollback(QModelIndex &index, int n) { ProjectTreeItem *item = static_cast<ProjectTreeItem*>(index.internalPointer()); QVariant var = item->data(0, Qt::UserRole); CompleteAnnotationItem *currentAnnotation = var.value<CompleteAnnotationItem*>(); Revision<AnnotationItem*> revision = currentAnnotation->getRevision(n); RevisionAnnotationList revisions; for(int i = 0; i < n; i++){ revisions << currentAnnotation->getRevision(i); } CompleteAnnotationItem *newAnnotation = new CompleteAnnotationItem(revision.getValue()->getId(), revision.getValue(), revisions); var.setValue<CompleteAnnotationItem*>(newAnnotation); item->setData(var); }