+ if (column == -1) {
+ // position of keyframe changed
+ QTableWidgetItem *item = keyframe_list->item(row, 0);
+ if (item == NULL) return;
+ QString val = keyframe_list->verticalHeaderItem(row)->text();
+ int pos = m_timecode.getFrameCount(val);
+ if (pos <= m_min) {
+ pos = m_min;
+ val = m_timecode.getTimecodeFromFrames(pos);
+ }
+ if (pos > m_max) {
+ pos = m_max;
+ val = m_timecode.getTimecodeFromFrames(pos);
+ }
+ if (val != keyframe_list->verticalHeaderItem(row)->text()) keyframe_list->verticalHeaderItem(row)->setText(val);
+
+ for (int col = 0; col < keyframe_list->horizontalHeader()->count(); col++) {
+ item = keyframe_list->item(row, col);
+ int v = item->text().toInt();
+ if (v >= m_params.at(col).attribute("max").toInt()) item->setText(m_params.at(col).attribute("max"));
+ if (v <= m_params.at(col).attribute("min").toInt()) item->setText(m_params.at(col).attribute("min"));
+ QString keyframes;
+ for (int i = 0; i < keyframe_list->rowCount(); i++) {
+ if (keyframe_list->item(i, col)) keyframes.append(QString::number(m_timecode.getFrameCount(keyframe_list->verticalHeaderItem(i)->text())) + ':' + keyframe_list->item(i, col)->text() + ';');
+ }
+ m_params[col].setAttribute("keyframes", keyframes);
+ }
+
+ emit parameterChanged();
+ return;
+
+ }