#include <KMessageBox>
#include <QScrollBar>
+#include <QInputDialog>
TrackView::TrackView(KdenliveDoc *doc, bool *ok, QWidget *parent) :
QWidget(parent),
m_view.ruler_frame->setLayout(layout);
layout->addWidget(m_ruler);
-
QHBoxLayout *sizeLayout = new QHBoxLayout;
sizeLayout->setContentsMargins(0, 0, 0, 0);
sizeLayout->setSpacing(0);
QString style1 = "QToolButton {border-style: none;margin: 0px 3px;padding: 0px;} QToolButton:pressed:hover { background-color: rgba(224, 224, 0, 100); border-style: inset; border:1px solid #cc6666;border-radius: 3px;} QToolButton:hover { background-color: rgba(255, 255, 255, 100); border-style: inset; border:1px solid #cc6666;border-radius: 3px;}";
+
QToolButton *butSmall = new QToolButton(this);
butSmall->setIcon(KIcon("kdenlive-zoom-small"));
butSmall->setToolTip(i18n("Smaller tracks"));
sizeLayout->addWidget(butLarge);
m_view.size_frame->setStyleSheet(style1);
-
QHBoxLayout *tracksLayout = new QHBoxLayout;
tracksLayout->setContentsMargins(0, 0, 0, 0);
tracksLayout->setSpacing(0);
m_headersLayout->setContentsMargins(0, m_trackview->frameWidth(), 0, 0);
m_headersLayout->setSpacing(0);
m_view.headers_container->setLayout(m_headersLayout);
-
connect(m_view.headers_area->verticalScrollBar(), SIGNAL(valueChanged(int)), m_trackview->verticalScrollBar(), SLOT(setValue(int)));
tracksLayout->addWidget(m_trackview);
-
connect(m_trackview->verticalScrollBar(), SIGNAL(valueChanged(int)), m_view.headers_area->verticalScrollBar(), SLOT(setValue(int)));
connect(m_trackview, SIGNAL(trackHeightChanged()), this, SLOT(slotRebuildTrackHeaders()));
void TrackView::slotRebuildTrackHeaders()
{
- QList <TrackInfo> list = m_doc->tracksList();
+ kDebug() << "--------- - - - -REBUILD TLK HEAD";
+ const QList <TrackInfo> list = m_doc->tracksList();
QLayoutItem *child;
+ m_view.headers_container->hide();
while ((child = m_headersLayout->takeAt(0)) != 0) {
if (child->widget()) delete child->widget();
delete child;
}
int max = list.count();
int height = KdenliveSettings::trackheight() * m_scene->scale().y();
+
for (int i = 0; i < max; i++) {
HeaderTrack *header = new HeaderTrack(i, list.at(max - i - 1), height, this);
connect(header, SIGNAL(switchTrackVideo(int)), m_trackview, SLOT(slotSwitchTrackVideo(int)));
connect(header, SIGNAL(deleteTrack(int)), this, SIGNAL(deleteTrack(int)));
connect(header, SIGNAL(insertTrack(int)), this, SIGNAL(insertTrack(int)));
connect(header, SIGNAL(changeTrack(int)), this, SIGNAL(changeTrack(int)));
+ connect(header, SIGNAL(renameTrack(int)), this, SLOT(slotRenameTrack(int)));
m_headersLayout->addWidget(header);
}
+ m_view.headers_container->show();
}
QString idString = elem.attribute("producer");
QString id = idString;
double speed = 1.0;
+ int strobe = 1;
if (idString.startsWith("slowmotion")) {
id = idString.section(':', 1, 1);
speed = idString.section(':', 2, 2).toDouble();
+ strobe = idString.section(':', 3, 3).toInt();
+ if (strobe == 0) strobe = 1;
} else id = id.section('_', 0, 0);
DocClipBase *clip = m_doc->clipManager()->getClipById(id);
if (clip == NULL) {
clipinfo.cropStart = GenTime(in, m_doc->fps());
clipinfo.track = ix;
//kDebug() << "// INSERTING CLIP: " << in << "x" << out << ", track: " << ix << ", ID: " << id << ", SCALE: " << m_scale << ", FPS: " << m_doc->fps();
- ClipItem *item = new ClipItem(clip, clipinfo, m_doc->fps(), speed, false);
+ ClipItem *item = new ClipItem(clip, clipinfo, m_doc->fps(), speed, strobe, false);
if (idString.endsWith("_video")) item->setVideoOnly(true);
else if (idString.endsWith("_audio")) item->setAudioOnly(true);
m_scene->addItem(item);
if (locked) item->setItemLocked(true);
clip->addReference();
position += (out - in + 1);
+ kDebug() << "/////////\n\n\n" << "CLIP SPEED: " << speed << ", " << strobe << "\n\n\n/////////////////////";
+ if (speed != 1.0 || strobe > 1) {
+ QDomElement speedeffect = MainWindow::videoEffects.getEffectByTag(QString(), "speed").cloneNode().toElement();
+ EffectsList::setParameter(speedeffect, "speed", QString::number((int)(100 * speed + 0.5)));
+ EffectsList::setParameter(speedeffect, "strobe", QString::number(strobe));
+ item->addEffect(speedeffect, false);
+ item->effectsCounter();
+ }
// parse clip effects
QDomNodeList effects = elem.childNodes();
m_ruler->updateProjectFps(m_doc->timecode());
}
+void TrackView::slotRenameTrack(int ix)
+{
+ int tracknumber = m_doc->tracksCount() - ix;
+ TrackInfo info = m_doc->trackInfoAt(tracknumber - 1);
+ bool ok;
+ QString newName = QInputDialog::getText(this, i18n("New Track Name"), i18n("Enter new name"), QLineEdit::Normal, info.trackName, &ok);
+ if (ok) {
+ info.trackName = newName;
+ m_doc->setTrackType(tracknumber - 1, info);
+ QTimer::singleShot(300, this, SLOT(slotRebuildTrackHeaders()));
+ m_doc->setModified(true);
+ }
+}
+
+
#include "trackview.moc"