diff options
Diffstat (limited to 'sigmodr/SigmodTree.cpp')
| -rw-r--r-- | sigmodr/SigmodTree.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/sigmodr/SigmodTree.cpp b/sigmodr/SigmodTree.cpp index b0d32ca8..aa323af1 100644 --- a/sigmodr/SigmodTree.cpp +++ b/sigmodr/SigmodTree.cpp @@ -35,25 +35,31 @@ Sigmodr::SigmodTree::SigmodTree(QWidget* parent) : QTreeView(parent) { + SigmodTreeModel* model = new SigmodTreeModel(this); + connect(model, SIGNAL(dirty(const Sigmod::Sigmod*, bool)), this, SLOT(setDirty(const Sigmod::Sigmod*, bool))); header()->hide(); - setModel(new Sigmodr::SigmodTreeModel(this)); - setRootIndex(model()->index(-1, 0, QModelIndex())); + setModel(model); + setRootIndex(model->index(-1, 0, QModelIndex())); } QString Sigmodr::SigmodTree::description(const QModelIndex& index) { - return QString("%1: %2").arg(model()->data(index, Sigmodr::BaseModel::TypeRole).toString(), model()->data(index, Qt::DisplayRole).toString()); + QString type = model()->data(index, BaseModel::TypeRole).toString(); + QString name = model()->data(index, Qt::DisplayRole).toString(); + if (type.isEmpty() && name.isEmpty()) + return ""; + return QString("%1: %2").arg(type).arg(name); } Sigmodr::ObjectUI* Sigmodr::SigmodTree::editorWidget(const QModelIndex& index) { - Sigmodr::ObjectUI* widget = qobject_cast<Sigmodr::ObjectUI*>(model()->data(index, Sigmodr::BaseModel::WidgetRole).value<QWidget*>()); + Sigmodr::ObjectUI* widget = qobject_cast<ObjectUI*>(model()->data(index, BaseModel::WidgetRole).value<QWidget*>()); return widget; } KMenu* Sigmodr::SigmodTree::contextMenu(const QModelIndex& index) { - return model()->data(index, Sigmodr::BaseModel::ContextMenuRole).value<KMenu*>(); + return model()->data(index, BaseModel::ContextMenuRole).value<KMenu*>(); } const Sigmod::Sigmod* Sigmodr::SigmodTree::currentSigmod() const @@ -71,13 +77,13 @@ const Sigmod::Sigmod* Sigmodr::SigmodTree::currentSigmod() const QDomDocument Sigmodr::SigmodTree::copy(const QModelIndex& index) { QDomDocument xml; - xml.setContent(model()->data(index, Sigmodr::BaseModel::XmlRole).toString()); + xml.setContent(model()->data(index, BaseModel::XmlRole).toString()); return xml; } void Sigmodr::SigmodTree::paste(const QModelIndex& index, const QDomDocument& data) { - model()->setData(index, data.toString(), Sigmodr::BaseModel::XmlRole); + model()->setData(index, data.toString(), BaseModel::XmlRole); } QList<const Sigmod::Sigmod*> Sigmodr::SigmodTree::openedSigmods() const @@ -144,10 +150,17 @@ bool Sigmodr::SigmodTree::dirty(const Sigmod::Sigmod* sigmod) const return false; } +bool Sigmodr::SigmodTree::dirty() const +{ + return dirty(currentSigmod()); +} + void Sigmodr::SigmodTree::setDirty(const Sigmod::Sigmod* sigmod, const bool dirty) { if (m_sigmods.contains(sigmod)) + { m_sigmods[sigmod].second = dirty; + } } void Sigmodr::SigmodTree::setDirty() |
