From: <j-...@us...> - 2008-03-01 21:47:48
|
Revision: 1968 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1968&view=rev Author: j-b-m Date: 2008-03-01 13:47:52 -0800 (Sat, 01 Mar 2008) Log Message: ----------- Effects can be enabled / disabled Modified Paths: -------------- branches/KDE4/src/clipitem.cpp branches/KDE4/src/customtrackview.cpp branches/KDE4/src/customtrackview.h branches/KDE4/src/effectstackview.cpp branches/KDE4/src/effectstackview.h branches/KDE4/src/mainwindow.cpp branches/KDE4/src/renderer.cpp Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-01 20:29:42 UTC (rev 1967) +++ branches/KDE4/src/clipitem.cpp 2008-03-01 21:47:52 UTC (rev 1968) @@ -643,6 +643,8 @@ m_effectList.append(effect); effectParams["tag"] = effect.attribute("tag"); effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix"); + QString state = effect.attribute("disabled"); + if (!state.isEmpty()) effectParams["disabled"] = state; QDomNodeList params = effect.elementsByTagName("parameter"); for (int i = 0; i < params.count(); i++) { QDomElement e = params.item(i).toElement(); @@ -659,6 +661,8 @@ QMap <QString, QString> effectParams; effectParams["tag"] = effect.attribute("tag"); effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix"); + QString state = effect.attribute("disabled"); + if (!state.isEmpty()) effectParams["disabled"] = state; QDomNodeList params = effect.elementsByTagName("parameter"); for (int i = 0; i < params.count(); i++) { QDomElement e = params.item(i).toElement(); Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-01 20:29:42 UTC (rev 1967) +++ branches/KDE4/src/customtrackview.cpp 2008-03-01 21:47:52 UTC (rev 1968) @@ -403,10 +403,21 @@ ClipItem *clip = getClipItemAt(pos.frames(m_document->fps()) + 1, m_tracksCount - track); if (clip){ QMap <QString, QString> effectParams = clip->getEffectArgs(effect); - m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams); + if (effectParams["disabled"] == "1") { + QString index = effectParams["kdenlive_ix"]; + m_document->renderer()->mltRemoveEffect(track, pos, index); + } + else m_document->renderer()->mltEditEffect(m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), effectParams); } } +void CustomTrackView::slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable) +{ + QDomElement oldEffect = effect.cloneNode().toElement(); + effect.setAttribute("disabled", disable); + EditEffectCommand *command = new EditEffectCommand(this, m_tracksCount - clip->track(), GenTime(clip->startPos(), m_document->fps()), oldEffect, effect, true); + m_commandStack->push(command); +} void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect) { Modified: branches/KDE4/src/customtrackview.h =================================================================== --- branches/KDE4/src/customtrackview.h 2008-03-01 20:29:42 UTC (rev 1967) +++ branches/KDE4/src/customtrackview.h 2008-03-01 21:47:52 UTC (rev 1968) @@ -57,6 +57,7 @@ public slots: void setCursorPos(int pos, bool seek = true); void slotDeleteEffect(ClipItem *clip, QDomElement effect); + void slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable); void slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect); void slotRefreshEffects(ClipItem *clip); void setDuration(int duration); Modified: branches/KDE4/src/effectstackview.cpp =================================================================== --- branches/KDE4/src/effectstackview.cpp 2008-03-01 20:29:42 UTC (rev 1967) +++ branches/KDE4/src/effectstackview.cpp 2008-03-01 21:47:52 UTC (rev 1968) @@ -48,6 +48,7 @@ ui.effectlist->setDragDropMode(QAbstractItemView::NoDragDrop);//use internal if drop is recognised right connect (ui.effectlist, SIGNAL ( itemSelectionChanged()), this , SLOT( slotItemSelectionChanged() )); + connect (ui.effectlist, SIGNAL(itemChanged ( QListWidgetItem *)), this , SLOT( slotItemChanged(QListWidgetItem *) )); connect (ui.buttonNew, SIGNAL (clicked()), this, SLOT (slotNewEffect()) ); connect (ui.buttonUp, SIGNAL (clicked()), this, SLOT (slotItemUp()) ); connect (ui.buttonDown, SIGNAL (clicked()), this, SLOT (slotItemDown()) ); @@ -82,6 +83,18 @@ } +void EffectStackView::slotItemChanged(QListWidgetItem *item) +{ + bool disable = true; + if (item->checkState() == Qt::Checked) disable = false; + int activeRow = ui.effectlist->currentRow(); + if ( activeRow>=0 ){ + emit changeEffectState(clipref, clipref->effectAt(activeRow), disable); + } + kDebug()<<"--- EFFECT CHANGED!!!!!!!!!!!!!!!!!"; +} + + void EffectStackView::setupListView(){ ui.effectlist->clear(); @@ -91,7 +104,8 @@ if (!namenode.isNull()) { QListWidgetItem* item = new QListWidgetItem(namenode.toElement().text(), ui.effectlist); item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled); - item->setCheckState(Qt::Checked); + if (d.attribute("disabled") == "1") item->setCheckState(Qt::Unchecked); + else item->setCheckState(Qt::Checked); } } if (clipref->effectsCount() == 0) Modified: branches/KDE4/src/effectstackview.h =================================================================== --- branches/KDE4/src/effectstackview.h 2008-03-01 20:29:42 UTC (rev 1967) +++ branches/KDE4/src/effectstackview.h 2008-03-01 21:47:52 UTC (rev 1968) @@ -41,6 +41,9 @@ public slots: void slotClipItemSelected(ClipItem*); + void slotUpdateEffectParams(const QDomElement&, const QDomElement&); + +private slots: void slotItemSelectionChanged(); void slotItemUp(); void slotItemDown(); @@ -48,7 +51,7 @@ void slotNewEffect(); void slotResetEffect(); void itemSelectionChanged(); - void slotUpdateEffectParams(const QDomElement&, const QDomElement&); + void slotItemChanged(QListWidgetItem *item); signals: void transferParamDesc(const QDomElement&,int ,int); @@ -58,6 +61,8 @@ /** An effect in stack was moved, we need to regenerate all effects for this clip in the playlist */ void refreshEffectStack(ClipItem *); + /** Enable or disable an effect */ + void changeEffectState(ClipItem*, QDomElement, bool); }; Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-01 20:29:42 UTC (rev 1967) +++ branches/KDE4/src/mainwindow.cpp 2008-03-01 21:47:52 UTC (rev 1968) @@ -470,6 +470,7 @@ connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*))); connect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement))); connect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement))); + connect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), trackView->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool))); connect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), trackView->projectView(), SLOT(slotRefreshEffects(ClipItem*))); m_projectList->setDocument(doc); Modified: branches/KDE4/src/renderer.cpp =================================================================== --- branches/KDE4/src/renderer.cpp 2008-03-01 20:29:42 UTC (rev 1967) +++ branches/KDE4/src/renderer.cpp 2008-03-01 21:47:52 UTC (rev 1968) @@ -1144,7 +1144,8 @@ if (!filter) { - kDebug()<<"WARINIG, FILTER NOT FOUND!!!!!"; + kDebug()<<"WARINIG, FILTER FOR EDITING NOT FOUND, ADDING IT!!!!!"; + mltAddEffect(track, position, args); m_isBlocked = false; return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-01 23:40:47
|
Revision: 1971 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1971&view=rev Author: j-b-m Date: 2008-03-01 15:40:46 -0800 (Sat, 01 Mar 2008) Log Message: ----------- Fix timeline scrubbing Modified Paths: -------------- branches/KDE4/src/customtrackview.cpp branches/KDE4/src/monitor.cpp branches/KDE4/src/trackview.cpp Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-01 23:39:23 UTC (rev 1970) +++ branches/KDE4/src/customtrackview.cpp 2008-03-01 23:40:46 UTC (rev 1971) @@ -142,7 +142,7 @@ break; } } - if (item) { + if (item && event->buttons() == Qt::NoButton) { ClipItem *clip = (ClipItem*) item; double size = mapToScene(QPoint(8, 0)).x(); OPERATIONTYPE opMode = clip->operationMode(mapToScene(event->pos()), m_scale); @@ -250,6 +250,11 @@ } else { m_moveOpMode = NONE; + if (event->buttons() != Qt::NoButton) + { + setCursorPos((int) mapToScene(event->pos().x(), 0).x()); + emit cursorMoved(cursorPos()); + } if (m_visualTip) { if (m_animation) delete m_animation; m_animation = NULL; @@ -265,7 +270,6 @@ // virtual void CustomTrackView::mousePressEvent ( QMouseEvent * event ) { - kDebug()<<"-- TIMELINE MSE PRESSED"; int pos = event->x(); if (event->modifiers() == Qt::ControlModifier) { setDragMode(QGraphicsView::ScrollHandDrag); @@ -439,18 +443,18 @@ void CustomTrackView::dragMoveEvent(QDragMoveEvent * event) { event->setDropAction(Qt::IgnoreAction); + //kDebug()<<"+++++++++++++ DRAG MOVE, : "<<mapToScene(event->pos()).x()<<", SCAL: "<<m_scale; if (m_dropItem) { int track = (int) mapToScene(event->pos()).y()/50; //) * (m_scale * 50) + m_scale; - kDebug()<<"+++++++++++++ DRAG MOVE, : "<<mapToScene(event->pos()).x()<<", SCAL: "<<m_scale; m_dropItem->moveTo(mapToScene(event->pos()).x() / m_scale, m_scale, (track - m_dropItem->track()) * 50, track); + event->setDropAction(Qt::MoveAction); + if (event->mimeData()->hasFormat("kdenlive/producerslist")) { + event->acceptProposedAction(); + } } - //if (item) { - event->setDropAction(Qt::MoveAction); - if (event->mimeData()->hasFormat("kdenlive/producerslist")) { - event->acceptProposedAction(); + else { + QGraphicsView::dragMoveEvent(event); } - else QGraphicsView::dragMoveEvent(event); - //} } void CustomTrackView::dragLeaveEvent ( QDragLeaveEvent * event ) { @@ -467,7 +471,7 @@ m_commandStack->push(command); m_dropItem->baseClip()->addReference(); m_document->updateClip(m_dropItem->baseClip()->getId()); - kDebug()<<"IIIIIIIIIIIIIIIIIIIIIIII TRAX CNT: "<<m_tracksCount<<", DROP: "<<m_dropItem->track(); + // kDebug()<<"IIIIIIIIIIIIIIIIIIIIIIII TRAX CNT: "<<m_tracksCount<<", DROP: "<<m_dropItem->track(); m_document->renderer()->mltInsertClip(m_tracksCount - m_dropItem->track(), GenTime(m_dropItem->startPos(), m_document->fps()), m_dropItem->xml()); } else QGraphicsView::dropEvent(event); Modified: branches/KDE4/src/monitor.cpp =================================================================== --- branches/KDE4/src/monitor.cpp 2008-03-01 23:39:23 UTC (rev 1970) +++ branches/KDE4/src/monitor.cpp 2008-03-01 23:40:46 UTC (rev 1971) @@ -124,6 +124,7 @@ if (m_position < 1) return; m_position--; render->seekToFrame(m_position); + emit renderPosition(m_position); ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); } @@ -134,6 +135,7 @@ if (m_position >= m_length) return; m_position++; render->seekToFrame(m_position); + emit renderPosition(m_position); ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); } @@ -143,7 +145,7 @@ int rulerPos = (int) (pos * m_scale); m_position = pos; ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); - //kDebug()<<"seek: "<<pos<<", scale: "<<m_scale<< + kDebug()<<"seek: "<<pos<<", scale: "<<m_scale; m_ruler->slotNewValue(rulerPos); } @@ -151,6 +153,8 @@ { int rulerPos = (int) (pos * m_scale); m_ruler->slotNewValue(rulerPos); + m_position = pos; + ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); ui.button_play->setChecked(false); ui.button_play->setIcon(m_playIcon); } Modified: branches/KDE4/src/trackview.cpp =================================================================== --- branches/KDE4/src/trackview.cpp 2008-03-01 23:39:23 UTC (rev 1970) +++ branches/KDE4/src/trackview.cpp 2008-03-01 23:40:46 UTC (rev 1971) @@ -139,7 +139,7 @@ void TrackView::moveCursorPos(int pos) { m_trackview->setCursorPos(pos * m_scale, false); - //m_ruler->slotNewValue(pos * FRAME_SIZE, false); + m_ruler->slotNewValue(pos * FRAME_SIZE, false); } void TrackView::slotCursorMoved(int pos, bool emitSignal) @@ -151,10 +151,13 @@ void TrackView::slotChangeZoom(int factor) { + double pos = m_trackview->cursorPos() / m_scale; m_ruler->setPixelPerMark(factor); m_scale = (double) FRAME_SIZE / m_ruler->comboScale[factor]; // m_ruler->comboScale[m_currentZoom] / m_currentZoom = factor; m_trackview->setScale(m_scale); + m_trackview->setCursorPos(pos * m_scale, false); + m_ruler->slotNewValue(pos * FRAME_SIZE, false); m_trackview->centerOn(QPointF(m_trackview->cursorPos(), 50)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ble...@us...> - 2008-03-02 13:42:54
|
Revision: 1972 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1972&view=rev Author: blendamedt Date: 2008-03-02 05:42:55 -0800 (Sun, 02 Mar 2008) Log Message: ----------- load and save titles (except svg's) Modified Paths: -------------- branches/KDE4/src/complexparameter.cpp branches/KDE4/src/parameterplotter.cpp branches/KDE4/src/titlewidget.cpp branches/KDE4/src/titlewidget.h branches/KDE4/src/widgets/keyframewidget_ui.ui branches/KDE4/src/widgets/titlewidget_ui.ui Added Paths: ----------- branches/KDE4/src/titledocument.cpp branches/KDE4/src/titledocument.h Modified: branches/KDE4/src/complexparameter.cpp =================================================================== --- branches/KDE4/src/complexparameter.cpp 2008-03-01 23:40:46 UTC (rev 1971) +++ branches/KDE4/src/complexparameter.cpp 2008-03-02 13:42:55 UTC (rev 1972) @@ -58,7 +58,7 @@ /*ÜeffectLists["audio"]=audioEffectList; effectLists["video"]=videoEffectList; effectLists["custom"]=customEffectList;*/ - + setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)); ui.infoBox->hide(); updateButtonStatus(); Modified: branches/KDE4/src/parameterplotter.cpp =================================================================== --- branches/KDE4/src/parameterplotter.cpp 2008-03-01 23:40:46 UTC (rev 1971) +++ branches/KDE4/src/parameterplotter.cpp 2008-03-02 13:42:55 UTC (rev 1972) @@ -19,6 +19,7 @@ #include <QVariant> #include <KPlotObject> #include <QMouseEvent> +#include <QPen> #include <KDebug> #include <KPlotPoint> @@ -105,7 +106,7 @@ } if (defaults[i].toDouble()>max_y) defaults[i]=max_y; - plot->addPoint(startframe,defaults[i].toInt()*stretchFactors[i]); + plot->addPoint(startframe,defaults[i].toInt()*stretchFactors[i],parameterNameList[i]); //add keyframes here plot->addPoint(endframe,defaults[i].toInt()*stretchFactors[i]); @@ -164,7 +165,7 @@ foreach (KPlotObject *o, plotObjects() ){ QList<KPlotPoint*> points=o->points(); for(int p=0;p<points.size();p++){ - if (points[p]==movepoint){ + if (points[p]==movepoint && (activeIndexPlot==-1 || activeIndexPlot==i ) ){ QPoint delta=event->pos()-oldmousepoint; double newy=movepoint->y()-delta.y()*dataRect().height()/pixRect().height(); if (m_moveY && newy>min_y && newy<max_y) @@ -191,9 +192,13 @@ int i=0; bool drawAll=name.isEmpty() || name=="all"; activeIndexPlot=-1; - foreach (KPlotObject* p,plotObjects() ){ + + foreach (KPlotObject* p, plotObjects() ){ p->setShowPoints(drawAll || parameterNameList[i]==name); p->setShowLines(drawAll || parameterNameList[i]==name); + QPen pen=(drawAll || parameterNameList[i]==name ? QPen(Qt::SolidLine) : QPen(Qt::NoPen) ); + pen.setColor(p->linePen().color()); + p->setLabelPen(pen); if ( parameterNameList[i]==name ) activeIndexPlot = i; replacePlotObject(i++,p); Added: branches/KDE4/src/titledocument.cpp =================================================================== --- branches/KDE4/src/titledocument.cpp (rev 0) +++ branches/KDE4/src/titledocument.cpp 2008-03-02 13:42:55 UTC (rev 1972) @@ -0,0 +1,213 @@ +/*************************************************************************** + titledocument.h - description + ------------------- + begin : Feb 28 2008 + copyright : (C) 2008 by Marco Gittler + email : g....@fr... + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "titledocument.h" +#include <QGraphicsScene> +#include <QDomDocument> +#include <QDomElement> +#include <QGraphicsItem> +#include <QGraphicsRectItem> +#include <QGraphicsTextItem> +#include <KDebug> +#include <QFile> +#include <kio/netaccess.h> + +TitleDocument::TitleDocument(){ + scene=NULL; +} + +void TitleDocument::setScene(QGraphicsScene* _scene){ + scene=_scene; +} + +bool TitleDocument::saveDocument(const KUrl& url,QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv){ + QDomDocument doc; + + if (!scene) + return false; + + QDomElement main=doc.createElement("kdenlivetitle"); + doc.appendChild(main); + + foreach(QGraphicsItem* item, scene->items()){ + QDomElement e=doc.createElement("item"); + QDomElement content=doc.createElement("content"); + + switch (item->type()){ + case 3: + e.setAttribute("type","QGraphicsRectItem"); + content.setAttribute("rect",rectFToString(((QGraphicsRectItem*)item)->rect() )); + content.setAttribute("pencolor",colorToString(((QGraphicsRectItem*)item)->pen().color()) ); + content.setAttribute("penwidth",((QGraphicsRectItem*)item)->pen().width() ); + content.setAttribute("brushcolor",colorToString(((QGraphicsRectItem*)item)->brush().color()) ); + break; + case 8: + e.setAttribute("type","QGraphicsTextItem"); + content.appendChild(doc.createTextNode( ((QGraphicsTextItem*)item)->toHtml() ) ); + break; + default: + continue; + } + QDomElement pos=doc.createElement("position"); + pos.setAttribute("x",item->pos().x()); + pos.setAttribute("y",item->pos().y()); + QTransform transform=item->transform(); + QDomElement tr=doc.createElement("transform"); + tr.appendChild(doc.createTextNode( + QString("%1,%2,%3,%4,%5,%6,%7,%8,%9").arg( + transform.m11()).arg(transform.m12()).arg(transform.m13()).arg(transform.m21()).arg(transform.m22()).arg(transform.m23()).arg(transform.m31()).arg(transform.m32()).arg(transform.m33()) + ) + ); + pos.appendChild(tr); + + + e.appendChild(pos); + e.appendChild(content); + main.appendChild(e); + } + if (startv && endv){ + QDomElement endp=doc.createElement("endviewport"); + QDomElement startp=doc.createElement("startviewport"); + endp.setAttribute("x",endv->pos().x()); + endp.setAttribute("y",endv->pos().y()); + endp.setAttribute("size",endv->sceneBoundingRect().width()/2); + + startp.setAttribute("x",startv->pos().x()); + startp.setAttribute("y",startv->pos().y()); + startp.setAttribute("size",startv->sceneBoundingRect().width()/2); + + main.appendChild(startp); + main.appendChild(endp); + } + QDomElement backgr=doc.createElement("background"); + backgr.setAttribute("color",colorToString(scene->backgroundBrush().color())); + main.appendChild(backgr); + + QString tmpfile="/tmp/newtitle"; + QFile xmlf(tmpfile); + xmlf.open(QIODevice::WriteOnly); + xmlf.write(doc.toString().toAscii()); + xmlf.close(); + kDebug() << KIO::NetAccess::upload(tmpfile,url,0); +} + +bool TitleDocument::loadDocument(const KUrl& url ,QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv) { + QString tmpfile; + QDomDocument doc; + double aspect_ratio=4.0/3.0; + if (!scene) + return false; + + if (KIO::NetAccess::download(url, tmpfile, 0)) { + QFile file(tmpfile); + if (file.open(QIODevice::ReadOnly)) { + doc.setContent(&file, false); + file.close(); + }else + return false; + KIO::NetAccess::removeTempFile(tmpfile); + QDomNodeList titles=doc.elementsByTagName("kdenlivetitle"); + if (titles.size()){ + + QDomNodeList items=titles.item(0).childNodes(); + for(int i=0;i<items.count();i++){ + QGraphicsItem *gitem=NULL; + kDebug() << items.item(i).attributes().namedItem("type").nodeValue(); + if (items.item(i).attributes().namedItem("type").nodeValue()=="QGraphicsTextItem"){ + QGraphicsTextItem *txt=scene->addText(""); + txt->setHtml(items.item(i).namedItem("content").firstChild().nodeValue()); + gitem=txt; + }else + if (items.item(i).attributes().namedItem("type").nodeValue()=="QGraphicsRectItem"){ + QString rect=items.item(i).namedItem("content").attributes().namedItem("rect").nodeValue(); + QString br_str=items.item(i).namedItem("content").attributes().namedItem("brushcolor").nodeValue(); + QString pen_str=items.item(i).namedItem("content").attributes().namedItem("pencolor").nodeValue(); + double penwidth=items.item(i).namedItem("content").attributes().namedItem("penwidth").nodeValue().toDouble(); + QGraphicsRectItem *rec=scene->addRect(stringToRect(rect),QPen(QBrush(stringToColor(pen_str)),penwidth),QBrush(stringToColor(br_str) ) ); + gitem=rec; + } + //pos and transform + if (gitem ){ + QPointF p(items.item(i).namedItem("position").attributes().namedItem("x").nodeValue().toDouble(), + items.item(i).namedItem("position").attributes().namedItem("y").nodeValue().toDouble()); + gitem->setPos(p); + gitem->setTransform(stringToTransform(items.item(i).namedItem("position").firstChild().firstChild().nodeValue())); + } + if (items.item(i).nodeName()=="background"){ + kDebug() << items.item(i).attributes().namedItem("color").nodeValue(); + scene->setBackgroundBrush(QBrush(stringToColor(items.item(i).attributes().namedItem("color").nodeValue()))); + }else if (items.item(i).nodeName()=="startviewport" && startv){ + QPointF p(items.item(i).attributes().namedItem("x").nodeValue().toDouble(),items.item(i).attributes().namedItem("y").nodeValue().toDouble()); + double width=items.item(i).attributes().namedItem("size").nodeValue().toDouble(); + QRectF rect(-width,-width/aspect_ratio,width*2.0,width/aspect_ratio*2.0); + kDebug() << width << rect; + startv->setPolygon(rect); + startv->setPos(p); + }else if (items.item(i).nodeName()=="endviewport" && endv){ + QPointF p(items.item(i).attributes().namedItem("x").nodeValue().toDouble(),items.item(i).attributes().namedItem("y").nodeValue().toDouble()); + double width=items.item(i).attributes().namedItem("size").nodeValue().toDouble(); + QRectF rect(-width,-width/aspect_ratio,width*2.0,width/aspect_ratio*2.0); + kDebug() << width << rect; + endv->setPolygon(rect); + endv->setPos(p); + } + + } + + + } + + + } + return true; +} + +QString TitleDocument::colorToString(const QColor& c){ + QString ret="%1,%2,%3,%4"; + ret=ret.arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha()); + return ret; +} + +QString TitleDocument::rectFToString(const QRectF& c){ + QString ret="%1,%2,%3,%4"; + ret=ret.arg(c.x()).arg(c.y()).arg(c.width()).arg(c.height()); + return ret; +} + +QRectF TitleDocument::stringToRect(const QString & s){ + + QStringList l=s.split(","); + if (l.size()<4) + return QRectF(); + return QRectF(l[0].toDouble(),l[1].toDouble(),l[2].toDouble(),l[3].toDouble()); +} + +QColor TitleDocument::stringToColor(const QString & s){ + QStringList l=s.split(","); + if (l.size()<4) + return QColor(); + return QColor(l[0].toInt(),l[1].toInt(),l[2].toInt(),l[3].toInt());; +} +QTransform TitleDocument::stringToTransform(const QString& s){ + QStringList l=s.split(","); + if (l.size()<9) + return QTransform(); + return QTransform( + l[0].toDouble(),l[1].toDouble(),l[2].toDouble(), + l[3].toDouble(),l[4].toDouble(),l[5].toDouble(), + l[6].toDouble(),l[7].toDouble(),l[8].toDouble() + ); +} Added: branches/KDE4/src/titledocument.h =================================================================== --- branches/KDE4/src/titledocument.h (rev 0) +++ branches/KDE4/src/titledocument.h 2008-03-02 13:42:55 UTC (rev 1972) @@ -0,0 +1,41 @@ +/*************************************************************************** + titledocument.h - description + ------------------- + begin : Feb 28 2008 + copyright : (C) 2008 by Marco Gittler + email : g....@fr... + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef TITLEDOCUMENT_H +#define TITLEDOCUMENT_H +#include <KUrl> + +class QGraphicsScene; +class QGraphicsPolygonItem; + +class TitleDocument { + QGraphicsScene* scene; + public: + TitleDocument(); + void setScene(QGraphicsScene* scene); + bool saveDocument(const KUrl& url,QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv); + bool loadDocument(const KUrl& url,QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv); + private: + QString colorToString(const QColor&); + QString rectFToString(const QRectF&); + QRectF stringToRect(const QString &); + QColor stringToColor(const QString &); + QTransform stringToTransform(const QString &); +}; + +#endif + + Modified: branches/KDE4/src/titlewidget.cpp =================================================================== --- branches/KDE4/src/titlewidget.cpp 2008-03-01 23:40:46 UTC (rev 1971) +++ branches/KDE4/src/titlewidget.cpp 2008-03-02 13:42:55 UTC (rev 1972) @@ -18,9 +18,11 @@ #include "titlewidget.h" #include "graphicsscenerectmove.h" #include <QGraphicsView> +#include <QDomDocument> #include <KDebug> #include <QGraphicsItem> #include <QGraphicsSvgItem> +#include <KFileDialog> int settingUp=false; @@ -33,7 +35,10 @@ connect (ktextedit, SIGNAL(textChanged()), this , SLOT (textChanged())); connect (fontColorButton, SIGNAL ( clicked()), this, SLOT( textChanged()) ) ; //connect (fontBold, SIGNAL ( clicked()), this, SLOT( setBold()) ) ; + connect (loadButton, SIGNAL ( clicked()), this, SLOT( loadTitle() ) ) ; + connect (saveButton, SIGNAL ( clicked()), this, SLOT( saveTitle() ) ) ; + connect (kfontrequester, SIGNAL ( fontSelected(const QFont &)), this, SLOT( textChanged()) ) ; connect(textAlpha, SIGNAL( valueChanged(int) ), this, SLOT (textChanged())); //connect (ktextedit, SIGNAL(selectionChanged()), this , SLOT (textChanged())); @@ -64,6 +69,7 @@ //scene->setBackgroundBrush(*gradient); graphicsView->setScene(scene); + m_titledocument.setScene(scene); connect (graphicsView->scene(), SIGNAL (selectionChanged()), this , SLOT( selectionChanged())); initViewports(); @@ -158,9 +164,9 @@ else{ //toolBox->setCurrentIndex(0); } - zValue->setValue(l[0]->zValue()); - itemzoom->setValue(transformations[l[0]].scalex*100); - itemrotate->setValue(transformations[l[0]].rotate); + zValue->setValue((int)l[0]->zValue()); + itemzoom->setValue((int)transformations[l[0]].scalex*100); + itemrotate->setValue((int)transformations[l[0]].rotate); } } @@ -236,17 +242,31 @@ void TitleWidget::setupViewports(){ double aspect_ratio=4.0/3.0;//read from project - QRectF sp(startViewportX->value(), startViewportY->value(),0,0); - QRectF ep(endViewportX->value(),endViewportY->value(),0,0); + QRectF sp(0,0,0,0); + QRectF ep(0,0,0,0); double sv_size=startViewportSize->value(); double ev_size=endViewportSize->value(); sp.adjust(-sv_size,-sv_size/aspect_ratio,sv_size,sv_size/aspect_ratio); ep.adjust(-ev_size,-ev_size/aspect_ratio,ev_size,ev_size/aspect_ratio); + startViewport->setPos(startViewportX->value(), startViewportY->value()); + endViewport->setPos(endViewportX->value(),endViewportY->value()); + startViewport->setPolygon(QPolygonF(sp)); endViewport->setPolygon(QPolygonF(ep)); } + +void TitleWidget::loadTitle(){ + KUrl url= KFileDialog::getOpenUrl( KUrl(), "*.kdenlivetitle",this,tr("Save Title")); + m_titledocument.loadDocument(url,startViewport,endViewport); +} + +void TitleWidget::saveTitle(){ + KUrl url= KFileDialog::getSaveUrl( KUrl(), "*.kdenlivetitle",this,tr("Save Title")); + m_titledocument.saveDocument(url,startViewport,endViewport); +} + #include "moc_titlewidget.cpp" Modified: branches/KDE4/src/titlewidget.h =================================================================== --- branches/KDE4/src/titlewidget.h 2008-03-01 23:40:46 UTC (rev 1971) +++ branches/KDE4/src/titlewidget.h 2008-03-02 13:42:55 UTC (rev 1972) @@ -19,6 +19,7 @@ #define TITLEWIDGET_H #include "ui_titlewidget_ui.h" +#include "titledocument.h" #include <QDialog> #include <QMap> @@ -41,6 +42,7 @@ QGraphicsPolygonItem *startViewport,*endViewport; void initViewports(); QMap<QGraphicsItem*,Transform > transformations; + TitleDocument m_titledocument; public slots: void slotNewText(); void slotNewRect(); @@ -54,6 +56,8 @@ void svgSelected(const KUrl&); void itemScaled(int); void itemRotate(int); + void saveTitle(); + void loadTitle(); }; Modified: branches/KDE4/src/widgets/keyframewidget_ui.ui =================================================================== --- branches/KDE4/src/widgets/keyframewidget_ui.ui 2008-03-01 23:40:46 UTC (rev 1971) +++ branches/KDE4/src/widgets/keyframewidget_ui.ui 2008-03-02 13:42:55 UTC (rev 1972) @@ -20,12 +20,24 @@ </property> <layout class="QGridLayout" > <item row="0" column="0" > - <widget class="QSplitter" name="splitter" > - <property name="orientation" > - <enum>Qt::Vertical</enum> - </property> - <widget class="ParameterPlotter" name="kplotwidget" /> - <widget class="QWidget" name="" > + <layout class="QVBoxLayout" > + <item> + <widget class="ParameterPlotter" name="kplotwidget" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>150</width> + <height>200</height> + </size> + </property> + </widget> + </item> + <item> <layout class="QHBoxLayout" > <item> <widget class="QToolButton" name="buttonLeftRight" > @@ -116,9 +128,11 @@ </widget> </item> </layout> - </widget> - <widget class="KTextEdit" name="infoBox" /> - </widget> + </item> + <item> + <widget class="KTextEdit" name="infoBox" /> + </item> + </layout> </item> </layout> </widget> Modified: branches/KDE4/src/widgets/titlewidget_ui.ui =================================================================== --- branches/KDE4/src/widgets/titlewidget_ui.ui 2008-03-01 23:40:46 UTC (rev 1971) +++ branches/KDE4/src/widgets/titlewidget_ui.ui 2008-03-02 13:42:55 UTC (rev 1972) @@ -38,14 +38,14 @@ </widget> </item> <item> - <widget class="QPushButton" name="pushButton" > + <widget class="QPushButton" name="loadButton" > <property name="text" > <string>Load Title</string> </property> </widget> </item> <item> - <widget class="QPushButton" name="pushButton_2" > + <widget class="QPushButton" name="saveButton" > <property name="text" > <string>Save Title</string> </property> @@ -117,14 +117,14 @@ </sizepolicy> </property> <property name="currentIndex" > - <number>0</number> + <number>2</number> </property> <widget class="QWidget" name="BasicOperations" > <property name="geometry" > <rect> <x>0</x> <y>0</y> - <width>339</width> + <width>488</width> <height>304</height> </rect> </property> @@ -233,11 +233,11 @@ </attribute> <layout class="QGridLayout" > <item row="0" column="0" > - <layout class="QVBoxLayout" > - <item> + <layout class="QGridLayout" > + <item row="0" column="0" > <widget class="KColorButton" name="kcolorbutton" /> </item> - <item> + <item row="1" column="0" > <widget class="QSlider" name="horizontalSlider" > <property name="maximum" > <number>255</number> @@ -247,7 +247,7 @@ </property> </widget> </item> - <item> + <item row="2" column="0" > <spacer> <property name="orientation" > <enum>Qt::Vertical</enum> @@ -272,8 +272,8 @@ <rect> <x>0</x> <y>0</y> - <width>208</width> - <height>167</height> + <width>488</width> + <height>304</height> </rect> </property> <attribute name="label" > @@ -399,8 +399,8 @@ <rect> <x>0</x> <y>0</y> - <width>152</width> - <height>229</height> + <width>488</width> + <height>304</height> </rect> </property> <attribute name="label" > This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-02 16:32:19
|
Revision: 1974 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1974&view=rev Author: j-b-m Date: 2008-03-02 08:32:25 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Fix audio thumbs progress info when window was not focused Modified Paths: -------------- branches/KDE4/src/clipitem.cpp branches/KDE4/src/clipmanager.cpp branches/KDE4/src/clipmanager.h branches/KDE4/src/docclipbase.cpp branches/KDE4/src/docclipbase.h branches/KDE4/src/events.h branches/KDE4/src/kdenlivedoc.cpp branches/KDE4/src/kdenlivedoc.h branches/KDE4/src/kthumb.cpp branches/KDE4/src/kthumb.h branches/KDE4/src/mainwindow.cpp branches/KDE4/src/mainwindow.h branches/KDE4/src/projectitem.cpp Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/clipitem.cpp 2008-03-02 16:32:25 UTC (rev 1974) @@ -33,6 +33,7 @@ #include <mlt++/Mlt.h> #include "clipitem.h" +#include "customtrackview.h" #include "renderer.h" #include "events.h" #include "kdenlivesettings.h" @@ -87,6 +88,9 @@ else if (m_clipType == IMAGE) { m_startPix = KThumb::getImage(KUrl(m_xml.attribute("resource")), 50 * KdenliveSettings::project_display_ratio(), 50); } + else if (m_clipType == AUDIO) { + connect(clip, SIGNAL (gotAudioData()), this, SLOT (slotGotAudioData())); + } } @@ -705,14 +709,13 @@ QDomDocument doc; doc.setContent(effects, true); QDomElement e = doc.documentElement(); - if (QApplication::activeWindow()) - QApplication::postEvent(QApplication::activeWindow(), new EffectEvent(GenTime(m_startPos, 25), m_track, e, (QEvent::Type)10010)); + CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; + if (view) view->slotAddEffect(e, GenTime(m_startPos, 25), m_track); } //virtual void ClipItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { - kDebug()<<"DRAG EVNET, FORMAT: "<<event->mimeData()->formats(); event->setAccepted(event->mimeData()->hasFormat("kdenlive/effectslist")); } Modified: branches/KDE4/src/clipmanager.cpp =================================================================== --- branches/KDE4/src/clipmanager.cpp 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/clipmanager.cpp 2008-03-02 16:32:25 UTC (rev 1974) @@ -22,8 +22,8 @@ #include "addclipcommand.h" #include "kdenlivesettings.h" #include "clipmanager.h" +#include "docclipbase.h" - ClipManager::ClipManager(KdenliveDoc *doc):m_doc(doc) { m_clipIdCounter = 1; @@ -33,6 +33,12 @@ { } +void ClipManager::setThumbsProgress(KUrl url, int progress) +{ + m_doc->setThumbsProgress(url, progress); +} + + void ClipManager::addClip(DocClipBase *clip) { m_clipList.append(clip); Modified: branches/KDE4/src/clipmanager.h =================================================================== --- branches/KDE4/src/clipmanager.h 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/clipmanager.h 2008-03-02 16:32:25 UTC (rev 1974) @@ -34,11 +34,11 @@ #include "gentime.h" #include "definitions.h" -#include "docclipbase.h" + class KdenliveDoc; +class DocClipBase; - class ClipManager:public QObject { Q_OBJECT public: @@ -52,6 +52,7 @@ void slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group); DocClipBase *getClipById(int clipId); void slotDeleteClip(uint clipId); + void setThumbsProgress(KUrl url, int progress); private: // Private attributes /** the list of clips in the document */ Modified: branches/KDE4/src/docclipbase.cpp =================================================================== --- branches/KDE4/src/docclipbase.cpp 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/docclipbase.cpp 2008-03-02 16:32:25 UTC (rev 1974) @@ -20,7 +20,7 @@ #include "kdenlivesettings.h" #include "docclipbase.h" -DocClipBase::DocClipBase(QDomElement xml, uint id): +DocClipBase::DocClipBase(ClipManager *clipManager, QDomElement xml, uint id): m_xml(xml), m_id(id), m_description(""), m_refcount(0), m_projectThumbFrame(0), m_audioThumbCreated(false), m_duration(GenTime()), m_thumbProd(NULL), m_audioTimer(NULL) { int type = xml.attribute("type").toInt(); @@ -32,7 +32,7 @@ if (out != 0) setDuration(GenTime(out, 25)); if (m_name.isEmpty()) m_name = url.fileName(); if (!url.isEmpty()){ - m_thumbProd = new KThumb(url, KdenliveSettings::track_height() * KdenliveSettings::project_display_ratio(), KdenliveSettings::track_height()); + m_thumbProd = new KThumb(clipManager, url, KdenliveSettings::track_height() * KdenliveSettings::project_display_ratio(), KdenliveSettings::track_height()); connect (m_thumbProd, SIGNAL (audioThumbReady(QMap <int, QMap <int, QByteArray> >)), this , SLOT(updateAudioThumbnail(QMap <int, QMap <int, QByteArray> > ))); connect (this, SIGNAL (getAudioThumbs()), this , SLOT( slotGetAudioThumbs() ) ); @@ -42,11 +42,11 @@ if (m_clipType == AV || m_clipType==AUDIO || m_clipType==UNKNOWN){ m_audioTimer = new QTimer( this ); connect(m_audioTimer, SIGNAL(timeout()), this, SLOT(slotGetAudioThumbs())); - //TODO disabled until the crash cause is found - emit getAudioThumbs(); } } + + DocClipBase::DocClipBase(const DocClipBase& clip) { m_xml = clip.toXML(); @@ -74,6 +74,11 @@ //if (m_thumbProd) delete m_thumbProd; } +void DocClipBase::slotRequestAudioThumbs() +{ + emit getAudioThumbs(); +} + KThumb *DocClipBase::thumbProducer() { return m_thumbProd; @@ -239,6 +244,7 @@ void DocClipBase::updateAudioThumbnail(QMap<int,QMap<int,QByteArray> > data) { + kDebug()<<"CLIPBASE RECIEDVED AUDIO DATA*********************************************"; audioFrameChache = data; m_audioThumbCreated = true; emit gotAudioData(); @@ -419,3 +425,5 @@ } } + + Modified: branches/KDE4/src/docclipbase.h =================================================================== --- branches/KDE4/src/docclipbase.h 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/docclipbase.h 2008-03-02 16:32:25 UTC (rev 1974) @@ -31,6 +31,7 @@ #include <klocale.h> #include "gentime.h" +#include "clipmanager.h" #include "definitions.h" #include "kthumb.h" @@ -66,7 +67,7 @@ * done here. If a new clip type is added then it should be possible to combine it with both audio * and video. */ - DocClipBase(QDomElement xml, uint id); + DocClipBase(ClipManager *clipManager, QDomElement xml, uint id); DocClipBase(const DocClipBase& clip); DocClipBase & operator=(const DocClipBase & clip); virtual ~ DocClipBase(); @@ -193,6 +194,10 @@ /** return english name for clip type */ static QString getTypeName(CLIPTYPE type); + /** Clip is ready to get thumbs */ + void slotRequestAudioThumbs(); + + private: // Private attributes /** The name of this clip */ QString m_name; @@ -236,8 +241,9 @@ QString markerComment(GenTime t); void setProjectThumbFrame( const uint &ix); uint getProjectThumbFrame() const; - signals: - void getAudioThumbs(); + + signals: + void getAudioThumbs(); void gotAudioData(); }; Modified: branches/KDE4/src/events.h =================================================================== --- branches/KDE4/src/events.h 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/events.h 2008-03-02 16:32:25 UTC (rev 1974) @@ -33,21 +33,4 @@ }; -class EffectEvent : public QEvent { -public: - EffectEvent( GenTime pos, int track, QDomElement xml, QEvent::Type eventType ) - : QEvent( eventType ), m_pos( pos ), m_track(track), m_xml(xml) { - if (xml.isNull()) kDebug()<<"--- ERROR, TRYING TO APPEND NULL EFFECT EVENT"; - if (m_xml.isNull()) kDebug()<<"--- ERROR, TRYING TO APPEND NULL EFFECT EVENT 2"; - }; - GenTime pos() const { return m_pos; }; - int track() const { return m_track; }; - QDomElement xml() const { return m_xml; }; -private: - GenTime m_pos; - int m_track; - QDomElement m_xml; - -}; - #endif Modified: branches/KDE4/src/kdenlivedoc.cpp =================================================================== --- branches/KDE4/src/kdenlivedoc.cpp 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/kdenlivedoc.cpp 2008-03-02 16:32:25 UTC (rev 1974) @@ -26,6 +26,7 @@ #include "kdenlivedoc.h" +#include "docclipbase.h" KdenliveDoc::KdenliveDoc(const KUrl &url, double fps, int width, int height, QWidget *parent):QObject(parent), m_render(NULL), m_url(url), m_fps(fps), m_width(width), m_height(height), m_projectName(NULL), m_commandStack(new KUndoStack()) { @@ -120,6 +121,11 @@ return m_clipManager; } +void KdenliveDoc::setThumbsProgress(KUrl url, int progress) +{ + emit thumbsProgress(url, progress); +} + KUndoStack *KdenliveDoc::commandStack() { return m_commandStack; @@ -270,7 +276,7 @@ void KdenliveDoc::addClip(const QDomElement &elem, const int clipId) { kDebug()<<"///////// DOCUM, CREATING NEW CLIP, ID:"<<clipId; - DocClipBase *clip = new DocClipBase(elem, clipId); + DocClipBase *clip = new DocClipBase(m_clipManager, elem, clipId); m_clipManager->addClip(clip); emit addProjectClip(clip); } Modified: branches/KDE4/src/kdenlivedoc.h =================================================================== --- branches/KDE4/src/kdenlivedoc.h 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/kdenlivedoc.h 2008-03-02 16:32:25 UTC (rev 1974) @@ -64,6 +64,8 @@ DocClipBase *getBaseClip(int clipId); void updateClip(int id); void deleteProjectClip(const uint clipId); + /** Inform application of the audio thumbnails generation progress */ + void setThumbsProgress(KUrl url, int progress); private: KUrl m_url; @@ -85,6 +87,7 @@ void signalDeleteProjectClip(int); void updateClipDisplay(int); void deletTimelineClip(int); + void thumbsProgress(KUrl, int); }; #endif Modified: branches/KDE4/src/kthumb.cpp =================================================================== --- branches/KDE4/src/kthumb.cpp 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/kthumb.cpp 2008-03-02 16:32:25 UTC (rev 1974) @@ -38,14 +38,16 @@ #include <QApplication> #include <QCryptographicHash> - +#include "clipmanager.h" #include "renderer.h" #include "kthumb.h" #include "kdenlivesettings.h" #include "events.h" -void MyThread::init(KUrl url, QString target, double frame, double frameLength, int frequency, int channels, int arrayWidth) + +void MyThread::init(QObject *parent, KUrl url, QString target, double frame, double frameLength, int frequency, int channels, int arrayWidth) { stop_me = false; + m_parent = parent; m_isWorking = false; f.setFileName(target); m_url = url; @@ -54,7 +56,6 @@ m_frequency = frequency; m_channels = channels; m_arrayWidth = arrayWidth; - } bool MyThread::isWorking() @@ -72,8 +73,8 @@ return; } m_isWorking = true; - Mlt::Profile prof((char*) KdenliveSettings::current_profile().data()); - Mlt::Producer m_producer(prof, m_url.path().toAscii().data()); + Mlt::Profile prof((char*) qstrdup(KdenliveSettings::current_profile().toUtf8())); + Mlt::Producer m_producer(prof, m_url.path().toUtf8().data()); /*TODO if (KdenliveSettings::normaliseaudiothumbs()) { @@ -82,8 +83,7 @@ m_producer.attach(m_convert); }*/ - if (QApplication::activeWindow()) - QApplication::postEvent(QApplication::activeWindow(), new ProgressEvent(-1, (QEvent::Type)10005)); + //QApplication::postEvent(m_parent, new ProgressEvent(-1, (QEvent::Type)10005)); int last_val = 0; int val = 0; @@ -92,13 +92,13 @@ if (stop_me) break; val=(int)((z-m_frame)/(m_frame+m_frameLength)*100.0); if (last_val!=val & val > 1){ - QApplication::postEvent(QApplication::activeWindow(), new ProgressEvent(val, (QEvent::Type)10005)); + QApplication::postEvent(m_parent, new ProgressEvent(val, (QEvent::Type)10005)); last_val=val; } m_producer.seek( z ); Mlt::Frame *mlt_frame = m_producer.get_frame(); - if ( mlt_frame->is_valid() ) + if ( mlt_frame && mlt_frame->is_valid() ) { double m_framesPerSecond = mlt_producer_get_fps( m_producer.get_producer() ); //mlt_frame->get_double( "fps" ); int m_samples = mlt_sample_calculator( m_framesPerSecond, m_frequency, mlt_frame_get_position(mlt_frame->get_frame()) ); @@ -126,10 +126,10 @@ m_isWorking = false; if (stop_me) { f.remove(); - QApplication::postEvent(QApplication::activeWindow(), new ProgressEvent(-1, (QEvent::Type)10005)); + QApplication::postEvent(m_parent, new ProgressEvent(-1, (QEvent::Type)10005)); } - QApplication::postEvent(QApplication::activeWindow(), new ProgressEvent(0, (QEvent::Type)10005)); + QApplication::postEvent(m_parent, new ProgressEvent(0, (QEvent::Type)10005)); } @@ -139,10 +139,10 @@ #define _G(y,u,v) (0x2568*(y) - 0x0c92*(v) - 0x1a1e*(u)) /0x2000 #define _B(y,u,v) (0x2568*(y) + 0x40cf*(v)) /0x2000 -KThumb::KThumb(KUrl url, int width, int height, QObject * parent, const char *name):QObject(parent), m_url(url), m_width(width), m_height(height) +KThumb::KThumb(ClipManager *clipManager, KUrl url, int width, int height, QObject * parent, const char *name):QObject(parent), m_clipManager(clipManager), m_url(url), m_width(width), m_height(height) { - kDebug()<<"+++++++++++ CREATING THMB PROD FOR: "<<url; - m_profile = new Mlt::Profile((char*) qstrdup(KdenliveSettings::current_profile().toUtf8())); + + m_profile = new Mlt::Profile((char*) KdenliveSettings::current_profile().data()); QCryptographicHash context(QCryptographicHash::Sha1); context.addData((KFileItem(m_url,"text/plain", S_IFREG).timeString() + m_url.fileName()).toAscii().data()); m_thumbFile = KdenliveSettings::currenttmpfolder() + context.result().toHex() + ".thumb"; @@ -328,7 +328,7 @@ void KThumb::getAudioThumbs(int channel, double frame, double frameLength, int arrayWidth){ - if ((thumbProducer.isRunning () && thumbProducer.isWorking()) || channel == 0) { + if ((thumbProducer.isRunning() && thumbProducer.isWorking()) || channel == 0) { return; } @@ -359,10 +359,20 @@ } else { if (thumbProducer.isRunning()) return; - thumbProducer.init(m_url, m_thumbFile, frame, frameLength, m_frequency, m_channels, arrayWidth); + thumbProducer.init(this, m_url, m_thumbFile, frame, frameLength, m_frequency, m_channels, arrayWidth); thumbProducer.start(QThread::LowestPriority ); + kDebug() << "STARTING GENERATE THMB FOR: "<<m_url<<" ................................"; } } +void KThumb::customEvent ( QEvent * event ){ + if (event->type()==10005){ + ProgressEvent* p=(ProgressEvent*) event; + m_clipManager->setThumbsProgress(m_url, p->value()); + } +} + +#include "kthumb.moc" + Modified: branches/KDE4/src/kthumb.h =================================================================== --- branches/KDE4/src/kthumb.h 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/kthumb.h 2008-03-02 16:32:25 UTC (rev 1974) @@ -27,6 +27,7 @@ #include <mlt++/Mlt.h> + /**KRender encapsulates the client side of the interface to a renderer. From Kdenlive's point of view, you treat the KRender object as the renderer, and simply use it as if it was local. Calls are asyncrhonous - @@ -44,12 +45,13 @@ class Profile; }; +class ClipManager; class MyThread : public QThread { public: virtual void run(); - void init(KUrl url, QString target, double frame, double frameLength, int frequency, int channels, int arrayWidth); + void init(QObject *parent, KUrl url, QString target, double frame, double frameLength, int frequency, int channels, int arrayWidth); bool isWorking(); bool stop_me; @@ -62,6 +64,7 @@ int m_channels; int m_arrayWidth; bool m_isWorking; + QObject *m_parent; }; @@ -69,7 +72,7 @@ Q_OBJECT public: - KThumb(KUrl url, int width, int height, QObject * parent = 0, const char *name = 0); + KThumb(ClipManager *clipManager, KUrl url, int width, int height, QObject * parent = 0, const char *name = 0); ~KThumb(); public slots: @@ -81,6 +84,9 @@ void removeAudioThumb(); void getAudioThumbs(int channel, double frame, double frameLength, int arrayWidth); +protected: + virtual void customEvent ( QEvent * event ); + private: MyThread thumbProducer; KUrl m_url; @@ -88,6 +94,7 @@ int m_width; int m_height; Mlt::Profile *m_profile; + ClipManager *m_clipManager; signals: void thumbReady(int frame, QPixmap pm); Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/mainwindow.cpp 2008-03-02 16:32:25 UTC (rev 1974) @@ -467,6 +467,8 @@ connect(doc, SIGNAL(signalDeleteProjectClip(int)), m_projectList, SLOT(slotDeleteClip(int))); connect(doc, SIGNAL(updateClipDisplay(int)), m_projectList, SLOT(slotUpdateClip(int))); connect(doc, SIGNAL(deletTimelineClip(int)), trackView, SLOT(slotDeleteClip(int))); + connect(doc, SIGNAL(thumbsProgress(KUrl, int)), this, SLOT(slotGotProgressInfo(KUrl, int))); + connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*))); connect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement))); connect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement))); @@ -515,23 +517,17 @@ //connect( dialog, SIGNAL(settingsChanged()), this, SLOT(updateConfiguration()) ); dialog->show(); } -void MainWindow::customEvent ( QEvent * event ){ - if (event->type()==10005){ - ProgressEvent* p=(ProgressEvent*) event; - statusProgressBar->setValue(p->value()); - if (p->value()>0) { - statusLabel->setText(tr("Creating Audio Thumbs")); - statusProgressBar->setVisible(true); - } - else { - statusLabel->setText(""); - statusProgressBar->setVisible(false); - } - } - if (event->type()==10010){ - EffectEvent* p=(EffectEvent*) event; - slotAddEffect(p->xml(), p->pos(), p->track()); - } +void MainWindow::slotGotProgressInfo( KUrl url, int progress) { + statusProgressBar->setValue(progress); + if (progress>0) { + statusLabel->setText(tr("Creating Audio Thumbs")); + statusProgressBar->setVisible(true); + } + else { + statusLabel->setText(""); + statusProgressBar->setVisible(false); + } } + #include "mainwindow.moc" Modified: branches/KDE4/src/mainwindow.h =================================================================== --- branches/KDE4/src/mainwindow.h 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/mainwindow.h 2008-03-02 16:32:25 UTC (rev 1974) @@ -53,7 +53,7 @@ MainWindow(QWidget *parent=0); void parseProfiles(); - void customEvent ( QEvent * event ); + protected: virtual bool queryClose(); @@ -124,6 +124,7 @@ void slotEditProfiles(); void slotEditProjectSettings(); void slotDisplayActionMessage( QAction *a); + void slotGotProgressInfo( KUrl url, int progress); }; #endif Modified: branches/KDE4/src/projectitem.cpp =================================================================== --- branches/KDE4/src/projectitem.cpp 2008-03-02 13:44:10 UTC (rev 1973) +++ branches/KDE4/src/projectitem.cpp 2008-03-02 16:32:25 UTC (rev 1974) @@ -229,15 +229,16 @@ } m_clip->setClipType(m_clipType); } - slotSetToolTip(); + slotSetToolTip(); + if (m_element.isNull()) { + QDomDocument doc; + m_element = doc.createElement("producer"); + } + if (m_element.attribute("duration") == QString::null) m_element.setAttribute("duration", attributes["duration"].toInt()); + m_element.setAttribute("resource", attributes["filename"]); + m_element.setAttribute("type", (int) m_clipType); - if (m_element.isNull()) { - QDomDocument doc; - m_element = doc.createElement("producer"); - } - if (m_element.attribute("duration") == QString::null) m_element.setAttribute("duration", attributes["duration"].toInt()); - m_element.setAttribute("resource", attributes["filename"]); - m_element.setAttribute("type", (int) m_clipType); + m_clip->slotRequestAudioThumbs(); /* if (attributes.contains("height")) { m_height = attributes["height"].toInt(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ble...@us...> - 2008-03-02 17:15:39
|
Revision: 1976 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1976&view=rev Author: blendamedt Date: 2008-03-02 09:15:41 -0800 (Sun, 02 Mar 2008) Log Message: ----------- projectlist load now also audio/mpeg(mp3 is this here), draw fix of audiothumb, use factor is present in effect Modified Paths: -------------- branches/KDE4/src/clipitem.cpp branches/KDE4/src/projectlist.cpp Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-02 16:55:34 UTC (rev 1975) +++ branches/KDE4/src/clipitem.cpp 2008-03-02 17:15:41 UTC (rev 1976) @@ -39,7 +39,7 @@ #include "kdenlivesettings.h" ClipItem::ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration) -: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(0),audioThumbWasDrawn(false),m_opacity(1.0), m_timeLine(0) +: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(0),audioThumbWasDrawn(false),audioThumbReady(false), m_opacity(1.0), m_timeLine(0) { //setToolTip(name); kDebug()<<"******* CREATING NEW TML CLIP, DUR: "<<duration; @@ -52,7 +52,6 @@ if (duration != -1) m_cropDuration = duration; else m_cropDuration = m_maxDuration; setAcceptDrops (true); - audioThumbReady = clip->audioThumbCreated(); /* m_cropStart = xml.attribute("in", 0).toInt(); @@ -65,6 +64,7 @@ setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemClipsChildrenToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); connect (this , SIGNAL (prepareAudioThumb(double,QPainterPath,int,int)) , this, SLOT (slotPrepareAudioThumb(double,QPainterPath,int,int))); + setBrush(QColor(100, 100, 150)); if (m_clipType == VIDEO || m_clipType == AV) { m_hasThumbs = true; @@ -268,7 +268,7 @@ QLineF l2(br.x() + m_startPix.width(), br.y(), br.x() + m_startPix.width(), br.y() + br.height()); painter->drawLine(l2); } - if ( ( m_clipType == AV || m_clipType==AUDIO || true) && audioThumbReady ){ + if ( ( m_clipType == AV || m_clipType==AUDIO || true) && audioThumbReady ){ QPainterPath path= m_clipType==AV ? roundRectPathLower : roundRectPathUpper.united(roundRectPathLower); painter->fillPath(path,QBrush(QColor(200,200,200,127))); @@ -431,8 +431,14 @@ negativeChannelPaths[channel].lineTo(samples,0.1+y-delta); } } + if (fullAreaDraw && samples==100){ + positiveChannelPaths[channels].lineTo(samples,0); + negativeChannelPaths[channels].lineTo(samples,0); + positiveChannelPaths[channels].lineTo(0,0); + negativeChannelPaths[channels].lineTo(0,0); + } + } - for (int i=0;i<channels;i++){ if (fullAreaDraw){ //pixpainter.fillPath(positiveChannelPaths[i].united(negativeChannelPaths[i]),QBrush(Qt::SolidPattern));//or singleif looks better @@ -654,8 +660,12 @@ QDomNodeList params = effect.elementsByTagName("parameter"); for (int i = 0; i < params.count(); i++) { QDomElement e = params.item(i).toElement(); - if (!e.isNull()) + if (!e.isNull()){ effectParams[e.attribute("name")] = e.attribute("value"); + } + if (!e.attribute("factor").isEmpty()){ + effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble()/e.attribute("factor").toDouble()); + } } flashClip(); update(boundingRect()); @@ -686,8 +696,12 @@ } effectParams["start"]=neu; }else - if (!e.isNull()) + if (!e.isNull()){ effectParams[e.attribute("name")] = e.attribute("value"); + } + if (!e.attribute("factor").isEmpty()){ + effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble()/e.attribute("factor").toDouble()); + } } return effectParams; } Modified: branches/KDE4/src/projectlist.cpp =================================================================== --- branches/KDE4/src/projectlist.cpp 2008-03-02 16:55:34 UTC (rev 1975) +++ branches/KDE4/src/projectlist.cpp 2008-03-02 17:15:41 UTC (rev 1976) @@ -313,7 +313,7 @@ if (!m_commandStack) kDebug()<<"!!!!!!!!!!!!!!!! NO CMD STK"; KUrl::List list; if (givenUrl.isEmpty()) - list = KFileDialog::getOpenUrls( KUrl(), "application/vnd.kde.kdenlive application/vnd.westley.scenelist application/flv application/vnd.rn-realmedia video/x-dv video/x-msvideo video/mpeg video/x-ms-wmv audio/x-mp3 audio/x-wav application/ogg *.m2t *.dv video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr"); + list = KFileDialog::getOpenUrls( KUrl(), "application/vnd.kde.kdenlive application/vnd.westley.scenelist application/flv application/vnd.rn-realmedia video/x-dv video/x-msvideo video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg *.m2t *.dv video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr"); else list.append(givenUrl); if (list.isEmpty()) return; KUrl::List::Iterator it; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-02 19:38:41
|
Revision: 1981 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1981&view=rev Author: j-b-m Date: 2008-03-02 11:35:24 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Nicer timeline visual tips, fix video thumbnails being set on wrong clip Modified Paths: -------------- branches/KDE4/src/clipitem.cpp branches/KDE4/src/clipitem.h branches/KDE4/src/customtrackview.cpp branches/KDE4/src/customtrackview.h Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-02 18:37:51 UTC (rev 1980) +++ branches/KDE4/src/clipitem.cpp 2008-03-02 19:35:24 UTC (rev 1981) @@ -39,7 +39,7 @@ #include "kdenlivesettings.h" ClipItem::ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration) -: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(0),audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0) +: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(0),audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0) { //setToolTip(name); kDebug()<<"******* CREATING NEW TML CLIP, DUR: "<<duration; @@ -103,24 +103,29 @@ void ClipItem::slotFetchThumbs() { + m_thumbsRequested += 2; emit getThumb(m_cropStart, m_cropStart + m_cropDuration); } void ClipItem::slotGetStartThumb() { + m_thumbsRequested++; emit getThumb(m_cropStart, -1); } void ClipItem::slotGetEndThumb() { + m_thumbsRequested++; emit getThumb(-1, m_cropStart + m_cropDuration); } void ClipItem::slotThumbReady(int frame, QPixmap pix) { + if (m_thumbsRequested == 0) return; if (frame == m_cropStart) m_startPix = pix; else m_endPix = pix; update(); + m_thumbsRequested--; } void ClipItem::slotGotAudioData(){ Modified: branches/KDE4/src/clipitem.h =================================================================== --- branches/KDE4/src/clipitem.h 2008-03-02 18:37:51 UTC (rev 1980) +++ branches/KDE4/src/clipitem.h 2008-03-02 19:35:24 UTC (rev 1981) @@ -116,6 +116,7 @@ int m_effectsCounter; double m_opacity; QTimeLine *m_timeLine; + uint m_thumbsRequested; EffectsList m_effectList; QMap<int,QPixmap> audioThumbCachePic; Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-02 18:37:51 UTC (rev 1980) +++ branches/KDE4/src/customtrackview.cpp 2008-03-02 19:35:24 UTC (rev 1981) @@ -47,7 +47,11 @@ m_animationTimer->setFrameRange(0, 5); m_animationTimer->setUpdateInterval(100); m_animationTimer->setLoopCount(0); - m_tipColor = QColor(230, 50, 0, 150); + m_tipColor = QColor(0, 192, 0, 200); + QColor border = QColor(255,255,255,100); + m_tipPen.setColor(border); + m_tipPen.setWidth(3); + setContentsMargins(0, 0, 0, 0); if (projectscene) { m_cursorLine = projectscene->addLine(0, 0, 0, 50); @@ -166,9 +170,15 @@ else if (opMode == RESIZESTART) { kDebug()<<"******** RESIZE CLIP START; WIDTH: "<<size; if (m_visualTip == NULL) { - m_visualTip = new QGraphicsRectItem(clip->rect().x(), clip->rect().y(), size, clip->rect().height()); - ((QGraphicsRectItem*) m_visualTip)->setBrush(m_tipColor); - ((QGraphicsRectItem*) m_visualTip)->setPen(QPen(Qt::transparent)); + QPolygon polygon; + polygon << QPoint(clip->rect().x(), clip->rect().y() + clip->rect().height() / 2 - size * 2); + polygon << QPoint(clip->rect().x() + size * 2, clip->rect().y() + clip->rect().height() / 2 ); + polygon << QPoint(clip->rect().x(), clip->rect().y() + clip->rect().height() / 2 + size * 2); + polygon << QPoint(clip->rect().x(), clip->rect().y() + clip->rect().height() / 2 - size * 2); + + m_visualTip = new QGraphicsPolygonItem(polygon); + ((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor); + ((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen); m_visualTip->setZValue (100); m_animation = new QGraphicsItemAnimation; m_animation->setItem(m_visualTip); @@ -187,9 +197,16 @@ } else if (opMode == RESIZEEND) { if (m_visualTip == NULL) { - m_visualTip = new QGraphicsRectItem(clip->rect().x() + clip->rect().width() - size, clip->rect().y(), size, clip->rect().height()); - ((QGraphicsRectItem*) m_visualTip)->setBrush(m_tipColor); - ((QGraphicsRectItem*) m_visualTip)->setPen(QPen(Qt::transparent)); + QPolygon polygon; + polygon << QPoint(clip->rect().x() + clip->rect().width(), clip->rect().y() + clip->rect().height() / 2 - size * 2); + polygon << QPoint(clip->rect().x() + clip->rect().width() - size * 2, clip->rect().y() + clip->rect().height() / 2 ); + polygon << QPoint(clip->rect().x() + clip->rect().width(), clip->rect().y() + clip->rect().height() / 2 + size * 2); + polygon << QPoint(clip->rect().x() + clip->rect().width(), clip->rect().y() + clip->rect().height() / 2 - size * 2); + + m_visualTip = new QGraphicsPolygonItem(polygon); + ((QGraphicsPolygonItem*) m_visualTip)->setBrush(m_tipColor); + ((QGraphicsPolygonItem*) m_visualTip)->setPen(m_tipPen); + m_visualTip->setZValue (100); m_animation = new QGraphicsItemAnimation; m_animation->setItem(m_visualTip); @@ -210,7 +227,7 @@ if (m_visualTip == NULL) { m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->fadeIn() * m_scale - size, clip->rect().y() - 8, size * 2, 16); ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor); - ((QGraphicsEllipseItem*) m_visualTip)->setPen(QPen(Qt::transparent)); + ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen); m_visualTip->setZValue (100); m_animation = new QGraphicsItemAnimation; m_animation->setItem(m_visualTip); @@ -231,7 +248,7 @@ if (m_visualTip == NULL) { m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->rect().width() - clip->fadeOut() * m_scale - size, clip->rect().y() - 8, size*2, 16); ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor); - ((QGraphicsEllipseItem*) m_visualTip)->setPen(QPen(Qt::transparent)); + ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen); m_visualTip->setZValue (100); m_animation = new QGraphicsItemAnimation; m_animation->setItem(m_visualTip); Modified: branches/KDE4/src/customtrackview.h =================================================================== --- branches/KDE4/src/customtrackview.h 2008-03-02 18:37:51 UTC (rev 1980) +++ branches/KDE4/src/customtrackview.h 2008-03-02 19:35:24 UTC (rev 1981) @@ -91,6 +91,7 @@ QGraphicsItemAnimation *m_animation; QTimeLine *m_animationTimer; QColor m_tipColor; + QPen m_tipPen; double m_scale; int m_clickPoint; QList <int> m_snapPoints; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-02 20:32:57
|
Revision: 1983 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1983&view=rev Author: j-b-m Date: 2008-03-02 12:33:00 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Resetting an effect should not loose the filter id Modified Paths: -------------- branches/KDE4/src/customtrackview.cpp branches/KDE4/src/effectstackview.cpp Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-02 20:13:30 UTC (rev 1982) +++ branches/KDE4/src/customtrackview.cpp 2008-03-02 20:33:00 UTC (rev 1983) @@ -409,7 +409,8 @@ ClipItem *item = (ClipItem *)itemList.at(i); // the kdenlive_ix int is used to identify an effect in mlt's playlist, should // not be changed - effect.setAttribute("kdenlive_ix", QString::number(item->effectsCounter())); + if (effect.attribute("kdenlive_ix").toInt() == 0) + effect.setAttribute("kdenlive_ix", QString::number(item->effectsCounter())); AddEffectCommand *command = new AddEffectCommand(this, m_tracksCount - item->track(),GenTime(item->startPos(), m_document->fps()), effect, true); m_commandStack->push(command); } Modified: branches/KDE4/src/effectstackview.cpp =================================================================== --- branches/KDE4/src/effectstackview.cpp 2008-03-02 20:13:30 UTC (rev 1982) +++ branches/KDE4/src/effectstackview.cpp 2008-03-02 20:33:00 UTC (rev 1983) @@ -176,6 +176,7 @@ } } if (!dom.isNull()) { + dom.setAttribute("kdenlive_ix", old.attribute("kdenlive_ix")); emit updateClipEffect(clipref, old, dom); slotItemSelectionChanged(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-02 20:56:38
|
Revision: 1984 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1984&view=rev Author: j-b-m Date: 2008-03-02 12:56:38 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Fix effect resetting Modified Paths: -------------- branches/KDE4/src/clipitem.cpp branches/KDE4/src/effectstackview.cpp branches/KDE4/src/effectstackview.h Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-02 20:33:00 UTC (rev 1983) +++ branches/KDE4/src/clipitem.cpp 2008-03-02 20:56:38 UTC (rev 1984) @@ -39,7 +39,7 @@ #include "kdenlivesettings.h" ClipItem::ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration) -: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(0),audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0) +: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(1),audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0) { //setToolTip(name); kDebug()<<"******* CREATING NEW TML CLIP, DUR: "<<duration; Modified: branches/KDE4/src/effectstackview.cpp =================================================================== --- branches/KDE4/src/effectstackview.cpp 2008-03-02 20:33:00 UTC (rev 1983) +++ branches/KDE4/src/effectstackview.cpp 2008-03-02 20:56:38 UTC (rev 1984) @@ -177,8 +177,8 @@ } if (!dom.isNull()) { dom.setAttribute("kdenlive_ix", old.attribute("kdenlive_ix")); + emit transferParamDesc(dom, 0, 100);//minx max frame emit updateClipEffect(clipref, old, dom); - slotItemSelectionChanged(); } } @@ -223,7 +223,4 @@ } -void EffectStackView::itemSelectionChanged (){ - //kDebug() << "drop"; -} #include "effectstackview.moc" Modified: branches/KDE4/src/effectstackview.h =================================================================== --- branches/KDE4/src/effectstackview.h 2008-03-02 20:33:00 UTC (rev 1983) +++ branches/KDE4/src/effectstackview.h 2008-03-02 20:56:38 UTC (rev 1984) @@ -50,7 +50,6 @@ void slotItemDel(); void slotNewEffect(); void slotResetEffect(); - void itemSelectionChanged(); void slotItemChanged(QListWidgetItem *item); signals: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-03 11:54:35
|
Revision: 1987 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1987&view=rev Author: j-b-m Date: 2008-03-03 03:54:36 -0800 (Mon, 03 Mar 2008) Log Message: ----------- Reindent all source files Modified Paths: -------------- branches/KDE4/src/addclipcommand.cpp branches/KDE4/src/addclipcommand.h branches/KDE4/src/addeffectcommand.cpp branches/KDE4/src/addeffectcommand.h branches/KDE4/src/addtimelineclipcommand.cpp branches/KDE4/src/addtimelineclipcommand.h branches/KDE4/src/clipitem.cpp branches/KDE4/src/clipitem.h branches/KDE4/src/clipmanager.cpp branches/KDE4/src/clipmanager.h branches/KDE4/src/complexparameter.cpp branches/KDE4/src/complexparameter.h branches/KDE4/src/customruler.cpp branches/KDE4/src/customruler.h branches/KDE4/src/customtrackview.cpp branches/KDE4/src/customtrackview.h branches/KDE4/src/definitions.h branches/KDE4/src/docclipbase.cpp branches/KDE4/src/docclipbase.h branches/KDE4/src/documentaudiotrack.cpp branches/KDE4/src/documentaudiotrack.h branches/KDE4/src/documenttrack.cpp branches/KDE4/src/documenttrack.h branches/KDE4/src/documentvideotrack.cpp branches/KDE4/src/documentvideotrack.h branches/KDE4/src/editeffectcommand.cpp branches/KDE4/src/editeffectcommand.h branches/KDE4/src/effectslist.cpp branches/KDE4/src/effectslist.h branches/KDE4/src/effectslistview.cpp branches/KDE4/src/effectslistview.h branches/KDE4/src/effectslistwidget.cpp branches/KDE4/src/effectslistwidget.h branches/KDE4/src/effectstackedit.cpp branches/KDE4/src/effectstackedit.h branches/KDE4/src/effectstackview.cpp branches/KDE4/src/effectstackview.h branches/KDE4/src/events.h branches/KDE4/src/gentime.cpp branches/KDE4/src/gentime.h branches/KDE4/src/graphicsscenerectmove.cpp branches/KDE4/src/graphicsscenerectmove.h branches/KDE4/src/headertrack.cpp branches/KDE4/src/headertrack.h branches/KDE4/src/initeffects.cpp branches/KDE4/src/initeffects.h branches/KDE4/src/kdenlivedoc.cpp branches/KDE4/src/kdenlivedoc.h branches/KDE4/src/kdenlivesettingsdialog.cpp branches/KDE4/src/kdenlivesettingsdialog.h branches/KDE4/src/kthumb.cpp branches/KDE4/src/kthumb.h branches/KDE4/src/labelitem.cpp branches/KDE4/src/labelitem.h branches/KDE4/src/main.cpp branches/KDE4/src/mainwindow.cpp branches/KDE4/src/mainwindow.h branches/KDE4/src/monitor.cpp branches/KDE4/src/monitor.h branches/KDE4/src/monitormanager.cpp branches/KDE4/src/monitormanager.h branches/KDE4/src/moveclipcommand.cpp branches/KDE4/src/moveclipcommand.h branches/KDE4/src/parameterplotter.cpp branches/KDE4/src/parameterplotter.h branches/KDE4/src/profilesdialog.cpp branches/KDE4/src/profilesdialog.h branches/KDE4/src/projectitem.cpp branches/KDE4/src/projectitem.h branches/KDE4/src/projectlist.cpp branches/KDE4/src/projectlist.h branches/KDE4/src/projectlistview.cpp branches/KDE4/src/projectlistview.h branches/KDE4/src/projectsettings.cpp branches/KDE4/src/projectsettings.h branches/KDE4/src/renderer.cpp branches/KDE4/src/renderer.h branches/KDE4/src/resizeclipcommand.cpp branches/KDE4/src/resizeclipcommand.h branches/KDE4/src/smallruler.cpp branches/KDE4/src/smallruler.h branches/KDE4/src/timecode.cpp branches/KDE4/src/timecode.h branches/KDE4/src/titledocument.cpp branches/KDE4/src/titledocument.h branches/KDE4/src/titlewidget.cpp branches/KDE4/src/titlewidget.h branches/KDE4/src/trackpanelclipmovefunction.cpp branches/KDE4/src/trackpanelclipmovefunction.h branches/KDE4/src/trackpanelfunction.cpp branches/KDE4/src/trackpanelfunction.h branches/KDE4/src/trackpanelfunctionfactory.cpp branches/KDE4/src/trackpanelfunctionfactory.h branches/KDE4/src/trackview.cpp branches/KDE4/src/trackview.h Modified: branches/KDE4/src/addclipcommand.cpp =================================================================== --- branches/KDE4/src/addclipcommand.cpp 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/addclipcommand.cpp 2008-03-03 11:54:36 UTC (rev 1987) @@ -22,25 +22,23 @@ #include "addclipcommand.h" AddClipCommand::AddClipCommand(KdenliveDoc *doc, const QDomElement &xml, const uint id, bool doIt) - : m_doc(doc), m_xml(xml), m_id(id), m_doIt(doIt) { - if (doIt) setText(i18n("Add clip")); - else setText(i18n("Delete clip")); - } + : m_doc(doc), m_xml(xml), m_id(id), m_doIt(doIt) { + if (doIt) setText(i18n("Add clip")); + else setText(i18n("Delete clip")); +} -// virtual -void AddClipCommand::undo() -{ -kDebug()<<"---- undoing action"; - if (m_doIt) m_doc->deleteClip(m_id); - else m_doc->addClip(m_xml, m_id); +// virtual +void AddClipCommand::undo() { + kDebug() << "---- undoing action"; + if (m_doIt) m_doc->deleteClip(m_id); + else m_doc->addClip(m_xml, m_id); } -// virtual -void AddClipCommand::redo() -{ -kDebug()<<"---- redoing action"; - if (m_doIt) m_doc->addClip(m_xml, m_id); - else m_doc->deleteClip(m_id); +// virtual +void AddClipCommand::redo() { + kDebug() << "---- redoing action"; + if (m_doIt) m_doc->addClip(m_xml, m_id); + else m_doc->deleteClip(m_id); } #include "addclipcommand.moc" Modified: branches/KDE4/src/addclipcommand.h =================================================================== --- branches/KDE4/src/addclipcommand.h 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/addclipcommand.h 2008-03-03 11:54:36 UTC (rev 1987) @@ -26,20 +26,19 @@ #include "kdenlivedoc.h" -class AddClipCommand : public QUndoCommand - { - public: - AddClipCommand(KdenliveDoc *list, const QDomElement &xml, const uint id, bool doIt); +class AddClipCommand : public QUndoCommand { +public: + AddClipCommand(KdenliveDoc *list, const QDomElement &xml, const uint id, bool doIt); virtual void undo(); virtual void redo(); - private: - KdenliveDoc *m_doc; - QDomElement m_xml; - uint m_id; - bool m_doIt; - }; +private: + KdenliveDoc *m_doc; + QDomElement m_xml; + uint m_id; + bool m_doIt; +}; #endif Modified: branches/KDE4/src/addeffectcommand.cpp =================================================================== --- branches/KDE4/src/addeffectcommand.cpp 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/addeffectcommand.cpp 2008-03-03 11:54:36 UTC (rev 1987) @@ -22,25 +22,23 @@ #include "addeffectcommand.h" AddEffectCommand::AddEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement effect, bool doIt) - : m_view(view), m_track(track), m_pos(pos), m_effect(effect), m_doIt(doIt) { - if (doIt) setText(i18n("Add effect")); - else setText(i18n("Delete effect")); - } + : m_view(view), m_track(track), m_pos(pos), m_effect(effect), m_doIt(doIt) { + if (doIt) setText(i18n("Add effect")); + else setText(i18n("Delete effect")); +} -// virtual -void AddEffectCommand::undo() -{ -kDebug()<<"---- undoing action"; - if (m_doIt) m_view->deleteEffect(m_track, m_pos, m_effect); - else m_view->addEffect(m_track, m_pos, m_effect); +// virtual +void AddEffectCommand::undo() { + kDebug() << "---- undoing action"; + if (m_doIt) m_view->deleteEffect(m_track, m_pos, m_effect); + else m_view->addEffect(m_track, m_pos, m_effect); } -// virtual -void AddEffectCommand::redo() -{ -kDebug()<<"---- redoing action"; - if (m_doIt) m_view->addEffect(m_track, m_pos, m_effect); - else m_view->deleteEffect(m_track, m_pos, m_effect); +// virtual +void AddEffectCommand::redo() { + kDebug() << "---- redoing action"; + if (m_doIt) m_view->addEffect(m_track, m_pos, m_effect); + else m_view->deleteEffect(m_track, m_pos, m_effect); } #include "addeffectcommand.moc" Modified: branches/KDE4/src/addeffectcommand.h =================================================================== --- branches/KDE4/src/addeffectcommand.h 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/addeffectcommand.h 2008-03-03 11:54:36 UTC (rev 1987) @@ -26,21 +26,20 @@ #include "customtrackview.h" -class AddEffectCommand : public QUndoCommand - { - public: - AddEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement effect, bool doIt); +class AddEffectCommand : public QUndoCommand { +public: + AddEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement effect, bool doIt); virtual void undo(); virtual void redo(); - private: - CustomTrackView *m_view; - int m_track; - QDomElement m_effect; - GenTime m_pos; - bool m_doIt; - }; +private: + CustomTrackView *m_view; + int m_track; + QDomElement m_effect; + GenTime m_pos; + bool m_doIt; +}; #endif Modified: branches/KDE4/src/addtimelineclipcommand.cpp =================================================================== --- branches/KDE4/src/addtimelineclipcommand.cpp 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/addtimelineclipcommand.cpp 2008-03-03 11:54:36 UTC (rev 1987) @@ -22,26 +22,24 @@ #include "addtimelineclipcommand.h" AddTimelineClipCommand::AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, int clipId, int track, int startpos, QRectF rect, int duration, bool doIt, bool doRemove) - : m_view(view), m_xml(xml), m_clipId(clipId), m_clipTrack(track), m_clipPos(startpos), m_clipRect(rect), m_clipDuration(duration), m_doIt(doIt), m_remove(doRemove) { - if (!m_remove) setText(i18n("Add timeline clip")); - else setText(i18n("Delete timeline clip")); - } + : m_view(view), m_xml(xml), m_clipId(clipId), m_clipTrack(track), m_clipPos(startpos), m_clipRect(rect), m_clipDuration(duration), m_doIt(doIt), m_remove(doRemove) { + if (!m_remove) setText(i18n("Add timeline clip")); + else setText(i18n("Delete timeline clip")); +} -// virtual -void AddTimelineClipCommand::undo() -{ - if (!m_remove) m_view->deleteClip(m_clipTrack, m_clipPos, m_clipRect); - else m_view->addClip(m_xml, m_clipId, m_clipTrack, m_clipPos, m_clipRect, m_clipDuration); +// virtual +void AddTimelineClipCommand::undo() { + if (!m_remove) m_view->deleteClip(m_clipTrack, m_clipPos, m_clipRect); + else m_view->addClip(m_xml, m_clipId, m_clipTrack, m_clipPos, m_clipRect, m_clipDuration); } -// virtual -void AddTimelineClipCommand::redo() -{ - if (m_doIt) { - if (!m_remove) m_view->addClip(m_xml, m_clipId, m_clipTrack, m_clipPos, m_clipRect, m_clipDuration); - else m_view->deleteClip(m_clipTrack, m_clipPos, m_clipRect); - } - m_doIt = true; +// virtual +void AddTimelineClipCommand::redo() { + if (m_doIt) { + if (!m_remove) m_view->addClip(m_xml, m_clipId, m_clipTrack, m_clipPos, m_clipRect, m_clipDuration); + else m_view->deleteClip(m_clipTrack, m_clipPos, m_clipRect); + } + m_doIt = true; } #include "addtimelineclipcommand.moc" Modified: branches/KDE4/src/addtimelineclipcommand.h =================================================================== --- branches/KDE4/src/addtimelineclipcommand.h 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/addtimelineclipcommand.h 2008-03-03 11:54:36 UTC (rev 1987) @@ -30,24 +30,23 @@ #include "projectlist.h" #include "customtrackview.h" -class AddTimelineClipCommand : public QUndoCommand - { - public: - AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, int clipId, int track, int startpos, QRectF rect, int duration, bool doIt, bool doRemove); +class AddTimelineClipCommand : public QUndoCommand { +public: + AddTimelineClipCommand(CustomTrackView *view, QDomElement xml, int clipId, int track, int startpos, QRectF rect, int duration, bool doIt, bool doRemove); virtual void undo(); virtual void redo(); - private: - CustomTrackView *m_view; - int m_clipDuration; - int m_clipId; - QDomElement m_xml; - int m_clipTrack; - int m_clipPos; - QRectF m_clipRect; - bool m_doIt; - bool m_remove; - }; +private: + CustomTrackView *m_view; + int m_clipDuration; + int m_clipId; + QDomElement m_xml; + int m_clipTrack; + int m_clipPos; + QRectF m_clipRect; + bool m_doIt; + bool m_remove; +}; #endif Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/clipitem.cpp 2008-03-03 11:54:36 UTC (rev 1987) @@ -39,289 +39,265 @@ #include "kdenlivesettings.h" ClipItem::ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration) -: QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(1),audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0) -{ - //setToolTip(name); - kDebug()<<"******* CREATING NEW TML CLIP, DUR: "<<duration; - m_xml = clip->toXML(); - m_clipName = clip->name(); - m_producer = clip->getId(); - m_clipType = clip->clipType(); - m_cropStart = 0; - m_maxDuration = duration; - if (duration != -1) m_cropDuration = duration; - else m_cropDuration = m_maxDuration; - setAcceptDrops (true); - audioThumbReady = clip->audioThumbCreated(); -/* - m_cropStart = xml.attribute("in", 0).toInt(); - m_maxDuration = xml.attribute("duration", 0).toInt(); - if (m_maxDuration == 0) m_maxDuration = xml.attribute("out", 0).toInt() - m_cropStart; + : QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0) { + //setToolTip(name); + kDebug() << "******* CREATING NEW TML CLIP, DUR: " << duration; + m_xml = clip->toXML(); + m_clipName = clip->name(); + m_producer = clip->getId(); + m_clipType = clip->clipType(); + m_cropStart = 0; + m_maxDuration = duration; + if (duration != -1) m_cropDuration = duration; + else m_cropDuration = m_maxDuration; + setAcceptDrops(true); + audioThumbReady = clip->audioThumbCreated(); + /* + m_cropStart = xml.attribute("in", 0).toInt(); + m_maxDuration = xml.attribute("duration", 0).toInt(); + if (m_maxDuration == 0) m_maxDuration = xml.attribute("out", 0).toInt() - m_cropStart; - if (duration != -1) m_cropDuration = duration; - else m_cropDuration = m_maxDuration;*/ + if (duration != -1) m_cropDuration = duration; + else m_cropDuration = m_maxDuration;*/ - setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemClipsChildrenToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - connect (this , SIGNAL (prepareAudioThumb(double,QPainterPath,int,int)) , this, SLOT (slotPrepareAudioThumb(double,QPainterPath,int,int))); - - setBrush(QColor(100, 100, 150)); - if (m_clipType == VIDEO || m_clipType == AV) { - m_hasThumbs = true; - connect(this, SIGNAL(getThumb(int, int)), clip->thumbProducer(), SLOT(extractImage(int, int))); - connect(clip->thumbProducer(), SIGNAL(thumbReady(int, QPixmap)), this, SLOT(slotThumbReady(int, QPixmap))); - connect(clip, SIGNAL (gotAudioData()), this, SLOT (slotGotAudioData())); - QTimer::singleShot(300, this, SLOT(slotFetchThumbs())); + setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemClipsChildrenToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + connect(this , SIGNAL(prepareAudioThumb(double, QPainterPath, int, int)) , this, SLOT(slotPrepareAudioThumb(double, QPainterPath, int, int))); - startThumbTimer = new QTimer(this); - startThumbTimer->setSingleShot(true); - connect(startThumbTimer, SIGNAL(timeout()), this, SLOT(slotGetStartThumb())); - endThumbTimer = new QTimer(this); - endThumbTimer->setSingleShot(true); - connect(endThumbTimer, SIGNAL(timeout()), this, SLOT(slotGetEndThumb())); + setBrush(QColor(100, 100, 150)); + if (m_clipType == VIDEO || m_clipType == AV) { + m_hasThumbs = true; + connect(this, SIGNAL(getThumb(int, int)), clip->thumbProducer(), SLOT(extractImage(int, int))); + connect(clip->thumbProducer(), SIGNAL(thumbReady(int, QPixmap)), this, SLOT(slotThumbReady(int, QPixmap))); + connect(clip, SIGNAL(gotAudioData()), this, SLOT(slotGotAudioData())); + QTimer::singleShot(300, this, SLOT(slotFetchThumbs())); - } - else if (m_clipType == COLOR) { - QString colour = m_xml.attribute("colour"); - colour = colour.replace(0, 2, "#"); - setBrush(QColor(colour.left(7))); - } - else if (m_clipType == IMAGE) { - m_startPix = KThumb::getImage(KUrl(m_xml.attribute("resource")), 50 * KdenliveSettings::project_display_ratio(), 50); - } - else if (m_clipType == AUDIO) { - connect(clip, SIGNAL (gotAudioData()), this, SLOT (slotGotAudioData())); - } + startThumbTimer = new QTimer(this); + startThumbTimer->setSingleShot(true); + connect(startThumbTimer, SIGNAL(timeout()), this, SLOT(slotGetStartThumb())); + endThumbTimer = new QTimer(this); + endThumbTimer->setSingleShot(true); + connect(endThumbTimer, SIGNAL(timeout()), this, SLOT(slotGetEndThumb())); + + } else if (m_clipType == COLOR) { + QString colour = m_xml.attribute("colour"); + colour = colour.replace(0, 2, "#"); + setBrush(QColor(colour.left(7))); + } else if (m_clipType == IMAGE) { + m_startPix = KThumb::getImage(KUrl(m_xml.attribute("resource")), 50 * KdenliveSettings::project_display_ratio(), 50); + } else if (m_clipType == AUDIO) { + connect(clip, SIGNAL(gotAudioData()), this, SLOT(slotGotAudioData())); + } } -ClipItem::~ClipItem() -{ - if (startThumbTimer) delete startThumbTimer; - if (endThumbTimer) delete endThumbTimer; +ClipItem::~ClipItem() { + if (startThumbTimer) delete startThumbTimer; + if (endThumbTimer) delete endThumbTimer; } -void ClipItem::slotFetchThumbs() -{ - m_thumbsRequested += 2; - emit getThumb(m_cropStart, m_cropStart + m_cropDuration); +void ClipItem::slotFetchThumbs() { + m_thumbsRequested += 2; + emit getThumb(m_cropStart, m_cropStart + m_cropDuration); } -void ClipItem::slotGetStartThumb() -{ - m_thumbsRequested++; - emit getThumb(m_cropStart, -1); +void ClipItem::slotGetStartThumb() { + m_thumbsRequested++; + emit getThumb(m_cropStart, -1); } -void ClipItem::slotGetEndThumb() -{ - m_thumbsRequested++; - emit getThumb(-1, m_cropStart + m_cropDuration); +void ClipItem::slotGetEndThumb() { + m_thumbsRequested++; + emit getThumb(-1, m_cropStart + m_cropDuration); } -void ClipItem::slotThumbReady(int frame, QPixmap pix) -{ - if (m_thumbsRequested == 0) return; - if (frame == m_cropStart) m_startPix = pix; - else m_endPix = pix; - update(); - m_thumbsRequested--; +void ClipItem::slotThumbReady(int frame, QPixmap pix) { + if (m_thumbsRequested == 0) return; + if (frame == m_cropStart) m_startPix = pix; + else m_endPix = pix; + update(); + m_thumbsRequested--; } -void ClipItem::slotGotAudioData(){ - audioThumbReady=true; - update(); +void ClipItem::slotGotAudioData() { + audioThumbReady = true; + update(); } -int ClipItem::type () const -{ - return 70000; +int ClipItem::type() const { + return 70000; } -DocClipBase *ClipItem::baseClip() -{ - return m_clip; +DocClipBase *ClipItem::baseClip() { + return m_clip; } -QDomElement ClipItem::xml() const -{ - return m_xml; +QDomElement ClipItem::xml() const { + return m_xml; } -int ClipItem::clipType() -{ - return m_clipType; +int ClipItem::clipType() { + return m_clipType; } -QString ClipItem::clipName() -{ - return m_clipName; +QString ClipItem::clipName() { + return m_clipName; } -int ClipItem::clipProducer() -{ - return m_producer; +int ClipItem::clipProducer() { + return m_producer; } -int ClipItem::maxDuration() -{ - return m_maxDuration; +int ClipItem::maxDuration() { + return m_maxDuration; } -int ClipItem::duration() -{ - return m_cropDuration; +int ClipItem::duration() { + return m_cropDuration; } -int ClipItem::startPos() -{ - return m_startPos; +int ClipItem::startPos() { + return m_startPos; } -int ClipItem::cropStart() -{ - return m_cropStart; +int ClipItem::cropStart() { + return m_cropStart; } -int ClipItem::endPos() -{ - return m_startPos + m_cropDuration; +int ClipItem::endPos() { + return m_startPos + m_cropDuration; } -void ClipItem::flashClip() -{ - if (m_timeLine == 0) { - m_timeLine = new QTimeLine(750, this); - connect(m_timeLine, SIGNAL(valueChanged(qreal)), this, SLOT(animate(qreal))); - } - m_timeLine->start(); +void ClipItem::flashClip() { + if (m_timeLine == 0) { + m_timeLine = new QTimeLine(750, this); + connect(m_timeLine, SIGNAL(valueChanged(qreal)), this, SLOT(animate(qreal))); + } + m_timeLine->start(); } -void ClipItem::animate(qreal value) -{ - m_opacity = value; - update(); +void ClipItem::animate(qreal value) { + m_opacity = value; + update(); } -// virtual - void ClipItem::paint(QPainter *painter, - const QStyleOptionGraphicsItem *option, - QWidget *widget) - { +// virtual +void ClipItem::paint(QPainter *painter, + const QStyleOptionGraphicsItem *option, + QWidget *widget) { painter->setOpacity(m_opacity); QBrush paintColor = brush(); if (isSelected()) paintColor = QBrush(QColor(150, 50, 100)); QRectF br = rect(); - QRect rectInView;//this is the rect that is visible by the user - if (scene()->views().size()>0){ - rectInView=scene()->views()[0]->viewport()->rect(); - rectInView.moveTo(scene()->views()[0]->horizontalScrollBar()->value(),scene()->views()[0]->verticalScrollBar()->value()); - rectInView.adjust(-10,-10,10,10);//make view rect 10 pixel greater on each site, or repaint after scroll event - //kDebug() << scene()->views()[0]->viewport()->rect() << " " << scene()->views()[0]->horizontalScrollBar()->value(); - } - if (rectInView.isNull()) - return; - QPainterPath clippath; - clippath.addRect(rectInView); - int startpixel=rectInView.x()-rect().x();//start and endpixel that is viewable from rect() - if (startpixel<0) - startpixel=0; - int endpixel=rectInView.width()+rectInView.x(); - if (endpixel<0) - endpixel=0; - + QRect rectInView;//this is the rect that is visible by the user + if (scene()->views().size() > 0) { + rectInView = scene()->views()[0]->viewport()->rect(); + rectInView.moveTo(scene()->views()[0]->horizontalScrollBar()->value(), scene()->views()[0]->verticalScrollBar()->value()); + rectInView.adjust(-10, -10, 10, 10);//make view rect 10 pixel greater on each site, or repaint after scroll event + //kDebug() << scene()->views()[0]->viewport()->rect() << " " << scene()->views()[0]->horizontalScrollBar()->value(); + } + if (rectInView.isNull()) + return; + QPainterPath clippath; + clippath.addRect(rectInView); + int startpixel = rectInView.x() - rect().x();//start and endpixel that is viewable from rect() + if (startpixel < 0) + startpixel = 0; + int endpixel = rectInView.width() + rectInView.x(); + if (endpixel < 0) + endpixel = 0; + painter->setRenderHints(QPainter::Antialiasing); - QPainterPath roundRectPathUpper,roundRectPathLower; + QPainterPath roundRectPathUpper, roundRectPathLower; double roundingY = 20; double roundingX = 20; double offset = 1; painter->setClipRect(option->exposedRect); if (roundingX > br.width() / 2) roundingX = br.width() / 2; //kDebug()<<"-----PAINTING, SCAL: "<<scale<<", height: "<<br.height(); - roundRectPathUpper.moveTo(br.x() + br .width() - offset, br.y() + br.height()/2 - offset); - roundRectPathUpper.arcTo(br.x() + br .width() - roundingX - offset, br.y(), roundingX, roundingY, 0.0, 90.0); - roundRectPathUpper.lineTo(br.x() + roundingX, br.y()); - roundRectPathUpper.arcTo(br.x() + offset, br.y(), roundingX, roundingY, 90.0, 90.0); - roundRectPathUpper.lineTo(br.x() + offset, br.y() + br.height()/2 - offset); - roundRectPathUpper.closeSubpath(); - - roundRectPathLower.moveTo(br.x() + offset, br.y() + br.height()/2 - offset); - roundRectPathLower.arcTo(br.x() + offset, br.y() + br.height() - roundingY - offset, roundingX, roundingY, 180.0, 90.0); - roundRectPathLower.lineTo(br.x() + br .width() - roundingX, br.y() + br.height() - offset); - roundRectPathLower.arcTo(br.x() + br .width() - roundingX - offset, br.y() + br.height() - roundingY - offset, roundingX, roundingY, 270.0, 90.0); - roundRectPathLower.lineTo(br.x() + br .width() - offset, br.y()+ br.height()/2 - offset); - roundRectPathLower.closeSubpath(); - - painter->setClipPath(roundRectPathUpper.united(roundRectPathLower).intersected(clippath), Qt::IntersectClip); - //painter->fillPath(roundRectPath, brush()); //, QBrush(QColor(Qt::red))); - painter->fillRect(br.intersected(rectInView), paintColor); + roundRectPathUpper.moveTo(br.x() + br .width() - offset, br.y() + br.height() / 2 - offset); + roundRectPathUpper.arcTo(br.x() + br .width() - roundingX - offset, br.y(), roundingX, roundingY, 0.0, 90.0); + roundRectPathUpper.lineTo(br.x() + roundingX, br.y()); + roundRectPathUpper.arcTo(br.x() + offset, br.y(), roundingX, roundingY, 90.0, 90.0); + roundRectPathUpper.lineTo(br.x() + offset, br.y() + br.height() / 2 - offset); + roundRectPathUpper.closeSubpath(); + + roundRectPathLower.moveTo(br.x() + offset, br.y() + br.height() / 2 - offset); + roundRectPathLower.arcTo(br.x() + offset, br.y() + br.height() - roundingY - offset, roundingX, roundingY, 180.0, 90.0); + roundRectPathLower.lineTo(br.x() + br .width() - roundingX, br.y() + br.height() - offset); + roundRectPathLower.arcTo(br.x() + br .width() - roundingX - offset, br.y() + br.height() - roundingY - offset, roundingX, roundingY, 270.0, 90.0); + roundRectPathLower.lineTo(br.x() + br .width() - offset, br.y() + br.height() / 2 - offset); + roundRectPathLower.closeSubpath(); + + painter->setClipPath(roundRectPathUpper.united(roundRectPathLower).intersected(clippath), Qt::IntersectClip); + //painter->fillPath(roundRectPath, brush()); //, QBrush(QColor(Qt::red))); + painter->fillRect(br.intersected(rectInView), paintColor); //painter->fillRect(QRectF(br.x() + br.width() - m_endPix.width(), br.y(), m_endPix.width(), br.height()), QBrush(QColor(Qt::black))); // draw thumbnails if (!m_startPix.isNull()) { - if (m_clipType == IMAGE) { - painter->drawPixmap(QPointF(br.x() + br.width() - m_startPix.width(), br.y()), m_startPix); - QLineF l(br.x() + br.width() - m_startPix.width(), br.y(), br.x() + br.width() - m_startPix.width(), br.y() + br.height()); - painter->drawLine(l); - } else { - painter->drawPixmap(QPointF(br.x() + br.width() - m_endPix.width(), br.y()), m_endPix); - QLineF l(br.x() + br.width() - m_endPix.width(), br.y(), br.x() + br.width() - m_endPix.width(), br.y() + br.height()); - painter->drawLine(l); - } + if (m_clipType == IMAGE) { + painter->drawPixmap(QPointF(br.x() + br.width() - m_startPix.width(), br.y()), m_startPix); + QLineF l(br.x() + br.width() - m_startPix.width(), br.y(), br.x() + br.width() - m_startPix.width(), br.y() + br.height()); + painter->drawLine(l); + } else { + painter->drawPixmap(QPointF(br.x() + br.width() - m_endPix.width(), br.y()), m_endPix); + QLineF l(br.x() + br.width() - m_endPix.width(), br.y(), br.x() + br.width() - m_endPix.width(), br.y() + br.height()); + painter->drawLine(l); + } - painter->drawPixmap(QPointF(br.x(), br.y()), m_startPix); - QLineF l2(br.x() + m_startPix.width(), br.y(), br.x() + m_startPix.width(), br.y() + br.height()); - painter->drawLine(l2); + painter->drawPixmap(QPointF(br.x(), br.y()), m_startPix); + QLineF l2(br.x() + m_startPix.width(), br.y(), br.x() + m_startPix.width(), br.y() + br.height()); + painter->drawLine(l2); } - if ( ( m_clipType == AV || m_clipType==AUDIO || true) && audioThumbReady ){ - - QPainterPath path= m_clipType==AV ? roundRectPathLower : roundRectPathUpper.united(roundRectPathLower); - painter->fillPath(path,QBrush(QColor(200,200,200,127))); - - int channels=2; - double pixelForOneFrame=(double)br.width()/duration(); - if (pixelForOneFrame!=framePixelWidth) - audioThumbCachePic.clear(); - emit prepareAudioThumb(pixelForOneFrame,path,startpixel,endpixel+200);//200 more for less missing parts before repaint after scrolling + if ((m_clipType == AV || m_clipType == AUDIO || true) && audioThumbReady) { - for (int startCache=startpixel-startpixel%100; startCache < endpixel+300;startCache+=100){ - if (audioThumbCachePic.contains(startCache) && !audioThumbCachePic[startCache].isNull() ) - painter->drawPixmap(path.boundingRect().x()+startCache,path.boundingRect().y(),audioThumbCachePic[startCache]); - } + QPainterPath path = m_clipType == AV ? roundRectPathLower : roundRectPathUpper.united(roundRectPathLower); + painter->fillPath(path, QBrush(QColor(200, 200, 200, 127))); - } + int channels = 2; + double pixelForOneFrame = (double)br.width() / duration(); + if (pixelForOneFrame != framePixelWidth) + audioThumbCachePic.clear(); + emit prepareAudioThumb(pixelForOneFrame, path, startpixel, endpixel + 200);//200 more for less missing parts before repaint after scrolling + for (int startCache = startpixel - startpixel % 100; startCache < endpixel + 300;startCache += 100) { + if (audioThumbCachePic.contains(startCache) && !audioThumbCachePic[startCache].isNull()) + painter->drawPixmap(path.boundingRect().x() + startCache, path.boundingRect().y(), audioThumbCachePic[startCache]); + } + + } + // draw start / end fades double scale = br.width() / m_cropDuration; QBrush fades; if (isSelected()) { - fades = QBrush(QColor(200, 50, 50, 150)); - } - else fades = QBrush(QColor(200, 200, 200, 200)); + fades = QBrush(QColor(200, 50, 50, 150)); + } else fades = QBrush(QColor(200, 200, 200, 200)); if (m_startFade != 0) { - QPainterPath fadeInPath; - fadeInPath.moveTo(br.x() - offset, br.y()); - fadeInPath.lineTo(br.x() - offset, br.y() + br.height()); - fadeInPath.lineTo(br.x() + m_startFade * scale, br.y()); - fadeInPath.closeSubpath(); - painter->fillPath(fadeInPath, fades); - if (isSelected()) { - QLineF l(br.x() + m_startFade * scale, br.y(), br.x(), br.y() + br.height()); - painter->drawLine(l); - } + QPainterPath fadeInPath; + fadeInPath.moveTo(br.x() - offset, br.y()); + fadeInPath.lineTo(br.x() - offset, br.y() + br.height()); + fadeInPath.lineTo(br.x() + m_startFade * scale, br.y()); + fadeInPath.closeSubpath(); + painter->fillPath(fadeInPath, fades); + if (isSelected()) { + QLineF l(br.x() + m_startFade * scale, br.y(), br.x(), br.y() + br.height()); + painter->drawLine(l); + } } if (m_endFade != 0) { - QPainterPath fadeOutPath; - fadeOutPath.moveTo(br.x() + br.width(), br.y()); - fadeOutPath.lineTo(br.x() + br.width(), br.y() + br.height()); - fadeOutPath.lineTo(br.x() + br.width() - m_endFade * scale, br.y()); - fadeOutPath.closeSubpath(); - painter->fillPath(fadeOutPath, fades); - if (isSelected()) { - QLineF l(br.x() + br.width() - m_endFade * scale, br.y(), br.x() + br.width(), br.y() + br.height()); - painter->drawLine(l); - } + QPainterPath fadeOutPath; + fadeOutPath.moveTo(br.x() + br.width(), br.y()); + fadeOutPath.lineTo(br.x() + br.width(), br.y() + br.height()); + fadeOutPath.lineTo(br.x() + br.width() - m_endFade * scale, br.y()); + fadeOutPath.closeSubpath(); + painter->fillPath(fadeOutPath, fades); + if (isSelected()) { + QLineF l(br.x() + br.width() - m_endFade * scale, br.y(), br.x() + br.width(), br.y() + br.height()); + painter->drawLine(l); + } } QPen pen = painter->pen(); @@ -330,17 +306,17 @@ // Draw clip name QString effects = effectNames().join(" / "); if (!effects.isEmpty()) { - painter->setPen(pen); - QFont font = painter->font(); - QFont smallFont = font; - smallFont.setPointSize(8); - painter->setFont(smallFont); - QRectF txtBounding = painter->boundingRect(br, Qt::AlignLeft | Qt::AlignTop, " " + effects + " "); - painter->fillRect(txtBounding, QBrush(QColor(0,0,0,150))); - painter->drawText(txtBounding, Qt::AlignCenter, effects); - pen.setColor(Qt::black); - painter->setPen(pen); - painter->setFont(font); + painter->setPen(pen); + QFont font = painter->font(); + QFont smallFont = font; + smallFont.setPointSize(8); + painter->setFont(smallFont); + QRectF txtBounding = painter->boundingRect(br, Qt::AlignLeft | Qt::AlignTop, " " + effects + " "); + painter->fillRect(txtBounding, QBrush(QColor(0, 0, 0, 150))); + painter->drawText(txtBounding, Qt::AlignCenter, effects); + pen.setColor(Qt::black); + painter->setPen(pen); + painter->setFont(font); } pen.setColor(Qt::red); @@ -350,11 +326,11 @@ painter->drawPath(roundRectPathUpper.united(roundRectPathLower).intersected(clippath)); QRectF txtBounding = painter->boundingRect(br, Qt::AlignCenter, " " + m_clipName + " "); - painter->fillRect(txtBounding, QBrush(QColor(255,255,255,150))); + painter->fillRect(txtBounding, QBrush(QColor(255, 255, 255, 150))); painter->drawText(txtBounding, Qt::AlignCenter, m_clipName); - //painter->fillRect(startpixel,0,startpixel+endpixel,(int)br.height(), QBrush(QColor(255,255,255,150))); + //painter->fillRect(startpixel,0,startpixel+endpixel,(int)br.height(), QBrush(QColor(255,255,255,150))); //painter->fillRect(QRect(br.x(), br.y(), roundingX, roundingY), QBrush(QColor(Qt::green))); /*QRectF recta(rect().x(), rect().y(), scale,rect().height()); @@ -372,12 +348,11 @@ //kDebug()<<"ITEM REPAINT RECT: "<<boundingRect().width(); //painter->drawText(rect(), Qt::AlignCenter, m_name); // painter->drawRect(boundingRect()); - //painter->drawRoundRect(-10, -10, 20, 20); - } + //painter->drawRoundRect(-10, -10, 20, 20); +} -OPERATIONTYPE ClipItem::operationMode(QPointF pos, double scale) -{ +OPERATIONTYPE ClipItem::operationMode(QPointF pos, double scale) { if (abs(pos.x() - (rect().x() + scale * m_startFade)) < 6 && abs(pos.y() - rect().y()) < 6) return FADEIN; else if (abs(pos.x() - rect().x()) < 6) return RESIZESTART; else if (abs(pos.x() - (rect().x() + rect().width() - scale * m_endFade)) < 6 && abs(pos.y() - rect().y()) < 6) return FADEOUT; @@ -385,349 +360,321 @@ return MOVE; } -void ClipItem::slotPrepareAudioThumb(double pixelForOneFrame,QPainterPath path,int startpixel, int endpixel){ - int channels=2; - - QRectF re=path.boundingRect(); - - //if ( (!audioThumbWasDrawn || framePixelWidth!=pixelForOneFrame ) && !baseClip()->audioFrameChache.isEmpty()){ - - for (int startCache=startpixel-startpixel%100;startCache+100<endpixel ;startCache+=100){ - //kDebug() << "creating " << startCache; - //if (framePixelWidth!=pixelForOneFrame || - if (framePixelWidth==pixelForOneFrame && audioThumbCachePic.contains(startCache)) - continue; - if (audioThumbCachePic[startCache].isNull() || framePixelWidth!=pixelForOneFrame){ - audioThumbCachePic[startCache]=QPixmap(100,re.height()); - audioThumbCachePic[startCache].fill(QColor(200,200,200,127)); - } - bool fullAreaDraw=pixelForOneFrame<10; - QMap<int,QPainterPath > positiveChannelPaths; - QMap<int,QPainterPath > negativeChannelPaths; - QPainter pixpainter(&audioThumbCachePic[startCache]); - QPen audiopen; - audiopen.setWidth(0); - pixpainter.setPen(audiopen); - //pixpainter.setRenderHint(QPainter::Antialiasing,true); - //pixpainter.drawLine(0,0,100,re.height()); - int channelHeight=audioThumbCachePic[startCache].height()/channels; - - for (int i=0;i<channels;i++){ - - positiveChannelPaths[i].moveTo(0,channelHeight*i+ channelHeight/2); - negativeChannelPaths[i].moveTo(0,channelHeight*i+ channelHeight/2); - } - - for (int samples=0;samples<=100;samples++){ - double frame=(double)(samples+startCache-0)/pixelForOneFrame; - int sample=(frame-(int)(frame))*20 ;// AUDIO_FRAME_SIZE - if (frame<0 || sample< 0 || sample>19 ) - continue; - QMap<int,QByteArray> frame_channel_data=baseClip()->audioFrameChache[(int)frame]; - - for (int channel=0;channel<channels && frame_channel_data[channel].size()> 0;channel++){ - - int y=channelHeight*channel+ channelHeight/2; - int delta=(int)(frame_channel_data[channel][sample] -127/2 ) * channelHeight/ 64; - if (fullAreaDraw){ - positiveChannelPaths[channel].lineTo(samples,0.1+y+qAbs( delta )); - negativeChannelPaths[channel].lineTo(samples,0.1+y-qAbs( delta )); - }else{ - positiveChannelPaths[channel].lineTo(samples,0.1+y+delta); - negativeChannelPaths[channel].lineTo(samples,0.1+y-delta); - } - } - for (int channel=0;channel<channels ;channel++) - if (fullAreaDraw && samples==100){ - positiveChannelPaths[channel].lineTo(samples,channelHeight*channel+ channelHeight/2); - negativeChannelPaths[channel].lineTo(samples,channelHeight*channel+ channelHeight/2); - positiveChannelPaths[channel].lineTo(0,channelHeight*channel+ channelHeight/2); - negativeChannelPaths[channel].lineTo(0,channelHeight*channel+ channelHeight/2); - } - - } - for (int i=0;i<channels;i++){ - if (fullAreaDraw){ - //pixpainter.fillPath(positiveChannelPaths[i].united(negativeChannelPaths[i]),QBrush(Qt::SolidPattern));//or singleif looks better - pixpainter.setBrush(QBrush(QColor(200,200,100,200))); - pixpainter.drawPath(positiveChannelPaths[i].united(negativeChannelPaths[i]));//or singleif looks better - }else - pixpainter.drawPath(positiveChannelPaths[i]); - } - } - //audioThumbWasDrawn=true; - framePixelWidth=pixelForOneFrame; - - //} +void ClipItem::slotPrepareAudioThumb(double pixelForOneFrame, QPainterPath path, int startpixel, int endpixel) { + int channels = 2; + + QRectF re = path.boundingRect(); + + //if ( (!audioThumbWasDrawn || framePixelWidth!=pixelForOneFrame ) && !baseClip()->audioFrameChache.isEmpty()){ + + for (int startCache = startpixel - startpixel % 100;startCache + 100 < endpixel ;startCache += 100) { + //kDebug() << "creating " << startCache; + //if (framePixelWidth!=pixelForOneFrame || + if (framePixelWidth == pixelForOneFrame && audioThumbCachePic.contains(startCache)) + continue; + if (audioThumbCachePic[startCache].isNull() || framePixelWidth != pixelForOneFrame) { + audioThumbCachePic[startCache] = QPixmap(100, re.height()); + audioThumbCachePic[startCache].fill(QColor(200, 200, 200, 127)); + } + bool fullAreaDraw = pixelForOneFrame < 10; + QMap<int, QPainterPath > positiveChannelPaths; + QMap<int, QPainterPath > negativeChannelPaths; + QPainter pixpainter(&audioThumbCachePic[startCache]); + QPen audiopen; + audiopen.setWidth(0); + pixpainter.setPen(audiopen); + //pixpainter.setRenderHint(QPainter::Antialiasing,true); + //pixpainter.drawLine(0,0,100,re.height()); + int channelHeight = audioThumbCachePic[startCache].height() / channels; + + for (int i = 0;i < channels;i++) { + + positiveChannelPaths[i].moveTo(0, channelHeight*i + channelHeight / 2); + negativeChannelPaths[i].moveTo(0, channelHeight*i + channelHeight / 2); + } + + for (int samples = 0;samples <= 100;samples++) { + double frame = (double)(samples + startCache - 0) / pixelForOneFrame; + int sample = (frame - (int)(frame)) * 20 ;// AUDIO_FRAME_SIZE + if (frame < 0 || sample < 0 || sample > 19) + continue; + QMap<int, QByteArray> frame_channel_data = baseClip()->audioFrameChache[(int)frame]; + + for (int channel = 0;channel < channels && frame_channel_data[channel].size() > 0;channel++) { + + int y = channelHeight * channel + channelHeight / 2; + int delta = (int)(frame_channel_data[channel][sample] - 127 / 2) * channelHeight / 64; + if (fullAreaDraw) { + positiveChannelPaths[channel].lineTo(samples, 0.1 + y + qAbs(delta)); + negativeChannelPaths[channel].lineTo(samples, 0.1 + y - qAbs(delta)); + } else { + positiveChannelPaths[channel].lineTo(samples, 0.1 + y + delta); + negativeChannelPaths[channel].lineTo(samples, 0.1 + y - delta); + } + } + for (int channel = 0;channel < channels ;channel++) + if (fullAreaDraw && samples == 100) { + positiveChannelPaths[channel].lineTo(samples, channelHeight*channel + channelHeight / 2); + negativeChannelPaths[channel].lineTo(samples, channelHeight*channel + channelHeight / 2); + positiveChannelPaths[channel].lineTo(0, channelHeight*channel + channelHeight / 2); + negativeChannelPaths[channel].lineTo(0, channelHeight*channel + channelHeight / 2); + } + + } + for (int i = 0;i < channels;i++) { + if (fullAreaDraw) { + //pixpainter.fillPath(positiveChannelPaths[i].united(negativeChannelPaths[i]),QBrush(Qt::SolidPattern));//or singleif looks better + pixpainter.setBrush(QBrush(QColor(200, 200, 100, 200))); + pixpainter.drawPath(positiveChannelPaths[i].united(negativeChannelPaths[i]));//or singleif looks better + } else + pixpainter.drawPath(positiveChannelPaths[i]); + } + } + //audioThumbWasDrawn=true; + framePixelWidth = pixelForOneFrame; + + //} } -int ClipItem::fadeIn() const -{ - return m_startFade; +int ClipItem::fadeIn() const { + return m_startFade; } -int ClipItem::fadeOut() const -{ - return m_endFade; +int ClipItem::fadeOut() const { + return m_endFade; } -void ClipItem::setFadeIn(int pos, double scale) -{ - int oldIn = m_startFade; - if (pos < 0) pos = 0; - if (pos > m_cropDuration) pos = m_cropDuration / 2; - m_startFade = pos; - if (oldIn > pos) update(rect().x(), rect().y(), oldIn * scale, rect().height()); - else update(rect().x(), rect().y(), pos * scale, rect().height()); +void ClipItem::setFadeIn(int pos, double scale) { + int oldIn = m_startFade; + if (pos < 0) pos = 0; + if (pos > m_cropDuration) pos = m_cropDuration / 2; + m_startFade = pos; + if (oldIn > pos) update(rect().x(), rect().y(), oldIn * scale, rect().height()); + else update(rect().x(), rect().y(), pos * scale, rect().height()); } -void ClipItem::setFadeOut(int pos, double scale) -{ - int oldOut = m_endFade; - if (pos < 0) pos = 0; - if (pos > m_cropDuration) pos = m_cropDuration / 2; - m_endFade = pos; - if (oldOut > pos) update(rect().x() + rect().width() - pos * scale, rect().y(), pos * scale, rect().height()); - else update(rect().x() + rect().width() - oldOut * scale, rect().y(), oldOut * scale, rect().height()); +void ClipItem::setFadeOut(int pos, double scale) { + int oldOut = m_endFade; + if (pos < 0) pos = 0; + if (pos > m_cropDuration) pos = m_cropDuration / 2; + m_endFade = pos; + if (oldOut > pos) update(rect().x() + rect().width() - pos * scale, rect().y(), pos * scale, rect().height()); + else update(rect().x() + rect().width() - oldOut * scale, rect().y(), oldOut * scale, rect().height()); } // virtual - void ClipItem::mousePressEvent ( QGraphicsSceneMouseEvent * event ) - { +void ClipItem::mousePressEvent(QGraphicsSceneMouseEvent * event) { /*m_resizeMode = operationMode(event->pos()); if (m_resizeMode == MOVE) { m_maxTrack = scene()->sceneRect().height(); m_grabPoint = (int) (event->pos().x() - rect().x()); }*/ QGraphicsRectItem::mousePressEvent(event); - } +} // virtual - void ClipItem::mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ) - { +void ClipItem::mouseReleaseEvent(QGraphicsSceneMouseEvent * event) { m_resizeMode = NONE; QGraphicsRectItem::mouseReleaseEvent(event); - } +} - void ClipItem::moveTo(int x, double scale, double offset, int newTrack) - { - double origX = rect().x(); - double origY = rect().y(); - bool success = true; - if (x < 0) return; - setRect(x * scale, origY + offset, rect().width(), rect().height()); - QList <QGraphicsItem *> collisionList = collidingItems(Qt::IntersectsItemBoundingRect); - if (collisionList.size() == 0) m_track = newTrack; - for (int i = 0; i < collisionList.size(); ++i) { - QGraphicsItem *item = collisionList.at(i); - if (item->type() == 70000) - { - if (offset == 0) - { - QRectF other = ((QGraphicsRectItem *)item)->rect(); - if (x < m_startPos) { - kDebug()<<"COLLISION, MOVING TO------"; - m_startPos = ((ClipItem *)item)->endPos() + 1; - origX = m_startPos * scale; - } - else { - kDebug()<<"COLLISION, MOVING TO+++"; - m_startPos = ((ClipItem *)item)->startPos() - m_cropDuration; - origX = m_startPos * scale; - } - } - setRect(origX, origY, rect().width(), rect().height()); - offset = 0; - origX = rect().x(); - success = false; - break; - } +void ClipItem::moveTo(int x, double scale, double offset, int newTrack) { + double origX = rect().x(); + double origY = rect().y(); + bool success = true; + if (x < 0) return; + setRect(x * scale, origY + offset, rect().width(), rect().height()); + QList <QGraphicsItem *> collisionList = collidingItems(Qt::IntersectsItemBoundingRect); + if (collisionList.size() == 0) m_track = newTrack; + for (int i = 0; i < collisionList.size(); ++i) { + QGraphicsItem *item = collisionList.at(i); + if (item->type() == 70000) { + if (offset == 0) { + QRectF other = ((QGraphicsRectItem *)item)->rect(); + if (x < m_startPos) { + kDebug() << "COLLISION, MOVING TO------"; + m_startPos = ((ClipItem *)item)->endPos() + 1; + origX = m_startPos * scale; + } else { + kDebug() << "COLLISION, MOVING TO+++"; + m_startPos = ((ClipItem *)item)->startPos() - m_cropDuration; + origX = m_startPos * scale; + } + } + setRect(origX, origY, rect().width(), rect().height()); + offset = 0; + origX = rect().x(); + success = false; + break; + } } if (success) { - m_track = newTrack; - m_startPos = x; + m_track = newTrack; + m_startPos = x; } -/* QList <QGraphicsItem *> childrenList = QGraphicsItem::children(); - for (int i = 0; i < childrenList.size(); ++i) { - childrenList.at(i)->moveBy(rect().x() - origX , offset); - }*/ - } + /* QList <QGraphicsItem *> childrenList = QGraphicsItem::children(); + for (int i = 0; i < childrenList.size(); ++i) { + childrenList.at(i)->moveBy(rect().x() - origX , offset); + }*/ +} -void ClipItem::resizeStart(int posx, double scale) -{ +void ClipItem::resizeStart(int posx, double scale) { int durationDiff = posx - m_startPos; if (durationDiff == 0) return; - kDebug()<<"-- RESCALE: CROP="<<m_cropStart<<", DIFF = "<<durationDiff; + kDebug() << "-- RESCALE: CROP=" << m_cropStart << ", DIFF = " << durationDiff; if (m_cropStart + durationDiff < 0) { - durationDiff = -m_cropStart; + durationDiff = -m_cropStart; + } else if (durationDiff >= m_cropDuration) { + durationDiff = m_cropDuration - 3; } - else if (durationDiff >= m_cropDuration) { - durationDiff = m_cropDuration - 3; - } m_startPos += durationDiff; m_cropStart += durationDiff; m_cropDuration -= durationDiff; setRect(m_startPos * scale, rect().y(), m_cropDuration * scale, rect().height()); QList <QGraphicsItem *> collisionList = collidingItems(Qt::IntersectsItemBoundingRect); for (int i = 0; i < collisionList.size(); ++i) { - QGraphicsItem *item = collisionList.at(i); - if (item->type() == 70000) - { - int diff = ((ClipItem *)item)->endPos() + 1 - m_startPos; - setRect((m_startPos + diff) * scale, rect().y(), (m_cropDuration - diff) * scale, rect().height()); - m_startPos += diff; - m_cropStart += diff; - m_cropDuration -= diff; - break; - } + QGraphicsItem *item = collisionList.at(i); + if (item->type() == 70000) { + int diff = ((ClipItem *)item)->endPos() + 1 - m_startPos; + setRect((m_startPos + diff) * scale, rect().y(), (m_cropDuration - diff) * scale, rect().height()); + m_startPos += diff; + m_cropStart += diff; + m_cropDuration -= diff; + break; + } } if (m_hasThumbs) startThumbTimer->start(100); } -void ClipItem::resizeEnd(int posx, double scale) -{ +void ClipItem::resizeEnd(int posx, double scale) { int durationDiff = posx - endPos(); if (durationDiff == 0) return; - kDebug()<<"-- RESCALE: CROP="<<m_cropStart<<", DIFF = "<<durationDiff; + kDebug() << "-- RESCALE: CROP=" << m_cropStart << ", DIFF = " << durationDiff; if (m_cropDuration + durationDiff <= 0) { - durationDiff = - (m_cropDuration - 3); + durationDiff = - (m_cropDuration - 3); + } else if (m_cropDuration + durationDiff >= m_maxDuration) { + durationDiff = m_maxDuration - m_cropDuration; } - else if (m_cropDuration + durationDiff >= m_maxDuration) { - durationDiff = m_maxDuration - m_cropDuration; - } m_cropDuration += durationDiff; setRect(m_startPos * scale, rect().y(), m_cropDuration * scale, rect().height()); QList <QGraphicsItem *> collisionList = collidingItems(Qt::IntersectsItemBoundingRect); for (int i = 0; i < collisionList.size(); ++i) { - QGraphicsItem *item = collisionList.at(i); - if (item->type() == 70000) - { - int diff = ((ClipItem *)item)->startPos() - 1 - startPos(); - m_cropDuration = diff; - setRect(m_startPos * scale, rect().y(), m_cropDuration * scale, rect().height()); - break; - } + QGraphicsItem *item = collisionList.at(i); + if (item->type() == 70000) { + int diff = ((ClipItem *)item)->startPos() - 1 - startPos(); + m_cropDuration = diff; + setRect(m_startPos * scale, rect().y(), m_cropDuration * scale, rect().height()); + break; + } } if (m_hasThumbs) endThumbTimer->start(100); } // virtual - void ClipItem::mouseMoveEvent ( QGraphicsSceneMouseEvent * event ) - { - } +void ClipItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event) { +} -int ClipItem::track() -{ - return m_track; +int ClipItem::track() { + return m_track; } -void ClipItem::setTrack(int track) -{ - m_track = track; +void ClipItem::setTrack(int track) { + m_track = track; } -int ClipItem::effectsCounter() -{ - return m_effectsCounter++; +int ClipItem::effectsCounter() { + return m_effectsCounter++; } -int ClipItem::effectsCount() -{ - return m_effectList.size(); +int ClipItem::effectsCount() { + return m_effectList.size(); } -QStringList ClipItem::effectNames() -{ - return m_effectList.effectNames(); +QStringList ClipItem::effectNames() { + return m_effectList.effectNames(); } -QDomElement ClipItem::effectAt(int ix) -{ - return m_effectList.at(ix); +QDomElement ClipItem::effectAt(int ix) { + return m_effectList.at(ix); } -void ClipItem::setEffectAt(int ix, QDomElement effect) -{ - kDebug()<<"CHange EFFECT AT: "<<ix<<", CURR: "<<m_effectList.at(ix).attribute("tag")<<", NEW: "<<effect.attribute("tag"); - m_effectList.insert(ix, effect); - m_effectList.removeAt(ix + 1); - update(boundingRect()); +void ClipItem::setEffectAt(int ix, QDomElement effect) { + kDebug() << "CHange EFFECT AT: " << ix << ", CURR: " << m_effectList.at(ix).attribute("tag") << ", NEW: " << effect.attribute("tag"); + m_effectList.insert(ix, effect); + m_effectList.removeAt(ix + 1); + update(boundingRect()); } -QMap <QString, QString> ClipItem::addEffect(QDomElement effect) -{ - QMap <QString, QString> effectParams; - m_effectList.append(effect); - effectParams["tag"] = effect.attribute("tag"); - effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix"); - QString state = effect.attribute("disabled"); - if (!state.isEmpty()) effectParams["disabled"] = state; - QDomNodeList params = effect.elementsByTagName("parameter"); - for (int i = 0; i < params.count(); i++) { - QDomElement e = params.item(i).toElement(); - if (!e.isNull()){ - effectParams[e.attribute("name")] = e.attribute("value"); +QMap <QString, QString> ClipItem::addEffect(QDomElement effect) { + QMap <QString, QString> effectParams; + m_effectList.append(effect); + effectParams["tag"] = effect.attribute("tag"); + effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix"); + QString state = effect.attribute("disabled"); + if (!state.isEmpty()) effectParams["disabled"] = state; + QDomNodeList params = effect.elementsByTagName("parameter"); + for (int i = 0; i < params.count(); i++) { + QDomElement e = params.item(i).toElement(); + if (!e.isNull()) { + effectParams[e.attribute("name")] = e.attribute("value"); + } + if (!e.attribute("factor").isEmpty()) { + effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble() / e.attribute("factor").toDouble()); + } } - if (!e.attribute("factor").isEmpty()){ - effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble()/e.attribute("factor").toDouble()); - } - } - flashClip(); - update(boundingRect()); - return effectParams; + flashClip(); + update(boundingRect()); + return effectParams; } -QMap <QString, QString> ClipItem::getEffectArgs(QDomElement effect) -{ - QMap <QString, QString> effectParams; - effectParams["tag"] = effect.attribute("tag"); - effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix"); - QString state = effect.attribute("disabled"); - if (!state.isEmpty()) effectParams["disabled"] = state; - QDomNodeList params = effect.elementsByTagName("parameter"); - for (int i = 0; i < params.count(); i++) { - QDomElement e = params.item(i).toElement(); - if (e.attribute("name").contains(";")){ - QString format=e.attribute("format"); - QStringList separators=format.split("%d",QString::SkipEmptyParts); - QStringList values=e.attribute("value").split(QRegExp("[,:;x]")); - QString neu; - QTextStream txtNeu(&neu); - if (values.size()>0) - txtNeu << (int)values[0].toDouble(); - for (int i=0;i<separators.size() && i+1<values.size();i++){ - txtNeu << separators[i]; - txtNeu << (int)(values[i+1].toDouble()); - } - effectParams["start"]=neu; - }else - if (!e.isNull()){ - effectParams[e.attribute("name")] = e.attribute("value"); +QMap <QString, QString> ClipItem::getEffectArgs(QDomElement effect) { + QMap <QString, QString> effectParams; + effectParams["tag"] = effect.attribute("tag"); + effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix"); + QString state = effect.attribute("disabled"); + if (!state.isEmpty()) effectParams["disabled"] = state; + QDomNodeList params = effect.elementsByTagName("parameter"); + for (int i = 0; i < params.count(); i++) { + QDomElement e = params.item(i).toElement(); + if (e.attribute("name").contains(";")) { + QString format = e.attribute("format"); + QStringList separators = format.split("%d", QString::SkipEmptyParts); + QStringList values = e.attribute("value").split(QRegExp("[,:;x]")); + QString neu; + QTextStream txtNeu(&neu); + if (values.size() > 0) + txtNeu << (int)values[0].toDouble(); + for (int i = 0;i < separators.size() && i + 1 < values.size();i++) { + txtNeu << separators[i]; + txtNeu << (int)(values[i+1].toDouble()); + } + effectParams["start"] = neu; + } else + if (!e.isNull()) { + effectParams[e.attribute("name")] = e.attribute("value"); + } + if (!e.attribute("factor").isEmpty()) { + effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble() / e.attribute("factor").toDouble()); + } } - if (!e.attribute("factor").isEmpty()){ - effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble()/e.attribute("factor").toDouble()); - } - } - return effectParams; + return effectParams; } -void ClipItem::deleteEffect(QString index) -{ - for (int i = 0; i < m_effectList.size(); ++i) { - if (m_effectList.at(i).attribute("kdenlive_ix") == index) { - m_effectList.removeAt(i); - break; +void ClipItem::deleteEffect(QString index) { + for (int i = 0; i < m_effectList.size(); ++i) { + if (m_effectList.at(i).attribute("kdenlive_ix") == index) { + m_effectList.removeAt(i); + break; + } } - } - flashClip(); - update(boundingRect()); + flashClip(); + update(boundingRect()); } //virtual -void ClipItem::dropEvent ( QGraphicsSceneDragDropEvent * event ) -{ +void ClipItem::dropEvent(QGraphicsSceneDragDropEvent * event) { QString effects = QString(event->mimeData()->data("kdenlive/effectslist")); QDomDocument doc; doc.setContent(effects, true); @@ -737,24 +684,22 @@ } //virtual -void ClipItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) -{ - event->setAccepted(event->mimeData()->hasFormat("kdenlive/effectslist")); +void ClipItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { + event->setAccepted(event->mimeData()->hasFormat("kdenlive/effectslist")); } -void ClipItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event) -{ +void ClipItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event) { Q_UNUSED(event); } -// virtual +// virtual /* void CustomTrackView::mousePressEvent ( QMouseEvent * event ) { int pos = event->x(); - if (event->modifiers() == Qt::ControlModifier) + if (event->modifiers() == Qt::ControlModifier) setDragMode(QGraphicsView::ScrollHandDrag); - else if (event->modifiers() == Qt::ShiftModifier) + else if (event->modifiers() == Qt::ShiftModifier) setDragMode(QGraphicsView::RubberBandDrag); else { QGraphicsItem * item = itemAt(event->pos()); Modified: branches/KDE4/src/clipitem.h =================================================================== --- branches/KDE4/src/clipitem.h 2008-03-03 11:51:24 UTC (rev 1986) +++ branches/KDE4/src/clipitem.h 2008-03-03 11:54:36 UTC (rev 1987) @@ -33,17 +33,16 @@ #include "kthumb.h" -class ClipItem : public QObject, public QGraphicsRectItem -{ - Q_OBJECT +class ClipItem : public QObject, public QGraphicsRectItem { + Q_OBJECT - public: +public: ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration); virtual ~ ClipItem(); virtual void paint(QPainter *painter, - const QStyleOptionGraphicsItem *option, - QWidget *widget); - virtual int type () const; + const QStyleOptionGraphicsItem *option, + ... [truncated message content] |
From: <ble...@us...> - 2008-03-03 12:39:23
|
Revision: 1988 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1988&view=rev Author: blendamedt Date: 2008-03-03 04:39:29 -0800 (Mon, 03 Mar 2008) Log Message: ----------- not use deprecated function anymore in initeffects/store z-value in titledocument Modified Paths: -------------- branches/KDE4/src/initeffects.cpp branches/KDE4/src/titledocument.cpp Modified: branches/KDE4/src/initeffects.cpp =================================================================== --- branches/KDE4/src/initeffects.cpp 2008-03-03 11:54:36 UTC (rev 1987) +++ branches/KDE4/src/initeffects.cpp 2008-03-03 12:39:29 UTC (rev 1988) @@ -65,11 +65,11 @@ delete filters; delete producers; - KGlobal::dirs()->addResourceType("ladspa_plugin", "lib/ladspa"); - KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/lib/ladspa"); - KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/local/lib/ladspa"); - KGlobal::dirs()->addResourceDir("ladspa_plugin", "/opt/lib/ladspa"); - KGlobal::dirs()->addResourceDir("ladspa_plugin", "/opt/local/lib/ladspa"); + KGlobal::dirs()->addResourceType("ladspa_plugin", 0, "lib/ladspa"); + KGlobal::dirs()->addResourceDir("ladspa_plugin", 0, "/usr/lib/ladspa"); + KGlobal::dirs()->addResourceDir("ladspa_plugin", 0, "/usr/local/lib/ladspa"); + KGlobal::dirs()->addResourceDir("ladspa_plugin", 0, "/opt/lib/ladspa"); + KGlobal::dirs()->addResourceDir("ladspa_plugin", 0, "/opt/local/lib/ladspa"); kDebug() << "// INIT EFFECT SEARCH" << endl; Modified: branches/KDE4/src/titledocument.cpp =================================================================== --- branches/KDE4/src/titledocument.cpp 2008-03-03 11:54:36 UTC (rev 1987) +++ branches/KDE4/src/titledocument.cpp 2008-03-03 12:39:29 UTC (rev 1988) @@ -71,6 +71,7 @@ transform.m11()).arg(transform.m12()).arg(transform.m13()).arg(transform.m21()).arg(transform.m22()).arg(transform.m23()).arg(transform.m31()).arg(transform.m32()).arg(transform.m33()) ) ); + e.setAttribute("z-index", item->zValue()); pos.appendChild(tr); @@ -89,6 +90,8 @@ startp.setAttribute("y", startv->pos().y()); startp.setAttribute("size", startv->sceneBoundingRect().width() / 2); + startp.setAttribute("z-index", startv->zValue()); + endp.setAttribute("z-index", endv->zValue()); main.appendChild(startp); main.appendChild(endp); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-03 21:31:08
|
Revision: 1991 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1991&view=rev Author: j-b-m Date: 2008-03-03 13:31:14 -0800 (Mon, 03 Mar 2008) Log Message: ----------- Cleanup: remove unused files show/hide thumbnails according to user settings Modified Paths: -------------- branches/KDE4/src/CMakeLists.txt branches/KDE4/src/clipitem.cpp branches/KDE4/src/mainwindow.cpp branches/KDE4/src/mainwindow.h branches/KDE4/src/trackview.cpp branches/KDE4/src/trackview.h Removed Paths: ------------- branches/KDE4/src/documentaudiotrack.cpp branches/KDE4/src/documentaudiotrack.h branches/KDE4/src/documenttrack.cpp branches/KDE4/src/documenttrack.h branches/KDE4/src/documentvideotrack.cpp branches/KDE4/src/documentvideotrack.h branches/KDE4/src/trackpanelclipmovefunction.cpp branches/KDE4/src/trackpanelclipmovefunction.h branches/KDE4/src/trackpanelfunction.cpp branches/KDE4/src/trackpanelfunction.h branches/KDE4/src/trackpanelfunctionfactory.cpp branches/KDE4/src/trackpanelfunctionfactory.h Modified: branches/KDE4/src/CMakeLists.txt =================================================================== --- branches/KDE4/src/CMakeLists.txt 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/CMakeLists.txt 2008-03-03 21:31:14 UTC (rev 1991) @@ -55,13 +55,7 @@ docclipbase.cpp timecode.cpp monitormanager.cpp - documenttrack.cpp - documentvideotrack.cpp - documentaudiotrack.cpp headertrack.cpp - trackpanelfunctionfactory.cpp - trackpanelfunction.cpp - trackpanelclipmovefunction.cpp customtrackview.cpp clipitem.cpp labelitem.cpp Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/clipitem.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -235,7 +235,7 @@ //painter->fillRect(QRectF(br.x() + br.width() - m_endPix.width(), br.y(), m_endPix.width(), br.height()), QBrush(QColor(Qt::black))); // draw thumbnails - if (!m_startPix.isNull()) { + if (!m_startPix.isNull() && KdenliveSettings::videothumbnails()) { if (m_clipType == IMAGE) { painter->drawPixmap(QPointF(br.x() + br.width() - m_startPix.width(), br.y()), m_startPix); QLineF l(br.x() + br.width() - m_startPix.width(), br.y(), br.x() + br.width() - m_startPix.width(), br.y() + br.height()); @@ -250,7 +250,7 @@ QLineF l2(br.x() + m_startPix.width(), br.y(), br.x() + m_startPix.width(), br.y() + br.height()); painter->drawLine(l2); } - if ((m_clipType == AV || m_clipType == AUDIO || true) && audioThumbReady) { + if ((m_clipType == AV || m_clipType == AUDIO) && audioThumbReady && KdenliveSettings::audiothumbnails()) { QPainterPath path = m_clipType == AV ? roundRectPathLower : roundRectPathUpper.united(roundRectPathLower); painter->fillPath(path, QBrush(QColor(200, 200, 200, 127))); Deleted: branches/KDE4/src/documentaudiotrack.cpp =================================================================== --- branches/KDE4/src/documentaudiotrack.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/documentaudiotrack.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,29 +0,0 @@ - -#include <QMouseEvent> -#include <QStylePainter> - -#include <KDebug> -#include <QFrame> -#include <QWidget> -#include <QPainter> - - -#include "documentaudiotrack.h" - -DocumentAudioTrack::DocumentAudioTrack(QDomElement xml, TrackView * view, QWidget *parent) - : DocumentTrack(xml, view, parent), m_trackView(view) { - setFixedHeight(50); -} - -// virtual -/* -void DocumentAudioTrack::paintEvent(QPaintEvent *e ) -{ - QRect region = e->rect(); - QPainter painter(this); - painter.fillRect(region, QBrush(Qt::green)); - painter.drawLine(region.bottomLeft (), region.bottomRight ()); -} -*/ - -#include "documentaudiotrack.moc" Deleted: branches/KDE4/src/documentaudiotrack.h =================================================================== --- branches/KDE4/src/documentaudiotrack.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/documentaudiotrack.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,22 +0,0 @@ -#ifndef DOCUMENTAUDIOTRACK_H -#define DOCUMENTAUDIOTRACK_H - -#include "documenttrack.h" -#include "trackview.h" - -class DocumentAudioTrack : public DocumentTrack { - Q_OBJECT - -public: - DocumentAudioTrack(QDomElement xml, TrackView * view, QWidget *parent = 0); - -protected: - //virtual void paintEvent(QPaintEvent * /*e*/); - -private: - TrackView *m_trackView; -public slots: - -}; - -#endif Deleted: branches/KDE4/src/documenttrack.cpp =================================================================== --- branches/KDE4/src/documenttrack.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/documenttrack.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,79 +0,0 @@ - -#include <QMouseEvent> -#include <QStylePainter> - -#include <KDebug> -#include <QFrame> -#include <QWidget> -#include <QPainter> - - -#include "documenttrack.h" - -DocumentTrack::DocumentTrack(QDomElement xml, TrackView * view, QWidget *parent) - : QWidget(parent), m_xml(xml), m_trackDuration(0) { - setFixedHeight(50); - addFunctionDecorator("move", "move"); - parseXml(); -} - -int DocumentTrack::documentTrackIndex() { - return 0; -} - -TrackViewClip *DocumentTrack::getClipAt(GenTime pos) { - return 0; -} - -void DocumentTrack::addFunctionDecorator(const QString & mode, const QString & function) { - m_trackPanelFunctions[mode].append(function); -} - -QStringList DocumentTrack::applicableFunctions(const QString & mode) { - return m_trackPanelFunctions[mode]; -} - -void DocumentTrack::parseXml() { - m_clipList.clear(); - int position = 0; - for (QDomNode n = m_xml.firstChild(); !n.isNull(); n = n.nextSibling()) { - QDomElement elem = n.toElement(); - if (elem.tagName() == "blank") { - position += elem.attribute("length", 0).toInt(); - } else if (elem.tagName() == "entry") { - TrackViewClip clip; - clip.startTime = position; - int in = elem.attribute("in", 0).toInt(); - int out = elem.attribute("out", 0).toInt() - in; - clip.cropTime = in; - clip.duration = out; - position += out; - clip.producer = elem.attribute("producer", QString::null); - kDebug() << "++++++++++++++\n\n / / /ADDING CLIP: " << clip.cropTime << ", out: " << clip.duration << ", Producer: " << clip.producer << "\n\n++++++++++++++++++++"; - m_clipList.append(clip); - } - } - m_trackDuration = position; -} - -int DocumentTrack::duration() { - return m_trackDuration; -} - -QList <TrackViewClip> DocumentTrack::clipList() { - return m_clipList; -} - -// virtual -/* -void DocumentTrack::paintEvent(QPaintEvent *e ) -{ - QRect region = e->rect(); - region.setBottomRight(QPoint(region.right() - 1, region.bottom() - 1)); - QPainter painter(this); - painter.fillRect(region, QBrush(Qt::red)); - painter.drawLine(region.bottomLeft (), region.bottomRight ()); -} -*/ - -#include "documenttrack.moc" Deleted: branches/KDE4/src/documenttrack.h =================================================================== --- branches/KDE4/src/documenttrack.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/documenttrack.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,47 +0,0 @@ -#ifndef DOCUMENTTRACK_H -#define DOCUMENTTRACK_H - -#include <QDomElement> -#include <QList> -#include <QWidget> -#include <QMap> -#include <QStringList> - -#include "definitions.h" -#include "gentime.h" - - -class TrackPanelFunction; -class TrackView; - - -class DocumentTrack : public QWidget { - Q_OBJECT - -public: - DocumentTrack(QDomElement xml, TrackView * view, QWidget *parent = 0); - - QList <TrackViewClip> clipList(); - int duration(); - int documentTrackIndex(); - TrackViewClip *getClipAt(GenTime pos); - void addFunctionDecorator(const QString & mode, const QString & function); - QStringList applicableFunctions(const QString & mode); - -protected: - //virtual void paintEvent(QPaintEvent * /*e*/); - -private: - QDomElement m_xml; - QList <TrackViewClip> m_clipList; - void parseXml(); - int m_trackDuration; - /** A map of lists of track panel functions. */ - QMap < QString, QStringList > m_trackPanelFunctions; - - -public slots: - -}; - -#endif Deleted: branches/KDE4/src/documentvideotrack.cpp =================================================================== --- branches/KDE4/src/documentvideotrack.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/documentvideotrack.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,44 +0,0 @@ - -#include <QMouseEvent> -#include <QStylePainter> - -#include <KDebug> -#include <QFrame> -#include <QWidget> -#include <QPainter> - - -#include "documentvideotrack.h" - -DocumentVideoTrack::DocumentVideoTrack(QDomElement xml, TrackView * view, QWidget *parent) - : DocumentTrack(xml, view, parent), m_trackView(view) { - setFixedHeight(50); -} - -// virtual -/* -void DocumentVideoTrack::paintEvent(QPaintEvent *e ) -{ - QList <TrackViewClip> trackClipList = clipList(); - double scale = m_trackView->zoomFactor(); - QRect region = e->rect(); - QPainter painter(this); - //painter.fillRect(region, QBrush(Qt::red)); - painter.drawLine(region.bottomLeft (), region.bottomRight ()); - for (int i = 0; i < trackClipList.size(); ++i) { - int start = (int) (trackClipList.at(i).startTime * scale); - int end = (int) (trackClipList.at(i).duration * scale); - QRect clipRect(start, region.top(), end, region.bottom()); - QPainterPath path; - painter.setRenderHint(QPainter::Antialiasing); - painter.fillRect(clipRect, QBrush(Qt::red)); - painter.drawRect(clipRect); - - QRect textRect = painter.boundingRect ( clipRect, Qt::AlignCenter, " " + trackClipList.at(i).producer + " " ); - painter.fillRect(textRect, QBrush(QColor(255, 255, 255, 100))); - painter.drawText(clipRect, Qt::AlignCenter, trackClipList.at(i).producer); - } -} -*/ - -#include "documentvideotrack.moc" Deleted: branches/KDE4/src/documentvideotrack.h =================================================================== --- branches/KDE4/src/documentvideotrack.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/documentvideotrack.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,23 +0,0 @@ -#ifndef DOCUMENTVIDEOTRACK_H -#define DOCUMENTVIDEOTRACK_H - - -#include "documenttrack.h" -#include "trackview.h" - -class DocumentVideoTrack : public DocumentTrack { - Q_OBJECT - -public: - DocumentVideoTrack(QDomElement xml, TrackView * view, QWidget *parent = 0); - -protected: - //virtual void paintEvent(QPaintEvent * /*e*/); - -private: - TrackView *m_trackView; -public slots: - -}; - -#endif Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/mainwindow.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -480,10 +480,15 @@ // KConfigDialog didn't find an instance of this dialog, so lets // create it : KdenliveSettingsDialog* dialog = new KdenliveSettingsDialog(this); - //connect( dialog, SIGNAL(settingsChanged()), this, SLOT(updateConfiguration()) ); + connect(dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration())); dialog->show(); } +void MainWindow::updateConfiguration() { + TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget(); + if (currentTab) currentTab->refresh(); +} + void MainWindow::slotGotProgressInfo(KUrl url, int progress) { statusProgressBar->setValue(progress); if (progress > 0) { Modified: branches/KDE4/src/mainwindow.h =================================================================== --- branches/KDE4/src/mainwindow.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/mainwindow.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -115,6 +115,7 @@ void saveFileAs(); void saveFileAs(const QString &outputFileName); void slotPreferences(); + void updateConfiguration(); void slotConnectMonitors(); void slotRaiseMonitor(bool clipMonitor); void slotSetClipDuration(int id, int duration); Deleted: branches/KDE4/src/trackpanelclipmovefunction.cpp =================================================================== --- branches/KDE4/src/trackpanelclipmovefunction.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackpanelclipmovefunction.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,522 +0,0 @@ -/*************************************************************************** - TrackPanelClipMoveFunction.cpp - description - ------------------- - begin : Sun May 18 2003 - copyright : (C) 2003 by Jason Wood - email : jas...@bl... -***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -#include <QMouseEvent> -#include <KDebug> - -#include "trackpanelclipmovefunction.h" -#include "definitions.h" -#include "documenttrack.h" -#include "trackview.h" - - -TrackPanelClipMoveFunction::TrackPanelClipMoveFunction(TrackView *view): - m_view(view), m_dragging(false), m_startedClipMove(false), m_masterClip(0), m_clipOffset(0) { - // m_moveClipsCommand = 0; - //m_deleteClipsCommand = 0; - m_addingClips = false; - m_firststep = true; -} - - -TrackPanelClipMoveFunction::~TrackPanelClipMoveFunction() { -} - -bool TrackPanelClipMoveFunction::mouseApplies(DocumentTrack *, - QMouseEvent * event) const { - return mouseApplies(event->pos()); -} - -bool TrackPanelClipMoveFunction::mouseApplies(const QPoint & pos) const { - TrackViewClip *clipUnderMouse = 0; - - DocumentTrack * panel = m_view->panelAt(pos.y()); - - if (panel) { - kDebug() << " TESTING CURSOR AT: " << pos.x() << ", MAPPED VAL: " << m_view->mapLocalToValue(pos.x()); - GenTime mouseTime((int)(m_view->mapLocalToValue(pos.x())), m_document->fps()); - clipUnderMouse = panel->getClipAt(mouseTime); - } - return clipUnderMouse; -} - -QCursor TrackPanelClipMoveFunction::getMouseCursor(DocumentTrack *, QMouseEvent * event) { - return QCursor(Qt::SizeAllCursor); -} - -bool TrackPanelClipMoveFunction::mousePressed(DocumentTrack * panel, - QMouseEvent * event) { - bool result = false; - /* - if (panel->hasDocumentTrackIndex()) { - DocTrackBase *track = - m_document->track(panel->documentTrackIndex()); - if (track) { - GenTime mouseTime((int)(m_timeline->mapLocalToValue(event->x())), - m_document->framesPerSecond()); - m_clipUnderMouse = 0; - m_clipUnderMouse = track->getClipAt(mouseTime); - - if (m_clipUnderMouse) { - emit checkTransition(m_clipUnderMouse); - if (event->state() & Qt::ControlButton) { - m_app->addCommand(Command::KSelectClipCommand::toggleSelectClipAt(m_document, *track, mouseTime), true); - } - else { - if (!track->clipSelected(m_clipUnderMouse)) { - KMacroCommand *macroCommand = new KMacroCommand(i18n("Select Clip")); - macroCommand->addCommand(Command::KSelectClipCommand::selectNone(m_document)); - macroCommand->addCommand(new Command::KSelectClipCommand(m_document, m_clipUnderMouse, true)); - m_app->addCommand(macroCommand, true); - } - } - result = true; - } - } - } - */ - return result; -} - -bool TrackPanelClipMoveFunction::mouseDoubleClicked(DocumentTrack * panel, QMouseEvent *event) { - /* - if (panel->hasDocumentTrackIndex()) { - DocTrackBase *track = - m_document->track(panel->documentTrackIndex()); - if (track) { - GenTime mouseTime((int)(m_timeline->mapLocalToValue(event->x())), - m_document->framesPerSecond()); - m_clipUnderMouse = track->getClipAt(mouseTime); - if (m_clipUnderMouse) { - track->openClip(m_clipUnderMouse); - } - } - }*/ - return false; ///FIXME is that right ? -} - -bool TrackPanelClipMoveFunction::mouseReleased(DocumentTrack *, QMouseEvent *) { - //m_timeline->stopScrollTimer(); - return true; -} - -bool TrackPanelClipMoveFunction::mouseMoved(DocumentTrack * panel, - QMouseEvent * event) { - bool result = false; - /*if (panel->hasDocumentTrackIndex()) { - DocTrackBase *track = - m_document->track(panel->documentTrackIndex()); - if (track) { - GenTime mouseTime((int)(m_timeline->mapLocalToValue(event->x())), - m_document->framesPerSecond()); - - if (m_dragging) { - m_dragging = false; - result = true; - } else { - if (m_clipUnderMouse) { - if (!m_document->projectClip().clipSelected(m_clipUnderMouse)) { - if ((event->state() & Qt::ControlButton) - || (event->state() & Qt::ShiftButton)) { - m_app-> - addCommand(Command::KSelectClipCommand:: - selectClipAt(m_document, *track, - mouseTime), true); - } else { - KMacroCommand *macroCommand = new KMacroCommand(i18n("Select Clip")); - macroCommand->addCommand(Command::KSelectClipCommand::selectNone(m_document)); - macroCommand->addCommand(new Command::KSelectClipCommand(m_document, m_clipUnderMouse, true)); - m_app->addCommand(macroCommand, true); - } - } - m_dragging = true; - initiateDrag(m_clipUnderMouse, mouseTime); - result = true; - } - } - } - } - */ - return result; -} - -// virtual -bool TrackPanelClipMoveFunction::dragEntered(DocumentTrack * panel, - QDragEnterEvent * event) { - /* if (m_startedClipMove) { - m_document->activateSceneListGeneration(false); - event->accept(true); - } else if (ClipDrag::canDecode(event)) { - m_document->activateSceneListGeneration(false); - m_selection = ClipDrag::decode(m_document, event); - - - if (!m_selection.isEmpty()) { - if (m_selection.masterClip() == 0) - m_selection.setMasterClip(m_selection.first()); - m_masterClip = m_selection.masterClip(); - m_clipOffset = GenTime(); - if (m_selection.isEmpty()) { - event->accept(false); - } else { - setupSnapToGrid(); - event->accept(true); - } - } else { - kdError() << - "ERROR! ERROR! ERROR! ClipDrag:decode decoded a null clip!!!" - << endl; - } - } else if (EffectDrag::canDecode(event)) { - event->accept(true); - } else { - event->accept(false); - } - //m_startedClipMove = false; - */ - return true; -} - -// virtual -bool TrackPanelClipMoveFunction::dragMoved(DocumentTrack *, QDragMoveEvent * event) { - /* QPoint pos = event->pos(); - if (ClipDrag::canDecode(event)) { - GenTime mouseTime = m_timeline->timeUnderMouse((double) pos.x()) - m_clipOffset; - mouseTime = m_snapToGrid.getSnappedTime(mouseTime); - mouseTime = mouseTime + m_clipOffset; - int trackUnder = trackUnderPoint(pos); - - if (m_selection.isEmpty() || m_dragging) { - moveSelectedClips(trackUnder, mouseTime - m_clipOffset); - } else { - if (m_document->projectClip().canAddClipsToTracks(m_selection, - trackUnder, mouseTime)) { - m_selection_to_add = m_selection; - addClipsToTracks(m_selection, trackUnder, mouseTime, true); - setupSnapToGrid(); - m_selection.clear(); - m_dragging = true; - } - } - } else if (EffectDrag::canDecode(event)) { - if (mouseApplies(pos)) { - event->accept(); - } else { - event->ignore(); - } - } else { - event->ignore(); - } - m_timeline->checkScrolling(pos); - */ - return true; -} - -int TrackPanelClipMoveFunction::trackUnderPoint(const QPoint & pos) { - uint y = pos.y(); - DocumentTrack * panel = m_view->panelAt(y); - /* - if (panel) { - return panel->documentTrackIndex(); - }*/ - - return -1; -} - -// virtual -bool TrackPanelClipMoveFunction::dragLeft(DocumentTrack *, QDragLeaveEvent *) { - m_dragging = false; - /* - if (!m_selection.isEmpty()) { - m_selection.setAutoDelete(true); - m_selection.clear(); - m_selection.setAutoDelete(false); - } - - if (m_addingClips) { - m_addingClips = false; - - QPtrListIterator < DocTrackBase > - trackItt(m_document->trackList()); - - while (trackItt.current()) { - (*trackItt)->deleteClips(true); - ++trackItt; - } - - m_document->activateSceneListGeneration(true); - } - - if (m_moveClipsCommand) { - m_moveClipsCommand->setEndLocation(m_masterClip); - m_app->addCommand(m_moveClipsCommand, false); - // In a drag Leave Event, any clips in the selection are removed from the timeline. - //delete m_moveClipsCommand; - m_moveClipsCommand = 0; - m_document->activateSceneListGeneration(true); - } - - if (m_deleteClipsCommand) { - m_app->addCommand(m_deleteClipsCommand, false); - m_deleteClipsCommand = 0; - - QPtrListIterator < DocTrackBase > - trackItt(m_document->trackList()); - - while (trackItt.current()) { - trackItt.current()->deleteClips(true); - ++trackItt; - } - } - - m_timeline->drawTrackViewBackBuffer(); - m_timeline->stopScrollTimer(); - */ - return true; -} - -// virtual -bool TrackPanelClipMoveFunction::dragDropped(DocumentTrack * panel, - QDropEvent * event) { - /* - m_dragging = false; - m_startedClipMove = false; - if (ClipDrag::canDecode(event)) { - if (!m_selection.isEmpty()) { - m_selection.setAutoDelete(true); - m_selection.clear(); - m_selection.setAutoDelete(false); - } - - if (m_addingClips) { - - m_app->addCommand(createAddClipsCommand(), true); - m_addingClips = false; - m_app->clipReferenceChanged(); - - //if (m_firststep) m_document->activateSceneListGeneration(true); - m_firststep = false; - } - - if (m_deleteClipsCommand) { - delete m_deleteClipsCommand; - m_deleteClipsCommand = 0; - } - - if (m_moveClipsCommand) { - m_moveClipsCommand->setEndLocation(m_masterClip); - if (!m_moveClipsCommand->doesMove()) - { - //m_document->activateSceneListGeneration(true); - moveSelectedClips(m_moveClipsCommand->startTrack(), m_moveClipsCommand->startTime()); - m_app->addCommand(m_moveClipsCommand, true); - m_moveClipsCommand = 0; - m_document->slotUpdateMonitorPlaytime(); - // KdenliveApp is now managing this command, we do not need to delete it. - } - else { - m_document->activateSceneListGeneration(true, false); - delete m_moveClipsCommand; - m_moveClipsCommand = 0; - } - } - event->accept(); - } else if (EffectDrag::canDecode(event)) { - DocClipRef *clipUnderMouse = 0; - DocumentTrack * panel = - m_view->panelAt(event->pos().y()); - if (panel) { - DocTrackBase *track = - m_document->track(panel->documentTrackIndex()); - if (track) { - GenTime mouseTime((int)(m_timeline->mapLocalToValue(event->pos(). - x())), m_document->framesPerSecond()); - clipUnderMouse = track->getClipAt(mouseTime); - } - } - - if (clipUnderMouse) { - Effect *effect = EffectDrag::decode(m_document, event); - if (effect) { - m_app-> - addCommand(Command::KAddEffectCommand:: - appendEffect(m_document, clipUnderMouse, effect), - true); - if (effect->name() == i18n("Freeze")) m_app->getDocument()->emitCurrentClipPosition(); - } else { - kdWarning() << - "EffectDrag::decode did not return an effect, ignoring drag drop..." - << endl; - } - delete effect; - } - } - m_timeline->stopScrollTimer(); - m_timeline->drawTrackViewBackBuffer(); - */ - return true; -} - -bool TrackPanelClipMoveFunction::moveSelectedClips(int newTrack, - GenTime start) { - /* - if (!m_masterClip) return false; - int trackOffset = - m_document->trackIndex(m_document->findTrack(m_masterClip)); - GenTime startOffset; - - if (trackOffset == -1) { - kdError() << - "Trying to move selected clips, master clip is not set." << - endl; - return false; - } else { - startOffset = m_masterClip->trackStart(); - } - - trackOffset = newTrack - trackOffset; - startOffset = start - startOffset; - if (startOffset == GenTime()) return false; - m_document->moveSelectedClips(startOffset, trackOffset); - */ - return true; -} - -/* -void TrackPanelClipMoveFunction::addClipsToTracks(DocClipRefList & clips, - int track, GenTime value, bool selected) -{ - - if (clips.isEmpty()) - return; - - if (selected) { - m_app-> - addCommand(Command::KSelectClipCommand::selectNone(m_document), - true); - } - - DocClipRef *masterClip = clips.masterClip(); - if (!masterClip) - masterClip = clips.first(); - - GenTime startOffset = value - masterClip->trackStart(); - - int trackOffset = masterClip->trackNum(); - - if (trackOffset == -1) - trackOffset = 0; - trackOffset = track - trackOffset; - - QPtrListIterator < DocClipRef > itt(clips); - int moveToTrack; - - while (itt.current() != 0) { - moveToTrack = itt.current()->trackNum(); - - if (moveToTrack == -1) { - moveToTrack = track; - itt.current()->moveTrackStart(itt.current()->trackStart() + startOffset); - startOffset += itt.current()->cropDuration(); - } else { - moveToTrack += trackOffset; - itt.current()->moveTrackStart(itt.current()->trackStart() + startOffset); - } - - - - if ((moveToTrack >= 0) && (moveToTrack < (int)m_document->numTracks())) { - //if (itt.current()->referencedClip()->numReferences() == 0) - m_document->track(moveToTrack)->addClip(itt.current(), selected); - } - - ++itt; - } - - m_addingClips = true; -} -*/ - -void TrackPanelClipMoveFunction::setupSnapToGrid() { - /* - m_snapToGrid.clearSnapList(); - if (m_timeline->snapToSeekTime()) - m_snapToGrid.addToSnapList(m_timeline->seekPosition()); - m_snapToGrid.setSnapToFrame(m_timeline->snapToFrame()); - - m_snapToGrid.addToSnapList(m_document->getSnapTimes(m_timeline-> - snapToBorders(), m_timeline->snapToMarkers(), true, false)); - - QValueVector < GenTime > cursor = - m_document->getSnapTimes(m_timeline->snapToBorders(), - m_timeline->snapToMarkers(), false, true, false); - m_snapToGrid.setCursorTimes(cursor); - - m_snapToGrid.setSnapTolerance(GenTime((int)(m_timeline-> - mapLocalToValue(Gui::KTimeLine::snapTolerance) - - m_timeline->mapLocalToValue(0)), - m_document->framesPerSecond())); - */ -} - -/*void TrackPanelClipMoveFunction::initiateDrag(DocClipRef * clipUnderMouse, - GenTime mouseTime) -{ - m_masterClip = clipUnderMouse; - m_clipOffset = mouseTime - clipUnderMouse->trackStart(); - - m_moveClipsCommand = - new Command::KMoveClipsCommand(m_document, m_masterClip); - - m_moveClipsCommand->setClipList(m_document->listSelected()); - - m_deleteClipsCommand = - Command::KAddRefClipCommand::deleteSelectedClips(m_document); - setupSnapToGrid(); - - m_startedClipMove = true; - - DocClipRefList selection = m_document->listSelected(); - - selection.setMasterClip(m_masterClip); - ClipDrag *clip = new ClipDrag(selection, m_timeline, "Timeline Drag"); - - clip->dragCopy(); -} - -KMacroCommand *TrackPanelClipMoveFunction::createAddClipsCommand() -{ - KMacroCommand *macroCommand = new KMacroCommand(i18n("Add Clips")); - - for (int count = 0; count < (int)m_document->numTracks(); ++count) { - DocTrackBase *track = m_document->track(count); - - QPtrListIterator < DocClipRef > itt = track->firstClip(true); - - while (itt.current()) { - Command::KAddRefClipCommand * command = - new Command::KAddRefClipCommand(*m_document, itt.current(), true); - macroCommand->addCommand(command); - ++itt; - } - m_document->generateProducersList(); - } - return macroCommand; -} -*/ - -#include "trackpanelclipmovefunction.moc" Deleted: branches/KDE4/src/trackpanelclipmovefunction.h =================================================================== --- branches/KDE4/src/trackpanelclipmovefunction.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackpanelclipmovefunction.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,169 +0,0 @@ -/*************************************************************************** - TrackPanelClipMoveFunction.h - description - ------------------- - begin : Sun May 18 2003 - copyright : (C) 2003 by Jason Wood - email : jas...@bl... - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -#ifndef TRACKPANELCLIPMOVEFUNCTION_H -#define TRACKPANELCLIPMOVEFUNCTION_H - -#include "qcursor.h" - -#include "trackpanelfunction.h" - -class QMouseEvent; - -class KdenliveDoc; -class DocumentTrack; - -/** -Abstract Base Class for track panel functionality decorators. This and it's -derived classes allow different behaviours to be added to panels as required. - -@author Jason Wood -*/ -class TrackPanelClipMoveFunction: public TrackPanelFunction { -Q_OBJECT public: - TrackPanelClipMoveFunction(TrackView * view); - - virtual ~ TrackPanelClipMoveFunction(); - - /** - Returns true if the specified position should cause this function to activate, - otherwise returns false. - */ - virtual bool mouseApplies(DocumentTrack *, - QMouseEvent * event) const; - - /** - Returns a relevant mouse cursor for the given mouse position - */ - virtual QCursor getMouseCursor(DocumentTrack *, QMouseEvent * event); - - /** - A mouse button has been pressed. Returns true if we want to handle this event - */ - virtual bool mousePressed(DocumentTrack * panel, - QMouseEvent * event); - - /** - Processes Mouse double click.*/ - virtual bool mouseDoubleClicked(DocumentTrack * panel, QMouseEvent *); - - /** - Mouse Release Events in the track view area. Returns true if we have finished - an operation now. - */ - virtual bool mouseReleased(DocumentTrack *, QMouseEvent *); - - /** - Processes Mouse Move events in the track view area. Returns true if we are - continuing with the drag.*/ - virtual bool mouseMoved(DocumentTrack * panel, QMouseEvent * event); - - /** - Process drag events - */ - - virtual bool dragEntered(DocumentTrack * panel, QDragEnterEvent *); - virtual bool dragMoved(DocumentTrack *, QDragMoveEvent *); - virtual bool dragLeft(DocumentTrack *, QDragLeaveEvent *); - virtual bool dragDropped(DocumentTrack * panel, QDropEvent *); - -private: - TrackView * m_view; - KdenliveDoc *m_document; - TrackViewClip *m_clipUnderMouse; - bool m_dragging; - bool m_firststep; - - /** - This variable should be set to true if we have initiated a drag which - is going to be moving, rather than adding, clips. - - set to false otherwise. The purpose of this variable is to prevent the - selection group from being re-created on drag entry if we are only - moving it - this prevents a copy of the clips from being created. - */ - bool m_startedClipMove; - - /** - This list is used to group clips together when they are being dragged away from the - timeline, or are being dragged onto the timeline. It gives a home to clips that have not yet - been placed. - */ - //DocClipRefList m_selection; - //DocClipRefList m_selection_to_add; - - /** - This is the "master" Clip - the clip that is actively being dragged by the mouse. - All other clips move in relation to the master clip. - */ - TrackViewClip *m_masterClip; - - /** - When dragging a clip, this is the time offset that should be applied to where - the mouse cursor to find the beginning of the master clip. - */ - GenTime m_clipOffset; - - /** A snap to grid object used for calculating snap-to-grid calculations. */ - //SnapToGrid m_snapToGrid; - - /** Moves all selected clips to a new position. The new start position is that for the master clip, - all other clips are moved in relation to it. Returns true on success, false on failure.*/ - bool moveSelectedClips(int newTrack, GenTime start); - - /** Adds a Clipgroup to the tracks in the timeline. It there are some currently selected clips and - we add new clips with this method, the previously selected clips are dselected. */ - //void addClipsToTracks(DocClipRefList & clips, int track, GenTime value,bool selected); - - /** set up the snap-to-grid class */ - void setupSnapToGrid(); - - /** Find the index of the document track underneath the specified point on the track. */ - int trackUnderPoint(const QPoint & pos); - - /** Initiates a drag operation on the selected clip, setting the master clip to clipUnderMouse, - and specifying the time that the mouse is currently pointing at. */ - //void initiateDrag(DocClipRef * clipUnderMouse, GenTime mouseTime); - - /** - True if we are currently in the process of adding clips to the timeline. - False otherwise. - */ - bool m_addingClips; - - - /** - A moveClipCommand action, used to record clip movement for undo/redo functionality. - */ - //Command::KMoveClipsCommand * m_moveClipsCommand; - /** - This command is used to record clip deletion for undo/redo functionality. - */ - //KMacroCommand *m_deleteClipsCommand; - -#warning - The following method is a bad example for programming design. - /** Returns a command that would create those clips in the document that are currently selected. - */ - //KMacroCommand *createAddClipsCommand(); - - /** Returns true if the x,y position is over a clip (and therefore, the move function applies) */ - bool mouseApplies(const QPoint & pos) const; - -signals: - //void checkTransition(DocClipRef*); -}; - -#endif Deleted: branches/KDE4/src/trackpanelfunction.cpp =================================================================== --- branches/KDE4/src/trackpanelfunction.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackpanelfunction.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,27 +0,0 @@ -/*************************************************************************** - trackpanelfunction.cpp - description - ------------------- - begin : Sun May 18 2003 - copyright : (C) 2003 by Jason Wood - email : jas...@bl... - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -#include "trackpanelfunction.h" - -TrackPanelFunction::TrackPanelFunction() { -} - - -TrackPanelFunction::~TrackPanelFunction() { -} - -#include "trackpanelfunction.moc" - Deleted: branches/KDE4/src/trackpanelfunction.h =================================================================== --- branches/KDE4/src/trackpanelfunction.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackpanelfunction.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,91 +0,0 @@ -/*************************************************************************** - trackpanelfunction.h - description - ------------------- - begin : Sun May 18 2003 - copyright : (C) 2003 by Jason Wood - email : jas...@bl... - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -#ifndef TRACKPANELFUNCTION_H -#define TRACKPANELFUNCTION_H - -#include "qcursor.h" -#include "qobject.h" - -#include "documenttrack.h" -#include "gentime.h" - -class QMouseEvent; - -/** -Abstract Base Class for track panel functionality decorators. This and it's -derived classes allow different behaviours to be added to panels as required. - -@author Jason Wood -*/ -class TrackPanelFunction: public QObject { -Q_OBJECT public: - TrackPanelFunction(); - - virtual ~ TrackPanelFunction(); - - /** - Returns true if the specified position should cause this function to activate, - otherwise returns false. - */ - virtual bool mouseApplies(DocumentTrack * panel, - QMouseEvent * event) const = 0; - - /** - Returns a relevant mouse cursor for the given mouse position - */ - virtual QCursor getMouseCursor(DocumentTrack * panel, - QMouseEvent * event) = 0; - - /** - A mouse button has been pressed. Returns true if we want to handle this event - */ - virtual bool mousePressed(DocumentTrack * panel, - QMouseEvent * event) = 0; - - virtual bool mouseDoubleClicked(DocumentTrack * panel, QMouseEvent * event) = 0; - - /** - Mouse Release Events in the track view area. Returns true if we have finished - an operation now. - */ - virtual bool mouseReleased(DocumentTrack * panel, - QMouseEvent * event) = 0; - - /** - Processes Mouse Move events in the track view area. Returns true if we are - continuing with the drag.*/ - virtual bool mouseMoved(DocumentTrack * panel, - QMouseEvent * event) = 0; - - /** - Process Drag events*/ - virtual bool dragEntered(DocumentTrack * , QDragEnterEvent *) { - return false; - }; - virtual bool dragMoved(DocumentTrack * , QDragMoveEvent *) { - return false; - }; - virtual bool dragLeft(DocumentTrack * , QDragLeaveEvent *) { - return false; - }; - virtual bool dragDropped(DocumentTrack * , QDropEvent *) { - return false; - }; - -}; - -#endif Deleted: branches/KDE4/src/trackpanelfunctionfactory.cpp =================================================================== --- branches/KDE4/src/trackpanelfunctionfactory.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackpanelfunctionfactory.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,64 +0,0 @@ -/*************************************************************************** - trackpanelfunctionfactory - description - ------------------- - begin : Sun Dec 28 2003 - copyright : (C) 2003 by Jason Wood - email : jas...@bl... - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -#include "trackpanelfunctionfactory.h" - -#include "trackpanelfunction.h" - -#include <KDebug> - -TrackPanelFunctionFactory::TrackPanelFunctionFactory() { -} - - -TrackPanelFunctionFactory::~TrackPanelFunctionFactory() { - clearFactory(); -} - -void TrackPanelFunctionFactory::clearFactory() { - QMap < QString, TrackPanelFunction * >::iterator itt = - m_functionMap.begin(); - - while (itt != m_functionMap.end()) { - delete(itt.value()); - itt.value() = 0; - ++itt; - } - m_functionMap.clear(); -} - -void TrackPanelFunctionFactory::registerFunction(const QString & name, - TrackPanelFunction * function) { - if (!m_functionMap.contains(name)) { - m_functionMap[name] = function; - } else { - kError() << "Factory already contains a function called " << name; - } -} - -TrackPanelFunction *TrackPanelFunctionFactory:: -function(const QString & name) { - if (m_functionMap.contains(name)) { - return m_functionMap[name]; - } else { - kError() << "No function called " << name << " found in factory"; - } - - return 0; -} - -#include "trackpanelfunctionfactory.moc" - Deleted: branches/KDE4/src/trackpanelfunctionfactory.h =================================================================== --- branches/KDE4/src/trackpanelfunctionfactory.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackpanelfunctionfactory.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -1,45 +0,0 @@ -/*************************************************************************** - trackpanelfunctionfactory - description - ------------------- - begin : Sun Dec 28 2003 - copyright : (C) 2003 by Jason Wood - email : jas...@bl... - ***************************************************************************/ - -/*************************************************************************** - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ -#ifndef TRACKPANELFUNCTIONFACTORY_H -#define TRACKPANELFUNCTIONFACTORY_H - -#include <qmap.h> - -class TrackPanelFunction; - -/** -A factory containing all known trackpanel functions. - -@author Jason Wood -*/ -class TrackPanelFunctionFactory { -public: - - TrackPanelFunctionFactory(); - - ~TrackPanelFunctionFactory(); - - void registerFunction(const QString & name, - TrackPanelFunction * function); - TrackPanelFunction *function(const QString & name); - void clearFactory(); - -private: - QMap < QString, TrackPanelFunction * >m_functionMap; -}; - -#endif Modified: branches/KDE4/src/trackview.cpp =================================================================== --- branches/KDE4/src/trackview.cpp 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackview.cpp 2008-03-03 21:31:14 UTC (rev 1991) @@ -25,15 +25,12 @@ #include <KDebug> #include "definitions.h" -#include "documentvideotrack.h" -#include "documentaudiotrack.h" #include "headertrack.h" #include "trackview.h" #include "clipitem.h" -#include "trackpanelclipmovefunction.h" TrackView::TrackView(KdenliveDoc *doc, QWidget *parent) - : QWidget(parent), m_doc(doc), m_scale(1.0), m_panelUnderMouse(NULL), m_function(NULL), m_projectTracks(0), m_projectDuration(0) { + : QWidget(parent), m_doc(doc), m_scale(1.0), m_projectTracks(0), m_projectDuration(0) { setMouseTracking(true); view = new Ui::TimeLine_UI(); view->setupUi(this); @@ -76,9 +73,6 @@ m_trackview->initView(); } -void TrackView::registerFunction(const QString & name, TrackPanelFunction * function) { - m_factory.registerFunction(name, function); -} int TrackView::duration() { return m_projectDuration; @@ -169,10 +163,13 @@ return m_doc; } +void TrackView::refresh() { + m_trackview->viewport()->update(); +} + int TrackView::slotAddAudioTrack(int ix, QDomElement xml) { kDebug() << "************* ADD AUDIO TRACK " << ix; m_trackview->addTrack(); - //DocumentTrack *track = new DocumentAudioTrack(xml, this, m_trackview); HeaderTrack *header = new HeaderTrack(); //m_tracksAreaLayout->addWidget(track); //, ix, Qt::AlignTop); m_headersLayout->addWidget(header); //, ix, Qt::AlignTop); @@ -183,7 +180,6 @@ int TrackView::slotAddVideoTrack(int ix, QDomElement xml) { m_trackview->addTrack(); - //DocumentTrack *track = new DocumentVideoTrack(xml, this, m_trackview); HeaderTrack *header = new HeaderTrack(); int trackTop = 50 * ix; int trackBottom = trackTop + 50; @@ -216,10 +212,6 @@ //track->show(); } -DocumentTrack *TrackView::panelAt(int y) { - return NULL; -} - QGraphicsScene *TrackView::projectScene() { return m_scene; } @@ -236,64 +228,4 @@ return m_editMode; } -/** This event occurs when the mouse has been moved. */ -void TrackView::mouseMoveEvent(QMouseEvent * event) { - if (m_panelUnderMouse) { - if (event->buttons() & Qt::LeftButton) { - bool result = false; - if (m_function) - result = - m_function->mouseMoved(m_panelUnderMouse, event); - if (!result) { - m_panelUnderMouse = 0; - m_function = 0; - } - } else { - if (m_function) { - m_function->mouseReleased(m_panelUnderMouse, event); - m_function = 0; - } - m_panelUnderMouse = 0; - } - } else { - DocumentTrack *panel = panelAt(event->y()); - if (panel) { - QCursor result(Qt::ArrowCursor); - - TrackPanelFunction *function = - getApplicableFunction(panel, editMode(), - event); - if (function) - result = function->getMouseCursor(panel, event); - - setCursor(result); - } else { - setCursor(QCursor(Qt::ArrowCursor)); - } - } -} - -TrackPanelFunction *TrackView::getApplicableFunction(DocumentTrack * - panel, const QString & editMode, QMouseEvent * event) { - TrackPanelFunction *function = 0; - - QStringList list = panel->applicableFunctions(editMode); - QStringList::iterator itt = list.begin(); - - while (itt != list.end()) { - TrackPanelFunction *testFunction = m_factory.function(*itt); - if (testFunction) { - if (testFunction->mouseApplies(panel, event)) { - function = testFunction; - break; - } - } - - ++itt; - } - - return function; -} - - #include "trackview.moc" Modified: branches/KDE4/src/trackview.h =================================================================== --- branches/KDE4/src/trackview.h 2008-03-03 12:51:11 UTC (rev 1990) +++ branches/KDE4/src/trackview.h 2008-03-03 21:31:14 UTC (rev 1991) @@ -33,9 +33,6 @@ #include "ui_timeline_ui.h" #include "customruler.h" #include "kdenlivedoc.h" -#include "documenttrack.h" -#include "trackpanelfunctionfactory.h" -#include "trackpanelfunction.h" #include "customtrackview.h" class ClipItem; @@ -45,11 +42,7 @@ public: TrackView(KdenliveDoc *doc, QWidget *parent = 0); - /** This event occurs when the mouse has been moved. */ - void mouseMoveEvent(QMouseEvent * event); - const double zoomFactor() const; - DocumentTrack *panelAt(int y); const int mapLocalToValue(int x) const; void setEditMode(const QString & editMode); const QString & editMode() const; @@ -58,6 +51,7 @@ int duration(); int tracksNumber(); KdenliveDoc *document(); + void refresh() ; public slots: void slotDeleteClip(int clipId); @@ -67,13 +61,8 @@ CustomRuler *m_ruler; CustomTrackView *m_trackview; double m_scale; - QList <DocumentTrack*> documentTracks; int m_projectDuration; int m_projectTracks; - TrackPanelFunctionFactory m_factory; - DocumentTrack *m_panelUnderMouse; - /** The currently applied function. This lasts from mousePressed until mouseRelease. */ - TrackPanelFunction *m_function; QString m_editMode; QGraphicsScene *m_scene; uint m_currentZoom; @@ -88,8 +77,6 @@ void parseDocument(QDomDocument doc); int slotAddAudioTrack(int ix, QDomElement xml); int slotAddVideoTrack(int ix, QDomElement xml); - void registerFunction(const QString & name, TrackPanelFunction * function); - TrackPanelFunction *getApplicableFunction(DocumentTrack * panel, const QString & editMode, QMouseEvent * event); private slots: void slotChangeZoom(int factor); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-03 22:11:03
|
Revision: 1993 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1993&view=rev Author: j-b-m Date: 2008-03-03 14:11:04 -0800 (Mon, 03 Mar 2008) Log Message: ----------- space bar to play timeline Modified Paths: -------------- branches/KDE4/src/kdenliveui.rc branches/KDE4/src/mainwindow.cpp branches/KDE4/src/monitor.h branches/KDE4/src/monitormanager.cpp branches/KDE4/src/monitormanager.h Modified: branches/KDE4/src/kdenliveui.rc =================================================================== --- branches/KDE4/src/kdenliveui.rc 2008-03-03 21:53:32 UTC (rev 1992) +++ branches/KDE4/src/kdenliveui.rc 2008-03-03 22:11:04 UTC (rev 1993) @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<gui name="kdenlive" version="8"> +<gui name="kdenlive" version="9"> <ToolBar name="extraToolBar" > <text>Extra Toolbar</text> <Action name="clear" /> @@ -15,6 +15,10 @@ <Action name="project_settings" /> </Menu> + <Menu name="monitor" ><text>Monitor</text> + <Action name="monitor_play" /> + </Menu> + <Menu name="settings" > <Action name="manage_profiles" /> </Menu> Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-03 21:53:32 UTC (rev 1992) +++ branches/KDE4/src/mainwindow.cpp 2008-03-03 22:11:04 UTC (rev 1993) @@ -233,8 +233,13 @@ actionCollection()->addAction("project_settings", projectAction); connect(projectAction, SIGNAL(triggered(bool)), this, SLOT(slotEditProjectSettings())); + KAction* monitorPlay = new KAction(this); + monitorPlay->setText(i18n("Play")); + monitorPlay->setIcon(KIcon("media-playback-start")); + monitorPlay->setShortcut(Qt::Key_Space); + actionCollection()->addAction("monitor_play", monitorPlay); + connect(monitorPlay, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotPlay())); - KStandardAction::quit(kapp, SLOT(quit()), actionCollection()); @@ -480,7 +485,7 @@ // KConfigDialog didn't find an instance of this dialog, so lets // create it : KdenliveSettingsDialog* dialog = new KdenliveSettingsDialog(this); - connect(dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration())); + connect( dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration()) ); dialog->show(); } Modified: branches/KDE4/src/monitor.h =================================================================== --- branches/KDE4/src/monitor.h 2008-03-03 21:53:32 UTC (rev 1992) +++ branches/KDE4/src/monitor.h 2008-03-03 22:11:04 UTC (rev 1993) @@ -54,7 +54,6 @@ bool m_isActive; private slots: - void slotPlay(); void adjustRulerSize(int length); void seekCursor(int pos); void rendererStopped(int pos); @@ -72,6 +71,7 @@ void stop(); void start(); void activateMonitor(); + void slotPlay(); signals: void renderPosition(int); Modified: branches/KDE4/src/monitormanager.cpp =================================================================== --- branches/KDE4/src/monitormanager.cpp 2008-03-03 21:53:32 UTC (rev 1992) +++ branches/KDE4/src/monitormanager.cpp 2008-03-03 22:11:04 UTC (rev 1993) @@ -75,4 +75,9 @@ m_activeMonitor = name; } +void MonitorManager::slotPlay() { + if (m_activeMonitor == "clip") m_clipMonitor->slotPlay(); + else m_projectMonitor->slotPlay(); +} + #include "monitormanager.moc" Modified: branches/KDE4/src/monitormanager.h =================================================================== --- branches/KDE4/src/monitormanager.h 2008-03-03 21:53:32 UTC (rev 1992) +++ branches/KDE4/src/monitormanager.h 2008-03-03 22:11:04 UTC (rev 1993) @@ -37,6 +37,7 @@ public slots: void activateMonitor(QString name = QString::null); + void slotPlay(); private: Monitor *m_clipMonitor; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-03 23:12:41
|
Revision: 1994 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1994&view=rev Author: j-b-m Date: 2008-03-03 15:12:48 -0800 (Mon, 03 Mar 2008) Log Message: ----------- Autoscroll while playing Modified Paths: -------------- branches/KDE4/src/customtrackview.cpp branches/KDE4/src/customtrackview.h branches/KDE4/src/kdenlivesettings.kcfg branches/KDE4/src/mainwindow.cpp branches/KDE4/src/trackview.cpp branches/KDE4/src/widgets/configdisplay_ui.ui Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-03 22:11:04 UTC (rev 1993) +++ branches/KDE4/src/customtrackview.cpp 2008-03-03 23:12:48 UTC (rev 1994) @@ -35,9 +35,10 @@ #include "addtimelineclipcommand.h" #include "addeffectcommand.h" #include "editeffectcommand.h" +#include "kdenlivesettings.h" CustomTrackView::CustomTrackView(KdenliveDoc *doc, QGraphicsScene * projectscene, QWidget *parent) - : QGraphicsView(projectscene, parent), m_tracksCount(0), m_cursorPos(0), m_dropItem(NULL), m_cursorLine(NULL), m_operationMode(NONE), m_startPos(QPointF()), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_scale(1.0), m_clickPoint(0), m_document(doc) { + : QGraphicsView(projectscene, parent), m_tracksCount(0), m_cursorPos(0), m_dropItem(NULL), m_cursorLine(NULL), m_operationMode(NONE), m_startPos(QPointF()), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_scale(1.0), m_clickPoint(0), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()) { if (doc) m_commandStack = doc->commandStack(); else m_commandStack == NULL; setMouseTracking(true); @@ -59,8 +60,8 @@ } } -void CustomTrackView::initView() { - +void CustomTrackView::checkAutoScroll() { + m_autoScroll = KdenliveSettings::autoscroll(); } // virtual @@ -518,12 +519,21 @@ m_cursorLine->setPos(pos, 0); int frame = pos / m_scale; if (seek) m_document->renderer()->seek(GenTime(frame, m_document->fps())); + else if (m_autoScroll && m_scale < 50) checkScrolling(); } int CustomTrackView::cursorPos() { return m_cursorPos; } +void CustomTrackView::checkScrolling() { + QRect rectInView = viewport()->rect(); + int delta = rectInView.width() / 3; + int max = rectInView.right() + horizontalScrollBar()->value() - delta; + //kDebug() << "CURSOR POS: "<<m_cursorPos<< "Scale: "<<m_scale; + if (m_cursorPos >= max) horizontalScrollBar()->setValue(horizontalScrollBar()->value() + 1 + m_scale); +} + void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) { QGraphicsView::mouseReleaseEvent(event); setDragMode(QGraphicsView::NoDrag); @@ -679,12 +689,8 @@ } void CustomTrackView::drawBackground(QPainter * painter, const QRectF & rect) { - QRect rectInView;//this is the rect that is visible by the user - if (scene()->views().size() > 0) { - rectInView = scene()->views()[0]->viewport()->rect(); - rectInView.moveTo(scene()->views()[0]->horizontalScrollBar()->value(), scene()->views()[0]->verticalScrollBar()->value()); - } - if (rectInView.isNull()) return; + QRect rectInView = viewport()->rect(); + rectInView.moveTo(horizontalScrollBar()->value(), verticalScrollBar()->value()); QColor base = palette().button().color(); painter->setClipRect(rect); Modified: branches/KDE4/src/customtrackview.h =================================================================== --- branches/KDE4/src/customtrackview.h 2008-03-03 22:11:04 UTC (rev 1993) +++ branches/KDE4/src/customtrackview.h 2008-03-03 23:12:48 UTC (rev 1994) @@ -41,7 +41,7 @@ void addTrack(); void removeTrack(); int cursorPos(); - void initView(); + void checkAutoScroll(); void moveClip(const QPointF &startPos, const QPointF &endPos); void resizeClip(const QPointF &startPos, const QPointF &endPos, bool resizeClipStart); void addClip(QDomElement xml, int clipId, int track, int startpos, const QRectF &rect, int duration); @@ -97,6 +97,9 @@ void updateSnapPoints(ClipItem *selected); double getSnapPointForPos(double pos); ClipItem *getClipItemAt(int pos, int track); + void checkScrolling(); + /** Should we auto scroll while playing (keep in sync with KdenliveSettings::autoscroll() */ + bool m_autoScroll; signals: Modified: branches/KDE4/src/kdenlivesettings.kcfg =================================================================== --- branches/KDE4/src/kdenlivesettings.kcfg 2008-03-03 22:11:04 UTC (rev 1993) +++ branches/KDE4/src/kdenlivesettings.kcfg 2008-03-03 23:12:48 UTC (rev 1994) @@ -25,6 +25,11 @@ <label>Display audio thumbnails in timeline.</label> <default>true</default> </entry> + + <entry name="autoscroll" type="Bool"> + <label>Auto scroll timeline while playing.</label> + <default>true</default> + </entry> </group> <group name="env"> Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-03 22:11:04 UTC (rev 1993) +++ branches/KDE4/src/mainwindow.cpp 2008-03-03 23:12:48 UTC (rev 1994) @@ -485,13 +485,16 @@ // KConfigDialog didn't find an instance of this dialog, so lets // create it : KdenliveSettingsDialog* dialog = new KdenliveSettingsDialog(this); - connect( dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration()) ); + connect(dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration())); dialog->show(); } void MainWindow::updateConfiguration() { TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget(); - if (currentTab) currentTab->refresh(); + if (currentTab) { + currentTab->refresh(); + currentTab->projectView()->checkAutoScroll(); + } } void MainWindow::slotGotProgressInfo(KUrl url, int progress) { Modified: branches/KDE4/src/trackview.cpp =================================================================== --- branches/KDE4/src/trackview.cpp 2008-03-03 22:11:04 UTC (rev 1993) +++ branches/KDE4/src/trackview.cpp 2008-03-03 23:12:48 UTC (rev 1994) @@ -70,7 +70,6 @@ connect(m_trackview, SIGNAL(clipItemSelected(ClipItem*)), this, SLOT(slotClipItemSelected(ClipItem*))); view->horizontalSlider->setValue(4); m_currentZoom = view->horizontalSlider->value(); - m_trackview->initView(); } Modified: branches/KDE4/src/widgets/configdisplay_ui.ui =================================================================== --- branches/KDE4/src/widgets/configdisplay_ui.ui 2008-03-03 22:11:04 UTC (rev 1993) +++ branches/KDE4/src/widgets/configdisplay_ui.ui 2008-03-03 23:12:48 UTC (rev 1994) @@ -5,8 +5,8 @@ <rect> <x>0</x> <y>0</y> - <width>354</width> - <height>182</height> + <width>306</width> + <height>107</height> </rect> </property> <layout class="QGridLayout" name="gridLayout_2" > @@ -50,6 +50,13 @@ </property> </spacer> </item> + <item row="1" column="0" colspan="2" > + <widget class="QCheckBox" name="kcfg_autoscroll" > + <property name="text" > + <string>Autoscroll while playing</string> + </property> + </widget> + </item> </layout> </widget> </item> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-03 23:38:42
|
Revision: 1995 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1995&view=rev Author: j-b-m Date: 2008-03-03 15:38:45 -0800 (Mon, 03 Mar 2008) Log Message: ----------- Show project format in tab title / hide tab bar when only one project open Modified Paths: -------------- branches/KDE4/src/mainwindow.cpp branches/KDE4/src/profilesdialog.cpp branches/KDE4/src/profilesdialog.h Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-03 23:12:48 UTC (rev 1994) +++ branches/KDE4/src/mainwindow.cpp 2008-03-03 23:38:45 UTC (rev 1995) @@ -65,6 +65,7 @@ m_timelineArea = new KTabWidget(this); m_timelineArea->setHoverCloseButton(true); m_timelineArea->setTabReorderingEnabled(true); + m_timelineArea->setTabBarHidden(true); connect(m_timelineArea, SIGNAL(currentChanged(int)), this, SLOT(activateDocument())); initEffects::parseEffectFiles(&m_audioEffects, &m_videoEffects); @@ -296,9 +297,10 @@ void MainWindow::newFile() { KdenliveDoc *doc = new KdenliveDoc(KUrl(), 25, 720, 576); TrackView *trackView = new TrackView(doc); - m_timelineArea->addTab(trackView, "New Project"); + m_timelineArea->addTab(trackView, i18n("Untitled") + " / " + ProfilesDialog::getProfileDescription(KdenliveSettings::default_profile())); if (m_timelineArea->count() == 1) connectDocument(trackView, doc); + else m_timelineArea->setTabBarHidden(false); } void MainWindow::activateDocument() { @@ -344,6 +346,7 @@ TrackView *trackView = new TrackView(doc); m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, QIcon(), doc->documentName())); m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path()); + if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false); //connectDocument(trackView, doc); } Modified: branches/KDE4/src/profilesdialog.cpp =================================================================== --- branches/KDE4/src/profilesdialog.cpp 2008-03-03 23:12:48 UTC (rev 1994) +++ branches/KDE4/src/profilesdialog.cpp 2008-03-03 23:38:45 UTC (rev 1995) @@ -51,6 +51,33 @@ // static +QString ProfilesDialog::getProfileDescription(QString name) { + QStringList profilesNames; + QStringList profilesFiles; + QStringList profilesFilter; + profilesFilter << "*"; + + // List the Mlt profiles + profilesFiles = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files); + if (profilesFiles.contains(name)) { + KConfig confFile(KdenliveSettings::mltpath() + "/" + name); + return confFile.entryMap().value("description"); + } + + // List custom profiles + QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles"); + for (int i = 0; i < customProfiles.size(); ++i) { + profilesFiles = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files); + if (profilesFiles.contains(name)) { + KConfig confFile(customProfiles.at(i) + "/" + name); + return confFile.entryMap().value("description"); + } + } + + return QString(); +} + +// static QStringList ProfilesDialog::getProfileNames() { QStringList profilesNames; QStringList profilesFiles; Modified: branches/KDE4/src/profilesdialog.h =================================================================== --- branches/KDE4/src/profilesdialog.h 2008-03-03 23:12:48 UTC (rev 1994) +++ branches/KDE4/src/profilesdialog.h 2008-03-03 23:38:45 UTC (rev 1995) @@ -32,6 +32,7 @@ ProfilesDialog(QWidget * parent = 0); static QStringList getProfileNames(); + static QString getProfileDescription(QString name); static QMap< QString, QString > getSettingsForProfile(const QString profileName); static QMap< QString, QString > getSettingsFromFile(const QString path); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-04 09:38:32
|
Revision: 1996 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1996&view=rev Author: j-b-m Date: 2008-03-04 01:38:34 -0800 (Tue, 04 Mar 2008) Log Message: ----------- Only create audio thumbs when they are enabled, clear cache when disabled Modified Paths: -------------- branches/KDE4/src/clipmanager.cpp branches/KDE4/src/clipmanager.h branches/KDE4/src/docclipbase.cpp branches/KDE4/src/docclipbase.h branches/KDE4/src/mainwindow.cpp branches/KDE4/src/projectitem.cpp Modified: branches/KDE4/src/clipmanager.cpp =================================================================== --- branches/KDE4/src/clipmanager.cpp 2008-03-03 23:38:45 UTC (rev 1995) +++ branches/KDE4/src/clipmanager.cpp 2008-03-04 09:38:34 UTC (rev 1996) @@ -26,11 +26,21 @@ ClipManager::ClipManager(KdenliveDoc *doc): m_doc(doc) { m_clipIdCounter = 1; + m_audioThumbsEnabled = KdenliveSettings::audiothumbnails(); } ClipManager::~ClipManager() { } +void ClipManager::checkAudioThumbs() { + if (m_audioThumbsEnabled == KdenliveSettings::audiothumbnails()) return; + m_audioThumbsEnabled = KdenliveSettings::audiothumbnails(); + for (int i = 0; i < m_clipList.count(); i++) { + if (m_audioThumbsEnabled) m_clipList.at(i)->slotRequestAudioThumbs(); + else m_clipList.at(i)->slotClearAudioCache(); + } +} + void ClipManager::setThumbsProgress(KUrl url, int progress) { m_doc->setThumbsProgress(url, progress); } Modified: branches/KDE4/src/clipmanager.h =================================================================== --- branches/KDE4/src/clipmanager.h 2008-03-03 23:38:45 UTC (rev 1995) +++ branches/KDE4/src/clipmanager.h 2008-03-04 09:38:34 UTC (rev 1996) @@ -53,6 +53,7 @@ DocClipBase *getClipById(int clipId); void slotDeleteClip(uint clipId); void setThumbsProgress(KUrl url, int progress); + void checkAudioThumbs(); private: // Private attributes /** the list of clips in the document */ @@ -60,6 +61,7 @@ /** the document undo stack*/ KdenliveDoc *m_doc; int m_clipIdCounter; + bool m_audioThumbsEnabled; }; Modified: branches/KDE4/src/docclipbase.cpp =================================================================== --- branches/KDE4/src/docclipbase.cpp 2008-03-03 23:38:45 UTC (rev 1995) +++ branches/KDE4/src/docclipbase.cpp 2008-03-04 09:38:34 UTC (rev 1996) @@ -74,6 +74,11 @@ emit getAudioThumbs(); } +void DocClipBase::slotClearAudioCache() { + audioFrameChache.clear(); + m_audioThumbCreated = false; +} + KThumb *DocClipBase::thumbProducer() { return m_thumbProd; } Modified: branches/KDE4/src/docclipbase.h =================================================================== --- branches/KDE4/src/docclipbase.h 2008-03-03 23:38:45 UTC (rev 1995) +++ branches/KDE4/src/docclipbase.h 2008-03-04 09:38:34 UTC (rev 1996) @@ -200,6 +200,8 @@ /** Clip is ready to get thumbs */ void slotRequestAudioThumbs(); + /** Free cache data */ + void slotClearAudioCache(); private: // Private attributes Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-03 23:38:45 UTC (rev 1995) +++ branches/KDE4/src/mainwindow.cpp 2008-03-04 09:38:34 UTC (rev 1996) @@ -493,10 +493,12 @@ } void MainWindow::updateConfiguration() { + //TODO: we should apply settings to all projects, not only the current one TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget(); if (currentTab) { currentTab->refresh(); currentTab->projectView()->checkAutoScroll(); + if (m_activeDocument) m_activeDocument->clipManager()->checkAudioThumbs(); } } Modified: branches/KDE4/src/projectitem.cpp =================================================================== --- branches/KDE4/src/projectitem.cpp 2008-03-03 23:38:45 UTC (rev 1995) +++ branches/KDE4/src/projectitem.cpp 2008-03-04 09:38:34 UTC (rev 1996) @@ -30,8 +30,8 @@ #include "projectitem.h" #include "timecode.h" +#include "kdenlivesettings.h" - const int NameRole = Qt::UserRole; const int DurationRole = NameRole + 1; const int UsageRole = NameRole + 2; @@ -222,7 +222,7 @@ m_element.setAttribute("resource", attributes["filename"]); m_element.setAttribute("type", (int) m_clipType); - m_clip->slotRequestAudioThumbs(); + if (KdenliveSettings::audiothumbnails()) m_clip->slotRequestAudioThumbs(); /* if (attributes.contains("height")) { m_height = attributes["height"].toInt(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-04 10:38:12
|
Revision: 1997 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1997&view=rev Author: j-b-m Date: 2008-03-04 02:38:16 -0800 (Tue, 04 Mar 2008) Log Message: ----------- Start using mlt profiles Modified Paths: -------------- branches/KDE4/src/definitions.h branches/KDE4/src/docclipbase.cpp branches/KDE4/src/kdenlivedoc.cpp branches/KDE4/src/kdenlivedoc.h branches/KDE4/src/mainwindow.cpp branches/KDE4/src/monitor.cpp branches/KDE4/src/monitor.h branches/KDE4/src/monitormanager.cpp branches/KDE4/src/monitormanager.h branches/KDE4/src/profilesdialog.cpp branches/KDE4/src/profilesdialog.h branches/KDE4/src/renderer.cpp branches/KDE4/src/renderer.h Modified: branches/KDE4/src/definitions.h =================================================================== --- branches/KDE4/src/definitions.h 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/definitions.h 2008-03-04 10:38:16 UTC (rev 1997) @@ -27,11 +27,18 @@ enum OPERATIONTYPE { NONE = 0, MOVE = 1, RESIZESTART = 2, RESIZEEND = 3, FADEIN = 4, FADEOUT = 5}; enum CLIPTYPE { UNKNOWN = 0, AUDIO = 1, VIDEO = 2, AV = 3, COLOR = 4, IMAGE = 5, TEXT = 6, SLIDESHOW = 7, VIRTUAL = 8, PLAYLIST = 9}; -struct TrackViewClip { - int startTime; - int duration; - int cropTime; - QString producer; +struct MltVideoProfile { + QString path; + QString description; + int frame_rate_num; + int frame_rate_den; + int width; + int height; + bool progressive; + int sample_aspect_num; + int sample_aspect_den; + int display_aspect_num; + int display_aspect_den; }; #endif Modified: branches/KDE4/src/docclipbase.cpp =================================================================== --- branches/KDE4/src/docclipbase.cpp 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/docclipbase.cpp 2008-03-04 10:38:16 UTC (rev 1997) @@ -67,7 +67,7 @@ } DocClipBase::~DocClipBase() { - //if (m_thumbProd) delete m_thumbProd; + if (m_thumbProd) delete m_thumbProd; } void DocClipBase::slotRequestAudioThumbs() { Modified: branches/KDE4/src/kdenlivedoc.cpp =================================================================== --- branches/KDE4/src/kdenlivedoc.cpp 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/kdenlivedoc.cpp 2008-03-04 10:38:16 UTC (rev 1997) @@ -28,7 +28,7 @@ #include "kdenlivedoc.h" #include "docclipbase.h" -KdenliveDoc::KdenliveDoc(const KUrl &url, double fps, int width, int height, QWidget *parent): QObject(parent), m_render(NULL), m_url(url), m_fps(fps), m_width(width), m_height(height), m_projectName(NULL), m_commandStack(new KUndoStack()) { +KdenliveDoc::KdenliveDoc(const KUrl &url, MltVideoProfile profile, QWidget *parent): QObject(parent), m_render(NULL), m_url(url), m_profile(profile), m_fps((double)profile.frame_rate_num / profile.frame_rate_den), m_width(profile.width), m_height(profile.height), m_projectName(NULL), m_commandStack(new KUndoStack()) { m_clipManager = new ClipManager(this); if (!url.isEmpty()) { QString tmpFile; @@ -101,8 +101,8 @@ doc.appendChild(tractor); } - if (fps == 30000.0 / 1001.0) m_timecode.setFormat(30, true); - else m_timecode.setFormat((int) fps); + if (m_fps == 30000.0 / 1001.0) m_timecode.setFormat(30, true); + else m_timecode.setFormat((int) m_fps); } KdenliveDoc::~KdenliveDoc() { @@ -114,6 +114,10 @@ return m_clipManager; } +QString KdenliveDoc::profilePath() { + return m_profile.path; +} + void KdenliveDoc::setThumbsProgress(KUrl url, int progress) { emit thumbsProgress(url, progress); } Modified: branches/KDE4/src/kdenlivedoc.h =================================================================== --- branches/KDE4/src/kdenlivedoc.h 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/kdenlivedoc.h 2008-03-04 10:38:16 UTC (rev 1997) @@ -34,11 +34,12 @@ #include "timecode.h" #include "renderer.h" #include "clipmanager.h" +#include "definitions.h" class KdenliveDoc: public QObject { Q_OBJECT public: - KdenliveDoc(const KUrl &url, double fps, int width, int height, QWidget *parent = 0); + KdenliveDoc(const KUrl &url, MltVideoProfile profile, QWidget *parent = 0); ~KdenliveDoc(); QString documentName(); QDomNodeList producersList(); @@ -66,6 +67,7 @@ void deleteProjectClip(const uint clipId); /** Inform application of the audio thumbnails generation progress */ void setThumbsProgress(KUrl url, int progress); + QString profilePath(); private: KUrl m_url; @@ -79,6 +81,7 @@ KUndoStack *m_commandStack; QDomDocument generateSceneList(); ClipManager *m_clipManager; + MltVideoProfile m_profile; public slots: Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/mainwindow.cpp 2008-03-04 10:38:16 UTC (rev 1997) @@ -295,9 +295,11 @@ } void MainWindow::newFile() { - KdenliveDoc *doc = new KdenliveDoc(KUrl(), 25, 720, 576); + MltVideoProfile prof = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile()); + if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal"); + KdenliveDoc *doc = new KdenliveDoc(KUrl(), prof); TrackView *trackView = new TrackView(doc); - m_timelineArea->addTab(trackView, i18n("Untitled") + " / " + ProfilesDialog::getProfileDescription(KdenliveSettings::default_profile())); + m_timelineArea->addTab(trackView, i18n("Untitled") + " / " + prof.description); if (m_timelineArea->count() == 1) connectDocument(trackView, doc); else m_timelineArea->setTabBarHidden(false); @@ -342,9 +344,12 @@ } void MainWindow::openFile(const KUrl &url) { //new - KdenliveDoc *doc = new KdenliveDoc(url, 25, 720, 576); + //TODO: get video profile from url before opening it + MltVideoProfile prof = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile()); + if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal"); + KdenliveDoc *doc = new KdenliveDoc(url, prof); TrackView *trackView = new TrackView(doc); - m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, QIcon(), doc->documentName())); + m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, QIcon(), doc->documentName() + " / " + prof.description)); m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path()); if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false); //connectDocument(trackView, doc); @@ -452,6 +457,7 @@ m_projectList->setDocument(doc); m_monitorManager->setTimecode(doc->timecode()); + m_monitorManager->resetProfiles(doc->profilePath()); doc->setRenderer(m_projectMonitor->render); //m_undoView->setStack(0); m_commandStack = doc->commandStack(); Modified: branches/KDE4/src/monitor.cpp =================================================================== --- branches/KDE4/src/monitor.cpp 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/monitor.cpp 2008-03-04 10:38:16 UTC (rev 1997) @@ -220,6 +220,10 @@ render->setSceneList(doc, 0); } +void Monitor::resetProfile(QString prof) { + if (render == NULL) return; + render->resetProfile(prof); +} #include "monitor.moc" Modified: branches/KDE4/src/monitor.h =================================================================== --- branches/KDE4/src/monitor.h 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/monitor.h 2008-03-04 10:38:16 UTC (rev 1997) @@ -36,6 +36,8 @@ public: Monitor(QString name, MonitorManager *manager, QWidget *parent = 0); Render *render; + void resetProfile(QString prof); + virtual void resizeEvent(QResizeEvent * event); protected: virtual void mousePressEvent(QMouseEvent * event); Modified: branches/KDE4/src/monitormanager.cpp =================================================================== --- branches/KDE4/src/monitormanager.cpp 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/monitormanager.cpp 2008-03-04 10:38:16 UTC (rev 1997) @@ -80,4 +80,9 @@ else m_projectMonitor->slotPlay(); } +void MonitorManager::resetProfiles(QString prof) { + m_clipMonitor->resetProfile(prof); + m_projectMonitor->resetProfile(prof); +} + #include "monitormanager.moc" Modified: branches/KDE4/src/monitormanager.h =================================================================== --- branches/KDE4/src/monitormanager.h 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/monitormanager.h 2008-03-04 10:38:16 UTC (rev 1997) @@ -34,6 +34,7 @@ void initMonitors(Monitor *clipMonitor, Monitor *projectMonitor); Timecode timecode(); void setTimecode(Timecode tc); + void resetProfiles(QString prof); public slots: void activateMonitor(QString name = QString::null); Modified: branches/KDE4/src/profilesdialog.cpp =================================================================== --- branches/KDE4/src/profilesdialog.cpp 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/profilesdialog.cpp 2008-03-04 10:38:16 UTC (rev 1997) @@ -49,7 +49,47 @@ connect(m_view.profiles_list, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateDisplay())); } +// static +MltVideoProfile ProfilesDialog::getVideoProfile(QString name) { + MltVideoProfile result; + QStringList profilesNames; + QStringList profilesFiles; + QStringList profilesFilter; + profilesFilter << "*"; + QString path; + // List the Mlt profiles + profilesFiles = QDir(KdenliveSettings::mltpath()).entryList(profilesFilter, QDir::Files); + if (profilesFiles.contains(name)) path = KdenliveSettings::mltpath() + "/" + name; + + if (path.isEmpty()) { + // List custom profiles + QStringList customProfiles = KGlobal::dirs()->findDirs("appdata", "profiles"); + for (int i = 0; i < customProfiles.size(); ++i) { + profilesFiles = QDir(customProfiles.at(i)).entryList(profilesFilter, QDir::Files); + if (profilesFiles.contains(name)) { + path = customProfiles.at(i) + "/" + name; + break; + } + } + } + + if (path.isEmpty()) return result; + KConfig confFile(path); + result.path = path; + result.description = confFile.entryMap().value("description"); + result.frame_rate_num = confFile.entryMap().value("frame_rate_num").toInt(); + result.frame_rate_den = confFile.entryMap().value("frame_rate_den").toInt(); + result.width = confFile.entryMap().value("width").toInt(); + result.height = confFile.entryMap().value("height").toInt(); + result.progressive = confFile.entryMap().value("progressive").toInt(); + result.sample_aspect_num = confFile.entryMap().value("sample_aspect_num").toInt(); + result.sample_aspect_den = confFile.entryMap().value("sample_aspect_den").toInt(); + result.display_aspect_num = confFile.entryMap().value("display_aspect_num").toInt(); + result.display_aspect_den = confFile.entryMap().value("display_aspect_den").toInt(); + return result; +} + // static QString ProfilesDialog::getProfileDescription(QString name) { QStringList profilesNames; Modified: branches/KDE4/src/profilesdialog.h =================================================================== --- branches/KDE4/src/profilesdialog.h 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/profilesdialog.h 2008-03-04 10:38:16 UTC (rev 1997) @@ -23,6 +23,7 @@ #include <QDialog> +#include "definitions.h" #include "ui_profiledialog_ui.h" class ProfilesDialog : public QDialog { @@ -35,6 +36,7 @@ static QString getProfileDescription(QString name); static QMap< QString, QString > getSettingsForProfile(const QString profileName); static QMap< QString, QString > getSettingsFromFile(const QString path); + static MltVideoProfile getVideoProfile(QString name); private slots: void slotUpdateDisplay(); Modified: branches/KDE4/src/renderer.cpp =================================================================== --- branches/KDE4/src/renderer.cpp 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/renderer.cpp 2008-03-04 10:38:16 UTC (rev 1997) @@ -114,14 +114,16 @@ -int Render::resetRendererProfile(char * profile) { +int Render::resetProfile(QString profile) { if (!m_mltConsumer) return 0; if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop(); m_mltConsumer->set("refresh", 0); - //m_mltConsumer->set("profile", profile); + //TODO: we should also rebuild filters and delete existing m_mltProfile + m_mltProfile = new Mlt::Profile((char*) qstrdup(profile.toUtf8())); kDebug() << " + + RESET CONSUMER WITH PROFILE: " << profile; mlt_properties properties = MLT_CONSUMER_PROPERTIES(m_mltConsumer->get_consumer()); -// apply_profile_properties( m_profile, m_mltConsumer->get_consumer(), properties ); + mlt_properties_set_data(properties, "profile", m_mltProfile->get_profile(), 0, 0, NULL); + //apply_profile_properties( m_mltProfile, m_mltConsumer->get_consumer(), properties ); refresh(); return 1; } Modified: branches/KDE4/src/renderer.h =================================================================== --- branches/KDE4/src/renderer.h 2008-03-04 09:38:34 UTC (rev 1996) +++ branches/KDE4/src/renderer.h 2008-03-04 10:38:16 UTC (rev 1997) @@ -145,7 +145,7 @@ void refreshDisplay(); /** returns the current scenelist */ QDomDocument sceneList() const; - int resetRendererProfile(char * profile); + int resetProfile(QString profile); const double fps() const; /** Playlist manipulation */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-05 11:42:44
|
Revision: 1998 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=1998&view=rev Author: j-b-m Date: 2008-03-05 03:42:50 -0800 (Wed, 05 Mar 2008) Log Message: ----------- config option to normalise audio for thumbnails +?\194?\160small cleanup Modified Paths: -------------- branches/KDE4/src/kdenlivesettings.kcfg branches/KDE4/src/kthumb.cpp branches/KDE4/src/widgets/configdisplay_ui.ui Modified: branches/KDE4/src/kdenlivesettings.kcfg =================================================================== --- branches/KDE4/src/kdenlivesettings.kcfg 2008-03-04 10:38:16 UTC (rev 1997) +++ branches/KDE4/src/kdenlivesettings.kcfg 2008-03-05 11:42:50 UTC (rev 1998) @@ -26,6 +26,11 @@ <default>true</default> </entry> + <entry name="normaliseaudiothumbs" type="Bool"> + <label>Normalise audio before creating thumbnails.</label> + <default>true</default> + </entry> + <entry name="autoscroll" type="Bool"> <label>Auto scroll timeline while playing.</label> <default>true</default> Modified: branches/KDE4/src/kthumb.cpp =================================================================== --- branches/KDE4/src/kthumb.cpp 2008-03-04 10:38:16 UTC (rev 1997) +++ branches/KDE4/src/kthumb.cpp 2008-03-05 11:42:50 UTC (rev 1998) @@ -66,19 +66,19 @@ if (!f.open(QIODevice::WriteOnly)) { kDebug() << "++++++++ ERROR WRITING TO FILE: " << f.fileName() << endl; kDebug() << "++++++++ DISABLING AUDIO THUMBS" << endl; - //TODO KdenliveSettings::setAudiothumbnails(false); + KdenliveSettings::setAudiothumbnails(false); return; } m_isWorking = true; - Mlt::Profile prof((char*) qstrdup(KdenliveSettings::current_profile().toUtf8())); + Mlt::Profile prof((char*) KdenliveSettings::current_profile().toUtf8().data()); Mlt::Producer m_producer(prof, m_url.path().toUtf8().data()); - /*TODO if (KdenliveSettings::normaliseaudiothumbs()) { + if (KdenliveSettings::normaliseaudiothumbs()) { Mlt::Filter m_convert(prof,"volume"); m_convert.set("gain", "normalise"); m_producer.attach(m_convert); - }*/ + } //QApplication::postEvent(m_parent, new ProgressEvent(-1, (QEvent::Type)10005)); @@ -158,7 +158,7 @@ char *tmp = Render::decodedString(url.path()); Mlt::Profile prof((char*) KdenliveSettings::current_profile().data()); Mlt::Producer m_producer(prof, tmp); - delete tmp; + delete[] tmp; if (m_producer.is_blank()) { pix.fill(Qt::black); @@ -187,7 +187,7 @@ QPixmap pix(m_width, m_height); char *tmp = Render::decodedString(m_url.path()); Mlt::Producer m_producer(*m_profile, tmp); - delete tmp; + delete[] tmp; if (m_producer.is_blank()) { pix.fill(Qt::black); Modified: branches/KDE4/src/widgets/configdisplay_ui.ui =================================================================== --- branches/KDE4/src/widgets/configdisplay_ui.ui 2008-03-04 10:38:16 UTC (rev 1997) +++ branches/KDE4/src/widgets/configdisplay_ui.ui 2008-03-05 11:42:50 UTC (rev 1998) @@ -5,39 +5,25 @@ <rect> <x>0</x> <y>0</y> - <width>306</width> - <height>107</height> + <width>348</width> + <height>187</height> </rect> </property> <layout class="QGridLayout" name="gridLayout_2" > <item row="0" column="0" > <widget class="QGroupBox" name="groupBox" > <property name="title" > - <string>Timeline</string> + <string>Thumbnails</string> </property> <layout class="QGridLayout" name="gridLayout" > <item row="0" column="0" > - <widget class="QLabel" name="label_2" > - <property name="text" > - <string>Thumbnails:</string> - </property> - </widget> - </item> - <item row="0" column="1" > <widget class="QCheckBox" name="kcfg_videothumbnails" > <property name="text" > <string>Video</string> </property> </widget> </item> - <item row="0" column="2" > - <widget class="QCheckBox" name="kcfg_audiothumbnails" > - <property name="text" > - <string>Audio</string> - </property> - </widget> - </item> - <item row="0" column="3" > + <item row="0" column="1" > <spacer name="horizontalSpacer" > <property name="orientation" > <enum>Qt::Horizontal</enum> @@ -50,17 +36,31 @@ </property> </spacer> </item> - <item row="1" column="0" colspan="2" > - <widget class="QCheckBox" name="kcfg_autoscroll" > + <item row="1" column="0" > + <widget class="QCheckBox" name="kcfg_audiothumbnails" > <property name="text" > - <string>Autoscroll while playing</string> + <string>Audio</string> </property> </widget> </item> + <item row="1" column="1" > + <widget class="QCheckBox" name="kcfg_normaliseaudiothumbs" > + <property name="text" > + <string>Normalise audio for thumbnails</string> + </property> + </widget> + </item> </layout> </widget> </item> <item row="1" column="0" > + <widget class="QCheckBox" name="kcfg_autoscroll" > + <property name="text" > + <string>Autoscroll while playing</string> + </property> + </widget> + </item> + <item row="2" column="0" > <spacer name="verticalSpacer" > <property name="orientation" > <enum>Qt::Vertical</enum> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-05 12:34:30
|
Revision: 2000 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2000&view=rev Author: j-b-m Date: 2008-03-05 04:34:25 -0800 (Wed, 05 Mar 2008) Log Message: ----------- better handling of document switching (still some crashes) Modified Paths: -------------- branches/KDE4/src/clipmanager.cpp branches/KDE4/src/clipmanager.h branches/KDE4/src/kdenlivedoc.cpp branches/KDE4/src/kdenlivedoc.h branches/KDE4/src/kthumb.cpp branches/KDE4/src/mainwindow.cpp branches/KDE4/src/mainwindow.h branches/KDE4/src/projectlist.cpp branches/KDE4/src/renderer.cpp branches/KDE4/src/renderer.h Modified: branches/KDE4/src/clipmanager.cpp =================================================================== --- branches/KDE4/src/clipmanager.cpp 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/clipmanager.cpp 2008-03-05 12:34:25 UTC (rev 2000) @@ -45,6 +45,9 @@ m_doc->setThumbsProgress(url, progress); } +QList <DocClipBase*> ClipManager::documentClipList() { + return m_clipList; +} void ClipManager::addClip(DocClipBase *clip) { m_clipList.append(clip); Modified: branches/KDE4/src/clipmanager.h =================================================================== --- branches/KDE4/src/clipmanager.h 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/clipmanager.h 2008-03-05 12:34:25 UTC (rev 2000) @@ -54,6 +54,7 @@ void slotDeleteClip(uint clipId); void setThumbsProgress(KUrl url, int progress); void checkAudioThumbs(); + QList <DocClipBase*> documentClipList(); private: // Private attributes /** the list of clips in the document */ Modified: branches/KDE4/src/kdenlivedoc.cpp =================================================================== --- branches/KDE4/src/kdenlivedoc.cpp 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/kdenlivedoc.cpp 2008-03-05 12:34:25 UTC (rev 2000) @@ -101,6 +101,7 @@ doc.appendChild(tractor); } + m_scenelist = m_document.toString(); if (m_fps == 30000.0 / 1001.0) m_timecode.setFormat(30, true); else m_timecode.setFormat((int) m_fps); } @@ -128,7 +129,7 @@ void KdenliveDoc::setRenderer(Render *render) { m_render = render; - if (m_render) m_render->setSceneList(m_document); + if (m_render) m_render->setSceneList(m_scenelist); } Render *KdenliveDoc::renderer() { @@ -208,28 +209,8 @@ return m_document.elementsByTagName("producer"); } -void KdenliveDoc::setProducers(QDomElement doc) { - QDomNode kdenlivedocument = m_document.elementsByTagName("kdenlivedoc").item(0); - - QDomNodeList list = m_document.elementsByTagName("producer"); - int ct = list.count(); - kDebug() << "DELETING CHILD PRODUCERS: " << ct; - for (int i = ct; i > 0; i--) { - kdenlivedocument.removeChild(list.item(i)); - } - - QDomNode n = doc.firstChild(); - ct = 0; - while (!n.isNull()) { - QDomElement e = n.toElement(); // try to convert the node to an element. - if (!e.isNull() && e.tagName() == "producer") { - kdenlivedocument.appendChild(m_document.importNode(e, true)); - ct++; - } - n = n.nextSibling(); - } - kDebug() << "ADDING CHILD PRODS: " << ct << "\n"; - //kDebug()<<m_document.toString(); +void KdenliveDoc::backupMltPlaylist() { + if (m_render) m_scenelist = m_render->sceneList(); } double KdenliveDoc::fps() { Modified: branches/KDE4/src/kdenlivedoc.h =================================================================== --- branches/KDE4/src/kdenlivedoc.h 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/kdenlivedoc.h 2008-03-05 12:34:25 UTC (rev 2000) @@ -47,7 +47,7 @@ int width(); int height(); KUrl url(); - void setProducers(QDomElement doc); + void backupMltPlaylist(); Timecode timecode(); QDomDocument toXml(); void setRenderer(Render *render); @@ -82,6 +82,7 @@ QDomDocument generateSceneList(); ClipManager *m_clipManager; MltVideoProfile m_profile; + QString m_scenelist; public slots: Modified: branches/KDE4/src/kthumb.cpp =================================================================== --- branches/KDE4/src/kthumb.cpp 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/kthumb.cpp 2008-03-05 12:34:25 UTC (rev 2000) @@ -76,9 +76,9 @@ if (KdenliveSettings::normaliseaudiothumbs()) { - Mlt::Filter m_convert(prof,"volume"); - m_convert.set("gain", "normalise"); - m_producer.attach(m_convert); + Mlt::Filter m_convert(prof, "volume"); + m_convert.set("gain", "normalise"); + m_producer.attach(m_convert); } //QApplication::postEvent(m_parent, new ProgressEvent(-1, (QEvent::Type)10005)); Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/mainwindow.cpp 2008-03-05 12:34:25 UTC (rev 2000) @@ -60,7 +60,7 @@ MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent), - fileName(QString()), m_activeDocument(NULL), m_commandStack(NULL) { + fileName(QString()), m_activeDocument(NULL), m_activeTimeline(NULL), m_commandStack(NULL) { parseProfiles(); m_timelineArea = new KTabWidget(this); m_timelineArea->setHoverCloseButton(true); @@ -436,9 +436,26 @@ kDebug() << "/////////////////// CONNECTING DOC TO PROJECT VIEW ////////////////"; if (m_activeDocument) { if (m_activeDocument == doc) return; - m_activeDocument->setProducers(m_projectList->producersList()); + m_activeDocument->backupMltPlaylist(); + if (m_activeTimeline) { + disconnect(m_projectMonitor, SIGNAL(renderPosition(int)), m_activeTimeline, SLOT(moveCursorPos(int))); + disconnect(m_projectMonitor, SIGNAL(durationChanged(int)), m_activeTimeline->projectView(), SLOT(setDuration(int))); + disconnect(m_activeDocument, SIGNAL(addProjectClip(DocClipBase *)), m_projectList, SLOT(slotAddClip(DocClipBase *))); + disconnect(m_activeDocument, SIGNAL(signalDeleteProjectClip(int)), m_projectList, SLOT(slotDeleteClip(int))); + disconnect(m_activeDocument, SIGNAL(updateClipDisplay(int)), m_projectList, SLOT(slotUpdateClip(int))); + disconnect(m_activeDocument, SIGNAL(deletTimelineClip(int)), m_activeTimeline, SLOT(slotDeleteClip(int))); + disconnect(m_activeDocument, SIGNAL(thumbsProgress(KUrl, int)), this, SLOT(slotGotProgressInfo(KUrl, int))); + disconnect(m_activeTimeline, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*))); + disconnect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), m_activeTimeline->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement))); + disconnect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), m_activeTimeline->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement))); + disconnect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), m_activeTimeline->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool))); + disconnect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), m_activeTimeline->projectView(), SLOT(slotRefreshEffects(ClipItem*))); + } m_activeDocument->setRenderer(NULL); } + m_monitorManager->resetProfiles(doc->profilePath()); + m_projectList->setDocument(doc); + connect(trackView, SIGNAL(cursorMoved()), m_projectMonitor, SLOT(activateMonitor())); connect(trackView, SIGNAL(mousePosition(int)), this, SLOT(slotUpdateMousePosition(int))); connect(m_projectMonitor, SIGNAL(renderPosition(int)), trackView, SLOT(moveCursorPos(int))); @@ -454,10 +471,9 @@ connect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement))); connect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), trackView->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool))); connect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), trackView->projectView(), SLOT(slotRefreshEffects(ClipItem*))); + m_activeTimeline = trackView; - m_projectList->setDocument(doc); m_monitorManager->setTimecode(doc->timecode()); - m_monitorManager->resetProfiles(doc->profilePath()); doc->setRenderer(m_projectMonitor->render); //m_undoView->setStack(0); m_commandStack = doc->commandStack(); Modified: branches/KDE4/src/mainwindow.h =================================================================== --- branches/KDE4/src/mainwindow.h 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/mainwindow.h 2008-03-05 12:34:25 UTC (rev 2000) @@ -63,6 +63,7 @@ void setupActions(); QString fileName; KdenliveDoc *m_activeDocument; + TrackView *m_activeTimeline; MonitorManager *m_monitorManager; QDockWidget *projectListDock; Modified: branches/KDE4/src/projectlist.cpp =================================================================== --- branches/KDE4/src/projectlist.cpp 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/projectlist.cpp 2008-03-05 12:34:25 UTC (rev 2000) @@ -337,19 +337,25 @@ //delete dia; } void ProjectList::setDocument(KdenliveDoc *doc) { + listView->clear(); + QList <DocClipBase*> list = doc->clipManager()->documentClipList(); + for (int i = 0; i < list.count(); i++) { + slotAddClip(list.at(i)); + } + m_fps = doc->fps(); m_timecode = doc->timecode(); m_commandStack = doc->commandStack(); m_doc = doc; - QDomNodeList prods = doc->producersList(); - int ct = prods.count(); - kDebug() << "//////////// SETTING DOC, FOUND CLIPS: " << prods.count(); - listView->clear(); - for (int i = 0; i < ct ; i++) { - QDomElement e = prods.item(i).toElement(); - kDebug() << "// IMPORT: " << i << ", :" << e.attribute("id", "non") << ", NAME: " << e.attribute("name", "non"); - if (!e.isNull()) addProducer(e); - } + /* QDomNodeList prods = doc->producersList(); + int ct = prods.count(); + kDebug() << "//////////// SETTING DOC, FOUND CLIPS: " << prods.count(); + listView->clear(); + for (int i = 0; i < ct ; i++) { + QDomElement e = prods.item(i).toElement(); + kDebug() << "// IMPORT: " << i << ", :" << e.attribute("id", "non") << ", NAME: " << e.attribute("name", "non"); + if (!e.isNull()) addProducer(e); + }*/ QTreeWidgetItem *first = listView->topLevelItem(0); if (first) listView->setCurrentItem(first); m_toolbar->setEnabled(true); Modified: branches/KDE4/src/renderer.cpp =================================================================== --- branches/KDE4/src/renderer.cpp 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/renderer.cpp 2008-03-05 12:34:25 UTC (rev 2000) @@ -36,6 +36,7 @@ #include <KStandardDirs> #include <KMessageBox> #include <KLocale> +#include <KTemporaryFile> #include "renderer.h" #include "kdenlivesettings.h" @@ -50,9 +51,9 @@ } } -Render::Render(const QString & rendererName, int winid, int extid, QWidget *parent): QObject(parent), m_name(rendererName), m_mltConsumer(NULL), m_mltProducer(NULL), m_mltTextProducer(NULL), m_sceneList(QDomDocument()), m_winid(-1), m_framePosition(0), m_generateScenelist(false), m_isBlocked(true) { - kDebug() << "////////// USING PROFILE: " << qstrdup(KdenliveSettings::current_profile().toUtf8()); - m_mltProfile = new Mlt::Profile((char*) qstrdup(KdenliveSettings::current_profile().toUtf8())); +Render::Render(const QString & rendererName, int winid, int extid, QWidget *parent): QObject(parent), m_name(rendererName), m_mltConsumer(NULL), m_mltProducer(NULL), m_mltTextProducer(NULL), m_winid(-1), m_framePosition(0), m_generateScenelist(false), m_isBlocked(true) { + kDebug() << "////////// USING PROFILE: " << (char *)KdenliveSettings::current_profile().toUtf8().data(); + m_mltProfile = new Mlt::Profile((char*) KdenliveSettings::current_profile().data()); refreshTimer = new QTimer(this); connect(refreshTimer, SIGNAL(timeout()), this, SLOT(refresh())); @@ -118,13 +119,19 @@ if (!m_mltConsumer) return 0; if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop(); m_mltConsumer->set("refresh", 0); + m_mltConsumer->purge(); //TODO: we should also rebuild filters and delete existing m_mltProfile - m_mltProfile = new Mlt::Profile((char*) qstrdup(profile.toUtf8())); - kDebug() << " + + RESET CONSUMER WITH PROFILE: " << profile; - mlt_properties properties = MLT_CONSUMER_PROPERTIES(m_mltConsumer->get_consumer()); - mlt_properties_set_data(properties, "profile", m_mltProfile->get_profile(), 0, 0, NULL); + + //delete m_mltProfile; + //m_mltProfile = new Mlt::Profile("pal_dv");//(char*) qstrdup(profile.toUtf8())); + kDebug() << " ++++++++++ RESET CONSUMER WITH PROFILE: " << m_mltProfile->width(); + // mlt_properties properties = MLT_CONSUMER_PROPERTIES(m_mltConsumer->get_consumer()); + //mlt_profile prof = m_mltProfile->get_profile(); + //mlt_properties_set_data(properties, "_profile", prof, 0, (mlt_destructor)mlt_profile_close, NULL); + //mlt_properties_set(properties, "profile", "hdv_1080_50i"); + m_mltConsumer->set("profile", (char *) profile.data()); //apply_profile_properties( m_mltProfile, m_mltConsumer->get_consumer(), properties ); - refresh(); + //refresh(); return 1; } @@ -140,7 +147,7 @@ char *t = new char[fn.length() + 1]; strcpy(t, (const char *)fn);*/ - return qstrdup(str.toUtf8().data()); //toLatin1 + return (char *) qstrdup(str.toUtf8().data()); //toLatin1 } //static @@ -425,10 +432,6 @@ if (frame) delete frame; } -QDomDocument Render::sceneList() const { - return m_sceneList; -} - /** Create the producer from the Westley QDomDocument */ void Render::initSceneList() { kDebug() << "-------- INIT SCENE LIST ------_"; @@ -464,13 +467,17 @@ setSceneList(doc, 0); } +/** Create the producer from the Westley QDomDocument */ +void Render::setSceneList(QDomDocument list, int position) { + setSceneList(list.toString(), position); +} /** Create the producer from the Westley QDomDocument */ -void Render::setSceneList(QDomDocument list, int position) { +void Render::setSceneList(QString playlist, int position) { if (m_winid == -1) return; m_generateScenelist = true; - kWarning() << "////// RENDER, SET SCENE LIST"; + kWarning() << "////// RENDER, SET SCENE LIST: " << playlist; /* @@ -490,7 +497,6 @@ if (m_mltProducer) { m_mltProducer->set_speed(0.0); - //if (KdenliveSettings::osdtimecode() && m_osdInfo) m_mltProducer->detach(*m_osdInfo); delete m_mltProducer; @@ -498,9 +504,7 @@ emit stopped(); } - char *tmp = decodedString(list.toString()); - //Mlt::Producer clip(profile, "westley-xml", tmp); - + char *tmp = decodedString(playlist); m_mltProducer = new Mlt::Producer(*m_mltProfile, "westley-xml", tmp); delete[] tmp; //m_mltProducer->optimise(); @@ -538,6 +542,35 @@ } +/** Create the producer from the Westley QDomDocument */ +QString Render::sceneList() { + if (m_winid == -1) return QString(); + KTemporaryFile temp; + QString result; + + if (temp.open()) { + QString path = temp.fileName(); + char *tmppath = decodedString("westley:" + path); + Mlt::Consumer westleyConsumer(*m_mltProfile , tmppath); + delete[] tmppath; + westleyConsumer.set("terminate_on_pause", 1); + Mlt::Producer prod(m_mltProducer->get_producer()); + westleyConsumer.connect(prod); + westleyConsumer.start(); + + QFile file(path); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + return QString(); + + QTextStream in(&file); + while (!in.atEnd()) { + result.append(in.readLine()); + } + } + return result; +} + + const double Render::fps() const { return m_fps; } Modified: branches/KDE4/src/renderer.h =================================================================== --- branches/KDE4/src/renderer.h 2008-03-05 12:15:45 UTC (rev 1999) +++ branches/KDE4/src/renderer.h 2008-03-05 12:34:25 UTC (rev 2000) @@ -93,6 +93,8 @@ /** Wraps the VEML command of the same name. Sets the current scene list to be list. */ void setSceneList(QDomDocument list, int position = 0); + void setSceneList(QString playlist, int position = 0); + QString sceneList(); /** Wraps the VEML command of the same name. Tells the renderer to play the current scene at the speed specified, relative to normal @@ -143,8 +145,6 @@ /** Turn on or off on screen display */ void refreshDisplay(); - /** returns the current scenelist */ - QDomDocument sceneList() const; int resetProfile(QString profile); const double fps() const; @@ -187,9 +187,6 @@ KUrl m_exportedFile; int exportDuration, firstExportFrame, lastExportFrame; - /** Holds the scenelist to be sent, if pending. */ - QDomDocument m_sceneList; - /** A human-readable description of this renderer. */ QString m_description; int m_winid; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-06 20:42:02
|
Revision: 2001 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2001&view=rev Author: j-b-m Date: 2008-03-06 12:42:03 -0800 (Thu, 06 Mar 2008) Log Message: ----------- Make communication between timeline and its ruler easier Modified Paths: -------------- branches/KDE4/src/customruler.cpp branches/KDE4/src/customruler.h branches/KDE4/src/customtrackview.cpp branches/KDE4/src/customtrackview.h branches/KDE4/src/trackview.cpp branches/KDE4/src/trackview.h Modified: branches/KDE4/src/customruler.cpp =================================================================== --- branches/KDE4/src/customruler.cpp 2008-03-05 12:34:25 UTC (rev 2000) +++ branches/KDE4/src/customruler.cpp 2008-03-06 20:42:03 UTC (rev 2001) @@ -74,8 +74,8 @@ 12000 }; -CustomRuler::CustomRuler(Timecode tc, QWidget *parent) - : KRuler(parent), m_timecode(tc) { +CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent) + : KRuler(parent), m_timecode(tc), m_view(parent) { slotNewOffset(0); setRulerMetricStyle(KRuler::Pixel); setLength(1024); @@ -88,43 +88,29 @@ // virtual void CustomRuler::mousePressEvent(QMouseEvent * event) { - int pos = event->x(); - slotMoveCursor(pos, true); + int pos = (event->x() + offset()); + m_view->setCursorPos(pos); } // virtual void CustomRuler::mouseMoveEvent(QMouseEvent * event) { - int pos = event->x(); - slotMoveCursor(pos, true); + int pos = (event->x() + offset()); + m_view->setCursorPos(pos); } void CustomRuler::slotMoveRuler(int newPos) { int diff = offset() - newPos; KRuler::slotNewOffset(newPos); - KRuler::slotNewValue(m_cursorPosition * FRAME_SIZE * pixelPerMark() - offset());//value() + diff); } -void CustomRuler::slotMoveCursor(int _value, bool emitSignal) { - m_cursorPosition = (_value + offset()) / pixelPerMark() / FRAME_SIZE; - kDebug() << "RULER FR SZ: " << FRAME_SIZE << ", PPM: " << pixelPerMark(); - KRuler::slotNewValue(m_cursorPosition * FRAME_SIZE * pixelPerMark() - offset()); - - if (emitSignal) emit cursorMoved(m_cursorPosition); +void CustomRuler::slotCursorMoved(int oldpos, int newpos) { + //TODO: optimize (redraw only around cursor positions + update(); } - -void CustomRuler::slotNewValue(int _value, bool emitSignal) { - m_cursorPosition = _value / pixelPerMark(); - if (emitSignal) emit cursorMoved(m_cursorPosition / FRAME_SIZE); - KRuler::slotNewValue(_value * pixelPerMark() - offset()); -} - void CustomRuler::setPixelPerMark(double rate) { int scale = comboScale[(int) rate]; - int newPos = m_cursorPosition * (1.0 / scale); KRuler::setPixelPerMark(1.0 / scale); - KRuler::slotNewValue(m_cursorPosition * FRAME_SIZE * pixelPerMark() - offset()); - //KRuler::slotNewValue( newPos ); } // virtual @@ -133,8 +119,7 @@ QStylePainter p(this); - - int value = this->value(); + int value = m_view->cursorPos() - offset(); int minval = minimum(); int maxval = maximum() + offset() - endOffset(); Modified: branches/KDE4/src/customruler.h =================================================================== --- branches/KDE4/src/customruler.h 2008-03-05 12:34:25 UTC (rev 2000) +++ branches/KDE4/src/customruler.h 2008-03-06 20:42:03 UTC (rev 2001) @@ -3,13 +3,14 @@ #include <KRuler> -#include <timecode.h> +#include "customtrackview.h" +#include "timecode.h" class CustomRuler : public KRuler { Q_OBJECT public: - CustomRuler(Timecode tc, QWidget *parent = 0); + CustomRuler(Timecode tc, CustomTrackView *parent); virtual void mousePressEvent(QMouseEvent * event); virtual void mouseMoveEvent(QMouseEvent * event); void setPixelPerMark(double rate); @@ -20,15 +21,12 @@ private: int m_cursorPosition; Timecode m_timecode; - void slotMoveCursor(int _value, bool emitSignal); + CustomTrackView *m_view; public slots: - void slotNewValue(int _value, bool emitSignal = false); void slotMoveRuler(int newPos); + void slotCursorMoved(int oldpos, int newpos); - -signals: - void cursorMoved(int); }; #endif Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-05 12:34:25 UTC (rev 2000) +++ branches/KDE4/src/customtrackview.cpp 2008-03-06 20:42:03 UTC (rev 2001) @@ -256,7 +256,6 @@ m_moveOpMode = NONE; if (event->buttons() != Qt::NoButton) { setCursorPos((int) mapToScene(event->pos().x(), 0).x()); - emit cursorMoved(cursorPos()); } if (m_visualTip) { if (m_animation) delete m_animation; @@ -319,7 +318,6 @@ itemList.at(i)->setSelected(false); emit clipItemSelected(NULL); setCursorPos((int) mapToScene(event->x(), 0).x()); - emit cursorMoved(cursorPos()); } } updateSnapPoints(m_dragItem); @@ -515,6 +513,7 @@ } void CustomTrackView::setCursorPos(int pos, bool seek) { + emit cursorMoved(m_cursorPos, pos); m_cursorPos = pos; m_cursorLine->setPos(pos, 0); int frame = pos / m_scale; Modified: branches/KDE4/src/customtrackview.h =================================================================== --- branches/KDE4/src/customtrackview.h 2008-03-05 12:34:25 UTC (rev 2000) +++ branches/KDE4/src/customtrackview.h 2008-03-06 20:42:03 UTC (rev 2001) @@ -103,7 +103,7 @@ signals: - void cursorMoved(int); + void cursorMoved(int, int); void zoomIn(); void zoomOut(); void mousePosition(int); Modified: branches/KDE4/src/trackview.cpp =================================================================== --- branches/KDE4/src/trackview.cpp 2008-03-05 12:34:25 UTC (rev 2000) +++ branches/KDE4/src/trackview.cpp 2008-03-06 20:42:03 UTC (rev 2001) @@ -34,10 +34,6 @@ setMouseTracking(true); view = new Ui::TimeLine_UI(); view->setupUi(this); - m_ruler = new CustomRuler(doc->timecode()); - QVBoxLayout *layout = new QVBoxLayout; - view->ruler_frame->setLayout(layout); - layout->addWidget(m_ruler); m_scene = new QGraphicsScene(); m_trackview = new CustomTrackView(doc, m_scene, this); @@ -45,6 +41,11 @@ m_trackview->setAlignment(Qt::AlignLeft | Qt::AlignTop); //m_scene->addRect(QRectF(0, 0, 100, 100), QPen(), QBrush(Qt::red)); + m_ruler = new CustomRuler(doc->timecode(), m_trackview); + QVBoxLayout *layout = new QVBoxLayout; + view->ruler_frame->setLayout(layout); + layout->addWidget(m_ruler); + m_headersLayout = new QVBoxLayout; m_headersLayout->setContentsMargins(0, 0, 0, 0); view->headers_frame->setLayout(m_headersLayout); @@ -61,8 +62,7 @@ setEditMode("move");*/ connect(view->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(slotChangeZoom(int))); - connect(m_ruler, SIGNAL(cursorMoved(int)), this, SLOT(setCursorPos(int))); - connect(m_trackview, SIGNAL(cursorMoved(int)), this, SLOT(slotCursorMoved(int))); + connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int))); connect(m_trackview, SIGNAL(zoomIn()), this, SLOT(slotZoomIn())); connect(m_trackview, SIGNAL(zoomOut()), this, SLOT(slotZoomOut())); connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int))); @@ -107,7 +107,7 @@ if (duration > m_projectDuration) m_projectDuration = duration; } m_trackview->setDuration(m_projectDuration); - slotCursorMoved(cursorPos, true); + //m_trackview->setCursorPos(cursorPos); //m_scrollBox->setGeometry(0, 0, 300 * zoomFactor(), m_scrollArea->height()); } @@ -116,21 +116,13 @@ } void TrackView::setCursorPos(int pos) { - emit cursorMoved(); m_trackview->setCursorPos(pos * m_scale); } void TrackView::moveCursorPos(int pos) { m_trackview->setCursorPos(pos * m_scale, false); - m_ruler->slotNewValue(pos * FRAME_SIZE, false); } -void TrackView::slotCursorMoved(int pos, bool emitSignal) { - m_ruler->slotNewValue(pos * FRAME_SIZE / m_scale, emitSignal); //(int) m_trackview->mapToScene(QPoint(pos, 0)).x()); - //m_trackview->setCursorPos(pos); - //m_trackview->invalidateScene(QRectF(), QGraphicsScene::ForegroundLayer); -} - void TrackView::slotChangeZoom(int factor) { double pos = m_trackview->cursorPos() / m_scale; m_ruler->setPixelPerMark(factor); @@ -138,7 +130,6 @@ m_currentZoom = factor; m_trackview->setScale(m_scale); m_trackview->setCursorPos(pos * m_scale, false); - m_ruler->slotNewValue(pos * FRAME_SIZE, false); m_trackview->centerOn(QPointF(m_trackview->cursorPos(), 50)); } Modified: branches/KDE4/src/trackview.h =================================================================== --- branches/KDE4/src/trackview.h 2008-03-05 12:34:25 UTC (rev 2000) +++ branches/KDE4/src/trackview.h 2008-03-06 20:42:03 UTC (rev 2001) @@ -80,7 +80,6 @@ private slots: void slotChangeZoom(int factor); - void slotCursorMoved(int pos, bool slotCursorMoved = false); void slotZoomIn(); void slotZoomOut(); void setCursorPos(int pos); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-07 12:59:14
|
Revision: 2002 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2002&view=rev Author: j-b-m Date: 2008-03-07 04:59:19 -0800 (Fri, 07 Mar 2008) Log Message: ----------- Show current document name in window title Modified Paths: -------------- branches/KDE4/src/kdenlivedoc.cpp branches/KDE4/src/kdenlivedoc.h branches/KDE4/src/mainwindow.cpp Modified: branches/KDE4/src/kdenlivedoc.cpp =================================================================== --- branches/KDE4/src/kdenlivedoc.cpp 2008-03-06 20:42:03 UTC (rev 2001) +++ branches/KDE4/src/kdenlivedoc.cpp 2008-03-07 12:59:19 UTC (rev 2002) @@ -28,7 +28,7 @@ #include "kdenlivedoc.h" #include "docclipbase.h" -KdenliveDoc::KdenliveDoc(const KUrl &url, MltVideoProfile profile, QWidget *parent): QObject(parent), m_render(NULL), m_url(url), m_profile(profile), m_fps((double)profile.frame_rate_num / profile.frame_rate_den), m_width(profile.width), m_height(profile.height), m_projectName(NULL), m_commandStack(new KUndoStack()) { +KdenliveDoc::KdenliveDoc(const KUrl &url, MltVideoProfile profile, QWidget *parent): QObject(parent), m_render(NULL), m_url(url), m_profile(profile), m_fps((double)profile.frame_rate_num / profile.frame_rate_den), m_width(profile.width), m_height(profile.height), m_commandStack(new KUndoStack()) { m_clipManager = new ClipManager(this); if (!url.isEmpty()) { QString tmpFile; @@ -36,7 +36,6 @@ QFile file(tmpFile); m_document.setContent(&file, false); file.close(); - m_projectName = url.fileName(); KIO::NetAccess::removeTempFile(tmpFile); } else { KMessageBox::error(parent, KIO::NetAccess::lastErrorString()); @@ -115,7 +114,7 @@ return m_clipManager; } -QString KdenliveDoc::profilePath() { +QString KdenliveDoc::profilePath() const { return m_profile.path; } @@ -193,18 +192,14 @@ QDomElement prod = doc.createElement("producer"); } -QDomDocument KdenliveDoc::toXml() { +QDomDocument KdenliveDoc::toXml() const { return m_document; } -Timecode KdenliveDoc::timecode() { +Timecode KdenliveDoc::timecode() const { return m_timecode; } -QString KdenliveDoc::documentName() { - return m_projectName; -} - QDomNodeList KdenliveDoc::producersList() { return m_document.elementsByTagName("producer"); } @@ -213,22 +208,29 @@ if (m_render) m_scenelist = m_render->sceneList(); } -double KdenliveDoc::fps() { +double KdenliveDoc::fps() const { return m_fps; } -int KdenliveDoc::width() { +int KdenliveDoc::width() const { return m_width; } -int KdenliveDoc::height() { +int KdenliveDoc::height() const { return m_height; } -KUrl KdenliveDoc::url() { +KUrl KdenliveDoc::url() const { return m_url; } +QString KdenliveDoc::description() const { + if (m_url.isEmpty()) + return i18n("Untitled") + " / " + m_profile.description; + else + return m_url.fileName() + " / " + m_profile.description; +} + void KdenliveDoc::addClip(const QDomElement &elem, const int clipId) { kDebug() << "///////// DOCUM, CREATING NEW CLIP, ID:" << clipId; DocClipBase *clip = new DocClipBase(m_clipManager, elem, clipId); Modified: branches/KDE4/src/kdenlivedoc.h =================================================================== --- branches/KDE4/src/kdenlivedoc.h 2008-03-06 20:42:03 UTC (rev 2001) +++ branches/KDE4/src/kdenlivedoc.h 2008-03-07 12:59:19 UTC (rev 2002) @@ -41,15 +41,14 @@ KdenliveDoc(const KUrl &url, MltVideoProfile profile, QWidget *parent = 0); ~KdenliveDoc(); - QString documentName(); QDomNodeList producersList(); - double fps(); - int width(); - int height(); - KUrl url(); + double fps() const; + int width() const; + int height() const; + KUrl url() const; void backupMltPlaylist(); - Timecode timecode(); - QDomDocument toXml(); + Timecode timecode() const; + QDomDocument toXml() const; void setRenderer(Render *render); KUndoStack *commandStack(); QString producerName(int id); @@ -67,7 +66,8 @@ void deleteProjectClip(const uint clipId); /** Inform application of the audio thumbnails generation progress */ void setThumbsProgress(KUrl url, int progress); - QString profilePath(); + QString profilePath() const; + QString description() const; private: KUrl m_url; Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-06 20:42:03 UTC (rev 2001) +++ branches/KDE4/src/mainwindow.cpp 2008-03-07 12:59:19 UTC (rev 2002) @@ -349,7 +349,7 @@ if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal"); KdenliveDoc *doc = new KdenliveDoc(url, prof); TrackView *trackView = new TrackView(doc); - m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, QIcon(), doc->documentName() + " / " + prof.description)); + m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, QIcon(), doc->description())); m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path()); if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false); //connectDocument(trackView, doc); @@ -497,6 +497,7 @@ w->addAction(redo); } m_undoView->setStack(doc->commandStack()); + setCaption(doc->description()); m_activeDocument = doc; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-07 13:18:58
|
Revision: 2003 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2003&view=rev Author: j-b-m Date: 2008-03-07 05:19:03 -0800 (Fri, 07 Mar 2008) Log Message: ----------- Allow document closing Modified Paths: -------------- branches/KDE4/src/mainwindow.cpp branches/KDE4/src/mainwindow.h Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-07 12:59:19 UTC (rev 2002) +++ branches/KDE4/src/mainwindow.cpp 2008-03-07 13:19:03 UTC (rev 2003) @@ -67,7 +67,9 @@ m_timelineArea->setTabReorderingEnabled(true); m_timelineArea->setTabBarHidden(true); connect(m_timelineArea, SIGNAL(currentChanged(int)), this, SLOT(activateDocument())); + connect(m_timelineArea, SIGNAL(closeRequest(QWidget *)), this, SLOT(closeDocument(QWidget *))); + initEffects::parseEffectFiles(&m_audioEffects, &m_videoEffects); m_monitorManager = new MonitorManager(); @@ -299,7 +301,7 @@ if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal"); KdenliveDoc *doc = new KdenliveDoc(KUrl(), prof); TrackView *trackView = new TrackView(doc); - m_timelineArea->addTab(trackView, i18n("Untitled") + " / " + prof.description); + m_timelineArea->addTab(trackView, KIcon("kdenlive"), i18n("Untitled") + " / " + prof.description); if (m_timelineArea->count() == 1) connectDocument(trackView, doc); else m_timelineArea->setTabBarHidden(false); @@ -311,6 +313,21 @@ connectDocument(currentTab, currentDoc); } +void MainWindow::closeDocument(QWidget *w) { + if (w == m_timelineArea->currentWidget()) { + // closing current document + int ix = m_timelineArea->currentIndex() + 1; + if (ix == m_timelineArea->count()) ix = 0; + m_timelineArea->setCurrentIndex(ix); + } + + TrackView *tabToClose = (TrackView *) w; + KdenliveDoc *docToClose = tabToClose->document(); + m_timelineArea->removeTab(m_timelineArea->indexOf(w)); + delete docToClose; + delete w; +} + void MainWindow::saveFileAs(const QString &outputFileName) { KSaveFile file(outputFileName); file.open(); @@ -349,7 +366,7 @@ if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal"); KdenliveDoc *doc = new KdenliveDoc(url, prof); TrackView *trackView = new TrackView(doc); - m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, QIcon(), doc->description())); + m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, KIcon("kdenlive"), doc->description())); m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path()); if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false); //connectDocument(trackView, doc); Modified: branches/KDE4/src/mainwindow.h =================================================================== --- branches/KDE4/src/mainwindow.h 2008-03-07 12:59:19 UTC (rev 2002) +++ branches/KDE4/src/mainwindow.h 2008-03-07 13:19:03 UTC (rev 2003) @@ -110,6 +110,7 @@ private slots: void newFile(); void activateDocument(); + void closeDocument(QWidget *w); void connectDocument(TrackView*, KdenliveDoc*); void openFile(); void saveFile(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-07 13:46:17
|
Revision: 2004 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2004&view=rev Author: j-b-m Date: 2008-03-07 05:46:17 -0800 (Fri, 07 Mar 2008) Log Message: ----------- Cleanup undo/redo system Modified Paths: -------------- branches/KDE4/src/kdenlivedoc.cpp branches/KDE4/src/kdenlivedoc.h branches/KDE4/src/mainwindow.cpp branches/KDE4/src/mainwindow.h Modified: branches/KDE4/src/kdenlivedoc.cpp =================================================================== --- branches/KDE4/src/kdenlivedoc.cpp 2008-03-07 13:19:03 UTC (rev 2003) +++ branches/KDE4/src/kdenlivedoc.cpp 2008-03-07 13:46:17 UTC (rev 2004) @@ -28,7 +28,7 @@ #include "kdenlivedoc.h" #include "docclipbase.h" -KdenliveDoc::KdenliveDoc(const KUrl &url, MltVideoProfile profile, QWidget *parent): QObject(parent), m_render(NULL), m_url(url), m_profile(profile), m_fps((double)profile.frame_rate_num / profile.frame_rate_den), m_width(profile.width), m_height(profile.height), m_commandStack(new KUndoStack()) { +KdenliveDoc::KdenliveDoc(const KUrl &url, MltVideoProfile profile, QUndoGroup *undoGroup, QWidget *parent): QObject(parent), m_render(NULL), m_url(url), m_profile(profile), m_fps((double)profile.frame_rate_num / profile.frame_rate_den), m_width(profile.width), m_height(profile.height), m_commandStack(new KUndoStack(undoGroup)) { m_clipManager = new ClipManager(this); if (!url.isEmpty()) { QString tmpFile; Modified: branches/KDE4/src/kdenlivedoc.h =================================================================== --- branches/KDE4/src/kdenlivedoc.h 2008-03-07 13:19:03 UTC (rev 2003) +++ branches/KDE4/src/kdenlivedoc.h 2008-03-07 13:46:17 UTC (rev 2004) @@ -26,6 +26,7 @@ #include <qmap.h> #include <QList> #include <QObject> +#include <QUndoGroup> #include <KUndoStack> #include <kurl.h> @@ -39,7 +40,7 @@ class KdenliveDoc: public QObject { Q_OBJECT public: - KdenliveDoc(const KUrl &url, MltVideoProfile profile, QWidget *parent = 0); + KdenliveDoc(const KUrl &url, MltVideoProfile profile, QUndoGroup *undoGroup, QWidget *parent = 0); ~KdenliveDoc(); QDomNodeList producersList(); double fps() const; Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-07 13:19:03 UTC (rev 2003) +++ branches/KDE4/src/mainwindow.cpp 2008-03-07 13:46:17 UTC (rev 2004) @@ -60,8 +60,10 @@ MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent), - fileName(QString()), m_activeDocument(NULL), m_activeTimeline(NULL), m_commandStack(NULL) { + fileName(QString()), m_activeDocument(NULL), m_activeTimeline(NULL) { parseProfiles(); + + m_commandStack = new QUndoGroup; m_timelineArea = new KTabWidget(this); m_timelineArea->setHoverCloseButton(true); m_timelineArea->setTabReorderingEnabled(true); @@ -116,8 +118,10 @@ undoViewDock = new QDockWidget(i18n("Undo History"), this); undoViewDock->setObjectName("undo_history"); m_undoView = new QUndoView(this); + m_undoView->setCleanIcon(KIcon("edit-clear")); + m_undoView->setEmptyLabel(i18n("Clean")); undoViewDock->setWidget(m_undoView); - m_undoView->setStack(m_commandStack); + m_undoView->setGroup(m_commandStack); addDockWidget(Qt::TopDockWidgetArea, undoViewDock); overviewDock = new QDockWidget(i18n("Project Overview"), this); @@ -264,11 +268,11 @@ KStandardAction::preferences(this, SLOT(slotPreferences()), actionCollection()); - /*KStandardAction::undo(this, SLOT(undo()), + KStandardAction::undo(this, SLOT(undo()), actionCollection()); KStandardAction::redo(this, SLOT(redo()), - actionCollection());*/ + actionCollection()); connect(actionCollection(), SIGNAL(actionHighlighted(QAction*)), this, SLOT(slotDisplayActionMessage(QAction*))); @@ -276,11 +280,16 @@ //statusBar(), SLOT( clear() ) ); readOptions(); +} - /*m_redo = m_commandStack->createRedoAction(actionCollection()); - m_undo = m_commandStack->createUndoAction(actionCollection());*/ +void MainWindow::undo() { + m_commandStack->undo(); } +void MainWindow::redo() { + m_commandStack->redo(); +} + void MainWindow::slotDisplayActionMessage(QAction *a) { statusBar()->showMessage(a->data().toString(), 3000); } @@ -299,7 +308,7 @@ void MainWindow::newFile() { MltVideoProfile prof = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile()); if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal"); - KdenliveDoc *doc = new KdenliveDoc(KUrl(), prof); + KdenliveDoc *doc = new KdenliveDoc(KUrl(), prof, m_commandStack); TrackView *trackView = new TrackView(doc); m_timelineArea->addTab(trackView, KIcon("kdenlive"), i18n("Untitled") + " / " + prof.description); if (m_timelineArea->count() == 1) @@ -364,7 +373,7 @@ //TODO: get video profile from url before opening it MltVideoProfile prof = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile()); if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal"); - KdenliveDoc *doc = new KdenliveDoc(url, prof); + KdenliveDoc *doc = new KdenliveDoc(url, prof, m_commandStack); TrackView *trackView = new TrackView(doc); m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, KIcon("kdenlive"), doc->description())); m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path()); @@ -492,28 +501,12 @@ m_monitorManager->setTimecode(doc->timecode()); doc->setRenderer(m_projectMonitor->render); - //m_undoView->setStack(0); - m_commandStack = doc->commandStack(); + m_commandStack->setActiveStack(doc->commandStack()); m_overView->setScene(trackView->projectScene()); m_overView->scale(m_overView->width() / trackView->duration(), m_overView->height() / (50 * trackView->tracksNumber())); //m_overView->fitInView(m_overView->itemAt(0, 50), Qt::KeepAspectRatio); - QAction *redo = m_commandStack->createRedoAction(actionCollection()); - QAction *undo = m_commandStack->createUndoAction(actionCollection()); - QWidget* w = factory()->container("mainToolBar", this); - if (w) { - if (actionCollection()->action("undo")) - delete actionCollection()->action("undo"); - if (actionCollection()->action("redo")) - delete actionCollection()->action("redo"); - - actionCollection()->addAction("undo", undo); - actionCollection()->addAction("redo", redo); - w->addAction(undo); - w->addAction(redo); - } - m_undoView->setStack(doc->commandStack()); setCaption(doc->description()); m_activeDocument = doc; } Modified: branches/KDE4/src/mainwindow.h =================================================================== --- branches/KDE4/src/mainwindow.h 2008-03-07 13:19:03 UTC (rev 2003) +++ branches/KDE4/src/mainwindow.h 2008-03-07 13:46:17 UTC (rev 2004) @@ -87,9 +87,7 @@ QDockWidget *undoViewDock; QUndoView *m_undoView; - KUndoStack *m_commandStack; - QAction *m_undo; - QAction *m_redo; + QUndoGroup *m_commandStack; KComboBox *m_timecodeFormat; @@ -109,6 +107,8 @@ private slots: void newFile(); + void undo(); + void redo(); void activateDocument(); void closeDocument(QWidget *w); void connectDocument(TrackView*, KdenliveDoc*); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-07 14:08:02
|
Revision: 2005 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2005&view=rev Author: j-b-m Date: 2008-03-07 06:08:06 -0800 (Fri, 07 Mar 2008) Log Message: ----------- Cleanup +?\194?\160fix i18n with args Modified Paths: -------------- branches/KDE4/src/addeffectcommand.cpp branches/KDE4/src/editeffectcommand.cpp branches/KDE4/src/effectslist.cpp branches/KDE4/src/projectlist.cpp Modified: branches/KDE4/src/addeffectcommand.cpp =================================================================== --- branches/KDE4/src/addeffectcommand.cpp 2008-03-07 13:46:17 UTC (rev 2004) +++ branches/KDE4/src/addeffectcommand.cpp 2008-03-07 14:08:06 UTC (rev 2005) @@ -23,8 +23,12 @@ AddEffectCommand::AddEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement effect, bool doIt) : m_view(view), m_track(track), m_pos(pos), m_effect(effect), m_doIt(doIt) { - if (doIt) setText(i18n("Add effect")); - else setText(i18n("Delete effect")); + QString effectName; + QDomNode namenode = effect.elementsByTagName("name").item(0); + if (!namenode.isNull()) effectName = i18n(namenode.toElement().text().toUtf8().data()); + else effectName = i18n("effect"); + if (doIt) setText(i18n("Add %1", effectName)); + else setText(i18n("Delete %1", effectName)); } Modified: branches/KDE4/src/editeffectcommand.cpp =================================================================== --- branches/KDE4/src/editeffectcommand.cpp 2008-03-07 13:46:17 UTC (rev 2004) +++ branches/KDE4/src/editeffectcommand.cpp 2008-03-07 14:08:06 UTC (rev 2005) @@ -24,7 +24,11 @@ EditEffectCommand::EditEffectCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt) : m_view(view), m_track(track), m_pos(pos), m_oldeffect(oldeffect), m_doIt(doIt) { m_effect = effect.cloneNode().toElement(); - setText(i18n("Edit effect")); + QString effectName; + QDomNode namenode = effect.elementsByTagName("name").item(0); + if (!namenode.isNull()) effectName = i18n(namenode.toElement().text().toUtf8().data()); + else effectName = i18n("effect"); + setText(i18n("Edit effect %1", effectName)); } // virtual Modified: branches/KDE4/src/effectslist.cpp =================================================================== --- branches/KDE4/src/effectslist.cpp 2008-03-07 13:46:17 UTC (rev 2004) +++ branches/KDE4/src/effectslist.cpp 2008-03-07 14:08:06 UTC (rev 2005) @@ -36,7 +36,7 @@ effect = this->at(i); QDomNode namenode = effect.elementsByTagName("name").item(0); if (!namenode.isNull()) { - effectName = i18n(qstrdup(namenode.toElement().text().toUtf8())); + effectName = i18n(namenode.toElement().text().toUtf8().data()); if (name == effectName) break; } } @@ -50,7 +50,7 @@ for (int i = 0; i < this->size(); ++i) { QDomElement effect = this->at(i); QDomNode namenode = effect.elementsByTagName("name").item(0); - if (!namenode.isNull()) effectName = i18n(qstrdup(namenode.toElement().text().toUtf8())); + if (!namenode.isNull()) effectName = i18n(namenode.toElement().text().toUtf8().data()); if (name == effectName) { QDomNodeList params = effect.elementsByTagName("parameter"); for (int i = 0; i < params.count(); i++) { @@ -69,7 +69,7 @@ for (int i = 0; i < this->size(); ++i) { QDomElement effect = this->at(i); QDomNode namenode = effect.elementsByTagName("name").item(0); - if (!namenode.isNull()) list.append(i18n(qstrdup(namenode.toElement().text().toUtf8()))); + if (!namenode.isNull()) list.append(i18n(namenode.toElement().text().toUtf8().data())); } return list; } @@ -78,9 +78,9 @@ QString info; QDomElement effect = getEffectByName(effectName); QDomNode namenode = effect.elementsByTagName("description").item(0); - if (!namenode.isNull()) info = i18n(qstrdup(namenode.toElement().text().toUtf8())); + if (!namenode.isNull()) info = i18n(namenode.toElement().text().toUtf8().data()); namenode = effect.elementsByTagName("author").item(0); - if (!namenode.isNull()) info.append(i18n("<br><b>Author:</b> ") + i18n(qstrdup(namenode.toElement().text().toUtf8()))); + if (!namenode.isNull()) info.append(i18n("<br><b>Author:</b> ") + i18n(namenode.toElement().text().toUtf8().data())); return info; } Modified: branches/KDE4/src/projectlist.cpp =================================================================== --- branches/KDE4/src/projectlist.cpp 2008-03-07 13:46:17 UTC (rev 2004) +++ branches/KDE4/src/projectlist.cpp 2008-03-07 14:08:06 UTC (rev 2005) @@ -181,7 +181,7 @@ if (!listView->currentItem()) return; ProjectItem *item = ((ProjectItem *)listView->currentItem()); if (item->numReferences() > 0) { - if (KMessageBox::questionYesNo(this, i18n("Delete clip <b>%1</b> ?<br>This will also remove its %2 clips in timeline").arg(item->names().at(1)).arg(item->numReferences()), i18n("Delete Clip")) != KMessageBox::Yes) return; + if (KMessageBox::questionYesNo(this, i18n("Delete clip <b>%1</b> ?<br>This will also remove its %2 clips in timeline", item->names().at(1), item->numReferences()), i18n("Delete Clip")) != KMessageBox::Yes) return; } m_doc->deleteProjectClip(item->clipId()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2008-03-07 16:03:37
|
Revision: 2007 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2007&view=rev Author: j-b-m Date: 2008-03-07 08:03:43 -0800 (Fri, 07 Mar 2008) Log Message: ----------- Fix crash on document switching Modified Paths: -------------- branches/KDE4/src/mainwindow.cpp branches/KDE4/src/monitor.cpp branches/KDE4/src/monitormanager.cpp branches/KDE4/src/monitormanager.h Modified: branches/KDE4/src/mainwindow.cpp =================================================================== --- branches/KDE4/src/mainwindow.cpp 2008-03-07 14:15:09 UTC (rev 2006) +++ branches/KDE4/src/mainwindow.cpp 2008-03-07 16:03:43 UTC (rev 2007) @@ -160,10 +160,11 @@ connect(projectMonitorDock, SIGNAL(visibilityChanged(bool)), m_projectMonitor, SLOT(refreshMonitor(bool))); connect(clipMonitorDock, SIGNAL(visibilityChanged(bool)), m_clipMonitor, SLOT(refreshMonitor(bool))); - connect(m_monitorManager, SIGNAL(connectMonitors()), this, SLOT(slotConnectMonitors())); + //connect(m_monitorManager, SIGNAL(connectMonitors()), this, SLOT(slotConnectMonitors())); connect(m_monitorManager, SIGNAL(raiseClipMonitor(bool)), this, SLOT(slotRaiseMonitor(bool))); connect(m_effectList, SIGNAL(addEffect(QDomElement)), this, SLOT(slotAddEffect(QDomElement))); m_monitorManager->initMonitors(m_clipMonitor, m_projectMonitor); + slotConnectMonitors(); setAutoSaveSettings(); newFile(); @@ -206,17 +207,11 @@ void MainWindow::slotConnectMonitors() { m_projectList->setRenderer(m_clipMonitor->render); - connect(m_projectList, SIGNAL(clipSelected(const QDomElement &)), m_clipMonitor, SLOT(slotSetXml(const QDomElement &))); - connect(m_projectList, SIGNAL(receivedClipDuration(int, int)), this, SLOT(slotSetClipDuration(int, int))); - connect(m_projectList, SIGNAL(getFileProperties(const QDomElement &, int)), m_clipMonitor->render, SLOT(getFileProperties(const QDomElement &, int))); - connect(m_clipMonitor->render, SIGNAL(replyGetImage(int, int, const QPixmap &, int, int)), m_projectList, SLOT(slotReplyGetImage(int, int, const QPixmap &, int, int))); - connect(m_clipMonitor->render, SIGNAL(replyGetFileProperties(int, const QMap < QString, QString > &, const QMap < QString, QString > &)), m_projectList, SLOT(slotReplyGetFileProperties(int, const QMap < QString, QString > &, const QMap < QString, QString > &))); - } void MainWindow::setupActions() { @@ -478,10 +473,12 @@ disconnect(effectStack, SIGNAL(refreshEffectStack(ClipItem*)), m_activeTimeline->projectView(), SLOT(slotRefreshEffects(ClipItem*))); } m_activeDocument->setRenderer(NULL); + disconnect(m_projectList, SIGNAL(clipSelected(const QDomElement &)), m_clipMonitor, SLOT(slotSetXml(const QDomElement &))); + m_clipMonitor->stop(); } m_monitorManager->resetProfiles(doc->profilePath()); m_projectList->setDocument(doc); - + connect(m_projectList, SIGNAL(clipSelected(const QDomElement &)), m_clipMonitor, SLOT(slotSetXml(const QDomElement &))); connect(trackView, SIGNAL(cursorMoved()), m_projectMonitor, SLOT(activateMonitor())); connect(trackView, SIGNAL(mousePosition(int)), this, SLOT(slotUpdateMousePosition(int))); connect(m_projectMonitor, SIGNAL(renderPosition(int)), trackView, SLOT(moveCursorPos(int))); Modified: branches/KDE4/src/monitor.cpp =================================================================== --- branches/KDE4/src/monitor.cpp 2008-03-07 14:15:09 UTC (rev 2006) +++ branches/KDE4/src/monitor.cpp 2008-03-07 16:03:43 UTC (rev 2007) @@ -150,7 +150,6 @@ void Monitor::initMonitor() { kDebug() << "/////// INITING MONITOR, ID: " << ui.video_frame->winId(); - } // virtual @@ -206,7 +205,6 @@ m_position = 0; } - void Monitor::slotOpenFile(const QString &file) { if (render == NULL) return; if (!m_isActive) m_monitorManager->activateMonitor(m_name); Modified: branches/KDE4/src/monitormanager.cpp =================================================================== --- branches/KDE4/src/monitormanager.cpp 2008-03-07 14:15:09 UTC (rev 2006) +++ branches/KDE4/src/monitormanager.cpp 2008-03-07 16:03:43 UTC (rev 2007) @@ -41,25 +41,9 @@ void MonitorManager::initMonitors(Monitor *clipMonitor, Monitor *projectMonitor) { m_clipMonitor = clipMonitor; m_projectMonitor = projectMonitor; - //QTimer::singleShot(1750, this, SLOT(initClipMonitor())); - initClipMonitor(); - //initProjectMonitor(); } -void MonitorManager::initClipMonitor() { - m_clipMonitor->initMonitor(); - emit connectMonitors(); - //initProjectMonitor(); - //QTimer::singleShot(1500, this, SLOT(initProjectMonitor())); -} -void MonitorManager::initProjectMonitor() { - //m_clipMonitor->stop(); - m_projectMonitor->initMonitor(); - // activateMonitor("project"); - emit connectMonitors(); -} - void MonitorManager::activateMonitor(QString name) { if (m_activeMonitor == name) return; if (name == "clip") { @@ -81,7 +65,7 @@ } void MonitorManager::resetProfiles(QString prof) { - m_clipMonitor->resetProfile(prof); + //m_clipMonitor->resetProfile(prof); m_projectMonitor->resetProfile(prof); } Modified: branches/KDE4/src/monitormanager.h =================================================================== --- branches/KDE4/src/monitormanager.h 2008-03-07 14:15:09 UTC (rev 2006) +++ branches/KDE4/src/monitormanager.h 2008-03-07 16:03:43 UTC (rev 2007) @@ -46,12 +46,7 @@ QString m_activeMonitor; Timecode m_timecode; -private slots: - void initProjectMonitor(); - void initClipMonitor(); - signals: - void connectMonitors(); void raiseClipMonitor(bool); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ble...@us...> - 2008-03-07 19:07:50
|
Revision: 2008 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=2008&view=rev Author: blendamedt Date: 2008-03-07 11:07:55 -0800 (Fri, 07 Mar 2008) Log Message: ----------- paint drag item for transitions Modified Paths: -------------- branches/KDE4/src/clipitem.cpp branches/KDE4/src/customtrackview.cpp branches/KDE4/src/definitions.h Modified: branches/KDE4/src/clipitem.cpp =================================================================== --- branches/KDE4/src/clipitem.cpp 2008-03-07 16:03:43 UTC (rev 2007) +++ branches/KDE4/src/clipitem.cpp 2008-03-07 19:07:55 UTC (rev 2008) @@ -349,6 +349,10 @@ //painter->drawText(rect(), Qt::AlignCenter, m_name); // painter->drawRect(boundingRect()); //painter->drawRoundRect(-10, -10, 20, 20); + painter->setPen(QPen(Qt::black)); + painter->setBrush(QBrush(Qt::yellow)); + painter->drawEllipse(br.x() + 10, br.y() + br.height() / 2 - 5 , 10, 10); + painter->drawEllipse(br.x() + br.width() - 20, br.y() + br.height() / 2 - 5, 10, 10); } @@ -357,6 +361,8 @@ else if (abs(pos.x() - rect().x()) < 6) return RESIZESTART; else if (abs(pos.x() - (rect().x() + rect().width() - scale * m_endFade)) < 6 && abs(pos.y() - rect().y()) < 6) return FADEOUT; else if (abs(pos.x() - (rect().x() + rect().width())) < 6) return RESIZEEND; + else if (abs(pos.x() - (rect().x() + 10)) < 6 && abs(pos.y() - (rect().y() + rect().height() / 2 - 5)) < 6) return TRANSITIONSTART; + else if (abs(pos.x() - (rect().x() + rect().width() - 20)) < 6 && abs(pos.y() - (rect().y() + rect().height() / 2 - 5)) < 6) return TRANSITIONEND; return MOVE; } Modified: branches/KDE4/src/customtrackview.cpp =================================================================== --- branches/KDE4/src/customtrackview.cpp 2008-03-07 16:03:43 UTC (rev 2007) +++ branches/KDE4/src/customtrackview.cpp 2008-03-07 19:07:55 UTC (rev 2008) @@ -251,6 +251,42 @@ m_animationTimer->start(); } setCursor(Qt::PointingHandCursor); + } else if (opMode == TRANSITIONSTART) { + if (m_visualTip == NULL) { + m_visualTip = new QGraphicsEllipseItem(-5, -5 , 10, 10); + ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor); + ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen); + m_visualTip->setZValue(100); + m_animation = new QGraphicsItemAnimation; + m_animation->setItem(m_visualTip); + m_animation->setTimeLine(m_animationTimer); + m_visualTip->setPos(clip->rect().x() + 15, clip->rect().y() + clip->rect().height() / 2); + double scale = 2.0; + m_animation->setScaleAt(.5, scale, scale); + scale = 1.0; + m_animation->setScaleAt(1, scale, scale); + scene()->addItem(m_visualTip); + m_animationTimer->start(); + } + setCursor(Qt::PointingHandCursor); + } else if (opMode == TRANSITIONEND) { + if (m_visualTip == NULL) { + m_visualTip = new QGraphicsEllipseItem(-5, -5 , 10, 10); + ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor); + ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen); + m_visualTip->setZValue(100); + m_animation = new QGraphicsItemAnimation; + m_animation->setItem(m_visualTip); + m_animation->setTimeLine(m_animationTimer); + m_visualTip->setPos(clip->rect().x() + clip->rect().width() - 15 , clip->rect().y() + clip->rect().height() / 2); + double scale = 2.0; + m_animation->setScaleAt(.5, scale, scale); + scale = 1.0; + m_animation->setScaleAt(1, scale, scale); + scene()->addItem(m_visualTip); + m_animationTimer->start(); + } + setCursor(Qt::PointingHandCursor); } } else { m_moveOpMode = NONE; Modified: branches/KDE4/src/definitions.h =================================================================== --- branches/KDE4/src/definitions.h 2008-03-07 16:03:43 UTC (rev 2007) +++ branches/KDE4/src/definitions.h 2008-03-07 19:07:55 UTC (rev 2008) @@ -24,7 +24,7 @@ #define FRAME_SIZE 90 #define MAXCLIPDURATION 15000 -enum OPERATIONTYPE { NONE = 0, MOVE = 1, RESIZESTART = 2, RESIZEEND = 3, FADEIN = 4, FADEOUT = 5}; +enum OPERATIONTYPE { NONE = 0, MOVE = 1, RESIZESTART = 2, RESIZEEND = 3, FADEIN = 4, FADEOUT = 5, TRANSITIONSTART = 6, TRANSITIONEND = 7}; enum CLIPTYPE { UNKNOWN = 0, AUDIO = 1, VIDEO = 2, AV = 3, COLOR = 4, IMAGE = 5, TEXT = 6, SLIDESHOW = 7, VIRTUAL = 8, PLAYLIST = 9}; struct MltVideoProfile { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |