# HG changeset patch # User Chris Cannam # Date 1138723045 0 # Node ID 179bf7b5ddea093d06eb17d864e46045001db978 # Parent 3a506d25d95a3c5e27805e3a29950c233d39a6ec * Update some copyright notice dates * Add commands for basic editing operations in time-instants and time-value layers diff -r 3a506d25d95a -r 179bf7b5ddea layer/TimeInstantLayer.cpp --- a/layer/TimeInstantLayer.cpp Mon Jan 30 17:51:56 2006 +0000 +++ b/layer/TimeInstantLayer.cpp Tue Jan 31 15:57:25 2006 +0000 @@ -26,6 +26,7 @@ m_model(0), m_editing(false), m_editingPoint(0, tr("New Point")), + m_editingCommand(0), m_colour(QColor(200, 50, 255)) { m_view->addLayer(this); @@ -349,8 +350,14 @@ long frame = getFrameForX(e->x()); if (frame < 0) frame = 0; frame = frame / m_model->getResolution() * m_model->getResolution(); + m_editingPoint = SparseOneDimensionalModel::Point(frame, tr("New Point")); - m_model->addPoint(m_editingPoint); + + if (m_editingCommand) m_editingCommand->finish(); + m_editingCommand = new SparseOneDimensionalModel::EditCommand(m_model, + tr("Draw Point")); + m_editingCommand->addPoint(m_editingPoint); + m_editing = true; } @@ -364,9 +371,9 @@ long frame = getFrameForX(e->x()); if (frame < 0) frame = 0; frame = frame / m_model->getResolution() * m_model->getResolution(); - m_model->deletePoint(m_editingPoint); + m_editingCommand->deletePoint(m_editingPoint); m_editingPoint.frame = frame; - m_model->addPoint(m_editingPoint); + m_editingCommand->addPoint(m_editingPoint); } void @@ -374,6 +381,8 @@ { std::cerr << "TimeInstantLayer::drawEnd(" << e->x() << ")" << std::endl; if (!m_model || !m_editing) return; + m_editingCommand->finish(); + m_editingCommand = 0; m_editing = false; } @@ -388,6 +397,12 @@ if (points.empty()) return; m_editingPoint = *points.begin(); + + if (m_editingCommand) { + m_editingCommand->finish(); + m_editingCommand = 0; + } + m_editing = true; } @@ -401,9 +416,15 @@ long frame = getFrameForX(e->x()); if (frame < 0) frame = 0; frame = frame / m_model->getResolution() * m_model->getResolution(); - m_model->deletePoint(m_editingPoint); + + if (!m_editingCommand) { + m_editingCommand = new SparseOneDimensionalModel::EditCommand(m_model, + tr("Drag Point")); + } + + m_editingCommand->deletePoint(m_editingPoint); m_editingPoint.frame = frame; - m_model->addPoint(m_editingPoint); + m_editingCommand->addPoint(m_editingPoint); } void @@ -411,6 +432,8 @@ { std::cerr << "TimeInstantLayer::editEnd(" << e->x() << ")" << std::endl; if (!m_model || !m_editing) return; + if (m_editingCommand) m_editingCommand->finish(); + m_editingCommand = 0; m_editing = false; } diff -r 3a506d25d95a -r 179bf7b5ddea layer/TimeInstantLayer.h --- a/layer/TimeInstantLayer.h Mon Jan 30 17:51:56 2006 +0000 +++ b/layer/TimeInstantLayer.h Tue Jan 31 15:57:25 2006 +0000 @@ -72,6 +72,7 @@ SparseOneDimensionalModel *m_model; bool m_editing; SparseOneDimensionalModel::Point m_editingPoint; + SparseOneDimensionalModel::EditCommand *m_editingCommand; QColor m_colour; }; diff -r 3a506d25d95a -r 179bf7b5ddea layer/TimeValueLayer.cpp --- a/layer/TimeValueLayer.cpp Mon Jan 30 17:51:56 2006 +0000 +++ b/layer/TimeValueLayer.cpp Tue Jan 31 15:57:25 2006 +0000 @@ -28,6 +28,7 @@ m_model(0), m_editing(false), m_editingPoint(0, 0.0, tr("New Point")), + m_editingCommand(0), m_colour(Qt::black), m_plotStyle(PlotConnectedPoints) { @@ -496,7 +497,12 @@ float value = getValueForY(e->y()); m_editingPoint = SparseTimeValueModel::Point(frame, value, tr("New Point")); - m_model->addPoint(m_editingPoint); + + if (m_editingCommand) m_editingCommand->finish(); + m_editingCommand = new SparseTimeValueModel::EditCommand(m_model, + tr("Draw Point")); + m_editingCommand->addPoint(m_editingPoint); + m_editing = true; } @@ -513,10 +519,10 @@ float value = getValueForY(e->y()); - m_model->deletePoint(m_editingPoint); + m_editingCommand->deletePoint(m_editingPoint); m_editingPoint.frame = frame; m_editingPoint.value = value; - m_model->addPoint(m_editingPoint); + m_editingCommand->addPoint(m_editingPoint); } void @@ -524,6 +530,8 @@ { std::cerr << "TimeValueLayer::drawEnd(" << e->x() << "," << e->y() << ")" << std::endl; if (!m_model || !m_editing) return; + m_editingCommand->finish(); + m_editingCommand = 0; m_editing = false; } @@ -538,6 +546,12 @@ if (points.empty()) return; m_editingPoint = *points.begin(); + + if (m_editingCommand) { + m_editingCommand->finish(); + m_editingCommand = 0; + } + m_editing = true; } @@ -554,10 +568,15 @@ float value = getValueForY(e->y()); - m_model->deletePoint(m_editingPoint); + if (!m_editingCommand) { + m_editingCommand = new SparseTimeValueModel::EditCommand(m_model, + tr("Drag Point")); + } + + m_editingCommand->deletePoint(m_editingPoint); m_editingPoint.frame = frame; m_editingPoint.value = value; - m_model->addPoint(m_editingPoint); + m_editingCommand->addPoint(m_editingPoint); } void @@ -565,6 +584,8 @@ { std::cerr << "TimeValueLayer::editEnd(" << e->x() << "," << e->y() << ")" << std::endl; if (!m_model || !m_editing) return; + if (m_editingCommand) m_editingCommand->finish(); + m_editingCommand = 0; m_editing = false; } diff -r 3a506d25d95a -r 179bf7b5ddea layer/TimeValueLayer.h --- a/layer/TimeValueLayer.h Mon Jan 30 17:51:56 2006 +0000 +++ b/layer/TimeValueLayer.h Tue Jan 31 15:57:25 2006 +0000 @@ -80,6 +80,7 @@ SparseTimeValueModel *m_model; bool m_editing; SparseTimeValueModel::Point m_editingPoint; + SparseTimeValueModel::EditCommand *m_editingCommand; QColor m_colour; PlotStyle m_plotStyle; };