# HG changeset patch # User Chris Cannam # Date 1213203604 0 # Node ID 397fe91dc8e0186e926e1e01ba943edc3b34aaa5 # Parent 50a956688baa8864bf46fd8e4ed7e91b8388eb3f * Fix for data modification in data edit view... now why isn't the command appearing on the undo menu? diff -r 50a956688baa -r 397fe91dc8e0 data/model/ModelDataTableModel.cpp --- a/data/model/ModelDataTableModel.cpp Wed Jun 11 16:13:25 2008 +0000 +++ b/data/model/ModelDataTableModel.cpp Wed Jun 11 17:00:04 2008 +0000 @@ -22,7 +22,9 @@ #include ModelDataTableModel::ModelDataTableModel(TabularModel *m) : - m_model(m) + m_model(m), + m_sortColumn(0), + m_sortOrdering(Qt::AscendingOrder) { Model *baseModel = dynamic_cast(m); @@ -46,9 +48,12 @@ ModelDataTableModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (!index.isValid()) return false; - Command *command = m_model->setData(getUnsorted(index.row()), - index.column(), value, role); + std::cerr << "ModelDataTableModel::setData(" << index.row() << ", " << index.column() << ", " << value.toString().toStdString() << ", " << role << ")" << std::endl; + Command *command = m_model->getSetDataCommand(getUnsorted(index.row()), + index.column(), + value, role); if (command) { + std::cerr << "emitting executeCommand" << std::endl; emit executeCommand(command); return true; } else { @@ -177,6 +182,6 @@ void ModelDataTableModel::resort() { - //... + } diff -r 50a956688baa -r 397fe91dc8e0 data/model/SparseTimeValueModel.h --- a/data/model/SparseTimeValueModel.h Wed Jun 11 16:13:25 2008 +0000 +++ b/data/model/SparseTimeValueModel.h Wed Jun 11 17:00:04 2008 +0000 @@ -138,11 +138,16 @@ } } - virtual Command *setData(int row, int column, QVariant value, int role) + virtual Command *getSetDataCommand(int row, int column, const QVariant &value, int role) const { + std::cerr << "SparseTimeValueModel::setData: row = " << row << ", column = " << column << ", role = " << role << std::endl; + if (role != Qt::EditRole) return false; PointListIterator i = getPointListIteratorForRow(row); - if (i == m_points.end()) return false; + if (i == m_points.end()) { + std::cerr << "Failed to find point iterator for row " << row << std::endl; + return false; + } EditCommand *command = new EditCommand(this, tr("Edit Data")); Point point(*i); diff -r 50a956688baa -r 397fe91dc8e0 data/model/TabularModel.h --- a/data/model/TabularModel.h Wed Jun 11 16:13:25 2008 +0000 +++ b/data/model/TabularModel.h Wed Jun 11 17:00:04 2008 +0000 @@ -46,8 +46,7 @@ virtual bool isColumnTimeValue(int col) const = 0; virtual bool isEditable() const { return false; } - virtual Command *setData(int row, int column, const QVariant &, int role) - { return 0; } + virtual Command *getSetDataCommand(int row, int column, const QVariant &, int role) const { return 0; } }; #endif