From: <j-...@us...> - 2009-03-07 17:46:24
|
Revision: 3104 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3104&view=rev Author: j-b-m Date: 2009-03-07 17:46:05 +0000 (Sat, 07 Mar 2009) Log Message: ----------- [PATCH by Ray Lehtiniemi] Do not return references to local variables Modified Paths: -------------- trunk/kdenlive/src/docclipbase.cpp trunk/kdenlive/src/docclipbase.h Modified: trunk/kdenlive/src/docclipbase.cpp =================================================================== --- trunk/kdenlive/src/docclipbase.cpp 2009-03-07 17:45:00 UTC (rev 3103) +++ trunk/kdenlive/src/docclipbase.cpp 2009-03-07 17:46:05 UTC (rev 3104) @@ -180,7 +180,7 @@ return m_duration; } -const GenTime &DocClipBase::maxDuration() const { +const GenTime DocClipBase::maxDuration() const { if (m_clipType == COLOR || m_clipType == IMAGE || m_clipType == TEXT || (m_clipType == SLIDESHOW && m_properties.value("loop") == "1")) { const GenTime dur(15000, KdenliveSettings::project_fps()); return dur; Modified: trunk/kdenlive/src/docclipbase.h =================================================================== --- trunk/kdenlive/src/docclipbase.h 2009-03-07 17:45:00 UTC (rev 3103) +++ trunk/kdenlive/src/docclipbase.h 2009-03-07 17:46:05 UTC (rev 3104) @@ -81,7 +81,7 @@ /** returns the duration of this clip */ const GenTime & duration() const; - const GenTime &maxDuration() const; + const GenTime maxDuration() const; /** returns the duration of this clip */ void setDuration(GenTime dur); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-07 17:50:38
|
Revision: 3105 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3105&view=rev Author: j-b-m Date: 2009-03-07 17:50:31 +0000 (Sat, 07 Mar 2009) Log Message: ----------- [PATCH by Ray Lehtiniemi] Do not return references to temporaries. Modified Paths: -------------- trunk/kdenlive/src/docclipbase.cpp trunk/kdenlive/src/docclipbase.h trunk/kdenlive/src/kdenlivedoc.cpp trunk/kdenlive/src/kdenlivedoc.h Modified: trunk/kdenlive/src/docclipbase.cpp =================================================================== --- trunk/kdenlive/src/docclipbase.cpp 2009-03-07 17:46:05 UTC (rev 3104) +++ trunk/kdenlive/src/docclipbase.cpp 2009-03-07 17:50:31 UTC (rev 3105) @@ -120,7 +120,7 @@ return m_audioThumbCreated; } -const QString & DocClipBase::name() const { +const QString DocClipBase::name() const { return m_properties.value("name"); } Modified: trunk/kdenlive/src/docclipbase.h =================================================================== --- trunk/kdenlive/src/docclipbase.h 2009-03-07 17:46:05 UTC (rev 3104) +++ trunk/kdenlive/src/docclipbase.h 2009-03-07 17:50:31 UTC (rev 3105) @@ -59,7 +59,7 @@ virtual ~ DocClipBase(); /** returns the name of this clip. */ - const QString & name() const; + const QString name() const; /** Returns the description of this clip. */ const QString description() const; Modified: trunk/kdenlive/src/kdenlivedoc.cpp =================================================================== --- trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-07 17:46:05 UTC (rev 3104) +++ trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-07 17:50:31 UTC (rev 3105) @@ -1465,7 +1465,7 @@ setModified(true); } -const QString&KdenliveDoc::getFreeClipId() { +const QString KdenliveDoc::getFreeClipId() { return QString::number(m_clipManager->getFreeClipId()); } Modified: trunk/kdenlive/src/kdenlivedoc.h =================================================================== --- trunk/kdenlive/src/kdenlivedoc.h 2009-03-07 17:46:05 UTC (rev 3104) +++ trunk/kdenlive/src/kdenlivedoc.h 2009-03-07 17:50:31 UTC (rev 3105) @@ -83,7 +83,7 @@ const QString description() const; void setUrl(KUrl url); void setProfilePath(QString path); - const QString &getFreeClipId(); + const QString getFreeClipId(); /** does the document need saving */ bool isModified() const; /** Returns project folder, used to store project files (titles, effects,...) */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-07 18:02:48
|
Revision: 3111 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3111&view=rev Author: j-b-m Date: 2009-03-07 18:02:39 +0000 (Sat, 07 Mar 2009) Log Message: ----------- Fix a few more potentially uninitialized uses. Original patch by Ray Lehtiniemi, with some adjusted values Modified Paths: -------------- trunk/kdenlive/src/effectstackedit.cpp trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/effectstackedit.cpp =================================================================== --- trunk/kdenlive/src/effectstackedit.cpp 2009-03-07 17:55:55 UTC (rev 3110) +++ trunk/kdenlive/src/effectstackedit.cpp 2009-03-07 18:02:39 UTC (rev 3111) @@ -286,7 +286,7 @@ else if (start.startsWith("100%,0")) info.start = RIGHT; else if (start.startsWith("0%,100%")) info.start = DOWN; else if (start.startsWith("0%,-100%")) info.start = UP; - else if (start.startsWith("0%,0%")) info.start = CENTER; + else info.start = CENTER; if (start.count(':') == 2) info.startTransparency = start.section(':', -1).toInt(); else info.startTransparency = 100; @@ -294,7 +294,7 @@ else if (end.startsWith("100%,0")) info.end = RIGHT; else if (end.startsWith("0%,100%")) info.end = DOWN; else if (end.startsWith("0%,-100%")) info.end = UP; - else if (end.startsWith("0%,0%")) info.end = CENTER; + else info.end = CENTER; if (end.count(':') == 2) info.endTransparency = end.section(':', -1).toInt(); else info.endTransparency = 100; return info; @@ -398,12 +398,14 @@ else if (wp->start_up->isChecked()) info.start = UP; else if (wp->start_down->isChecked()) info.start = DOWN; else if (wp->start_center->isChecked()) info.start = CENTER; + else info.start = LEFT; info.startTransparency = wp->start_transp->value(); if (wp->end_left->isChecked()) info.end = LEFT; else if (wp->end_right->isChecked()) info.end = RIGHT; else if (wp->end_up->isChecked()) info.end = UP; else if (wp->end_down->isChecked()) info.end = DOWN; else if (wp->end_center->isChecked()) info.end = CENTER; + else info.end = RIGHT; info.endTransparency = wp->end_transp->value(); setValue = getWipeString(info); } Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-03-07 17:55:55 UTC (rev 3110) +++ trunk/kdenlive/src/renderer.cpp 2009-03-07 18:02:39 UTC (rev 3111) @@ -428,6 +428,7 @@ tmp = "0,50%:50%x50%"; break; case 3: + default: tmp = "50%,50%:50%x50%"; break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-07 18:06:12
|
Revision: 3112 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3112&view=rev Author: j-b-m Date: 2009-03-07 18:06:02 +0000 (Sat, 07 Mar 2009) Log Message: ----------- [PATCH by Ray Lehtiniem] Delete some unused variables Modified Paths: -------------- trunk/kdenlive/src/abstractclipitem.cpp trunk/kdenlive/src/abstractgroupitem.cpp trunk/kdenlive/src/clipitem.cpp trunk/kdenlive/src/customtrackview.cpp trunk/kdenlive/src/docclipbase.cpp trunk/kdenlive/src/geometryval.cpp trunk/kdenlive/src/graphicsscenerectmove.cpp trunk/kdenlive/src/initeffects.cpp trunk/kdenlive/src/kdenlivedoc.cpp trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/parameterplotter.cpp trunk/kdenlive/src/projectlist.cpp trunk/kdenlive/src/projectlistview.cpp trunk/kdenlive/src/renderer.cpp trunk/kdenlive/src/titledocument.cpp trunk/kdenlive/src/trackview.cpp Modified: trunk/kdenlive/src/abstractclipitem.cpp =================================================================== --- trunk/kdenlive/src/abstractclipitem.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/abstractclipitem.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -191,7 +191,6 @@ int br_startx = (int)(br.x() + offset); int br_starty = (int)(br.y()); int br_halfy = (int)(br.y() + br.height() / 2 - offset); - int br_endy = (int)(br.y() + br.height()); roundRectPathUpper.moveTo(br_endx , br_halfy); roundRectPathUpper.arcTo(br_endx - roundingX , br_starty , roundingX, roundingY, 0.0, 90.0); @@ -210,7 +209,6 @@ int br_endx = (int)(br.x() + br .width() - offset); int br_startx = (int)(br.x() + offset); - int br_starty = (int)(br.y()); int br_halfy = (int)(br.y() + br.height() / 2 - offset); int br_endy = (int)(br.y() + br.height() - 1); Modified: trunk/kdenlive/src/abstractgroupitem.cpp =================================================================== --- trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -130,7 +130,6 @@ else { bool forwardMove = newPos.x() > start.x(); int offset = 0; - const double width = sceneBoundingRect().width() + 1; for (int i = 0; i < collindingItems.count(); i++) { QGraphicsItem *collision = collindingItems.at(i); if (collision->type() == AVWIDGET) { Modified: trunk/kdenlive/src/clipitem.cpp =================================================================== --- trunk/kdenlive/src/clipitem.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/clipitem.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -337,8 +337,6 @@ QString keyframes; if (m_keyframes.count() > 1) { QMap<int, double>::const_iterator i = m_keyframes.constBegin(); - double x1; - double y1; while (i != m_keyframes.constEnd()) { keyframes.append(QString::number(i.key()) + ':' + QString::number(i.value()) + ';'); ++i; @@ -629,7 +627,6 @@ QList < CommentedTime >::Iterator it = markers.begin(); GenTime pos; double framepos; - const int markerwidth = 4; QBrush markerBrush; markerBrush = QBrush(QColor(120, 120, 0, 140)); QPen pen = painter->pen(); @@ -800,7 +797,6 @@ QList < GenTime > snaps; QList < GenTime > markers = baseClip()->snapMarkers(); GenTime pos; - double framepos; for (int i = 0; i < markers.size(); i++) { pos = markers.at(i) - cropStart(); @@ -816,7 +812,6 @@ QList < CommentedTime > snaps; QList < CommentedTime > markers = baseClip()->commentedSnapMarkers(); GenTime pos; - double framepos; for (int i = 0; i < markers.size(); i++) { pos = markers.at(i).time() - cropStart(); Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/customtrackview.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -1878,8 +1878,6 @@ m_dragItem = NULL; return; } else if (m_operationMode == SPACER) { - int endClick = (int)(mapToScene(event->pos()).x() + 0.5); - int mappedClick = (int)(mapToScene(m_clickEvent).x() + 0.5); int track = (int)(mapToScene(m_clickEvent).y() / m_tracksHeight); if (m_selectionGroup->sceneBoundingRect().height() > m_tracksHeight) { // We are moving all tracks Modified: trunk/kdenlive/src/docclipbase.cpp =================================================================== --- trunk/kdenlive/src/docclipbase.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/docclipbase.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -416,7 +416,6 @@ }*/ if (track == -1 || (m_clipType != AUDIO && m_clipType != AV)) { if (m_baseTrackProducers.count() == 0) return NULL; - int i; for (int i = 0; i < m_baseTrackProducers.count(); i++) { if (m_baseTrackProducers.at(i) != NULL) return m_baseTrackProducers.at(i); Modified: trunk/kdenlive/src/geometryval.cpp =================================================================== --- trunk/kdenlive/src/geometryval.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/geometryval.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -45,7 +45,6 @@ scene = new GraphicsSceneRectMove(this); scene->setTool(TITLE_SELECT); view->setScene(scene); - double aspect = (double) profile.sample_aspect_num / profile.sample_aspect_den * profile.width / profile.height; QGraphicsRectItem *m_frameBorder = new QGraphicsRectItem(QRectF(0, 0, profile.width, profile.height)); m_frameBorder->setZValue(-1100); m_frameBorder->setBrush(QColor(255, 255, 0, 30)); Modified: trunk/kdenlive/src/graphicsscenerectmove.cpp =================================================================== --- trunk/kdenlive/src/graphicsscenerectmove.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/graphicsscenerectmove.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -365,7 +365,6 @@ void GraphicsSceneRectMove::wheelEvent(QGraphicsSceneWheelEvent * wheelEvent) { QList<QGraphicsView*> viewlist = views(); //kDebug() << wheelEvent->delta() << " " << zoom; - double scale = 1.0; if (viewlist.size() > 0) { if (wheelEvent->delta() < 0) emit sceneZoom(true); else emit sceneZoom(false); Modified: trunk/kdenlive/src/initeffects.cpp =================================================================== --- trunk/kdenlive/src/initeffects.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/initeffects.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -271,7 +271,6 @@ // Parse effect file if ((filtersList.contains(tag) || producersList.contains(tag)) && ladspaOk) { - bool isAudioEffect = false; QString type = documentElement.attribute("type", QString()); if (type == "audio") audioEffectList->append(documentElement); else if (type == "custom") customEffectList->append(documentElement); Modified: trunk/kdenlive/src/kdenlivedoc.cpp =================================================================== --- trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -1260,7 +1260,6 @@ void KdenliveDoc::addClip(QDomElement elem, QString clipId, bool createClipItem) { const QString producerId = clipId.section('_', 0, 0); - int subtrack = clipId.section('_', 1, 1).toInt(); DocClipBase *clip = m_clipManager->getClipById(producerId); if (clip == NULL) { /*kDebug()<<"// CLIP "<<clipId<<" NOT OFUND in LIST, CREATING"; Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/mainwindow.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -2282,7 +2282,6 @@ void MainWindow::slotGetNewLumaStuff() { //KNS::Entry::List download(); KNS::Entry::List entries = KNS::Engine::download(); - int numberInstalled = 0; // list of changed entries kDebug() << "// PARSING KNS"; foreach(KNS::Entry* entry, entries) { Modified: trunk/kdenlive/src/parameterplotter.cpp =================================================================== --- trunk/kdenlive/src/parameterplotter.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/parameterplotter.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -169,7 +169,7 @@ if (movepoint != NULL) { QList<KPlotPoint*> list = pointsUnderPoint(event->pos() - QPoint(leftPadding(), topPadding())) ; - int i = 0, j = -1; + int i = 0; foreach(KPlotObject *o, plotObjects()) { QList<KPlotPoint*> points = o->points(); for (int p = 0;p < points.size();p++) { Modified: trunk/kdenlive/src/projectlist.cpp =================================================================== --- trunk/kdenlive/src/projectlist.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/projectlist.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -57,7 +57,6 @@ ProjectList::ProjectList(QWidget *parent) : QWidget(parent), m_render(NULL), m_fps(-1), m_commandStack(NULL), m_selectedItem(NULL), m_infoQueue(QMap <QString, QDomElement> ()), m_thumbnailQueue(QList <QString> ()), m_refreshed(false), m_editAction(NULL), m_openAction(NULL), m_deleteAction(NULL), m_reloadAction(NULL) { - QWidget *vbox = new QWidget; listView = new ProjectListView(this);; QVBoxLayout *layout = new QVBoxLayout; layout->setContentsMargins(0, 0, 0, 0); Modified: trunk/kdenlive/src/projectlistview.cpp =================================================================== --- trunk/kdenlive/src/projectlistview.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/projectlistview.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -68,7 +68,6 @@ QHeaderView* headerView = header(); for (int i = 2; i < headerView->count(); ++i) { - const int logicalIndex = headerView->logicalIndex(i); const QString text = model()->headerData(i, Qt::Horizontal).toString(); QAction* action = popup.addAction(text); action->setCheckable(true); Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/renderer.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -533,7 +533,6 @@ delete[] tmp; int frameNumber = xml.attribute("thumbnail", "0").toInt(); if (frameNumber != 0) producer->seek(frameNumber); - mlt_properties properties = MLT_PRODUCER_PROPERTIES(producer->get_producer()); filePropertyMap["duration"] = QString::number(producer->get_playtime()); //kDebug() << "/////// PRODUCER: " << url.path() << " IS: " << producer.get_playtime(); @@ -2388,7 +2387,6 @@ Mlt::Service service(m_mltProducer->parent().get_service()); Mlt::Tractor tractor(service); - Mlt::Field *field = tractor.field(); mlt_service_lock(service.get_service()); m_mltConsumer->set("refresh", 0); @@ -2445,7 +2443,6 @@ m_isBlocked = true; Mlt::Service service(m_mltProducer->parent().get_service()); Mlt::Tractor tractor(service); - Mlt::Field *field = tractor.field(); //m_mltConsumer->set("refresh", 0); mlt_service serv = m_mltProducer->parent().get_service(); @@ -2623,7 +2620,6 @@ void Render::mltResizeTransparency(int oldStart, int newStart, int newEnd, int track, int id) { Mlt::Service service(m_mltProducer->parent().get_service()); Mlt::Tractor tractor(service); - Mlt::Field *field = tractor.field(); mlt_service_lock(service.get_service()); m_mltConsumer->set("refresh", 0); @@ -2662,7 +2658,6 @@ void Render::mltMoveTransparency(int startTime, int endTime, int startTrack, int endTrack, int id) { Mlt::Service service(m_mltProducer->parent().get_service()); Mlt::Tractor tractor(service); - Mlt::Field *field = tractor.field(); mlt_service_lock(service.get_service()); m_mltConsumer->set("refresh", 0); Modified: trunk/kdenlive/src/titledocument.cpp =================================================================== --- trunk/kdenlive/src/titledocument.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/titledocument.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -155,7 +155,6 @@ int TitleDocument::loadDocument(const KUrl& url, QGraphicsPolygonItem* startv, QGraphicsPolygonItem* endv) { QString tmpfile; QDomDocument doc; - double aspect_ratio = 4.0 / 3.0; if (!scene) return -1; Modified: trunk/kdenlive/src/trackview.cpp =================================================================== --- trunk/kdenlive/src/trackview.cpp 2009-03-07 18:02:39 UTC (rev 3111) +++ trunk/kdenlive/src/trackview.cpp 2009-03-07 18:06:02 UTC (rev 3112) @@ -374,7 +374,6 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool locked) { - int trackTop = KdenliveSettings::trackheight() * ix; // parse track int position = 0; for (QDomNode n = xml.firstChild(); !n.isNull(); n = n.nextSibling()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-07 18:07:14
|
Revision: 3113 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3113&view=rev Author: j-b-m Date: 2009-03-07 18:07:09 +0000 (Sat, 07 Mar 2009) Log Message: ----------- [PATCH by Ray Lehtiniemi] Comment out variables used only in commented out code Modified Paths: -------------- trunk/kdenlive/src/abstractgroupitem.cpp trunk/kdenlive/src/clipitem.cpp trunk/kdenlive/src/renderer.cpp trunk/kdenlive/src/trackview.cpp trunk/kdenlive/src/transition.cpp Modified: trunk/kdenlive/src/abstractgroupitem.cpp =================================================================== --- trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-07 18:06:02 UTC (rev 3112) +++ trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-07 18:07:09 UTC (rev 3113) @@ -89,7 +89,7 @@ newPos.setX(xpos); QPointF start = pos(); - int startTrack = (start.y() + trackHeight / 2) / trackHeight; + //int startTrack = (start.y() + trackHeight / 2) / trackHeight; int newTrack = (newPos.y()) / trackHeight; //kDebug()<<"// GROUP NEW T:"<<newTrack<<",START T:"<<startTrack<<",MAX:"<<projectScene()->tracksCount() - 1; newTrack = qMin(newTrack, projectScene()->tracksCount() - (int)(boundingRect().height() + 5) / trackHeight); Modified: trunk/kdenlive/src/clipitem.cpp =================================================================== --- trunk/kdenlive/src/clipitem.cpp 2009-03-07 18:06:02 UTC (rev 3112) +++ trunk/kdenlive/src/clipitem.cpp 2009-03-07 18:07:09 UTC (rev 3113) @@ -1384,7 +1384,7 @@ } void ClipItem::addTransition(Transition* t) { m_transitionsList.append(t); - CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; + //CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; QDomDocument doc; QDomElement e = doc.documentElement(); //if (view) view->slotAddTransition(this, t->toXML() , t->startPos(), track()); Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-03-07 18:06:02 UTC (rev 3112) +++ trunk/kdenlive/src/renderer.cpp 2009-03-07 18:07:09 UTC (rev 3113) @@ -940,7 +940,7 @@ if (!m_mltProducer) return; //m_mltConsumer->set("refresh", 0); - mlt_properties properties = MLT_PRODUCER_PROPERTIES(m_mltProducer->get_producer()); + //mlt_properties properties = MLT_PRODUCER_PROPERTIES(m_mltProducer->get_producer()); /*if (KdenliveSettings::osdtimecode()) { mlt_properties_set_int( properties, "meta.attr.timecode", 1); mlt_properties_set( properties, "meta.attr.timecode.markup", "#timecode#"); @@ -1221,8 +1221,8 @@ return; } - int height = 1080;//KdenliveSettings::defaultheight(); - int width = 1940; //KdenliveSettings::displaywidth(); + //int height = 1080;//KdenliveSettings::defaultheight(); + //int width = 1940; //KdenliveSettings::displaywidth(); //TODO: rewrite QPixmap pix; // = KThumb::getFrame(m_mltProducer, -1, width, height); /* @@ -1576,7 +1576,7 @@ Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service()); - int clipNb = trackPlaylist.count(); + //int clipNb = trackPlaylist.count(); insertPos = trackClipStartList.value(trackNb - 1); if (insertPos != -1) { insertPos += offset; @@ -1833,7 +1833,7 @@ char *endtag = decodedString(params.paramValue("endtag", "end")); kDebug() << "// ADDING KEYFRAME TAGS: " << starttag << ", " << endtag; int duration = clip->get_playtime(); - double max = params.paramValue("max").toDouble(); + //double max = params.paramValue("max").toDouble(); double min = params.paramValue("min").toDouble(); double factor = params.paramValue("factor", "1").toDouble(); params.removeParam("starttag"); Modified: trunk/kdenlive/src/trackview.cpp =================================================================== --- trunk/kdenlive/src/trackview.cpp 2009-03-07 18:06:02 UTC (rev 3112) +++ trunk/kdenlive/src/trackview.cpp 2009-03-07 18:07:09 UTC (rev 3113) @@ -120,7 +120,7 @@ } void TrackView::parseDocument(QDomDocument doc) { - int cursorPos = 0; + //int cursorPos = 0; m_documentErrors.clear(); // kDebug() << "//// DOCUMENT: " << doc.toString(); /*QDomNode props = doc.elementsByTagName("properties").item(0); Modified: trunk/kdenlive/src/transition.cpp =================================================================== --- trunk/kdenlive/src/transition.cpp 2009-03-07 18:06:02 UTC (rev 3112) +++ trunk/kdenlive/src/transition.cpp 2009-03-07 18:07:09 UTC (rev 3113) @@ -154,7 +154,7 @@ painter->fillRect(exposed, brush()); - int top = (int)(br.y() + br.height() / 2 - 7); + //int top = (int)(br.y() + br.height() / 2 - 7); QPointF p1(br.x(), br.y() + br.height() / 2 - 7); painter->setMatrixEnabled(false); //painter->drawPixmap(painter->matrix().map(p1) + QPointF(5, 0), transitionPixmap()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-07 18:08:13
|
Revision: 3114 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3114&view=rev Author: j-b-m Date: 2009-03-07 18:08:04 +0000 (Sat, 07 Mar 2009) Log Message: ----------- [PATCH by Ray Lehtiniemi] Remove unneeded temporary variables Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp trunk/kdenlive/src/monitor.cpp trunk/kdenlive/src/projectlistview.cpp trunk/kdenlive/src/renderwidget.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-03-07 18:07:09 UTC (rev 3113) +++ trunk/kdenlive/src/customtrackview.cpp 2009-03-07 18:08:04 UTC (rev 3114) @@ -3073,7 +3073,7 @@ QUndoCommand *deleteAll = new QUndoCommand(); deleteAll->setText("Delete all guides"); for (int i = 0; i < m_guides.count(); i++) { - EditGuideCommand *command = new EditGuideCommand(this, m_guides.at(i)->position(), m_guides.at(i)->label(), GenTime(), QString(), true, deleteAll); + new EditGuideCommand(this, m_guides.at(i)->position(), m_guides.at(i)->label(), GenTime(), QString(), true, deleteAll); } m_commandStack->push(deleteAll); } Modified: trunk/kdenlive/src/monitor.cpp =================================================================== --- trunk/kdenlive/src/monitor.cpp 2009-03-07 18:07:09 UTC (rev 3113) +++ trunk/kdenlive/src/monitor.cpp 2009-03-07 18:08:04 UTC (rev 3114) @@ -57,8 +57,8 @@ m_playIcon = KIcon("media-playback-start"); m_pauseIcon = KIcon("media-playback-pause"); - QAction *zoneStart = toolbar->addAction(KIcon("kdenlive-zone-start"), i18n("Set zone start"), this, SLOT(slotSetZoneStart())); - QAction *zoneEnd = toolbar->addAction(KIcon("kdenlive-zone-end"), i18n("Set zone end"), this, SLOT(slotSetZoneEnd())); + toolbar->addAction(KIcon("kdenlive-zone-start"), i18n("Set zone start"), this, SLOT(slotSetZoneStart())); + toolbar->addAction(KIcon("kdenlive-zone-end"), i18n("Set zone end"), this, SLOT(slotSetZoneEnd())); toolbar->addAction(KIcon("media-seek-backward"), i18n("Rewind"), this, SLOT(slotRewind())); toolbar->addAction(KIcon("media-skip-backward"), i18n("Rewind 1 frame"), this, SLOT(slotRewindOneFrame())); Modified: trunk/kdenlive/src/projectlistview.cpp =================================================================== --- trunk/kdenlive/src/projectlistview.cpp 2009-03-07 18:07:09 UTC (rev 3113) +++ trunk/kdenlive/src/projectlistview.cpp 2009-03-07 18:08:04 UTC (rev 3114) @@ -239,7 +239,7 @@ drag->setMimeData(mimeData); drag->setPixmap(clickItem->icon(0).pixmap(iconSize())); drag->setHotSpot(QPoint(0, 50)); - Qt::DropAction dropAction = drag->exec(Qt::MoveAction); + drag->exec(Qt::MoveAction); } //event->accept(); } Modified: trunk/kdenlive/src/renderwidget.cpp =================================================================== --- trunk/kdenlive/src/renderwidget.cpp 2009-03-07 18:07:09 UTC (rev 3113) +++ trunk/kdenlive/src/renderwidget.cpp 2009-03-07 18:08:04 UTC (rev 3114) @@ -1103,7 +1103,7 @@ emit openDvdWizard(item->text(1), item->data(0, Qt::UserRole + 1).toString()); } else if (itemGroup == "websites") { QString url = item->data(0, Qt::UserRole + 1).toString(); - if (!url.isEmpty()) KRun *openBrowser = new KRun(url, this); + if (!url.isEmpty()) new KRun(url, this); } } else if (status == -2) { // Rendering crashed This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-08 11:50:27
|
Revision: 3119 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3119&view=rev Author: j-b-m Date: 2009-03-08 11:50:25 +0000 (Sun, 08 Mar 2009) Log Message: ----------- Fix display of clip duration in project tree + some cleanup + indent fixes Modified Paths: -------------- trunk/kdenlive/src/docclipbase.cpp trunk/kdenlive/src/kdenlivedoc.cpp trunk/kdenlive/src/projectitem.cpp trunk/kdenlive/src/projectlist.cpp trunk/kdenlive/src/renderer.cpp trunk/kdenlive/src/renderwidget.cpp trunk/kdenlive/src/slideshowclip.cpp trunk/kdenlive/src/timecode.h Modified: trunk/kdenlive/src/docclipbase.cpp =================================================================== --- trunk/kdenlive/src/docclipbase.cpp 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/docclipbase.cpp 2009-03-08 11:50:25 UTC (rev 3119) @@ -38,13 +38,15 @@ KUrl url = KUrl(xml.attribute("resource")); if (!m_properties.contains("file_hash") && !url.isEmpty()) getFileHash(url.path()); - int out = xml.attribute("out").toInt(); - if (out != 0) { - setDuration(GenTime(out, KdenliveSettings::project_fps())); + + if (xml.hasAttribute("duration")) { + setDuration(GenTime(xml.attribute("duration").toInt(), KdenliveSettings::project_fps())); } else { - out = xml.attribute("duration").toInt(); - if (out != 0) setDuration(GenTime(out, KdenliveSettings::project_fps())); + int out = xml.attribute("out").toInt(); + int in = xml.attribute("in").toInt(); + setDuration(GenTime(out - in, KdenliveSettings::project_fps())); } + if (!m_properties.contains("name")) m_properties.insert("name", url.fileName()); //if (!url.isEmpty() && QFile::exists(url.path())) Modified: trunk/kdenlive/src/kdenlivedoc.cpp =================================================================== --- trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-08 11:50:25 UTC (rev 3119) @@ -85,10 +85,6 @@ } m_startPos = infoXml.attribute("position").toInt(); m_zoom = infoXml.attribute("zoom", "7").toInt(); - - - - m_zoneEnd = infoXml.attribute("zoneout", "100").toInt(); setProfilePath(profilePath); @@ -113,7 +109,6 @@ westley.removeChild(tracksinfo); } - QDomElement orig; QDomNodeList producers = m_document.elementsByTagName("producer"); QDomNodeList infoproducers = m_document.elementsByTagName("kdenlive_producer"); const int max = producers.count(); @@ -142,7 +137,7 @@ if (!e.isNull() && prodId != "black" && !prodId.startsWith("slowmotion") && !m_abortLoading) { e.setTagName("producer"); // Get MLT's original producer properties - + QDomElement orig; for (int j = 0; j < max; j++) { QDomElement o = producers.item(j).cloneNode().toElement(); QString origId = o.attribute("id").section('_', 0, 0); @@ -1262,10 +1257,6 @@ const QString producerId = clipId.section('_', 0, 0); DocClipBase *clip = m_clipManager->getClipById(producerId); if (clip == NULL) { - /*kDebug()<<"// CLIP "<<clipId<<" NOT OFUND in LIST, CREATING"; - QDomDocument doc; - doc.appendChild(doc.importNode(elem, true)); - kDebug() << "IMPORTED CLIP: \n" << doc.toString()<<"\n";*/ elem.setAttribute("id", producerId); QString path = elem.attribute("resource"); QString extension; @@ -1273,7 +1264,7 @@ extension = KUrl(path).fileName(); path = KUrl(path).directory(); } - if (!QFile::exists(path) && elem.attribute("type").toInt() == TEXT) { + if (elem.attribute("type").toInt() == TEXT && !QFile::exists(path)) { kDebug() << "// TITLE: " << elem.attribute("titlename") << " Preview file: " << elem.attribute("resource") << " DOES NOT EXIST"; QString titlename = elem.attribute("titlename"); QString titleresource; @@ -1343,6 +1334,7 @@ clip = new DocClipBase(m_clipManager, elem, producerId); m_clipManager->addClip(clip); } + if (createClipItem) { emit addProjectClip(clip); qApp->processEvents(); @@ -1434,7 +1426,7 @@ m = m.nextSibling(); } if (!meta.isEmpty()) { - clip = m_clipManager->getClipById(clipId); + if (clip == NULL) clip = m_clipManager->getClipById(clipId); if (clip) clip->setMetadata(meta); } } Modified: trunk/kdenlive/src/projectitem.cpp =================================================================== --- trunk/kdenlive/src/projectitem.cpp 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/projectitem.cpp 2009-03-08 11:50:25 UTC (rev 3119) @@ -56,6 +56,8 @@ setText(1, name); setText(2, m_clip->description()); if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); + GenTime duration = m_clip->duration(); + if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); //setFlags(Qt::NoItemFlags); //kDebug() << "Constructed with clipId: " << m_clipId; } @@ -72,6 +74,8 @@ setText(1, name); setText(2, m_clip->description()); if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); + GenTime duration = m_clip->duration(); + if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); //setFlags(Qt::NoItemFlags); //kDebug() << "Constructed with clipId: " << m_clipId; } @@ -199,9 +203,7 @@ if (m_clip == NULL) return; //setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); if (attributes.contains("duration")) { - //if (m_clipType == AUDIO || m_clipType == VIDEO || m_clipType == AV) - //m_clip->setProperty("duration", attributes["duration"]); - GenTime duration = GenTime(attributes["duration"].toInt(), KdenliveSettings::project_fps()); + GenTime duration = GenTime(attributes.value("duration").toInt(), KdenliveSettings::project_fps()); setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); m_clip->setDuration(duration); //kDebug() << "//// LOADED CLIP, DURATIONÂ SET TO: " << duration.frames(KdenliveSettings::project_fps()); @@ -213,18 +215,13 @@ //extend attributes -reh if (m_clipType == UNKNOWN) { - if (attributes.contains("type")) { - if (attributes["type"] == "audio") - m_clipType = AUDIO; - else if (attributes["type"] == "video") - m_clipType = VIDEO; - else if (attributes["type"] == "av") - m_clipType = AV; - else if (attributes["type"] == "playlist") - m_clipType = PLAYLIST; - } else { - m_clipType = AV; - } + QString cliptype = attributes.value("type"); + if (cliptype == "audio") m_clipType = AUDIO; + else if (cliptype == "video") m_clipType = VIDEO; + else if (cliptype == "av") m_clipType = AV; + else if (cliptype == "playlist") m_clipType = PLAYLIST; + else m_clipType = AV; + m_clip->setClipType(m_clipType); slotSetToolTip(); } @@ -234,10 +231,10 @@ if (m_clip->description().isEmpty()) { if (metadata.contains("description")) { - m_clip->setProperty("description", metadata["description"]); + m_clip->setProperty("description", metadata.value("description")); setText(2, m_clip->description()); } else if (metadata.contains("comment")) { - m_clip->setProperty("description", metadata["comment"]); + m_clip->setProperty("description", metadata.value("comment")); setText(2, m_clip->description()); } } Modified: trunk/kdenlive/src/projectlist.cpp =================================================================== --- trunk/kdenlive/src/projectlist.cpp 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/projectlist.cpp 2009-03-08 11:50:25 UTC (rev 3119) @@ -356,8 +356,8 @@ void ProjectList::slotDeleteClip(const QString &clipId) { ProjectItem *item = getItemById(clipId); if (!item) { - kDebug()<<"/// Cannot find clip to delete"; - return; + kDebug() << "/// Cannot find clip to delete"; + return; } delete item; } @@ -517,9 +517,12 @@ item->setIcon(0, QPixmap(cachedPixmap)); listView->blockSignals(false); } else requestClipThumbnail(item->clipId()); - listView->blockSignals(true); - item->changeDuration(item->referencedClip()->producer()->get_playtime()); - listView->blockSignals(false); + + if (item->data(1, DurationRole).toString().isEmpty()) { + listView->blockSignals(true); + item->changeDuration(item->referencedClip()->producer()->get_playtime()); + listView->blockSignals(false); + } } listView->blockSignals(true); item->setData(1, UsageRole, QString::number(item->numReferences())); @@ -595,7 +598,7 @@ } m_doc->clipManager()->slotAddColorClipFile(dia_ui->clip_name->text(), color, dia_ui->clip_duration->text(), group, groupId); - m_doc->setModified(true); + m_doc->setModified(true); } delete dia_ui; delete dia; @@ -622,8 +625,8 @@ groupId = item->clipId(); } - m_doc->clipManager()->slotAddSlideshowClipFile(dia->clipName(), dia->selectedPath(), dia->imageCount(), dia->clipDuration(), dia->loop(), dia->fade(), dia->lumaDuration(), dia->lumaFile(), dia->softness(), group, groupId); - m_doc->setModified(true); + m_doc->clipManager()->slotAddSlideshowClipFile(dia->clipName(), dia->selectedPath(), dia->imageCount(), dia->clipDuration(), dia->loop(), dia->fade(), dia->lumaDuration(), dia->lumaFile(), dia->softness(), group, groupId); + m_doc->setModified(true); } delete dia; } Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/renderer.cpp 2009-03-08 11:50:25 UTC (rev 3119) @@ -463,15 +463,10 @@ } void Render::getFileProperties(const QDomElement &xml, const QString &clipId, bool replaceProducer) { - int height = 50; - int width = (int)(height * m_mltProfile->dar()); - QMap < QString, QString > filePropertyMap; - QMap < QString, QString > metadataPropertyMap; - KUrl url = KUrl(xml.attribute("resource", QString())); Mlt::Producer *producer = NULL; if (xml.attribute("type").toInt() == TEXT && !QFile::exists(url.path())) { - emit replyGetFileProperties(clipId, producer, filePropertyMap, metadataPropertyMap, replaceProducer); + emit replyGetFileProperties(clipId, producer, QMap < QString, QString >(), QMap < QString, QString >(), replaceProducer); return; } if (xml.attribute("type").toInt() == COLOR) { @@ -489,35 +484,9 @@ producer = new Mlt::Producer(*m_mltProfile, "westley-xml", tmp); delete[] tmp; } else { - QString urlpath = url.path(); - /*if (urlpath.contains(':')) { - if (!urlpath.startsWith("file:")) urlpath.prepend("file:"); - char *tmp = decodedString(urlpath); - producer = new Mlt::Producer(*m_mltProfile, "avformat", tmp); - delete[] tmp; - } - else {*/ - char *tmp = decodedString(urlpath); + char *tmp = decodedString(url.path()); producer = new Mlt::Producer(*m_mltProfile, tmp); delete[] tmp; - - if (xml.hasAttribute("force_aspect_ratio")) { - double aspect = xml.attribute("force_aspect_ratio").toDouble(); - if (aspect > 0) producer->set("force_aspect_ratio", aspect); - } - if (xml.hasAttribute("threads")) { - int threads = xml.attribute("threads").toInt(); - if (threads != 1) producer->set("threads", threads); - } - if (xml.hasAttribute("video_index")) { - int vindex = xml.attribute("video_index").toInt(); - if (vindex != 0) producer->set("video_index", vindex); - } - if (xml.hasAttribute("audio_index")) { - int aindex = xml.attribute("audio_index").toInt(); - if (aindex != 0) producer->set("audio_index", aindex); - } - //} } if (producer == NULL || producer->is_blank() || !producer->is_valid()) { @@ -526,11 +495,34 @@ return; } + if (xml.hasAttribute("force_aspect_ratio")) { + double aspect = xml.attribute("force_aspect_ratio").toDouble(); + if (aspect > 0) producer->set("force_aspect_ratio", aspect); + } + if (xml.hasAttribute("threads")) { + int threads = xml.attribute("threads").toInt(); + if (threads != 1) producer->set("threads", threads); + } + if (xml.hasAttribute("video_index")) { + int vindex = xml.attribute("video_index").toInt(); + if (vindex != 0) producer->set("video_index", vindex); + } + if (xml.hasAttribute("audio_index")) { + int aindex = xml.attribute("audio_index").toInt(); + if (aindex != 0) producer->set("audio_index", aindex); + } + if (xml.hasAttribute("out")) producer->set_in_and_out(xml.attribute("in").toInt(), xml.attribute("out").toInt()); char *tmp = decodedString(clipId); producer->set("id", tmp); delete[] tmp; + + int height = 50; + int width = (int)(height * m_mltProfile->dar()); + QMap < QString, QString > filePropertyMap; + QMap < QString, QString > metadataPropertyMap; + int frameNumber = xml.attribute("thumbnail", "0").toInt(); if (frameNumber != 0) producer->seek(frameNumber); @@ -2786,7 +2778,7 @@ QString id = nprod->get("id"); if (id.startsWith("slowmotion:")) { // this is a slowmotion producer, add it to the list - QString url = QString::fromUtf8(nprod->get("resource")); + QString url = QString::fromUtf8(nprod->get("resource")); if (!m_slowmotionProducers.contains(url)) { m_slowmotionProducers.insert(url, nprod); } Modified: trunk/kdenlive/src/renderwidget.cpp =================================================================== --- trunk/kdenlive/src/renderwidget.cpp 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/renderwidget.cpp 2009-03-08 11:50:25 UTC (rev 3119) @@ -859,7 +859,7 @@ // can also override profiles installed by KNewStuff fileList.removeAll("customprofiles.xml"); foreach(const QString &filename, fileList) - parseFile(exportFolder + '/' + filename, true); + parseFile(exportFolder + '/' + filename, true); if (QFile::exists(exportFolder + "/customprofiles.xml")) parseFile(exportFolder + "/customprofiles.xml", true); if (!meta.isEmpty()) { Modified: trunk/kdenlive/src/slideshowclip.cpp =================================================================== --- trunk/kdenlive/src/slideshowclip.cpp 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/slideshowclip.cpp 2009-03-08 11:50:25 UTC (rev 3119) @@ -104,8 +104,8 @@ QStringList filters; QString filter = m_view.image_type->itemData(m_view.image_type->currentIndex()).toString(); filters << "*." + filter; - // TODO: improve jpeg image detection with extension like jpeg, requires change in MLT image producers - // << "*.jpeg"; + // TODO: improve jpeg image detection with extension like jpeg, requires change in MLT image producers + // << "*.jpeg"; dir.setNameFilters(filters); const QStringList result = dir.entryList(QDir::Files); Modified: trunk/kdenlive/src/timecode.h =================================================================== --- trunk/kdenlive/src/timecode.h 2009-03-07 22:57:47 UTC (rev 3118) +++ trunk/kdenlive/src/timecode.h 2009-03-08 11:50:25 UTC (rev 3119) @@ -31,7 +31,7 @@ enum Formats { HH_MM_SS_FF, HH_MM_SS_HH, Frames, Seconds }; explicit Timecode(Formats format = HH_MM_SS_FF, int framesPerSecond = - 25, bool dropFrame = false); + 25, bool dropFrame = false); /** Set the current timecode format; this is the output format for this timecode. */ void setFormat(int framesPerSecond, bool dropFrame = false, Formats format = HH_MM_SS_FF) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-08 14:01:22
|
Revision: 3120 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3120&view=rev Author: j-b-m Date: 2009-03-08 14:01:19 +0000 (Sun, 08 Mar 2009) Log Message: ----------- Check for invalid producers / entries when opening document: http://www.kdenlive.org/mantis/view.php?id=705 Modified Paths: -------------- trunk/kdenlive/src/trackview.cpp trunk/kdenlive/src/trackview.h Modified: trunk/kdenlive/src/trackview.cpp =================================================================== --- trunk/kdenlive/src/trackview.cpp 2009-03-08 11:50:25 UTC (rev 3119) +++ trunk/kdenlive/src/trackview.cpp 2009-03-08 14:01:19 UTC (rev 3120) @@ -139,8 +139,24 @@ QDomElement p; int pos = m_projectTracks - 1; + m_invalidProducers.clear(); + QDomNodeList producers = doc.elementsByTagName("producer"); + for (int i = 0; i < producers.count(); i++) { + // CHeck for invalid producers + QDomNode n = producers.item(i); + e = n.toElement(); + int in = e.attribute("in").toInt(); + int out = e.attribute("out").toInt(); + if (in > out || in == out) { + // invalid producer, remove it + QString id = e.attribute("id"); + m_invalidProducers.append(id); + m_documentErrors.append(i18n("Invalid clip producer %1\n", id)); + doc.documentElement().removeChild(producers.at(i)); + i--; + } + } - for (int i = 0; i < m_projectTracks; i++) { e = tracks.item(i).toElement(); QString playlist_name = e.attribute("producer"); @@ -376,7 +392,9 @@ int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool locked) { // parse track int position = 0; - for (QDomNode n = xml.firstChild(); !n.isNull(); n = n.nextSibling()) { + QDomNodeList children = xml.childNodes(); + for (int nodeindex = 0; nodeindex < children.count(); nodeindex++) { + QDomNode n = children.item(nodeindex); QDomElement elem = n.toElement(); if (elem.tagName() == "blank") { position += elem.attribute("length").toInt(); @@ -386,8 +404,10 @@ // Found a clip int in = elem.attribute("in").toInt(); int out = elem.attribute("out").toInt(); - if (in > out || in == out) { + if (in > out || in == out || m_invalidProducers.contains(elem.attribute("producer"))) { m_documentErrors.append(i18n("Invalid clip removed from track %1 at %2\n", ix, position)); + xml.removeChild(children.at(nodeindex)); + nodeindex--; continue; } QString idString = elem.attribute("producer"); Modified: trunk/kdenlive/src/trackview.h =================================================================== --- trunk/kdenlive/src/trackview.h 2009-03-08 11:50:25 UTC (rev 3119) +++ trunk/kdenlive/src/trackview.h 2009-03-08 14:01:19 UTC (rev 3120) @@ -70,6 +70,7 @@ Ui::TimeLine_UI *view; CustomRuler *m_ruler; CustomTrackView *m_trackview; + QList <QString> m_invalidProducers; double m_scale; int m_projectTracks; QString m_editMode; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-09 12:25:21
|
Revision: 3125 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3125&view=rev Author: j-b-m Date: 2009-03-09 12:25:10 +0000 (Mon, 09 Mar 2009) Log Message: ----------- Display "in" and "out" point in overlay on monitor when playing, configurable through monitor drop down menu: http://www.kdenlive.org:80/mantis/view.php?id=586 Modified Paths: -------------- trunk/kdenlive/src/kdenlivesettings.kcfg trunk/kdenlive/src/monitor.cpp trunk/kdenlive/src/monitor.h Modified: trunk/kdenlive/src/kdenlivesettings.kcfg =================================================================== --- trunk/kdenlive/src/kdenlivesettings.kcfg 2009-03-08 21:08:57 UTC (rev 3124) +++ trunk/kdenlive/src/kdenlivesettings.kcfg 2009-03-09 12:25:10 UTC (rev 3125) @@ -401,6 +401,7 @@ <label>Show descriptions in project tree view.</label> <default>true</default> </entry> + <entry name="showratingcolumn" type="Bool"> <label>Show ratings in project tree view.</label> <default>false</default> @@ -426,6 +427,11 @@ <default>false</default> </entry> + <entry name="displayMonitorInfo" type="Bool"> + <label>Show overlay info on monitor (in / out points, markers,...).</label> + <default>true</default> + </entry> + <entry name="audiocodecs" type="StringList"> <label>Available avformat audio codecs.</label> <default></default> Modified: trunk/kdenlive/src/monitor.cpp =================================================================== --- trunk/kdenlive/src/monitor.cpp 2009-03-08 21:08:57 UTC (rev 3124) +++ trunk/kdenlive/src/monitor.cpp 2009-03-09 12:25:10 UTC (rev 3125) @@ -23,6 +23,7 @@ #include "monitormanager.h" #include "smallruler.h" #include "docclipbase.h" +#include "kdenlivesettings.h" #include <KDebug> #include <KLocale> @@ -40,7 +41,7 @@ Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) - : QWidget(parent), render(NULL), m_monitorManager(manager), m_name(name), m_isActive(false), m_currentClip(NULL), m_dragStarted(false) { + : QWidget(parent), render(NULL), m_monitorManager(manager), m_name(name), m_isActive(false), m_currentClip(NULL), m_dragStarted(false), m_overlay(NULL) { ui.setupUi(this); m_scale = 1; m_ruler = new SmallRuler(); @@ -109,11 +110,6 @@ render = new Render(m_name, (int) m_monitorRefresh->winId(), -1, this); m_monitorRefresh->setRenderer(render); - m_overlay = new Overlay(m_monitorRefresh); - m_overlay->raise(); - m_overlay->setHidden(true); - - connect(m_ruler, SIGNAL(seekRenderer(int)), this, SLOT(slotSeek(int))); connect(render, SIGNAL(durationChanged(int)), this, SLOT(adjustRulerSize(int))); connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int))); @@ -139,7 +135,7 @@ Monitor::~Monitor() { delete m_ruler; delete m_timePos; - delete m_overlay; + if (m_overlay) delete m_overlay; delete m_monitorRefresh; } @@ -163,7 +159,7 @@ m_contextMenu->addAction(extractFrame); if (m_name != "clip") { - QAction *splitView = m_contextMenu->addAction(KIcon("document-new"), i18n("Split view"), render, SLOT(slotSplitView(bool))); + QAction *splitView = m_contextMenu->addAction(KIcon("view-split-left-right"), i18n("Split view"), render, SLOT(slotSplitView(bool))); splitView->setCheckable(true); m_configMenu->addAction(splitView); } else { @@ -171,6 +167,11 @@ m_configMenu->addAction(setThumbFrame); } + QAction *showTips = m_contextMenu->addAction(KIcon("help-hint"), i18n("Monitor overlay infos"), this, SLOT(slotSwitchMonitorInfo(bool))); + showTips->setCheckable(true); + slotSwitchMonitorInfo(KdenliveSettings::displayMonitorInfo()); + m_configMenu->addAction(showTips); + } void Monitor::slotSetSizeOneToOne() { @@ -419,6 +420,7 @@ } void Monitor::checkOverlay() { + if (m_overlay == NULL) return; QPoint zone = m_ruler->zone(); if (m_position == zone.x()) m_overlay->setOverlayText(i18n("In Point")); else if (m_position == zone.y()) m_overlay->setOverlayText(i18n("Out Point")); @@ -515,6 +517,7 @@ void Monitor::seekCursor(int pos) { activateMonitor(); + checkOverlay(); m_position = pos; m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); m_ruler->slotNewValue(pos); @@ -524,7 +527,7 @@ //int rulerPos = (int)(pos * m_scale); m_ruler->slotNewValue(pos); m_position = pos; - checkOverlay(); + //checkOverlay(); m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); m_playAction->setChecked(false); m_playAction->setIcon(m_playIcon); @@ -666,6 +669,19 @@ m_currentClip->setZone(pos); } +void Monitor::slotSwitchMonitorInfo(bool show) { + KdenliveSettings::setDisplayMonitorInfo(show); + if (show) { + if (m_overlay) return; + m_overlay = new Overlay(m_monitorRefresh); + m_overlay->raise(); + m_overlay->setHidden(true); + } else { + delete m_overlay; + m_overlay = NULL; + } +} + MonitorRefresh::MonitorRefresh(QWidget* parent): QWidget(parent), m_renderer(NULL) { setAttribute(Qt::WA_PaintOnScreen); setAttribute(Qt::WA_OpaquePaintEvent); //setAttribute(Qt::WA_NoSystemBackground); @@ -707,6 +723,4 @@ update(); } - - #include "monitor.moc" Modified: trunk/kdenlive/src/monitor.h =================================================================== --- trunk/kdenlive/src/monitor.h 2009-03-08 21:08:57 UTC (rev 3124) +++ trunk/kdenlive/src/monitor.h 2009-03-09 12:25:10 UTC (rev 3125) @@ -121,6 +121,7 @@ void slotSaveZone(); void slotSeek(); void setClipZone(QPoint pos); + void slotSwitchMonitorInfo(bool show); public slots: void slotOpenFile(const QString &); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-09 23:40:07
|
Revision: 3127 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3127&view=rev Author: j-b-m Date: 2009-03-09 23:40:03 +0000 (Mon, 09 Mar 2009) Log Message: ----------- Display MLT's version in Kdenlive startup wizard Modified Paths: -------------- trunk/kdenlive/src/wizard.cpp trunk/kdenlive/src/wizard.h Modified: trunk/kdenlive/src/wizard.cpp =================================================================== --- trunk/kdenlive/src/wizard.cpp 2009-03-09 22:43:23 UTC (rev 3126) +++ trunk/kdenlive/src/wizard.cpp 2009-03-09 23:40:03 UTC (rev 3127) @@ -31,6 +31,8 @@ #include <QXmlStreamWriter> #include <QTimer> +const double recommendedMltVersion = 36; + Wizard::Wizard(QWidget *parent): QWizard(parent) { setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png"))); @@ -55,6 +57,9 @@ page2->setTitle(i18n("Video Standard")); m_standard.setupUi(page2); + m_okIcon = KIcon("dialog-ok"); + m_badIcon = KIcon("dialog-close"); + // build profiles lists m_profilesInfo = ProfilesDialog::getProfilesInfo(); QMap<QString, QString>::const_iterator i = m_profilesInfo.constBegin(); @@ -109,23 +114,23 @@ m_mltCheck.programList->setRootIsDecorated(false); m_mltCheck.programList->setHeaderHidden(true); QSize itemSize(20, this->fontMetrics().height() * 2.5); - KIcon okIcon("dialog-ok"); - KIcon missingIcon("dialog-close"); m_mltCheck.programList->setColumnWidth(0, 30); m_mltCheck.programList->setIconSize(QSize(24, 24)); - QTreeWidgetItem *item = new QTreeWidgetItem(m_mltCheck.programList, QStringList() << QString() << i18n("Inigo") + " (" + KdenliveSettings::rendererpath() + ')'); - item->setData(1, Qt::UserRole, i18n("Required for rendering (part of MLT package)")); - item->setSizeHint(0, itemSize); - item->setIcon(0, okIcon); + QTreeWidgetItem *mltitem = new QTreeWidgetItem(m_mltCheck.programList); + QTreeWidgetItem *inigoitem = new QTreeWidgetItem(m_mltCheck.programList, QStringList() << QString() << i18n("Inigo") + " (" + KdenliveSettings::rendererpath() + ')'); + inigoitem->setData(1, Qt::UserRole, i18n("Required for rendering (part of MLT package)")); + inigoitem->setSizeHint(0, itemSize); + inigoitem->setIcon(0, m_okIcon); + // Check MLT's installed producers QProcess checkProcess; checkProcess.start(KdenliveSettings::rendererpath(), QStringList() << "-query" << "producer"); if (!checkProcess.waitForStarted()) { - item->setIcon(0, missingIcon); - item->setData(1, Qt::UserRole, i18n("Error starting MLT's command line player (inigo)")); + inigoitem->setIcon(0, m_badIcon); + inigoitem->setData(1, Qt::UserRole, i18n("Error starting MLT's command line player (inigo)")); button(QWizard::NextButton)->setEnabled(false); } else { checkProcess.waitForFinished(); @@ -136,13 +141,14 @@ avformatItem->setData(1, Qt::UserRole, i18n("Required to work with various video formats (hdv, mpeg, flash, ...)")); avformatItem->setSizeHint(0, itemSize); if (!result.contains("- avformat")) { - avformatItem->setIcon(0, missingIcon); + avformatItem->setIcon(0, m_badIcon); m_mltCheck.tabWidget->setTabEnabled(1, false); } else { - avformatItem->setIcon(0, okIcon); + avformatItem->setIcon(0, m_okIcon); // Make sure we have MLT > 0.3.4 bool recentMlt = false; int version = 0; + QString mltVersion; QString exepath = KStandardDirs::findExe("pkg-config"); if (!exepath.isEmpty()) { checkProcess.start(exepath, QStringList() << "--variable=version" << "mlt-framework"); @@ -150,7 +156,7 @@ kDebug() << "// Error querying MLT's version"; } else { checkProcess.waitForFinished(); - QString mltVersion = checkProcess.readAllStandardOutput(); + mltVersion = checkProcess.readAllStandardOutput(); version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt(); kDebug() << "// FOUND MLT's pkgconfig version: " << version; if (version > 34) recentMlt = true; @@ -162,7 +168,7 @@ kDebug() << "// Error querying MLT's version"; } else { checkProcess.waitForFinished(); - QString mltVersion = checkProcess.readAllStandardError(); + mltVersion = checkProcess.readAllStandardError(); mltVersion = mltVersion.section('\n', 0, 0).simplified(); mltVersion = mltVersion.section(' ', -1).simplified(); version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt(); @@ -171,6 +177,16 @@ } } + mltitem->setText(1, i18n("MLT version: %1", mltVersion.simplified())); + mltitem->setSizeHint(0, itemSize); + if (version < recommendedMltVersion) { + mltitem->setData(1, Qt::UserRole, i18n("Please upgrade to the latest MLT version")); + mltitem->setIcon(0, m_badIcon); + } else { + mltitem->setData(1, Qt::UserRole, i18n("MLT version is correct")); + mltitem->setIcon(0, m_okIcon); + } + if (recentMlt) { // Check installed audio codecs QProcess checkProcess2; @@ -241,9 +257,9 @@ dvItem->setData(1, Qt::UserRole, i18n("Required to work with dv files if avformat module is not installed")); dvItem->setSizeHint(0, itemSize); if (!result.contains("- libdv")) { - dvItem->setIcon(0, missingIcon); + dvItem->setIcon(0, m_badIcon); } else { - dvItem->setIcon(0, okIcon); + dvItem->setIcon(0, m_okIcon); } // Check MLT image format module @@ -251,14 +267,14 @@ imageItem->setData(1, Qt::UserRole, i18n("Required to work with images")); imageItem->setSizeHint(0, itemSize); if (!result.contains("- qimage")) { - imageItem->setIcon(0, missingIcon); + imageItem->setIcon(0, m_badIcon); imageItem = new QTreeWidgetItem(m_mltCheck.programList, QStringList() << QString() << i18n("Pixbuf module")); imageItem->setData(1, Qt::UserRole, i18n("Required to work with images")); imageItem->setSizeHint(0, itemSize); - if (!result.contains("- pixbuf")) imageItem->setIcon(0, missingIcon); - else imageItem->setIcon(0, okIcon); + if (!result.contains("- pixbuf")) imageItem->setIcon(0, m_badIcon); + else imageItem->setIcon(0, m_okIcon); } else { - imageItem->setIcon(0, okIcon); + imageItem->setIcon(0, m_okIcon); } } } @@ -268,8 +284,6 @@ m_check.programList->setRootIsDecorated(false); m_check.programList->setHeaderHidden(true); QSize itemSize(20, this->fontMetrics().height() * 2.5); - KIcon okIcon("dialog-ok"); - KIcon missingIcon("dialog-close"); m_check.programList->setColumnWidth(0, 30); m_check.programList->setIconSize(QSize(24, 24)); @@ -277,33 +291,33 @@ item->setData(1, Qt::UserRole, i18n("Required for webcam capture")); item->setSizeHint(0, itemSize); QString exepath = KStandardDirs::findExe("ffmpeg"); - if (exepath.isEmpty()) item->setIcon(0, missingIcon); - else if (KStandardDirs::findExe("ffplay").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (exepath.isEmpty()) item->setIcon(0, m_badIcon); + else if (KStandardDirs::findExe("ffplay").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Recordmydesktop")); item->setData(1, Qt::UserRole, i18n("Required for screen capture")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("recordmydesktop").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("recordmydesktop").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Dvgrab")); item->setData(1, Qt::UserRole, i18n("Required for firewire capture")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("dvgrab").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("dvgrab").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Dvdauthor")); item->setData(1, Qt::UserRole, i18n("Required for creation of DVD")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("dvdauthor").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("dvdauthor").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("Mkisofs")); item->setData(1, Qt::UserRole, i18n("Required for creation of DVD iso images")); item->setSizeHint(0, itemSize); - if (KStandardDirs::findExe("mkisofs").isEmpty()) item->setIcon(0, missingIcon); - else item->setIcon(0, okIcon); + if (KStandardDirs::findExe("mkisofs").isEmpty()) item->setIcon(0, m_badIcon); + else item->setIcon(0, m_okIcon); } Modified: trunk/kdenlive/src/wizard.h =================================================================== --- trunk/kdenlive/src/wizard.h 2009-03-09 22:43:23 UTC (rev 3126) +++ trunk/kdenlive/src/wizard.h 2009-03-09 23:40:03 UTC (rev 3127) @@ -26,6 +26,7 @@ #include <QItemDelegate> #include <QPainter> +#include <KIcon> #include <KDebug> #include "ui_wizardstandard_ui.h" @@ -91,6 +92,8 @@ QMap <QString, QString> m_profilesInfo; void slotCheckPrograms(); void checkMltComponents(); + KIcon m_okIcon; + KIcon m_badIcon; private slots: void slotCheckThumbs(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-11 12:29:43
|
Revision: 3129 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3129&view=rev Author: j-b-m Date: 2009-03-11 12:29:28 +0000 (Wed, 11 Mar 2009) Log Message: ----------- Header fixes Modified Paths: -------------- trunk/kdenlive/src/docclipbase.cpp trunk/kdenlive/src/graphicsscenerectmove.cpp trunk/kdenlive/src/graphicsscenerectmove.h trunk/kdenlive/src/managecapturesdialog.h trunk/kdenlive/src/titlewidget.h Modified: trunk/kdenlive/src/docclipbase.cpp =================================================================== --- trunk/kdenlive/src/docclipbase.cpp 2009-03-10 00:40:24 UTC (rev 3128) +++ trunk/kdenlive/src/docclipbase.cpp 2009-03-11 12:29:28 UTC (rev 3129) @@ -1,22 +1,29 @@ -/**************************1************************************************* - DocClipBase.cpp - description - ------------------- - begin : Fri Apr 12 2002 - copyright : (C) 2002 by Jason Wood - copyright : (C) 2009 by Jean-Baptiste Mardelle - - ***************************************************************************/ - /*************************************************************************** + * DocClipBase.cpp - description * + * ------------------- * + * begin : Fri Apr 12 2002 * + * Copyright (C) 2002 by Jason Wood (jas...@bl...) * + * Copyright (C) 2007 by Jean-Baptiste Mardelle (jb...@kd...) * * * * 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. * * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ + + #include "docclipbase.h" #include "kdenlivesettings.h" #include "kthumb.h" Modified: trunk/kdenlive/src/graphicsscenerectmove.cpp =================================================================== --- trunk/kdenlive/src/graphicsscenerectmove.cpp 2009-03-10 00:40:24 UTC (rev 3128) +++ trunk/kdenlive/src/graphicsscenerectmove.cpp 2009-03-11 12:29:28 UTC (rev 3129) @@ -1,5 +1,5 @@ /*************************************************************************** - * copyright (C) 2008 by Marco Gittler * + * copyright (C) 2008 by Marco Gittler (g....@fr...) * * Copyright (C) 2008 by Jean-Baptiste Mardelle (jb...@kd...) * * * * This program is free software; you can redistribute it and/or modify * Modified: trunk/kdenlive/src/graphicsscenerectmove.h =================================================================== --- trunk/kdenlive/src/graphicsscenerectmove.h 2009-03-10 00:40:24 UTC (rev 3128) +++ trunk/kdenlive/src/graphicsscenerectmove.h 2009-03-11 12:29:28 UTC (rev 3129) @@ -1,5 +1,5 @@ /*************************************************************************** - * copyright (C) 2008 by Marco Gittler * + * copyright (C) 2008 by Marco Gittler (g....@fr...) * * Copyright (C) 2008 by Jean-Baptiste Mardelle (jb...@kd...) * * * * This program is free software; you can redistribute it and/or modify * Modified: trunk/kdenlive/src/managecapturesdialog.h =================================================================== --- trunk/kdenlive/src/managecapturesdialog.h 2009-03-10 00:40:24 UTC (rev 3128) +++ trunk/kdenlive/src/managecapturesdialog.h 2009-03-11 12:29:28 UTC (rev 3129) @@ -18,8 +18,8 @@ ***************************************************************************/ -#ifndef CAPTUREDIALOG_H -#define CAPTUREDIALOG_H +#ifndef MANAGECAPTURESDIALOG_H +#define MANAGECAPTURESDIALOG_H #include <QPushButton> Modified: trunk/kdenlive/src/titlewidget.h =================================================================== --- trunk/kdenlive/src/titlewidget.h 2009-03-10 00:40:24 UTC (rev 3128) +++ trunk/kdenlive/src/titlewidget.h 2009-03-11 12:29:28 UTC (rev 3129) @@ -19,13 +19,12 @@ #define TITLEWIDGET_H -#include <QMap> - #include "ui_titlewidget_ui.h" #include "titledocument.h" #include "renderer.h" #include "graphicsscenerectmove.h" +#include <QMap> class Transform { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-11 12:31:54
|
Revision: 3130 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3130&view=rev Author: j-b-m Date: 2009-03-11 12:31:44 +0000 (Wed, 11 Mar 2009) Log Message: ----------- const modifiers are useless on integral return types [PATCH by Ray Lehtiniemi] Modified Paths: -------------- trunk/kdenlive/src/abstractgroupitem.cpp trunk/kdenlive/src/abstractgroupitem.h trunk/kdenlive/src/kdenlivedoc.cpp trunk/kdenlive/src/kdenlivedoc.h trunk/kdenlive/src/keyframehelper.cpp trunk/kdenlive/src/keyframehelper.h trunk/kdenlive/src/renderer.cpp trunk/kdenlive/src/renderer.h trunk/kdenlive/src/trackview.cpp trunk/kdenlive/src/trackview.h Modified: trunk/kdenlive/src/abstractgroupitem.cpp =================================================================== --- trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-11 12:31:44 UTC (rev 3130) @@ -38,7 +38,7 @@ return GROUPWIDGET; } -const int AbstractGroupItem::track() const { +int AbstractGroupItem::track() const { return (int)(scenePos().y() / KdenliveSettings::trackheight()); } Modified: trunk/kdenlive/src/abstractgroupitem.h =================================================================== --- trunk/kdenlive/src/abstractgroupitem.h 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/abstractgroupitem.h 2009-03-11 12:31:44 UTC (rev 3130) @@ -34,7 +34,7 @@ virtual int type() const; CustomTrackScene* projectScene(); void addItem(QGraphicsItem * item); - const int track() const; + int track() const; protected: virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); Modified: trunk/kdenlive/src/kdenlivedoc.cpp =================================================================== --- trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-11 12:31:44 UTC (rev 3130) @@ -1069,7 +1069,7 @@ else m_timecode.setFormat((int) m_fps); } -const double KdenliveDoc::dar() { +double KdenliveDoc::dar() { return (double) m_profile.display_aspect_num / m_profile.display_aspect_den; } Modified: trunk/kdenlive/src/kdenlivedoc.h =================================================================== --- trunk/kdenlive/src/kdenlivedoc.h 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/kdenlivedoc.h 2009-03-11 12:31:44 UTC (rev 3130) @@ -93,7 +93,7 @@ void syncGuides(QList <Guide *> guides); void setZoom(int factor); int zoom() const; - const double dar(); + double dar(); double projectDuration() const; bool saveSceneList(const QString &path, const QString &scene); int tracksCount() const; Modified: trunk/kdenlive/src/keyframehelper.cpp =================================================================== --- trunk/kdenlive/src/keyframehelper.cpp 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/keyframehelper.cpp 2009-03-11 12:31:44 UTC (rev 3130) @@ -103,7 +103,7 @@ } -const int KeyframeHelper::value() const { +int KeyframeHelper::value() const { return m_position; } Modified: trunk/kdenlive/src/keyframehelper.h =================================================================== --- trunk/kdenlive/src/keyframehelper.h 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/keyframehelper.h 2009-03-11 12:31:44 UTC (rev 3130) @@ -32,7 +32,7 @@ public: KeyframeHelper(QWidget *parent = 0); - const int value() const; + int value() const; protected: virtual void paintEvent(QPaintEvent * /*e*/); Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/renderer.cpp 2009-03-11 12:31:44 UTC (rev 3130) @@ -236,11 +236,11 @@ return pix; } */ -const int Render::renderWidth() const { +int Render::renderWidth() const { return (int)(m_mltProfile->height() * m_mltProfile->dar()); } -const int Render::renderHeight() const { +int Render::renderHeight() const { return m_mltProfile->height(); } @@ -393,7 +393,7 @@ return true; } -const double Render::dar() const { +double Render::dar() const { return m_mltProfile->dar(); } @@ -905,7 +905,7 @@ westleyConsumer.start(); } -const double Render::fps() const { +double Render::fps() const { return m_fps; } Modified: trunk/kdenlive/src/renderer.h =================================================================== --- trunk/kdenlive/src/renderer.h 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/renderer.h 2009-03-11 12:31:44 UTC (rev 3130) @@ -141,11 +141,11 @@ /** Turn on or off on screen display */ void refreshDisplay(); int resetProfile(); - const double fps() const; - const int renderWidth() const; - const int renderHeight() const; + double fps() const; + int renderWidth() const; + int renderHeight() const; /** get display aspect ratio */ - const double dar() const; + double dar() const; /** Playlist manipulation */ void mltInsertClip(ItemInfo info, QDomElement element, Mlt::Producer *prod); Modified: trunk/kdenlive/src/trackview.cpp =================================================================== --- trunk/kdenlive/src/trackview.cpp 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/trackview.cpp 2009-03-11 12:31:44 UTC (rev 3130) @@ -352,11 +352,11 @@ return i; } -const double TrackView::zoomFactor() const { +double TrackView::zoomFactor() const { return m_scale; } -const int TrackView::mapLocalToValue(int x) const { +int TrackView::mapLocalToValue(int x) const { return (int)(x * zoomFactor()); } Modified: trunk/kdenlive/src/trackview.h =================================================================== --- trunk/kdenlive/src/trackview.h 2009-03-11 12:29:28 UTC (rev 3129) +++ trunk/kdenlive/src/trackview.h 2009-03-11 12:31:44 UTC (rev 3130) @@ -46,8 +46,8 @@ public: explicit TrackView(KdenliveDoc *doc, QWidget *parent = 0); - const double zoomFactor() const; - const int mapLocalToValue(int x) const; + double zoomFactor() const; + int mapLocalToValue(int x) const; void setEditMode(const QString & editMode); const QString & editMode() const; QGraphicsScene *projectScene(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-11 12:48:21
|
Revision: 3134 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3134&view=rev Author: j-b-m Date: 2009-03-11 12:48:03 +0000 (Wed, 11 Mar 2009) Log Message: ----------- More constness fixes [PATCH by Ray Lehtiniemi] Modified Paths: -------------- trunk/kdenlive/src/graphicsscenerectmove.cpp trunk/kdenlive/src/initeffects.cpp trunk/kdenlive/src/initeffects.h Modified: trunk/kdenlive/src/graphicsscenerectmove.cpp =================================================================== --- trunk/kdenlive/src/graphicsscenerectmove.cpp 2009-03-11 12:45:39 UTC (rev 3133) +++ trunk/kdenlive/src/graphicsscenerectmove.cpp 2009-03-11 12:48:03 UTC (rev 3134) @@ -324,7 +324,7 @@ setCursor(Qt::OpenHandCursor); break; } else if (g->type() == 3 && g->zValue() > -1000) { - QRectF r = ((QGraphicsRectItem*)g)->rect(); + QRectF r = ((const QGraphicsRectItem*)g)->rect(); r.translate(g->scenePos()); itemFound = true; if ((r.toRect().topLeft() - e->scenePos().toPoint()).manhattanLength() < 6 / zoom) { Modified: trunk/kdenlive/src/initeffects.cpp =================================================================== --- trunk/kdenlive/src/initeffects.cpp 2009-03-11 12:45:39 UTC (rev 3133) +++ trunk/kdenlive/src/initeffects.cpp 2009-03-11 12:48:03 UTC (rev 3134) @@ -351,7 +351,7 @@ } //static -char* initEffects::ladspaEffectString(int ladspaId, QStringList params) { +const char* initEffects::ladspaEffectString(int ladspaId, QStringList params) { if (ladspaId == 1433) //Pitch return ladspaPitchEffectString(params); else if (ladspaId == 1216) //Room Reverb @@ -362,13 +362,13 @@ return ladspaEqualizerEffectString(params); else { kDebug() << "++++++++++ ASKING FOR UNKNOWN LADSPA EFFECT: " << ladspaId << endl; - return (char *) "<jackrack></jackrack>"; + return "<jackrack></jackrack>"; } } //static void initEffects::ladspaEffectFile(const QString & fname, int ladspaId, QStringList params) { - char *filterString; + const char *filterString; switch (ladspaId) { case 1433: //Pitch filterString = ladspaPitchEffectString(params); @@ -418,49 +418,49 @@ const QString jackString = "<?xml version=\"1.0\"?><!DOCTYPE jackrack SYSTEM \"http://purge.bash.sh/~rah/jack_rack_1.2.dtd\"><jackrack><channels>2</channels><samplerate>48000</samplerate><plugin><id>"; -char* initEffects::ladspaDeclipEffectString(QStringList) { +const char* initEffects::ladspaDeclipEffectString(QStringList) { return qstrdup(QString(jackString + "1195</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall></plugin></jackrack>").toUtf8()); } /* -char* initEffects::ladspaVocoderEffectString(QStringList params) +const char* initEffects::ladspaVocoderEffectString(QStringList params) { return qstrdup( QString(jackString + "1441</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>0.000000</value><value>0.000000</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).arg(params[3])); }*/ -char* initEffects::ladspaVinylEffectString(QStringList params) { +const char* initEffects::ladspaVinylEffectString(QStringList params) { return qstrdup(QString(jackString + "1905</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><controlrow><value>%1</value></controlrow><controlrow><value>%2</value></controlrow><controlrow><value>%3</value></controlrow><controlrow><value>%4</value></controlrow><controlrow><value>%5</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).arg(params[3]).arg(params[4]).toUtf8()); } -char* initEffects::ladspaPitchEffectString(QStringList params) { +const char* initEffects::ladspaPitchEffectString(QStringList params) { return qstrdup(QString(jackString + "1433</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.0</value><value>1.0</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>4.000000</value><value>4.000000</value></controlrow></plugin></jackrack>").arg(params[0]).toUtf8()); } -char* initEffects::ladspaRoomReverbEffectString(QStringList params) { +const char* initEffects::ladspaRoomReverbEffectString(QStringList params) { return qstrdup(QString(jackString + "1216</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>0.750000</value><value>0.750000</value></controlrow><controlrow><lock>true</lock><value>-70.000000</value><value>-70.000000</value></controlrow><controlrow><lock>true</lock><value>0.000000</value><value>0.000000</value></controlrow><controlrow><lock>true</lock><value>-17.500000</value><value>-17.500000</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).toUtf8()); } -char* initEffects::ladspaReverbEffectString(QStringList params) { +const char* initEffects::ladspaReverbEffectString(QStringList params) { return qstrdup(QString(jackString + "1423</id><enabled>true</enabled> <wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked> <wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values> <lockall>true</lockall><controlrow><lock>true</lock><value>%1</value> <value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>0.250000</value><value>0.250000</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).toUtf8()); } -char* initEffects::ladspaEqualizerEffectString(QStringList params) { +const char* initEffects::ladspaEqualizerEffectString(QStringList params) { return qstrdup(QString(jackString + "1901</id><enabled>true</enabled> <wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked> <wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><controlrow><value>%1</value></controlrow><controlrow><value>%2</value></controlrow> <controlrow><value>%3</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).toUtf8()); } -char* initEffects::ladspaLimiterEffectString(QStringList params) { +const char* initEffects::ladspaLimiterEffectString(QStringList params) { return qstrdup(QString(jackString + "1913</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><controlrow><value>%1</value></controlrow><controlrow><value>%2</value></controlrow><controlrow><value>%3</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).toUtf8()); } -char* initEffects::ladspaPitchShifterEffectString(QStringList params) { +const char* initEffects::ladspaPitchShifterEffectString(QStringList params) { return qstrdup(QString(jackString + "1193</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow></plugin></jackrack>").arg(params[0]).toUtf8()); } -char* initEffects::ladspaRateScalerEffectString(QStringList params) { +const char* initEffects::ladspaRateScalerEffectString(QStringList params) { return qstrdup(QString(jackString + "1417</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow></plugin></jackrack>").arg(params[0]).toUtf8()); } -char* initEffects::ladspaPhaserEffectString(QStringList params) { +const char* initEffects::ladspaPhaserEffectString(QStringList params) { return qstrdup(QString(jackString + "1217</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).arg(params[3]).toUtf8()); } Modified: trunk/kdenlive/src/initeffects.h =================================================================== --- trunk/kdenlive/src/initeffects.h 2009-03-11 12:45:39 UTC (rev 3133) +++ trunk/kdenlive/src/initeffects.h 2009-03-11 12:48:03 UTC (rev 3134) @@ -54,19 +54,19 @@ static QDomElement quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def = QString(), QString min = QString(), QString max = QString(), QString list = QString(), QString listdisplaynames = QString(), QString factor = QString(), QString namedesc = QString(), QString format = QString()); static void parseEffectFile(EffectsList *customEffectList, EffectsList *audioEffectList, EffectsList *videoEffectList, QString name, QStringList filtersList, QStringList producersList); static void parseCustomEffectsFile(); - static char* ladspaEffectString(int ladspaId, QStringList params); + static const char* ladspaEffectString(int ladspaId, QStringList params); static void ladspaEffectFile(const QString & fname, int ladspaId, QStringList params); - static char* ladspaPitchEffectString(QStringList params); - static char* ladspaReverbEffectString(QStringList params); - static char* ladspaRoomReverbEffectString(QStringList params); - static char* ladspaEqualizerEffectString(QStringList params); - static char* ladspaDeclipEffectString(QStringList); - static char* ladspaVinylEffectString(QStringList params); - static char* ladspaLimiterEffectString(QStringList params); - static char* ladspaPitchShifterEffectString(QStringList params); - static char* ladspaPhaserEffectString(QStringList params); - static char* ladspaRateScalerEffectString(QStringList params); + static const char* ladspaPitchEffectString(QStringList params); + static const char* ladspaReverbEffectString(QStringList params); + static const char* ladspaRoomReverbEffectString(QStringList params); + static const char* ladspaEqualizerEffectString(QStringList params); + static const char* ladspaDeclipEffectString(QStringList); + static const char* ladspaVinylEffectString(QStringList params); + static const char* ladspaLimiterEffectString(QStringList params); + static const char* ladspaPitchShifterEffectString(QStringList params); + static const char* ladspaPhaserEffectString(QStringList params); + static const char* ladspaRateScalerEffectString(QStringList params); private: static initEffectsThumbnailer thumbnailer; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-11 20:41:45
|
Revision: 3138 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3138&view=rev Author: j-b-m Date: 2009-03-11 20:41:33 +0000 (Wed, 11 Mar 2009) Log Message: ----------- Small improvements to dvd wizard (show vob size, better error handling) Modified Paths: -------------- trunk/kdenlive/src/dvdwizard.cpp trunk/kdenlive/src/dvdwizard.h trunk/kdenlive/src/dvdwizardmenu.cpp trunk/kdenlive/src/dvdwizardvob.cpp trunk/kdenlive/src/dvdwizardvob.h trunk/kdenlive/src/widgets/dvdwizardstatus_ui.ui trunk/kdenlive/src/widgets/dvdwizardvob_ui.ui Modified: trunk/kdenlive/src/dvdwizard.cpp =================================================================== --- trunk/kdenlive/src/dvdwizard.cpp 2009-03-11 20:15:10 UTC (rev 3137) +++ trunk/kdenlive/src/dvdwizard.cpp 2009-03-11 20:41:33 UTC (rev 3138) @@ -35,7 +35,7 @@ #include <QDomDocument> -DvdWizard::DvdWizard(const QString &url, const QString &profile, QWidget *parent): QWizard(parent), m_profile(profile) { +DvdWizard::DvdWizard(const QString &url, const QString &profile, QWidget *parent): QWizard(parent), m_profile(profile), m_dvdauthor(NULL), m_mkiso(NULL) { //setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png"))); setAttribute(Qt::WA_DeleteOnClose); m_pageVob = new DvdWizardVob(this); @@ -61,6 +61,7 @@ QWizardPage *page4 = new QWizardPage; page4->setTitle(i18n("Creating DVD Image")); m_status.setupUi(page4); + m_status.error_box->setHidden(true); addPage(page4); connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotPageChanged(int))); @@ -70,6 +71,14 @@ DvdWizard::~DvdWizard() { // m_menuFile.remove(); + if (m_dvdauthor) { + m_dvdauthor->close(); + delete m_dvdauthor; + } + if (m_mkiso) { + m_mkiso->close(); + delete m_mkiso; + } } @@ -85,7 +94,7 @@ m_status.job_progress->item(i)->setIcon(KIcon()); QString warnMessage; if (KIO::NetAccess::exists(KUrl(m_iso.tmp_folder->url().path() + "/DVD"), KIO::NetAccess::SourceSide, this)) - warnMessage.append(i18n("Folder %1 already exists. Overwrite ?<br />", m_iso.tmp_folder->url().path() + "/DVD")); + warnMessage.append(i18n("Folder %1 already exists. Overwrite ?" + '\n', m_iso.tmp_folder->url().path() + "/DVD")); if (KIO::NetAccess::exists(KUrl(m_iso.iso_image->url().path()), KIO::NetAccess::SourceSide, this)) warnMessage.append(i18n("Image file %1 already exists. Overwrite ?", m_iso.iso_image->url().path())); @@ -179,12 +188,17 @@ if (renderbg.waitForFinished()) { if (renderbg.exitStatus() == QProcess::CrashExit) { kDebug() << "/// RENDERING MENU vob crashed"; + QByteArray result = renderbg.readAllStandardError(); vobitem->setIcon(KIcon("dialog-close")); + m_status.error_log->setText(result); + m_status.error_box->setHidden(false); return; } } else { kDebug() << "/// RENDERING MENU vob timed out"; vobitem->setIcon(KIcon("dialog-close")); + m_status.error_log->setText(i18n("Rendering job timed out")); + m_status.error_box->setHidden(false); return; } vobitem->setIcon(KIcon("dialog-ok")); @@ -261,13 +275,18 @@ if (spumux.waitForFinished()) { kDebug() << QString(spumux.readAll()).simplified(); if (spumux.exitStatus() == QProcess::CrashExit) { + QByteArray result = spumux.readAllStandardError(); + spuitem->setIcon(KIcon("dialog-close")); + m_status.error_log->setText(result); + m_status.error_box->setHidden(false); kDebug() << "/// RENDERING SPUMUX MENU crashed"; - spuitem->setIcon(KIcon("dialog-close")); return; } } else { kDebug() << "/// RENDERING SPUMUX MENU timed out"; spuitem->setIcon(KIcon("dialog-close")); + m_status.error_log->setText(i18n("Menu job timed out")); + m_status.error_box->setHidden(false); return; } @@ -378,55 +397,117 @@ out << dvddoc.toString(); } data2.close(); + /*kDebug() << "------------------"; + kDebug() << dvddoc.toString(); + kDebug() << "------------------";*/ - QStringList args; args << "-x" << m_authorFile.fileName(); kDebug() << "// DVDAUTH ARGS: " << args; - QProcess *dvdauth = new QProcess(this); - connect(dvdauth, SIGNAL(finished(int , QProcess::ExitStatus)), this, SLOT(slotRenderFinished(int, QProcess::ExitStatus))); - dvdauth->setProcessChannelMode(QProcess::MergedChannels); - dvdauth->start("dvdauthor", args); + if (m_dvdauthor) { + m_dvdauthor->close(); + delete m_dvdauthor; + m_dvdauthor = NULL; + } + m_creationLog.clear(); + m_dvdauthor = new QProcess(this); + connect(m_dvdauthor, SIGNAL(finished(int , QProcess::ExitStatus)), this, SLOT(slotRenderFinished(int, QProcess::ExitStatus))); + m_dvdauthor->setProcessChannelMode(QProcess::MergedChannels); + m_dvdauthor->start("dvdauthor", args); } -void DvdWizard::slotRenderFinished(int /*exitCode*/, QProcess::ExitStatus status) { +void DvdWizard::slotRenderFinished(int exitCode, QProcess::ExitStatus status) { QListWidgetItem *authitem = m_status.job_progress->item(3); if (status == QProcess::CrashExit) { + QByteArray result = m_dvdauthor->readAllStandardError(); + m_status.error_log->setText(result); + m_status.error_box->setHidden(false); kDebug() << "DVDAuthor process crashed"; authitem->setIcon(KIcon("dialog-close")); + m_dvdauthor->close(); + delete m_dvdauthor; + m_dvdauthor = NULL; + cleanup(); return; } + m_creationLog.append(m_dvdauthor->readAllStandardError()); + m_dvdauthor->close(); + delete m_dvdauthor; + m_dvdauthor = NULL; + + // Check if DVD structure has the necessary infos + if (!QFile::exists(m_iso.tmp_folder->url().path() + "/DVD/VIDEO_TS/VIDEO_TS.IFO")) { + m_status.error_log->setText(m_creationLog + '\n' + i18n("Dvd structure broken")); + m_status.error_box->setHidden(false); + kDebug() << "DVDAuthor process crashed"; + authitem->setIcon(KIcon("dialog-close")); + cleanup(); + return; + } authitem->setIcon(KIcon("dialog-ok")); qApp->processEvents(); QStringList args; args << "-dvd-video" << "-v" << "-o" << m_iso.iso_image->url().path() << m_iso.tmp_folder->url().path() + "/DVD"; - QProcess *mkiso = new QProcess(this); - connect(mkiso, SIGNAL(finished(int , QProcess::ExitStatus)), this, SLOT(slotIsoFinished(int, QProcess::ExitStatus))); - mkiso->setProcessChannelMode(QProcess::MergedChannels); + + if (m_mkiso) { + m_mkiso->close(); + delete m_mkiso; + m_mkiso = NULL; + } + m_mkiso = new QProcess(this); + connect(m_mkiso, SIGNAL(finished(int , QProcess::ExitStatus)), this, SLOT(slotIsoFinished(int, QProcess::ExitStatus))); + m_mkiso->setProcessChannelMode(QProcess::MergedChannels); QListWidgetItem *isoitem = m_status.job_progress->item(4); isoitem->setIcon(KIcon("system-run")); - mkiso->start("mkisofs", args); + m_mkiso->start("mkisofs", args); } void DvdWizard::slotIsoFinished(int /*exitCode*/, QProcess::ExitStatus status) { QListWidgetItem *isoitem = m_status.job_progress->item(4); if (status == QProcess::CrashExit) { - m_authorFile.remove(); - m_menuFile.remove(); - KIO::NetAccess::del(KUrl(m_iso.tmp_folder->url().path() + "/DVD"), this); + QByteArray result = m_mkiso->readAllStandardError(); + m_status.error_log->setText(result); + m_status.error_box->setHidden(false); + m_mkiso->close(); + delete m_mkiso; + m_mkiso = NULL; + cleanup(); kDebug() << "Iso process crashed"; isoitem->setIcon(KIcon("dialog-close")); return; } + + m_creationLog.append(m_mkiso->readAllStandardError()); + delete m_mkiso; + m_mkiso = NULL; + + // Check if DVD iso is ok + QFile iso(m_iso.iso_image->url().path()); + if (!iso.exists() || iso.size() == 0) { + if (iso.exists()) { + KIO::NetAccess::del(m_iso.iso_image->url(), this); + } + m_status.error_log->setText(m_creationLog + '\n' + i18n("Dvd iso is broken")); + m_status.error_box->setHidden(false); + isoitem->setIcon(KIcon("dialog-close")); + cleanup(); + return; + } + isoitem->setIcon(KIcon("dialog-ok")); kDebug() << "ISO IMAGE " << m_iso.iso_image->url().path() << " Successfully created"; + cleanup(); + kDebug() << m_creationLog; + KMessageBox::information(this, i18n("DVD iso image %1 successfully created.", m_iso.iso_image->url().path())); + +} + + +void DvdWizard::cleanup() { m_authorFile.remove(); m_menuFile.remove(); KIO::NetAccess::del(KUrl(m_iso.tmp_folder->url().path() + "/DVD"), this); - KMessageBox::information(this, i18n("DVD iso image %1 successfully created.", m_iso.iso_image->url().path())); - } - Modified: trunk/kdenlive/src/dvdwizard.h =================================================================== --- trunk/kdenlive/src/dvdwizard.h 2009-03-11 20:15:10 UTC (rev 3137) +++ trunk/kdenlive/src/dvdwizard.h 2009-03-11 20:41:33 UTC (rev 3138) @@ -50,6 +50,10 @@ QString m_profile; KTemporaryFile m_menuFile; KTemporaryFile m_authorFile; + QProcess *m_dvdauthor; + QProcess *m_mkiso; + QString m_creationLog; + void cleanup(); private slots: void slotPageChanged(int page); Modified: trunk/kdenlive/src/dvdwizardmenu.cpp =================================================================== --- trunk/kdenlive/src/dvdwizardmenu.cpp 2009-03-11 20:15:10 UTC (rev 3137) +++ trunk/kdenlive/src/dvdwizardmenu.cpp 2009-03-11 20:41:33 UTC (rev 3138) @@ -345,21 +345,21 @@ m_scene->removeItem(m_background); m_scene->render(&p, QRectF(0, 0, m_width, m_height)); p.end(); - img.setNumColors(4); QImage saved; if (m_view.menu_profile->currentIndex() < 2) saved = img.scaled(720, 576); else saved = img.scaled(720, 480); + saved.setNumColors(4); saved.save(img1); updateColor(m_view.selected_color->color()); p.begin(&img); m_scene->render(&p, QRectF(0, 0, m_width, m_height)); p.end(); - img.setNumColors(4); if (m_view.menu_profile->currentIndex() < 2) saved = img.scaled(720, 576); else saved = img.scaled(720, 480); + saved.setNumColors(4); saved.save(img2); @@ -367,10 +367,10 @@ p.begin(&img); m_scene->render(&p, QRectF(0, 0, m_width, m_height)); p.end(); - img.setNumColors(4); if (m_view.menu_profile->currentIndex() < 2) saved = img.scaled(720, 576); else saved = img.scaled(720, 480); + saved.setNumColors(4); saved.save(img3); updateColor(); Modified: trunk/kdenlive/src/dvdwizardvob.cpp =================================================================== --- trunk/kdenlive/src/dvdwizardvob.cpp 2009-03-11 20:15:10 UTC (rev 3137) +++ trunk/kdenlive/src/dvdwizardvob.cpp 2009-03-11 20:41:33 UTC (rev 3138) @@ -22,7 +22,9 @@ #include <KUrlRequester> #include <KDebug> #include <KStandardDirs> +#include <KFileItem> +#include <QHBoxLayout> DvdWizardVob::DvdWizardVob(QWidget *parent): QWizardPage(parent) { m_view.setupUi(this); @@ -35,11 +37,21 @@ if (KStandardDirs::findExe("mkisofs").isEmpty()) m_errorMessage.append(i18n("<strong>Program %1 is required for the DVD wizard.", i18n("mkisofs"))); if (m_errorMessage.isEmpty()) m_view.error_message->setVisible(false); else m_view.error_message->setText(m_errorMessage); + +#if KDE_IS_VERSION(4,2,0) + m_capacityBar = new KCapacityBar(KCapacityBar::DrawTextInline, this); + QHBoxLayout *layout = new QHBoxLayout; + layout->addWidget(m_capacityBar); + m_view.size_box->setLayout(layout); +#else + m_view.size_box->setHidden(true); +#endif } DvdWizardVob::~DvdWizardVob() { QList<KUrlRequester *> allUrls = m_view.vob_list->findChildren<KUrlRequester *>(); qDeleteAll(allUrls); + delete m_capacityBar; } // virtual @@ -96,5 +108,16 @@ m_view.vob_list->layout()->addWidget(vob); connect(vob, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckVobList(const QString &))); } + qint64 maxSize = (qint64) 47000 * 100000; + qint64 totalSize = 0; + for (int i = 0; i < allUrls.count(); i++) { + QFile f(allUrls.at(i)->url().path()); + totalSize += f.size(); + } + +#if KDE_IS_VERSION(4,2,0) + m_capacityBar->setValue(100 * totalSize / maxSize); + m_capacityBar->setText(KIO::convertSize(totalSize)); +#endif } Modified: trunk/kdenlive/src/dvdwizardvob.h =================================================================== --- trunk/kdenlive/src/dvdwizardvob.h 2009-03-11 20:15:10 UTC (rev 3137) +++ trunk/kdenlive/src/dvdwizardvob.h 2009-03-11 20:41:33 UTC (rev 3138) @@ -21,10 +21,16 @@ #ifndef DVDWIZARDVOB_H #define DVDWIZARDVOB_H +#include "ui_dvdwizardvob_ui.h" + +#include <kdeversion.h> + +#if KDE_IS_VERSION(4,2,0) +#include <kcapacitybar.h> +#endif + #include <QWizardPage> -#include "ui_dvdwizardvob_ui.h" - class DvdWizardVob : public QWizardPage { Q_OBJECT @@ -40,6 +46,10 @@ Ui::DvdWizardVob_UI m_view; QString m_errorMessage; +#if KDE_IS_VERSION(4,2,0) + KCapacityBar *m_capacityBar; +#endif + private slots: void slotCheckVobList(const QString &text); }; Modified: trunk/kdenlive/src/widgets/dvdwizardstatus_ui.ui =================================================================== --- trunk/kdenlive/src/widgets/dvdwizardstatus_ui.ui 2009-03-11 20:15:10 UTC (rev 3137) +++ trunk/kdenlive/src/widgets/dvdwizardstatus_ui.ui 2009-03-11 20:41:33 UTC (rev 3138) @@ -5,8 +5,8 @@ <rect> <x>0</x> <y>0</y> - <width>295</width> - <height>191</height> + <width>399</width> + <height>303</height> </rect> </property> <property name="windowTitle" > @@ -45,8 +45,47 @@ </item> </widget> </item> + <item row="1" column="0" > + <widget class="QGroupBox" name="error_box" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string/> + </property> + <layout class="QGridLayout" name="gridLayout_4" > + <item row="1" column="0" > + <widget class="QLabel" name="label_7" > + <property name="text" > + <string>Error Log</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="KTextEdit" name="error_log" > + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> </layout> + <zorder>job_progress</zorder> + <zorder>error_box</zorder> + <zorder>error_log</zorder> </widget> + <customwidgets> + <customwidget> + <class>KTextEdit</class> + <extends>QTextEdit</extends> + <header>ktextedit.h</header> + </customwidget> + </customwidgets> <resources/> <connections/> </ui> Modified: trunk/kdenlive/src/widgets/dvdwizardvob_ui.ui =================================================================== --- trunk/kdenlive/src/widgets/dvdwizardvob_ui.ui 2009-03-11 20:15:10 UTC (rev 3137) +++ trunk/kdenlive/src/widgets/dvdwizardvob_ui.ui 2009-03-11 20:41:33 UTC (rev 3138) @@ -5,8 +5,8 @@ <rect> <x>0</x> <y>0</y> - <width>350</width> - <height>142</height> + <width>334</width> + <height>226</height> </rect> </property> <property name="windowTitle" > @@ -20,7 +20,7 @@ </property> </widget> </item> - <item row="0" column="1" > + <item row="0" column="1" colspan="2" > <widget class="KUrlRequester" name="intro_vob" > <property name="sizePolicy" > <sizepolicy vsizetype="Preferred" hsizetype="Expanding" > @@ -30,10 +30,10 @@ </property> </widget> </item> - <item row="1" column="0" colspan="2" > + <item row="1" column="0" colspan="3" > <widget class="QGroupBox" name="vob_list" > <property name="sizePolicy" > - <sizepolicy vsizetype="MinimumExpanding" hsizetype="Preferred" > + <sizepolicy vsizetype="Maximum" hsizetype="Preferred" > <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -48,7 +48,7 @@ </layout> </widget> </item> - <item row="2" column="0" colspan="2" > + <item row="2" column="0" > <spacer name="verticalSpacer" > <property name="orientation" > <enum>Qt::Vertical</enum> @@ -61,7 +61,7 @@ </property> </spacer> </item> - <item row="3" column="0" colspan="2" > + <item row="4" column="0" colspan="3" > <widget class="QLabel" name="error_message" > <property name="sizePolicy" > <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > @@ -74,6 +74,13 @@ </property> </widget> </item> + <item row="3" column="0" colspan="3" > + <widget class="QGroupBox" name="size_box" > + <property name="title" > + <string/> + </property> + </widget> + </item> </layout> </widget> <customwidgets> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-11 22:12:03
|
Revision: 3140 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3140&view=rev Author: j-b-m Date: 2009-03-11 22:11:52 +0000 (Wed, 11 Mar 2009) Log Message: ----------- Cleanup + small fix in dvd wizard menu page Modified Paths: -------------- trunk/kdenlive/src/docclipbase.cpp trunk/kdenlive/src/docclipbase.h trunk/kdenlive/src/dvdwizardmenu.cpp Modified: trunk/kdenlive/src/docclipbase.cpp =================================================================== --- trunk/kdenlive/src/docclipbase.cpp 2009-03-11 20:42:34 UTC (rev 3139) +++ trunk/kdenlive/src/docclipbase.cpp 2009-03-11 22:11:52 UTC (rev 3140) @@ -1,7 +1,7 @@ /*************************************************************************** - * DocClipBase.cpp - description * - * ------------------- * - * begin : Fri Apr 12 2002 * + * DocClipBase.cpp - description * + * ------------------- * + * begin : Fri Apr 12 2002 * * Copyright (C) 2002 by Jason Wood (jas...@bl...) * * Copyright (C) 2007 by Jean-Baptiste Mardelle (jb...@kd...) * * * @@ -217,50 +217,7 @@ return doc.documentElement(); } -DocClipBase *DocClipBase:: -createClip(KdenliveDoc */*doc*/, const QDomElement & element) { - DocClipBase *clip = 0; - QString description; - QDomNode node = element; - node.normalize(); - if (element.tagName() != "kdenliveclip") { - kWarning() << - "DocClipBase::createClip() element has unknown tagName : " << element.tagName(); - return 0; - } - QDomNode n = element.firstChild(); - - while (!n.isNull()) { - QDomElement e = n.toElement(); - if (!e.isNull()) { - QString tagName = e.tagName(); - if (e.tagName() == "avfile") { - // clip = DocClipAVFile::createClip(e); - } else if (e.tagName() == "DocTrackBaseList") { - // clip = DocClipProject::createClip(doc, e); - } - } else { - QDomText text = n.toText(); - if (!text.isNull()) { - description = text.nodeValue(); - } - } - - n = n.nextSibling(); - } - if (clip == 0) { - kWarning() << "DocClipBase::createClip() unable to create clip"; - } else { - // setup DocClipBase specifics of the clip. - QMap <QString, QString> props; - props.insert("description", description); - clip->setProperties(props); - clip->setAudioThumbCreated(false); - } - return clip; -} - void DocClipBase::setAudioThumbCreated(bool isDone) { m_audioThumbCreated = isDone; } Modified: trunk/kdenlive/src/docclipbase.h =================================================================== --- trunk/kdenlive/src/docclipbase.h 2009-03-11 20:42:34 UTC (rev 3139) +++ trunk/kdenlive/src/docclipbase.h 2009-03-11 22:11:52 UTC (rev 3140) @@ -154,7 +154,6 @@ /** Returns the thumbnail used by this clip */ const QPixmap & thumbnail() const; - static DocClipBase *createClip(KdenliveDoc *doc, const QDomElement & element); /** Cache for every audio Frame with 10 Bytes */ /** format is frame -> channel ->bytes */ QMap<int, QMap<int, QByteArray> > audioFrameChache; Modified: trunk/kdenlive/src/dvdwizardmenu.cpp =================================================================== --- trunk/kdenlive/src/dvdwizardmenu.cpp 2009-03-11 20:42:34 UTC (rev 3139) +++ trunk/kdenlive/src/dvdwizardmenu.cpp 2009-03-11 22:11:52 UTC (rev 3140) @@ -132,13 +132,22 @@ QList<QGraphicsItem *> collisions = button->collidingItems(); if (!collisions.isEmpty()) { for (int j = 0; j < collisions.count(); j++) { - if (list.at(j)->type() == button->type()) return false; + if (collisions.at(j)->type() == button->type()) return false; } } targets.append(button->target()); } } - if (buttonCount == 0) return false; + if (buttonCount == 0) { + // We need at least one button + return false; + } + + if (!m_view.background_image->isHidden()) { + // Make sure user selected a valid image / video file + if (!QFile::exists(m_view.background_image->url().path())) return false; + } + // check that we have a "Play all" entry if (targets.contains(0)) return true; // ... or that each video file has a button @@ -278,6 +287,7 @@ } void DvdWizardMenu::buildImage() { + emit completeChanged(); if (m_view.background_image->url().isEmpty()) { m_scene->removeItem(m_background); return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-12 12:37:39
|
Revision: 3141 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3141&view=rev Author: j-b-m Date: 2009-03-12 12:37:19 +0000 (Thu, 12 Mar 2009) Log Message: ----------- correctly update capture folder when it changes: http://www.kdenlive.org:80/mantis/view.php?id=712 Modified Paths: -------------- trunk/kdenlive/src/kdenlivesettingsdialog.cpp trunk/kdenlive/src/kdenlivesettingsdialog.h trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/recmonitor.cpp trunk/kdenlive/src/recmonitor.h Modified: trunk/kdenlive/src/kdenlivesettingsdialog.cpp =================================================================== --- trunk/kdenlive/src/kdenlivesettingsdialog.cpp 2009-03-11 22:11:52 UTC (rev 3140) +++ trunk/kdenlive/src/kdenlivesettingsdialog.cpp 2009-03-12 12:37:19 UTC (rev 3141) @@ -26,6 +26,7 @@ #include <kopenwithdialog.h> #include <KConfigDialogManager> #include <kde_file.h> +#include <KIO/NetAccess> #include <QDir> #include <QTimer> @@ -65,6 +66,7 @@ m_configEnv.capturefolderurl->lineEdit()->setObjectName("kcfg_capturefolder"); page2 = addPage(p2, i18n("Environment"), "terminal"); + m_captureFolder = KdenliveSettings::capturefolder(); QWidget *p4 = new QWidget; m_configCapture.setupUi(p4); page4 = addPage(p4, i18n("Capture"), "audio-card"); @@ -378,6 +380,12 @@ resetProfile = true; } + if (m_configEnv.capturefolderurl->text() != KdenliveSettings::capturefolder()) { + kDebug() << "/// CAPT FOLDER UPDATED"; + KdenliveSettings::setCapturefolder(m_configEnv.capturefolderurl->text()); + emit updateCaptureFolder(); + } + value = m_configCapture.kcfg_rmd_alsa_device->itemData(m_configCapture.kcfg_rmd_alsa_device->currentIndex()).toString(); if (value != KdenliveSettings::rmd_alsadevicename()) { KdenliveSettings::setRmd_alsadevicename(value); @@ -427,6 +435,7 @@ } + #include "kdenlivesettingsdialog.moc" Modified: trunk/kdenlive/src/kdenlivesettingsdialog.h =================================================================== --- trunk/kdenlive/src/kdenlivesettingsdialog.h 2009-03-11 22:11:52 UTC (rev 3140) +++ trunk/kdenlive/src/kdenlivesettingsdialog.h 2009-03-12 12:37:19 UTC (rev 3141) @@ -78,12 +78,14 @@ QString m_defaultProfile; QString m_defaultPath; KProcess m_readProcess; + QString m_captureFolder; void initDevices(); signals: void customChanged(); void doResetProfile(); void updatePreviewSettings(); + void updateCaptureFolder(); }; Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2009-03-11 22:11:52 UTC (rev 3140) +++ trunk/kdenlive/src/mainwindow.cpp 2009-03-12 12:37:19 UTC (rev 3141) @@ -1728,6 +1728,7 @@ connect(dialog, SIGNAL(settingsChanged(const QString&)), this, SLOT(updateConfiguration())); connect(dialog, SIGNAL(doResetProfile()), m_monitorManager, SLOT(slotResetProfiles())); connect(dialog, SIGNAL(updatePreviewSettings()), this, SLOT(slotUpdatePreviewSettings())); + connect(dialog, SIGNAL(updateCaptureFolder()), m_recMonitor, SLOT(slotUpdateCaptureFolder())); //connect(dialog, SIGNAL(updatePreviewSettings()), this, SLOT(slotUpdatePreviewSettings())); dialog->show(); if (page != -1) dialog->showPage(page, option); Modified: trunk/kdenlive/src/recmonitor.cpp =================================================================== --- trunk/kdenlive/src/recmonitor.cpp 2009-03-11 22:11:52 UTC (rev 3140) +++ trunk/kdenlive/src/recmonitor.cpp 2009-03-12 12:37:19 UTC (rev 3141) @@ -126,6 +126,11 @@ emit showConfigDialog(4, ui.device_selector->currentIndex()); } +void RecMonitor::slotUpdateCaptureFolder() { + if (captureProcess) captureProcess->setWorkingDirectory(KdenliveSettings::capturefolder()); + slotVideoDeviceChanged(ui.device_selector->currentIndex()); +} + void RecMonitor::slotVideoDeviceChanged(int ix) { switch (ix) { case SCREENGRAB: Modified: trunk/kdenlive/src/recmonitor.h =================================================================== --- trunk/kdenlive/src/recmonitor.h 2009-03-11 22:11:52 UTC (rev 3140) +++ trunk/kdenlive/src/recmonitor.h 2009-03-12 12:37:19 UTC (rev 3141) @@ -98,6 +98,7 @@ void start(); void activateRecMonitor(); void slotPlay(); + void slotUpdateCaptureFolder(); signals: void renderPosition(int); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-12 21:08:28
|
Revision: 3142 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3142&view=rev Author: j-b-m Date: 2009-03-12 21:08:08 +0000 (Thu, 12 Mar 2009) Log Message: ----------- Fix drag & drop of effects: http://www.kdenlive.org:80/mantis/view.php?id=715 Modified Paths: -------------- trunk/kdenlive/src/abstractgroupitem.cpp trunk/kdenlive/src/abstractgroupitem.h trunk/kdenlive/src/clipitem.cpp trunk/kdenlive/src/customtrackview.cpp trunk/kdenlive/src/customtrackview.h Modified: trunk/kdenlive/src/abstractgroupitem.cpp =================================================================== --- trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-12 12:37:19 UTC (rev 3141) +++ trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-12 21:08:08 UTC (rev 3142) @@ -22,16 +22,20 @@ #include "abstractclipitem.h" #include "kdenlivesettings.h" #include "customtrackscene.h" +#include "customtrackview.h" #include <KDebug> #include <QPainter> #include <QStyleOptionGraphicsItem> +#include <QDomDocument> +#include <QMimeData> AbstractGroupItem::AbstractGroupItem(double fps): QGraphicsItemGroup(), m_fps(fps) { setZValue(2); setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + setAcceptDrops(true); } int AbstractGroupItem::type() const { @@ -175,3 +179,21 @@ return QGraphicsItemGroup::itemChange(change, value); } +//virtual +void AbstractGroupItem::dropEvent(QGraphicsSceneDragDropEvent * event) { + QString effects = QString(event->mimeData()->data("kdenlive/effectslist")); + QDomDocument doc; + doc.setContent(effects, true); + QDomElement e = doc.documentElement(); + CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; + if (view) view->slotAddGroupEffect(e, this); +} + +//virtual +void AbstractGroupItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { + event->setAccepted(event->mimeData()->hasFormat("kdenlive/effectslist")); +} + +void AbstractGroupItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event) { + Q_UNUSED(event); +} Modified: trunk/kdenlive/src/abstractgroupitem.h =================================================================== --- trunk/kdenlive/src/abstractgroupitem.h 2009-03-12 12:37:19 UTC (rev 3141) +++ trunk/kdenlive/src/abstractgroupitem.h 2009-03-12 21:08:08 UTC (rev 3142) @@ -21,10 +21,12 @@ #ifndef ABSTRACTGROUPITEM #define ABSTRACTGROUPITEM -#include <QGraphicsItemGroup> #include "definitions.h" #include "gentime.h" +#include <QGraphicsItemGroup> +#include <QGraphicsSceneMouseEvent> + class CustomTrackScene; class AbstractGroupItem : public QObject , public QGraphicsItemGroup { @@ -39,6 +41,9 @@ protected: virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); + virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); + virtual void dropEvent(QGraphicsSceneDragDropEvent *event); private: QPainterPath groupShape(QPointF); Modified: trunk/kdenlive/src/clipitem.cpp =================================================================== --- trunk/kdenlive/src/clipitem.cpp 2009-03-12 12:37:19 UTC (rev 3141) +++ trunk/kdenlive/src/clipitem.cpp 2009-03-12 21:08:08 UTC (rev 3142) @@ -1379,6 +1379,7 @@ void ClipItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event) { Q_UNUSED(event); } + void ClipItem::addTransition(Transition* t) { m_transitionsList.append(t); //CustomTrackView *view = (CustomTrackView *) scene()->views()[0]; Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-03-12 12:37:19 UTC (rev 3141) +++ trunk/kdenlive/src/customtrackview.cpp 2009-03-12 21:08:08 UTC (rev 3142) @@ -79,7 +79,7 @@ // const int duration = animate ? 1500 : 1; CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscene, QWidget *parent) - : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_scrollOffset(0), m_changeSpeedAction(NULL), m_pasteEffectsAction(NULL) { + : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_scrollOffset(0), m_changeSpeedAction(NULL), m_pasteEffectsAction(NULL), m_clipDrag(false) { if (doc) m_commandStack = doc->commandStack(); else m_commandStack = NULL; setMouseTracking(true); @@ -955,6 +955,7 @@ void CustomTrackView::dragEnterEvent(QDragEnterEvent * event) { if (event->mimeData()->hasFormat("kdenlive/clip")) { + m_clipDrag = true; resetSelectionGroup(); QStringList list = QString(event->mimeData()->data("kdenlive/clip")).split(';'); m_selectionGroup = new AbstractGroupItem(m_document->fps()); @@ -977,6 +978,7 @@ scene()->addItem(m_selectionGroup); event->acceptProposedAction(); } else if (event->mimeData()->hasFormat("kdenlive/producerslist")) { + m_clipDrag = true; QStringList ids = QString(event->mimeData()->data("kdenlive/producerslist")).split(';'); m_scene->clearSelection(); resetSelectionGroup(false); @@ -1003,7 +1005,11 @@ updateSnapPoints(NULL, offsetList); scene()->addItem(m_selectionGroup); event->acceptProposedAction(); - } else QGraphicsView::dragEnterEvent(event); + } else { + // the drag is not a clip (may be effect, ...) + m_clipDrag = false; + QGraphicsView::dragEnterEvent(event); + } } @@ -1075,8 +1081,50 @@ } } +void CustomTrackView::slotAddGroupEffect(QDomElement effect, AbstractGroupItem *group) { + QList<QGraphicsItem *> itemList = group->childItems(); + QUndoCommand *effectCommand = new QUndoCommand(); + QString effectName; + QDomNode namenode = effect.elementsByTagName("name").item(0); + if (!namenode.isNull()) effectName = i18n(namenode.toElement().text().toUtf8().data()); + else effectName = i18n("effect"); + effectCommand->setText(i18n("Add %1", effectName)); + int count = 0; + for (int i = 0; i < itemList.count(); i++) { + if (itemList.at(i)->type() == AVWIDGET) { + ClipItem *item = (ClipItem *)itemList.at(i); + if (item->hasEffect(effect.attribute("tag"), effect.attribute("id")) != -1 && effect.attribute("unique", "0") != "0") { + emit displayMessage(i18n("Effect already present in clip"), ErrorMessage); + continue; + } + if (item->isItemLocked()) { + continue; + } + item->initEffect(effect); + if (effect.attribute("tag") == "ladspa") { + QString ladpsaFile = m_document->getLadspaFile(); + initEffects::ladspaEffectFile(ladpsaFile, effect.attribute("ladspaid").toInt(), getLadspaParams(effect)); + effect.setAttribute("src", ladpsaFile); + } + new AddEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), effect, true, effectCommand); + count++; + } + } + if (count > 0) { + m_commandStack->push(effectCommand); + m_document->setModified(true); + } else delete effectCommand; +} + void CustomTrackView::slotAddEffect(QDomElement effect, GenTime pos, int track) { QList<QGraphicsItem *> itemList; + QUndoCommand *effectCommand = new QUndoCommand(); + QString effectName; + QDomNode namenode = effect.elementsByTagName("name").item(0); + if (!namenode.isNull()) effectName = i18n(namenode.toElement().text().toUtf8().data()); + else effectName = i18n("effect"); + effectCommand->setText(i18n("Add %1", effectName)); + int count = 0; if (track == -1) itemList = scene()->selectedItems(); if (itemList.isEmpty()) { ClipItem *clip = getClipItemAt((int)pos.frames(m_document->fps()) + 1, track); @@ -1091,17 +1139,23 @@ emit displayMessage(i18n("Effect already present in clip"), ErrorMessage); continue; } + if (item->isItemLocked()) { + continue; + } item->initEffect(effect); if (effect.attribute("tag") == "ladspa") { QString ladpsaFile = m_document->getLadspaFile(); initEffects::ladspaEffectFile(ladpsaFile, effect.attribute("ladspaid").toInt(), getLadspaParams(effect)); effect.setAttribute("src", ladpsaFile); } - AddEffectCommand *command = new AddEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), effect, true); - m_commandStack->push(command); + new AddEffectCommand(this, m_document->tracksCount() - item->track(), item->startPos(), effect, true, effectCommand); + count++; } } - m_document->setModified(true); + if (count > 0) { + m_commandStack->push(effectCommand); + m_document->setModified(true); + } else delete effectCommand; } void CustomTrackView::slotDeleteEffect(ClipItem *clip, QDomElement effect) { @@ -1407,19 +1461,17 @@ void CustomTrackView::dragMoveEvent(QDragMoveEvent * event) { event->setDropAction(Qt::IgnoreAction); const QPointF pos = mapToScene(event->pos()); - if (m_selectionGroup) { + if (m_selectionGroup && m_clipDrag) { m_selectionGroup->setPos(pos.x(), pos.y()); event->setDropAction(Qt::MoveAction); - if (event->mimeData()->hasFormat("kdenlive/producerslist") || event->mimeData()->hasFormat("kdenlive/clip")) { - event->acceptProposedAction(); - } + event->acceptProposedAction(); } else { QGraphicsView::dragMoveEvent(event); } } void CustomTrackView::dragLeaveEvent(QDragLeaveEvent * event) { - if (m_selectionGroup) { + if (m_selectionGroup && m_clipDrag) { QList<QGraphicsItem *> items = m_selectionGroup->childItems(); qDeleteAll(items); scene()->destroyItemGroup(m_selectionGroup); @@ -1428,7 +1480,7 @@ } void CustomTrackView::dropEvent(QDropEvent * event) { - if (m_selectionGroup) { + if (m_selectionGroup && m_clipDrag) { QList<QGraphicsItem *> items = m_selectionGroup->childItems(); resetSelectionGroup(); m_scene->clearSelection(); @@ -1818,8 +1870,7 @@ } } } - if (count > 0) m_commandStack->push(deleteCommand); - else delete deleteCommand; + } void CustomTrackView::setCursorPos(int pos, bool seek) { Modified: trunk/kdenlive/src/customtrackview.h =================================================================== --- trunk/kdenlive/src/customtrackview.h 2009-03-12 12:37:19 UTC (rev 3141) +++ trunk/kdenlive/src/customtrackview.h 2009-03-12 21:08:08 UTC (rev 3142) @@ -66,6 +66,7 @@ void setScale(double scaleFactor); void deleteClip(const QString &clipId); void slotAddEffect(QDomElement effect, GenTime pos, int track); + void slotAddGroupEffect(QDomElement effect, AbstractGroupItem *group); void addEffect(int track, GenTime pos, QDomElement effect); void deleteEffect(int track, GenTime pos, QDomElement effect); void updateEffect(int track, GenTime pos, QDomElement effect, int ix, bool triggeredByUser = true); @@ -201,6 +202,7 @@ QAction *m_pasteEffectsAction; QTimer m_scrollTimer; int m_scrollOffset; + bool m_clipDrag; QList <CommentedTime> m_searchStrings; int m_findIndex; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-12 23:10:37
|
Revision: 3145 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3145&view=rev Author: j-b-m Date: 2009-03-12 23:10:24 +0000 (Thu, 12 Mar 2009) Log Message: ----------- remove unused stuff Modified Paths: -------------- trunk/kdenlive/src/trackview.cpp trunk/kdenlive/src/trackview.h Modified: trunk/kdenlive/src/trackview.cpp =================================================================== --- trunk/kdenlive/src/trackview.cpp 2009-03-12 23:03:16 UTC (rev 3144) +++ trunk/kdenlive/src/trackview.cpp 2009-03-12 23:10:24 UTC (rev 3145) @@ -352,14 +352,6 @@ return i; } -double TrackView::zoomFactor() const { - return m_scale; -} - -int TrackView::mapLocalToValue(int x) const { - return (int)(x * zoomFactor()); -} - KdenliveDoc *TrackView::document() { return m_doc; } Modified: trunk/kdenlive/src/trackview.h =================================================================== --- trunk/kdenlive/src/trackview.h 2009-03-12 23:03:16 UTC (rev 3144) +++ trunk/kdenlive/src/trackview.h 2009-03-12 23:10:24 UTC (rev 3145) @@ -46,8 +46,6 @@ public: explicit TrackView(KdenliveDoc *doc, QWidget *parent = 0); - double zoomFactor() const; - int mapLocalToValue(int x) const; void setEditMode(const QString & editMode); const QString & editMode() const; QGraphicsScene *projectScene(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-13 10:51:27
|
Revision: 3149 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3149&view=rev Author: j-b-m Date: 2009-03-13 10:51:12 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Show Config wizard if Kdenlive version changed Modified Paths: -------------- trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/wizard.cpp trunk/kdenlive/src/wizard.h Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2009-03-13 10:31:38 UTC (rev 3148) +++ trunk/kdenlive/src/mainwindow.cpp 2009-03-13 10:51:12 UTC (rev 3149) @@ -49,6 +49,7 @@ #include "markerdialog.h" #include "clipitem.h" #include "interfaces.h" +#include "kdenlive-config.h" #include <KApplication> #include <KAction> @@ -85,6 +86,8 @@ #include <stdlib.h> +static const char version[] = VERSION; + static const int ID_STATUS_MSG = 1; static const int ID_EDITMODE_MSG = 2; static const int ID_TIMELINE_MSG = 3; @@ -1072,23 +1075,32 @@ KSharedConfigPtr config = KGlobal::config(); m_fileOpenRecent->loadEntries(KConfigGroup(config, "Recent Files")); KConfigGroup initialGroup(config, "version"); - if (!initialGroup.exists()) { + bool upgrade = false; + if (initialGroup.exists()) { + if (initialGroup.readEntry("version", QString()).section(' ', 0, 0) != QString(version).section(' ', 0, 0)) + upgrade = true; + + if (initialGroup.readEntry("version") == "0.7") { + //Add new settings from 0.7.1 + if (KdenliveSettings::defaultprojectfolder().isEmpty()) { + QString path = QDir::homePath() + "/kdenlive"; + if (KStandardDirs::makeDir(path) == false) kDebug() << "/// ERROR CREATING PROJECT FOLDER: " << path; + KdenliveSettings::setDefaultprojectfolder(path); + } + } + + } + + if (!initialGroup.exists() || upgrade) { // this is our first run, show Wizard - Wizard *w = new Wizard(this); + Wizard *w = new Wizard(upgrade, this); if (w->exec() == QDialog::Accepted && w->isOk()) { w->adjustSettings(); - initialGroup.writeEntry("version", "0.7"); + initialGroup.writeEntry("version", version); delete w; } else { ::exit(1); } - } else if (initialGroup.readEntry("version") == "0.7") { - //Add new settings from 0.7.1 - if (KdenliveSettings::defaultprojectfolder().isEmpty()) { - QString path = QDir::homePath() + "/kdenlive"; - if (KStandardDirs::makeDir(path) == false) kDebug() << "/// ERROR CREATING PROJECT FOLDER: " << path; - KdenliveSettings::setDefaultprojectfolder(path); - } } KConfigGroup treecolumns(config, "Project Tree"); const QByteArray state = treecolumns.readEntry("columns", QByteArray()); Modified: trunk/kdenlive/src/wizard.cpp =================================================================== --- trunk/kdenlive/src/wizard.cpp 2009-03-13 10:31:38 UTC (rev 3148) +++ trunk/kdenlive/src/wizard.cpp 2009-03-13 10:51:12 UTC (rev 3149) @@ -33,12 +33,16 @@ const double recommendedMltVersion = 36; -Wizard::Wizard(QWidget *parent): QWizard(parent) { +Wizard::Wizard(bool upgrade, QWidget *parent): QWizard(parent) { setPixmap(QWizard::WatermarkPixmap, QPixmap(KStandardDirs::locate("appdata", "banner.png"))); QWizardPage *page1 = new QWizardPage; page1->setTitle(i18n("Welcome")); - QLabel *label = new QLabel(i18n("This is the first time you run Kdenlive. This wizard will let you adjust some basic settings, you will be ready to edit your first movie in a few seconds...")); + QLabel *label; + if (upgrade) + label = new QLabel(i18n("Your Kdenlive version was upgraded. Please take some time to review the basic settings")); + else + label = new QLabel(i18n("This is the first time you run Kdenlive. This wizard will let you adjust some basic settings, you will be ready to edit your first movie in a few seconds...")); label->setWordWrap(true); m_startLayout = new QVBoxLayout; m_startLayout->addWidget(label); @@ -99,7 +103,6 @@ QWizardPage *page5 = new QWizardPage; page5->setTitle(i18n("Checking system")); m_check.setupUi(page5); - slotCheckPrograms(); addPage(page5); listViewDelegate = new WizardDelegate(m_check.programList); @@ -490,6 +493,7 @@ } else m_systemCheckIsOk = true; if (m_systemCheckIsOk) checkMltComponents(); + slotCheckPrograms(); } bool Wizard::isOk() const { Modified: trunk/kdenlive/src/wizard.h =================================================================== --- trunk/kdenlive/src/wizard.h 2009-03-13 10:31:38 UTC (rev 3148) +++ trunk/kdenlive/src/wizard.h 2009-03-13 10:51:12 UTC (rev 3149) @@ -73,7 +73,7 @@ class Wizard : public QWizard { Q_OBJECT public: - Wizard(QWidget * parent = 0); + Wizard(bool upgrade, QWidget * parent = 0); void installExtraMimes(QString baseName, QStringList globs); void runUpdateMimeDatabase(); void adjustSettings(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-13 16:58:51
|
Revision: 3153 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3153&view=rev Author: j-b-m Date: 2009-03-13 16:58:37 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Remove Alpha Transparency transition as suggested by Dan. Instead we use Composite transition. Modified Paths: -------------- trunk/kdenlive/src/initeffects.cpp trunk/kdenlive/src/trackview.cpp Modified: trunk/kdenlive/src/initeffects.cpp =================================================================== --- trunk/kdenlive/src/initeffects.cpp 2009-03-13 15:48:07 UTC (rev 3152) +++ trunk/kdenlive/src/initeffects.cpp 2009-03-13 16:58:37 UTC (rev 3153) @@ -709,10 +709,10 @@ ret.setContent(wipetrans); transitions->append(ret.documentElement()); - QString alphatrans = "<ktransition tag=\"composite\" id=\"alphatransparency\" ><name>Alpha transparency</name><description>Make alpha channel transparent</description><parameter tag=\"geometry\" type=\"fixed\" default=\"0%,0%:100%x100%\" name=\"geometry\"><name>Direction</name></parameter><parameter tag=\"fill\" default=\"0\" type=\"bool\" name=\"fill\" ><name>Rescale</name></parameter><parameter tag=\"aligned\" default=\"0\" type=\"bool\" name=\"aligned\" ><name>Align</name></parameter></ktransition>"; + /*QString alphatrans = "<ktransition tag=\"composite\" id=\"alphatransparency\" ><name>Alpha transparency</name><description>Make alpha channel transparent</description><parameter tag=\"geometry\" type=\"fixed\" default=\"0%,0%:100%x100%\" name=\"geometry\"><name>Direction</name></parameter><parameter tag=\"fill\" default=\"0\" type=\"bool\" name=\"fill\" ><name>Rescale</name></parameter><parameter tag=\"aligned\" default=\"0\" type=\"bool\" name=\"aligned\" ><name>Align</name></parameter></ktransition>"; QDomDocument ret2; ret2.setContent(alphatrans); - transitions->append(ret2.documentElement()); + transitions->append(ret2.documentElement());*/ } QDomElement initEffects::quickParameterFill(QDomDocument & doc, QString name, QString tag, QString type, QString def, QString min, QString max, QString list, QString listdisplaynames, QString factor, QString namedesc, QString format) { Modified: trunk/kdenlive/src/trackview.cpp =================================================================== --- trunk/kdenlive/src/trackview.cpp 2009-03-13 15:48:07 UTC (rev 3152) +++ trunk/kdenlive/src/trackview.cpp 2009-03-13 16:58:37 UTC (rev 3153) @@ -233,8 +233,7 @@ QString transitionId; if (mlt_service == "composite") { // When adding composite transition, check if it is a wipe transition - if (mlt_geometry == "0%,0%:100%x100%") transitionId = "alphatransparency"; - else if (mlt_geometry.count(';') == 1) { + if (mlt_geometry.count(';') == 1) { mlt_geometry.remove(QChar('%'), Qt::CaseInsensitive); mlt_geometry.replace(QChar('x'), QChar(','), Qt::CaseInsensitive); QString start = mlt_geometry.section(';', 0, 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-15 17:09:52
|
Revision: 3160 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3160&view=rev Author: j-b-m Date: 2009-03-15 17:09:41 +0000 (Sun, 15 Mar 2009) Log Message: ----------- Use "None" string when no luma file is selected in a transition instead of empty entry Modified Paths: -------------- trunk/kdenlive/src/effectstackedit.cpp trunk/kdenlive/src/initeffects.cpp Modified: trunk/kdenlive/src/effectstackedit.cpp =================================================================== --- trunk/kdenlive/src/effectstackedit.cpp 2009-03-15 15:35:32 UTC (rev 3159) +++ trunk/kdenlive/src/effectstackedit.cpp 2009-03-15 17:09:41 UTC (rev 3160) @@ -135,7 +135,7 @@ lsval->list->setItemIcon(i, QPixmap::fromImage(iconCache[entry])); } } - lsval->list->setCurrentIndex(listitems.indexOf(value)); + if (!value.isEmpty()) lsval->list->setCurrentIndex(listitems.indexOf(value)); connect(lsval->list, SIGNAL(currentIndexChanged(int)) , this, SLOT(collectAllParameters())); lsval->title->setTitle(paramName); Modified: trunk/kdenlive/src/initeffects.cpp =================================================================== --- trunk/kdenlive/src/initeffects.cpp 2009-03-15 15:35:32 UTC (rev 3159) +++ trunk/kdenlive/src/initeffects.cpp 2009-03-15 17:09:41 UTC (rev 3160) @@ -69,9 +69,9 @@ // static void initEffects::refreshLumas() { - // Check for Kdenlive installed luma files - QStringList imagenamelist; - QStringList imagefiles; + // Check for Kdenlive installed luma files, add empty string at start for no luma + QStringList imagenamelist = QStringList() << i18n("None"); + QStringList imagefiles = QStringList() << QString(); QStringList filters; filters << "*.pgm" << "*.png"; @@ -610,9 +610,9 @@ //kDebug() << ret.toString(); } else { - // Check for Kdenlive installed luma files - QStringList imagenamelist; - QStringList imagefiles; + // Check for Kdenlive installed luma files, add empty string at start for no luma + QStringList imagenamelist = QStringList() << i18n("None"); + QStringList imagefiles = QStringList() << QString(); QStringList filters; filters << "*.pgm" << "*.png"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-17 15:04:04
|
Revision: 3161 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3161&view=rev Author: j-b-m Date: 2009-03-17 15:03:53 +0000 (Tue, 17 Mar 2009) Log Message: ----------- initial support for clip grouping (still a bit buggy) Modified Paths: -------------- trunk/kdenlive/src/CMakeLists.txt trunk/kdenlive/src/abstractgroupitem.cpp trunk/kdenlive/src/abstractgroupitem.h trunk/kdenlive/src/clipitem.cpp trunk/kdenlive/src/customtrackview.cpp trunk/kdenlive/src/customtrackview.h trunk/kdenlive/src/kdenliveui.rc trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/mainwindow.h Added Paths: ----------- trunk/kdenlive/src/groupclipscommand.cpp trunk/kdenlive/src/groupclipscommand.h Modified: trunk/kdenlive/src/CMakeLists.txt =================================================================== --- trunk/kdenlive/src/CMakeLists.txt 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/CMakeLists.txt 2009-03-17 15:03:53 UTC (rev 3161) @@ -150,6 +150,7 @@ dvdwizardmenu.cpp dvdwizard.cpp locktrackcommand.cpp + groupclipscommand.cpp ) add_definitions( ${KDE4_DEFINITIONS} ) Modified: trunk/kdenlive/src/abstractgroupitem.cpp =================================================================== --- trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/abstractgroupitem.cpp 2009-03-17 15:03:53 UTC (rev 3161) @@ -77,9 +77,25 @@ } } +/*ItemInfo AbstractGroupItem::info() const { + ItemInfo itemInfo; + itemInfo.startPos = m_startPos; + itemInfo.track = m_track; + return itemInfo; +}*/ + // virtual void AbstractGroupItem::paint(QPainter *p, const QStyleOptionGraphicsItem *option, QWidget *) { - p->fillRect(option->exposedRect, QColor(200, 100, 100, 100)); + const double scale = option->matrix.m11(); + QRect clipRect = option->exposedRect.toRect(); + clipRect.adjust(0, 0, 1 / scale + 0.5, 1); + p->fillRect(option->exposedRect, QColor(100, 100, 200, 100)); + p->setClipRect(clipRect); + QPen pen = p->pen(); + pen.setColor(QColor(200, 90, 90)); + pen.setStyle(Qt::DashLine); + p->setPen(pen); + p->drawRect(boundingRect()); } //virtual @@ -91,10 +107,11 @@ int xpos = projectScene()->getSnapPointForPos((int) newPos.x(), KdenliveSettings::snaptopoints()); xpos = qMax(xpos, 0); newPos.setX(xpos); - QPointF start = pos(); + kDebug() << "// GRP MOVE, NEW:" << newPos << ", CURR:" << start; //int startTrack = (start.y() + trackHeight / 2) / trackHeight; int newTrack = (newPos.y()) / trackHeight; + //kDebug()<<"// GROUP NEW T:"<<newTrack<<",START T:"<<startTrack<<",MAX:"<<projectScene()->tracksCount() - 1; newTrack = qMin(newTrack, projectScene()->tracksCount() - (int)(boundingRect().height() + 5) / trackHeight); newTrack = qMax(newTrack, 0); @@ -102,6 +119,7 @@ // Check if top item is a clip or a transition int offset = 0; int topTrack = -1; + kDebug() << "// CHG GRP 1"; QList<QGraphicsItem *> children = childItems(); for (int i = 0; i < children.count(); i++) { int currentTrack = (int)(children.at(i)->scenePos().y() / trackHeight); @@ -117,6 +135,7 @@ } } } + kDebug() << "// CHG GRP 2"; newPos.setY((int)((newTrack) * trackHeight) + offset); if (newPos == start) return start; @@ -124,16 +143,19 @@ // If group goes below 0, adjust position to 0 return QPointF(pos().x() - start.x(), pos().y()); } - + kDebug() << "// CHG GRP 3"; QPainterPath shape = groupShape(newPos - pos()); QList<QGraphicsItem*> collindingItems = scene()->items(shape, Qt::IntersectsItemShape); for (int i = 0; i < children.count(); i++) { collindingItems.removeAll(children.at(i)); } + + kDebug() << "// CHG GRP 4" << newPos; if (collindingItems.isEmpty()) return newPos; else { bool forwardMove = newPos.x() > start.x(); int offset = 0; + kDebug() << "// CHG GRP 5"; for (int i = 0; i < collindingItems.count(); i++) { QGraphicsItem *collision = collindingItems.at(i); if (collision->type() == AVWIDGET) { Modified: trunk/kdenlive/src/abstractgroupitem.h =================================================================== --- trunk/kdenlive/src/abstractgroupitem.h 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/abstractgroupitem.h 2009-03-17 15:03:53 UTC (rev 3161) @@ -37,6 +37,7 @@ CustomTrackScene* projectScene(); void addItem(QGraphicsItem * item); int track() const; +// ItemInfo info() const; protected: virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); @@ -49,6 +50,8 @@ QPainterPath groupShape(QPointF); void fixItemRect(); double m_fps; + GenTime m_startPos; + int m_track; }; #endif Modified: trunk/kdenlive/src/clipitem.cpp =================================================================== --- trunk/kdenlive/src/clipitem.cpp 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/clipitem.cpp 2009-03-17 15:03:53 UTC (rev 3161) @@ -532,7 +532,7 @@ QBrush paintColor; if (parentItem()) paintColor = QBrush(QColor(255, 248, 149)); else paintColor = brush(); - if (isSelected()) paintColor = QBrush(paintColor.color().darker()); + if (isSelected() || parentItem() && parentItem()->isSelected()) paintColor = QBrush(paintColor.color().darker()); QRectF br = rect(); QRectF exposed = option->exposedRect; QRectF mapped = painter->matrix().mapRect(br); @@ -733,7 +733,7 @@ // draw frame around clip - if (isSelected()) { + if (isSelected() || parentItem() && parentItem()->isSelected()) { pen.setColor(Qt::red); } else { pen.setColor(Qt::black); Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/customtrackview.cpp 2009-03-17 15:03:53 UTC (rev 3161) @@ -54,6 +54,7 @@ #include "ui_addtrack_ui.h" #include "initeffects.h" #include "locktrackcommand.h" +#include "groupclipscommand.h" #include <KDebug> #include <KLocale> @@ -79,7 +80,7 @@ // const int duration = animate ? 1500 : 1; CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscene, QWidget *parent) - : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_scrollOffset(0), m_changeSpeedAction(NULL), m_pasteEffectsAction(NULL), m_clipDrag(false) { + : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_scrollOffset(0), m_changeSpeedAction(NULL), m_pasteEffectsAction(NULL), m_ungroupAction(NULL), m_clipDrag(false) { if (doc) m_commandStack = doc->commandStack(); else m_commandStack = NULL; setMouseTracking(true); @@ -126,6 +127,7 @@ for (int i = 0; i < list.count(); i++) { if (list.at(i)->data().toString() == "change_speed") m_changeSpeedAction = list.at(i); else if (list.at(i)->data().toString() == "paste_effects") m_pasteEffectsAction = list.at(i); + else if (list.at(i)->data().toString() == "ungroup_clip") m_ungroupAction = list.at(i); } m_timelineContextTransitionMenu = transition; @@ -554,8 +556,12 @@ return; } - if (event->modifiers() == Qt::ShiftModifier && collisionList.count() == 0) { + if (event->modifiers() & Qt::ShiftModifier && collisionList.count() == 0) { setDragMode(QGraphicsView::RubberBandDrag); + if (!event->modifiers() & Qt::ControlModifier) { + resetSelectionGroup(); + scene()->clearSelection(); + } QGraphicsView::mousePressEvent(event); m_blockRefresh = false; m_operationMode = RUBBERSELECTION; @@ -577,16 +583,21 @@ return; } - // Find first clip or transition under mouse - int i = 0; + // Find first clip, transition or group under mouse + int ct = 0; m_dragItem = NULL; - while (i < collisionList.count()) { - if (collisionList.at(i)->type() == AVWIDGET || collisionList.at(i)->type() == TRANSITIONWIDGET) { - m_dragItem = static_cast <AbstractClipItem *>(collisionList.at(i)); + AbstractGroupItem *dragGroup = NULL; + while (ct < collisionList.count()) { + if (collisionList.at(ct)->type() == AVWIDGET || collisionList.at(ct)->type() == TRANSITIONWIDGET) { + m_dragItem = static_cast <AbstractClipItem *>(collisionList.at(ct)); m_dragItemInfo = m_dragItem->info(); + if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET && m_dragItem->parentItem() != m_selectionGroup) { + //kDebug()<<"// KLIK FOUND GRP: "<<m_dragItem->sceneBoundingRect(); + dragGroup = static_cast <AbstractGroupItem *>(m_dragItem->parentItem()); + } break; } - i++; + ct++; } if (m_dragItem && m_dragItem->type() == TRANSITIONWIDGET) { @@ -598,14 +609,15 @@ // context menu requested if (event->button() == Qt::RightButton) { if (m_dragItem) { - if (!m_dragItem->isSelected()) { + if (dragGroup) dragGroup->setSelected(true); + else if (!m_dragItem->isSelected()) { resetSelectionGroup(false); m_scene->clearSelection(); m_dragItem->setSelected(true); } } m_operationMode = NONE; - displayContextMenu(event->globalPos(), m_dragItem); + displayContextMenu(event->globalPos(), m_dragItem, dragGroup); m_menuPosition = m_clickEvent; m_dragItem = NULL; event->accept(); @@ -649,7 +661,7 @@ } // Razor tool - if (m_tool == RAZORTOOL) { + if (m_tool == RAZORTOOL && m_dragItem) { if (m_dragItem->type() == TRANSITIONWIDGET) { emit displayMessage(i18n("Cannot cut a transition"), ErrorMessage); event->accept(); @@ -666,33 +678,16 @@ return; } - - if (m_dragItem->type() == AVWIDGET && !m_dragItem->isItemLocked()) emit clipItemSelected((ClipItem*) m_dragItem); - else emit clipItemSelected(NULL); - - if (event->modifiers() != Qt::ControlModifier && (m_dragItem->group() || m_dragItem->isSelected())) { - // If clicked item is selected, allow move - event->accept(); - if (m_selectionGroup) m_selectionGroup->setSelected(true); - if (m_operationMode == NONE) QGraphicsView::mousePressEvent(event); - } else { - resetSelectionGroup(); - if (event->modifiers() != Qt::ControlModifier) m_scene->clearSelection(); - m_dragItem->setSelected(!m_dragItem->isSelected()); - groupSelectedItems(); - ClipItem *clip = static_cast <ClipItem *>(m_dragItem); - m_changeSpeedAction->setEnabled(clip->clipType() == AV || clip->clipType() == VIDEO); - m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); - } - - if (m_selectionGroup == NULL) updateSnapPoints(m_dragItem); + if (dragGroup == NULL) updateSnapPoints(m_dragItem); else { QList <GenTime> offsetList; - QList<QGraphicsItem *> children = m_selectionGroup->childItems(); + QList<QGraphicsItem *> children = dragGroup->childItems(); for (int i = 0; i < children.count(); i++) { - AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(i)); - offsetList.append(item->startPos()); - offsetList.append(item->endPos()); + if (children.at(i)->type() == AVWIDGET || children.at(i)->type() == TRANSITIONWIDGET) { + AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(i)); + offsetList.append(item->startPos()); + offsetList.append(item->endPos()); + } } if (!offsetList.isEmpty()) { qSort(offsetList); @@ -708,6 +703,31 @@ } } + if (m_dragItem->type() == AVWIDGET && !m_dragItem->isItemLocked()) emit clipItemSelected((ClipItem*) m_dragItem); + else emit clipItemSelected(NULL); + + if (event->modifiers() != Qt::ControlModifier && (m_dragItem->isSelected() || dragGroup && dragGroup->isSelected())) { + // If clicked item is selected, allow move + if (dragGroup) dragGroup->setSelected(true); + //event->accept(); + if (m_operationMode == NONE) QGraphicsView::mousePressEvent(event); + } else { + resetSelectionGroup(); + if (event->modifiers() != Qt::ControlModifier) m_scene->clearSelection(); + dragGroup = NULL; + if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET) { + //kDebug()<<"// KLIK FOUND GRP: "<<m_dragItem->sceneBoundingRect(); + dragGroup = static_cast <AbstractGroupItem *>(m_dragItem->parentItem()); + } + bool selected = !m_dragItem->isSelected(); + if (dragGroup) dragGroup->setSelected(selected); + else m_dragItem->setSelected(selected); + groupSelectedItems(); + ClipItem *clip = static_cast <ClipItem *>(m_dragItem); + m_changeSpeedAction->setEnabled(clip->clipType() == AV || clip->clipType() == VIDEO); + m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); + } + m_clickPoint = QPoint((int)(mapToScene(event->pos()).x() - m_dragItem->startPos().frames(m_document->fps())), (int)(event->pos().y() - m_dragItem->pos().y())); m_operationMode = m_dragItem->operationMode(mapToScene(event->pos())); @@ -717,7 +737,7 @@ return; } else if (m_operationMode == MOVE) { setCursor(Qt::ClosedHandCursor); - } else if (m_operationMode == TRANSITIONSTART) { + } else if (m_operationMode == TRANSITIONSTART && event->modifiers() != Qt::ControlModifier) { ItemInfo info; info.startPos = m_dragItem->startPos(); info.track = m_dragItem->track(); @@ -743,7 +763,7 @@ } if (transitionAccepted) slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack); else emit displayMessage(i18n("Cannot add transition"), ErrorMessage); - } else if (m_operationMode == TRANSITIONEND) { + } else if (m_operationMode == TRANSITIONEND && event->modifiers() != Qt::ControlModifier) { ItemInfo info; info.endPos = GenTime(m_dragItem->endPos().frames(m_document->fps()), m_document->fps()); info.track = m_dragItem->track(); @@ -789,11 +809,54 @@ bool snap = KdenliveSettings::snaptopoints(); KdenliveSettings::setSnaptopoints(false); QList<QGraphicsItem *> children = m_selectionGroup->childItems(); + QPointF selectionPos = m_selectionGroup->scenePos(); scene()->destroyItemGroup(m_selectionGroup); + kDebug() << "DESTROY SEL GRP, ITEMS: " << children.count(); for (int i = 0; i < children.count(); i++) { - if (!static_cast <AbstractClipItem *>(children.at(i))->isItemLocked()) { + if (children.at(i)->type() == AVWIDGET || children.at(i)->type() == TRANSITIONWIDGET) { + if (!static_cast <AbstractClipItem *>(children.at(i))->isItemLocked()) { + children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + children.at(i)->setSelected(selectItems); + } + } else if (children.at(i)->type() == GROUPWIDGET) { children.at(i)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); children.at(i)->setSelected(selectItems); + + // Rebuild groups or they get corrupted (because of translate / move issues) + QGraphicsItemGroup *group = static_cast <QGraphicsItemGroup *>(children.at(i)); + //kDebug()<<"// GRP POS:"<<group->scenePos()<<", SELECT:"<<selectionPos; + if (group->scenePos() != selectionPos) + group->translate(selectionPos.x(), selectionPos.y()); + //group->setPos(-selectionPos.x(), -selectionPos.y()); + QList<QGraphicsItem *> selection = group->childItems(); + scene()->destroyItemGroup(group); + if (!selection.isEmpty()) { + QPointF top = selection.at(0)->sceneBoundingRect().topLeft(); + + // Find top left position of selection + for (int j = 1; j < selection.count(); j++) { + if (selection.at(j)->type() == AVWIDGET || selection.at(j)->type() == TRANSITIONWIDGET) { + selection.at(j)->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + QPointF currenttop = selection.at(j)->sceneBoundingRect().topLeft(); + //kDebug()<<"// GRP ITEM POS:"<<currenttop; + if (currenttop.x() < top.x()) top.setX(currenttop.x()); + if (currenttop.y() < top.y()) top.setY(currenttop.y()); + } + } + + AbstractGroupItem *newGroup = new AbstractGroupItem(m_document->fps()); + newGroup->translate(-top.x(), -top.y() + 1); + newGroup->setPos(top.x(), top.y() - 1); + scene()->addItem(newGroup); + + for (int j = 0; j < selection.count(); j++) { + if (selection.at(j)->type() == AVWIDGET || selection.at(j)->type() == TRANSITIONWIDGET) { + newGroup->addToGroup(selection.at(j)); + //kDebug()<<"// ADDING ITEM:"<<selection.at(j)->sceneBoundingRect(); + selection.at(j)->setFlags(QGraphicsItem::ItemIsSelectable); + } + } + } } } m_selectionGroup = NULL; @@ -801,42 +864,71 @@ } } -void CustomTrackView::groupSelectedItems(bool force) { +void CustomTrackView::groupSelectedItems(bool force, bool createNewGroup) { if (m_selectionGroup) { kDebug() << "///// ERROR, TRYING TO OVERRIDE EXISTING GROUP"; return; } QList<QGraphicsItem *> selection = m_scene->selectedItems(); - QGraphicsItemGroup *group = m_scene->createItemGroup(selection); - scene()->addItem(group); - QPointF top = group->sceneBoundingRect().topLeft(); - m_scene->destroyItemGroup(group); + if (selection.isEmpty()) return; + QPointF top = selection.at(0)->sceneBoundingRect().topLeft(); + // Find top left position of selection + for (int i = 1; i < selection.count(); i++) { + if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) { + QPointF currenttop = selection.at(i)->sceneBoundingRect().topLeft(); + if (currenttop.x() < top.x()) top.setX(currenttop.x()); + if (currenttop.y() < top.y()) top.setY(currenttop.y()); + } + } + if (force || selection.count() > 1) { bool snap = KdenliveSettings::snaptopoints(); KdenliveSettings::setSnaptopoints(false); - m_selectionGroup = new AbstractGroupItem(m_document->fps()); - m_selectionGroup->translate(-top.x(), -top.y() + 1); - m_selectionGroup->setPos(top.x(), top.y() - 1); - scene()->addItem(m_selectionGroup); - for (int i = 0; i < selection.count(); i++) { - if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) { - m_selectionGroup->addToGroup(selection.at(i)); - selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); + if (createNewGroup) { + AbstractGroupItem *newGroup = new AbstractGroupItem(m_document->fps()); + newGroup->translate(-top.x(), -top.y() + 1); + newGroup->setPos(top.x(), top.y() - 1); + scene()->addItem(newGroup); + + // CHeck if we are trying to include a group in a group + QList <QGraphicsItemGroup *> groups; + for (int i = 0; i < selection.count(); i++) { + if (selection.at(i)->type() == GROUPWIDGET && !groups.contains(static_cast<QGraphicsItemGroup *>(selection.at(i)))) { + groups.append(static_cast<QGraphicsItemGroup *>(selection.at(i))); + } else if (selection.at(i)->parentItem() && !groups.contains(static_cast<QGraphicsItemGroup *>(selection.at(i)->parentItem()))) groups.append(static_cast<QGraphicsItemGroup *>(selection.at(i)->parentItem())); } - } - KdenliveSettings::setSnaptopoints(snap); + if (!groups.isEmpty()) { + // ungroup previous groups + while (!groups.isEmpty()) { + QGraphicsItemGroup *grp = groups.takeFirst(); + scene()->destroyItemGroup(grp); + } + selection = m_scene->selectedItems(); + } - if (m_selectionGroup) { - /*bool snap = KdenliveSettings::snaptopoints(); - KdenliveSettings::setSnaptopoints(false); - QPointF top = m_selectionGroup->sceneBoundingRect().topLeft(); - // kDebug()<<"SEL GRP TOP: "<<top; - // Fix group item position - m_selectionGroup->translate(-top.x(), -top.y()); - m_selectionGroup->setPos(top);*/ - m_selectionGroupInfo.startPos = GenTime(m_selectionGroup->scenePos().x(), m_document->fps()); - m_selectionGroupInfo.track = m_selectionGroup->track(); - //KdenliveSettings::setSnaptopoints(snap); + for (int i = 0; i < selection.count(); i++) { + if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) { + newGroup->addToGroup(selection.at(i)); + selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); + } + } + KdenliveSettings::setSnaptopoints(snap); + } else { + m_selectionGroup = new AbstractGroupItem(m_document->fps()); + m_selectionGroup->translate(-top.x(), -top.y() + 1); + m_selectionGroup->setPos(top.x(), top.y() - 1); + scene()->addItem(m_selectionGroup); + for (int i = 0; i < selection.count(); i++) { + if (selection.at(i)->parentItem() == NULL && (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET || selection.at(i)->type() == GROUPWIDGET)) { + m_selectionGroup->addToGroup(selection.at(i)); + selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); + } + } + KdenliveSettings::setSnaptopoints(snap); + if (m_selectionGroup) { + m_selectionGroupInfo.startPos = GenTime(m_selectionGroup->scenePos().x(), m_document->fps()); + m_selectionGroupInfo.track = m_selectionGroup->track(); + } } } else resetSelectionGroup(); } @@ -939,14 +1031,22 @@ } -void CustomTrackView::displayContextMenu(QPoint pos, AbstractClipItem *clip) { +void CustomTrackView::displayContextMenu(QPoint pos, AbstractClipItem *clip, AbstractGroupItem *group) { if (clip == NULL) m_timelineContextMenu->popup(pos); - else if (clip->type() == AVWIDGET) { - ClipItem *item = static_cast <ClipItem*>(clip); - m_changeSpeedAction->setEnabled(item->clipType() == AV || item->clipType() == VIDEO); + else if (group != NULL) { + m_changeSpeedAction->setEnabled(false); m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); + m_ungroupAction->setEnabled(true); m_timelineContextClipMenu->popup(pos); - } else if (clip->type() == TRANSITIONWIDGET) m_timelineContextTransitionMenu->popup(pos); + } else { + m_ungroupAction->setEnabled(false); + if (clip->type() == AVWIDGET) { + ClipItem *item = static_cast <ClipItem*>(clip); + m_changeSpeedAction->setEnabled(item->clipType() == AV || item->clipType() == VIDEO); + m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); + m_timelineContextClipMenu->popup(pos); + } else if (clip->type() == TRANSITIONWIDGET) m_timelineContextTransitionMenu->popup(pos); + } } void CustomTrackView::activateMonitor() { @@ -1271,6 +1371,7 @@ if (dup->checkKeyFrames()) slotRefreshEffects(dup); item->baseClip()->addReference(); m_document->updateClip(item->baseClip()->getId()); + m_document->setModified(true); kDebug() << "///////// CUTTING CLIP RESULT: (" << item->startPos().frames(25) << "-" << item->endPos().frames(25) << "), DUP: (" << dup->startPos().frames(25) << "-" << dup->endPos().frames(25) << ")" << ", CUT: " << cutTime.frames(25); kDebug() << "// CUTTING CLIP dONE"; } else { @@ -1305,6 +1406,7 @@ bool success = m_document->renderer()->mltResizeClipEnd(clipinfo, info.endPos - info.startPos); if (success) { item->resizeEnd((int) info.endPos.frames(m_document->fps())); + m_document->setModified(true); } else emit displayMessage(i18n("Error when resizing clip"), ErrorMessage); @@ -1516,7 +1618,6 @@ m_changeSpeedAction->setEnabled(hasVideoClip); m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); groupSelectedItems(true); - m_document->setModified(true); } else QGraphicsView::dropEvent(event); setFocus(); } @@ -1991,7 +2092,7 @@ if (m_operationMode == MOVE) { setCursor(Qt::OpenHandCursor); - if (m_selectionGroup == NULL) { + if (m_dragItem->parentItem() == 0) { // we are moving one clip, easy if (m_dragItem->type() == AVWIDGET && (m_dragItemInfo.startPos != info.startPos || m_dragItemInfo.track != info.track)) { ClipItem *item = static_cast <ClipItem *>(m_dragItem); @@ -2076,6 +2177,7 @@ m_commandStack->push(command); emit displayMessage(i18n("Cannot move clip to position %1", m_document->timecode().getTimecodeFromFrames(m_dragItemInfo.startPos.frames(m_document->fps()))), ErrorMessage); } + m_document->setModified(true); } if (m_dragItem->type() == TRANSITIONWIDGET && (m_dragItemInfo.startPos != info.startPos || m_dragItemInfo.track != info.track)) { Transition *transition = static_cast <Transition *>(m_dragItem); @@ -2092,19 +2194,28 @@ } else { // Moving several clips. We need to delete them and readd them to new position, // or they might overlap each other during the move + QGraphicsItemGroup *group = static_cast <QGraphicsItemGroup *>(m_dragItem->parentItem()); + QList<QGraphicsItem *> items = group->childItems(); - QList<QGraphicsItem *> items = m_selectionGroup->childItems(); - QList<ItemInfo> clipsToMove = QList<ItemInfo> (); QList<ItemInfo> transitionsToMove = QList<ItemInfo> (); - GenTime timeOffset = GenTime(m_selectionGroup->scenePos().x(), m_document->fps()) - m_selectionGroupInfo.startPos; - const int trackOffset = m_selectionGroup->track() - m_selectionGroupInfo.track; + GenTime timeOffset = GenTime(m_dragItem->scenePos().x(), m_document->fps()) - m_dragItemInfo.startPos; + const int trackOffset = m_dragItem->track() - m_dragItemInfo.track; + kDebug() << "// MOVED SEVERAL CLIPS" << timeOffset.frames(25); if (timeOffset != GenTime() || trackOffset != 0) { - QUndoCommand *moveClips = new QUndoCommand(); - moveClips->setText(i18n("Move group")); // remove items in MLT playlist + + // Expand groups + int max = items.count(); + for (int i = 0; i < max; i++) { + if (items.at(i)->type() == GROUPWIDGET) { + items += items.at(i)->childItems(); + } + } + for (int i = 0; i < items.count(); i++) { + if (items.at(i)->type() != AVWIDGET && items.at(i)->type() != TRANSITIONWIDGET) continue; AbstractClipItem *item = static_cast <AbstractClipItem *>(items.at(i)); ItemInfo info = item->info(); if (item->type() == AVWIDGET) { @@ -2123,13 +2234,14 @@ for (int i = 0; i < items.count(); i++) { // re-add items in correct place + if (items.at(i)->type() != AVWIDGET && items.at(i)->type() != TRANSITIONWIDGET) continue; AbstractClipItem *item = static_cast <AbstractClipItem *>(items.at(i)); item->updateItem(); ItemInfo info = item->info(); int tracknumber = m_document->tracksCount() - info.track - 1; bool isLocked = m_document->trackInfoAt(tracknumber).isLocked; if (isLocked) { - m_selectionGroup->removeFromGroup(item); + group->removeFromGroup(item); item->setItemLocked(true); } @@ -2151,15 +2263,19 @@ } } - new MoveGroupCommand(this, clipsToMove, transitionsToMove, timeOffset, trackOffset, false, moveClips); - m_commandStack->push(moveClips); + MoveGroupCommand *move = new MoveGroupCommand(this, clipsToMove, transitionsToMove, timeOffset, trackOffset, false); + m_commandStack->push(move); - QPointF top = m_selectionGroup->sceneBoundingRect().topLeft(); + //QPointF top = group->sceneBoundingRect().topLeft(); //QPointF oldpos = m_selectionGroup->scenePos(); //kDebug()<<"SELECTION GRP POS: "<<m_selectionGroup->scenePos()<<", TOP: "<<top; - m_selectionGroup->setPos(top); - m_selectionGroupInfo.startPos = GenTime(m_selectionGroup->scenePos().x(), m_document->fps()); - m_selectionGroupInfo.track = m_selectionGroup->track(); + //group->setPos(top); + //TODO: get rid of the 3 lines below + if (m_selectionGroup) { + m_selectionGroupInfo.startPos = GenTime(m_selectionGroup->scenePos().x(), m_document->fps()); + m_selectionGroupInfo.track = m_selectionGroup->track(); + } + m_document->setModified(true); } } @@ -2357,7 +2473,7 @@ } emit transitionItemSelected((m_dragItem && m_dragItem->type() == TRANSITIONWIDGET && m_dragItem->isSelected()) ? static_cast <Transition *>(m_dragItem) : NULL); - m_document->setModified(true); + if (m_operationMode != NONE && m_operationMode != MOVE) m_document->setModified(true); m_operationMode = NONE; } @@ -2476,6 +2592,73 @@ } } +void CustomTrackView::groupClips(bool group) { + QList<QGraphicsItem *> itemList = scene()->selectedItems(); + QList <ItemInfo> clipInfos; + QList <ItemInfo> transitionInfos; + GenTime currentPos = GenTime(m_cursorPos, m_document->fps()); + + // Expand groups + int max = itemList.count(); + for (int i = 0; i < max; i++) { + if (itemList.at(i)->type() == GROUPWIDGET) { + itemList += itemList.at(i)->childItems(); + } + } + + for (int i = 0; i < itemList.count(); i++) { + if (itemList.at(i)->type() == AVWIDGET) { + AbstractClipItem *clip = static_cast <AbstractClipItem *>(itemList.at(i)); + if (!clip->isItemLocked()) clipInfos.append(clip->info()); + } else if (itemList.at(i)->type() == TRANSITIONWIDGET) { + AbstractClipItem *clip = static_cast <AbstractClipItem *>(itemList.at(i)); + if (!clip->isItemLocked()) transitionInfos.append(clip->info()); + } + } + if (clipInfos.count() > 0) { + GroupClipsCommand *command = new GroupClipsCommand(this, clipInfos, transitionInfos, group, true); + m_commandStack->push(command); + } +} + +void CustomTrackView::doGroupClips(QList <ItemInfo> clipInfos, QList <ItemInfo> transitionInfos, bool group) { + resetSelectionGroup(); + m_scene->clearSelection(); + if (!group) { + for (int i = 0; i < clipInfos.count(); i++) { + ClipItem *clip = getClipItemAt(clipInfos.at(i).startPos, clipInfos.at(i).track); + if (clip == NULL) continue; + if (clip->parentItem()) scene()->destroyItemGroup(static_cast <QGraphicsItemGroup *>(clip->parentItem())); + clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + } + for (int i = 0; i < transitionInfos.count(); i++) { + Transition *tr = getTransitionItemAt(transitionInfos.at(i).startPos, transitionInfos.at(i).track); + if (tr == NULL) continue; + if (tr->parentItem()) scene()->destroyItemGroup(static_cast <QGraphicsItemGroup *>(tr->parentItem())); + tr->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + } + m_document->setModified(true); + return; + } + + QList <QGraphicsItemGroup *> groups; + for (int i = 0; i < clipInfos.count(); i++) { + ClipItem *clip = getClipItemAt(clipInfos.at(i).startPos, clipInfos.at(i).track); + if (clip) { + clip->setSelected(true); + } + } + for (int i = 0; i < transitionInfos.count(); i++) { + Transition *clip = getTransitionItemAt(transitionInfos.at(i).startPos, transitionInfos.at(i).track); + if (clip) { + clip->setSelected(true); + } + } + + groupSelectedItems(false, true); + m_document->setModified(true); +} + void CustomTrackView::addClip(QDomElement xml, const QString &clipId, ItemInfo info, EffectsList effects) { DocClipBase *baseclip = m_document->clipManager()->getClipById(clipId); if (baseclip == NULL) { @@ -2509,6 +2692,7 @@ for (int i = 0; i < item->effectsCount(); i++) { m_document->renderer()->mltAddEffect(info.track, info.startPos, item->getEffectArgs(item->effectAt(i)), false); } + m_document->setModified(true); m_document->renderer()->doRefresh(); } @@ -2643,6 +2827,7 @@ } } KdenliveSettings::setSnaptopoints(snap); + m_document->setModified(true); } else { // undo last move and emit error message emit displayMessage(i18n("Cannot move clip to position %1", m_document->timecode().getTimecodeFromFrames(end.startPos.frames(m_document->fps()))), ErrorMessage); @@ -2655,6 +2840,7 @@ kDebug() << "// GROUP MOVE; OFFSET: " << offset.frames(25) << ", TK OFF: " << trackOffset; resetSelectionGroup(); m_scene->clearSelection(); + QList <QGraphicsItemGroup *> groups; for (int i = 0; i < startClip.count(); i++) { if (reverseMove) { startClip[i].startPos = startClip.at(i).startPos - offset; @@ -2663,7 +2849,8 @@ ClipItem *clip = getClipItemAt(startClip.at(i).startPos, startClip.at(i).track); if (clip) { clip->setItemLocked(false); - clip->setSelected(true); + if (clip->parentItem()) clip->parentItem()->setSelected(true); + else clip->setSelected(true); m_document->renderer()->mltRemoveClip(m_document->tracksCount() - startClip.at(i).track, startClip.at(i).startPos); } } @@ -2675,11 +2862,12 @@ Transition *tr = getTransitionItemAt(startTransition.at(i).startPos, startTransition.at(i).track); if (tr) { tr->setItemLocked(false); - tr->setSelected(true); + if (tr->parentItem()) tr->parentItem()->setSelected(true); + else tr->setSelected(true); m_document->renderer()->mltDeleteTransition(tr->transitionTag(), tr->transitionEndTrack(), m_document->tracksCount() - startTransition.at(i).track, startTransition.at(i).startPos, startTransition.at(i).endPos, tr->toXML()); } } - groupSelectedItems(); + groupSelectedItems(true); if (m_selectionGroup) { QPointF pos = m_selectionGroup->pos(); qreal posx = pos.x() + offset.frames(m_document->fps()); @@ -2695,8 +2883,18 @@ m_selectionGroupInfo.track = m_selectionGroup->track(); QList<QGraphicsItem *> children = m_selectionGroup->childItems(); + kDebug() << "// GRP MOVE; FOUND CHILDREN:" << children.count(); + + // Expand groups + int max = children.count(); + for (int i = 0; i < max; i++) { + if (children.at(i)->type() == GROUPWIDGET) { + children += children.at(i)->childItems(); + } + } for (int i = 0; i < children.count(); i++) { // re-add items in correct place + if (children.at(i)->type() != AVWIDGET && children.at(i)->type() != TRANSITIONWIDGET) continue; AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(i)); item->updateItem(); ItemInfo info = item->info(); Modified: trunk/kdenlive/src/customtrackview.h =================================================================== --- trunk/kdenlive/src/customtrackview.h 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/customtrackview.h 2009-03-17 15:03:53 UTC (rev 3161) @@ -110,6 +110,8 @@ QStringList getLadspaParams(QDomElement effect) const; void initCursorPos(int pos); void lockTrack(int ix, bool lock); + void groupClips(bool group = true); + void doGroupClips(QList <ItemInfo> clipInfos, QList <ItemInfo> transitionInfos, bool group); public slots: void setCursorPos(int pos, bool seek = true); @@ -193,13 +195,14 @@ void checkScrolling(); /** Should we auto scroll while playing (keep in sync with KdenliveSettings::autoscroll() */ bool m_autoScroll; - void displayContextMenu(QPoint pos, AbstractClipItem *clip = NULL); + void displayContextMenu(QPoint pos, AbstractClipItem *clip, AbstractGroupItem *group); QMenu *m_timelineContextMenu; QMenu *m_timelineContextClipMenu; QMenu *m_timelineContextTransitionMenu; QAction *m_autoTransition; QAction *m_changeSpeedAction; QAction *m_pasteEffectsAction; + QAction *m_ungroupAction; QTimer m_scrollTimer; int m_scrollOffset; bool m_clipDrag; @@ -226,7 +229,7 @@ ClipItem *getMainActiveClip() const; bool insertPossible(AbstractGroupItem *group, const QPoint &pos) const; void resetSelectionGroup(bool selectItems = true); - void groupSelectedItems(bool force = false); + void groupSelectedItems(bool force = false, bool createNewGroup = false); /** Get available space for clip move (min and max free positions) */ void getClipAvailableSpace(AbstractClipItem *item, GenTime &minimum, GenTime &maximum); /** Get available space for transition move (min and max free positions) */ Added: trunk/kdenlive/src/groupclipscommand.cpp =================================================================== --- trunk/kdenlive/src/groupclipscommand.cpp (rev 0) +++ trunk/kdenlive/src/groupclipscommand.cpp 2009-03-17 15:03:53 UTC (rev 3161) @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2007 by Jean-Baptiste Mardelle (jb...@kd...) * + * * + * 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. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + + +#include "groupclipscommand.h" +#include "customtrackview.h" + +#include <KLocale> + +GroupClipsCommand::GroupClipsCommand(CustomTrackView *view, const QList <ItemInfo> clipInfos, const QList <ItemInfo> transitionInfos, bool group, bool doIt, QUndoCommand * parent) : QUndoCommand(parent), m_view(view), m_clips(clipInfos), m_transitions(transitionInfos), m_group(group), m_doIt(doIt) { + if (m_group) setText(i18n("Group clips")); + else setText(i18n("Ungroup clips")); +} + + +// virtual +void GroupClipsCommand::undo() { +// kDebug()<<"---- undoing action"; + m_doIt = true; + m_view->doGroupClips(m_clips, m_transitions, !m_group); +} +// virtual +void GroupClipsCommand::redo() { + kDebug() << "---- redoing action"; + if (m_doIt) + m_view->doGroupClips(m_clips, m_transitions, m_group); + m_doIt = true; +} + Added: trunk/kdenlive/src/groupclipscommand.h =================================================================== --- trunk/kdenlive/src/groupclipscommand.h (rev 0) +++ trunk/kdenlive/src/groupclipscommand.h 2009-03-17 15:03:53 UTC (rev 3161) @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright (C) 2007 by Jean-Baptiste Mardelle (jb...@kd...) * + * * + * 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. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + + +#ifndef GROUPCLIPSCOMMAND_H +#define GROUPCLIPSCOMMAND_H + +#include <QUndoCommand> +#include <QGraphicsView> +#include <QPointF> + +#include <KDebug> +#include "definitions.h" + +class GenTime; +class CustomTrackView; + +class GroupClipsCommand : public QUndoCommand { +public: + GroupClipsCommand(CustomTrackView *view, const QList <ItemInfo> clipInfos, const QList <ItemInfo> transitionInfos, bool group, bool doIt, QUndoCommand * parent = 0); + virtual void undo(); + virtual void redo(); + +private: + CustomTrackView *m_view; + const QList <ItemInfo> m_clips; + const QList <ItemInfo> m_transitions; + bool m_doIt; + bool m_group; +}; + +#endif + Modified: trunk/kdenlive/src/kdenliveui.rc =================================================================== --- trunk/kdenlive/src/kdenliveui.rc 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/kdenliveui.rc 2009-03-17 15:03:53 UTC (rev 3161) @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<gui name="kdenlive" version="36"> +<gui name="kdenlive" version="37"> <ToolBar name="extraToolBar" > <text>Extra Toolbar</text> <Action name="project_render" /> @@ -25,6 +25,11 @@ <Action name="add_folder" /> <Menu name="generators" ><text>Generators</text> </Menu> + <Menu name="track_menu" ><text>Tracks</text> + <Action name="insert_track" /> + <Action name="delete_track" /> + <Action name="change_track" /> + </Menu> <Separator /> <Action name="reload_clip" /> <Action name="clip_properties" /> @@ -65,11 +70,8 @@ <Action name="insert_space" /> <Action name="delete_space" /> </Menu> - <Menu name="track_menu" ><text>Tracks</text> - <Action name="insert_track" /> - <Action name="delete_track" /> - <Action name="change_track" /> - </Menu> + <Action name="group_clip" /> + <Action name="ungroup_clip" /> <Separator /> <Menu name="video_effects_menu" ><text>Add Video Effect</text> </Menu> Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/mainwindow.cpp 2009-03-17 15:03:53 UTC (rev 3161) @@ -322,6 +322,8 @@ m_timelineContextClipMenu->addAction(actionCollection()->action("delete_timeline_clip")); m_timelineContextClipMenu->addAction(actionCollection()->action("change_clip_speed")); + m_timelineContextClipMenu->addAction(actionCollection()->action("group_clip")); + m_timelineContextClipMenu->addAction(actionCollection()->action("ungroup_clip")); m_timelineContextClipMenu->addAction(actionCollection()->action("cut_timeline_clip")); m_timelineContextClipMenu->addAction(actionCollection()->action(KStandardAction::name(KStandardAction::Copy))); m_timelineContextClipMenu->addAction(actionCollection()->action("paste_effects")); @@ -901,6 +903,15 @@ stickTransition->setText(i18n("Automatic Transition")); connect(stickTransition, SIGNAL(triggered(bool)), this, SLOT(slotAutoTransition())); + KAction* groupClip = new KAction(KIcon("object-group"), i18n("Group Clips"), this); + collection->addAction("group_clip", groupClip); + connect(groupClip, SIGNAL(triggered(bool)), this, SLOT(slotGroupClips())); + + KAction* ungroupClip = new KAction(KIcon("object-ungroup"), i18n("Ungroup Clips"), this); + collection->addAction("ungroup_clip", ungroupClip); + ungroupClip->setData("ungroup_clip"); + connect(ungroupClip, SIGNAL(triggered(bool)), this, SLOT(slotUnGroupClips())); + KAction* cutTimelineClip = new KAction(KIcon("edit-cut"), i18n("Cut Clip"), this); cutTimelineClip->setShortcut(Qt::SHIFT + Qt::Key_R); collection->addAction("cut_timeline_clip", cutTimelineClip); @@ -1987,6 +1998,18 @@ } } +void MainWindow::slotGroupClips() { + if (m_activeTimeline) { + m_activeTimeline->projectView()->groupClips(); + } +} + +void MainWindow::slotUnGroupClips() { + if (m_activeTimeline) { + m_activeTimeline->projectView()->groupClips(false); + } +} + void MainWindow::slotAddProjectClip(KUrl url) { if (m_activeDocument) m_activeDocument->slotAddClipFile(url, QString()); Modified: trunk/kdenlive/src/mainwindow.h =================================================================== --- trunk/kdenlive/src/mainwindow.h 2009-03-15 17:09:41 UTC (rev 3160) +++ trunk/kdenlive/src/mainwindow.h 2009-03-17 15:03:53 UTC (rev 3161) @@ -292,6 +292,8 @@ void slotZoneMoved(int start, int end); void slotUpdatePreviewSettings(); void slotDvdWizard(const QString &url = QString(), const QString &profile = "dv_pal"); + void slotGroupClips(); + void slotUnGroupClips(); signals: Q_SCRIPTABLE void abortRenderJob(const QString &url); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-18 12:51:53
|
Revision: 3162 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3162&view=rev Author: j-b-m Date: 2009-03-18 12:51:39 +0000 (Wed, 18 Mar 2009) Log Message: ----------- First steps to save timeline clip groups Modified Paths: -------------- trunk/kdenlive/src/clipmanager.cpp trunk/kdenlive/src/clipmanager.h trunk/kdenlive/src/customtrackview.cpp trunk/kdenlive/src/customtrackview.h trunk/kdenlive/src/kdenlivedoc.cpp Modified: trunk/kdenlive/src/clipmanager.cpp =================================================================== --- trunk/kdenlive/src/clipmanager.cpp 2009-03-17 15:03:53 UTC (rev 3161) +++ trunk/kdenlive/src/clipmanager.cpp 2009-03-18 12:51:39 UTC (rev 3162) @@ -23,6 +23,7 @@ #include "kdenlivesettings.h" #include "docclipbase.h" #include "kdenlivedoc.h" +#include "abstractclipitem.h" #include <mlt++/Mlt.h> @@ -30,6 +31,8 @@ #include <KFileDialog> #include <kio/netaccess.h> +#include <QGraphicsItemGroup> + ClipManager::ClipManager(KdenliveDoc *doc): m_doc(doc), m_audioThumbsEnabled(false), m_audioThumbsQueue(QList <QString> ()), m_generatingAudioId(QString()) { m_clipIdCounter = 1; m_folderIdCounter = 1; @@ -339,3 +342,35 @@ m_folderList.remove(id); } +void ClipManager::setGroups(QList <QGraphicsItem *> groups) { + m_groupsList = groups; +} + +QDomElement ClipManager::groupsXml() const { + QDomDocument doc; + QDomElement groups = doc.createElement("groups"); + doc.appendChild(groups); + for (int i = 0; i < m_groupsList.count(); i++) { + QDomElement group = doc.createElement("group"); + groups.appendChild(group); + QList <QGraphicsItem *> children = static_cast <QGraphicsItemGroup *>(m_groupsList.at(i))->childItems(); + for (int j = 0; j < children.count(); j++) { + if (children.at(j)->type() == AVWIDGET || children.at(j)->type() == TRANSITIONWIDGET) { + AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(j)); + ItemInfo info = item->info(); + if (item->type() == AVWIDGET) { + QDomElement clip = doc.createElement("clipitem"); + clip.setAttribute("track", info.track); + clip.setAttribute("position", info.startPos.frames(m_doc->fps())); + group.appendChild(clip); + } else if (item->type() == TRANSITIONWIDGET) { + QDomElement clip = doc.createElement("transitionitem"); + clip.setAttribute("track", info.track); + clip.setAttribute("position", info.startPos.frames(m_doc->fps())); + group.appendChild(clip); + } + } + } + } + return doc.documentElement(); +} Modified: trunk/kdenlive/src/clipmanager.h =================================================================== --- trunk/kdenlive/src/clipmanager.h 2009-03-17 15:03:53 UTC (rev 3161) +++ trunk/kdenlive/src/clipmanager.h 2009-03-18 12:51:39 UTC (rev 3162) @@ -38,6 +38,7 @@ class KdenliveDoc; class DocClipBase; +class QGraphicsItem; namespace Mlt { class Producer; @@ -46,7 +47,6 @@ class ClipManager: public QObject { Q_OBJECT public: - ClipManager(KdenliveDoc *doc); virtual ~ ClipManager(); void addClip(DocClipBase *clip); @@ -75,6 +75,8 @@ void addFolder(const QString&, const QString&); void deleteFolder(const QString&); void clear(); + void setGroups(QList <QGraphicsItem *> groups); + QDomElement groupsXml() const; public slots: void updatePreviewSettings(); @@ -82,6 +84,8 @@ private: // Private attributes /** the list of clips in the document */ QList <DocClipBase*> m_clipList; + /** the list of groups in the document */ + QList <QGraphicsItem *> m_groupsList; QMap <QString, QString> m_folderList; QList <QString> m_audioThumbsQueue; /** the document undo stack*/ Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-03-17 15:03:53 UTC (rev 3161) +++ trunk/kdenlive/src/customtrackview.cpp 2009-03-18 12:51:39 UTC (rev 3162) @@ -912,6 +912,7 @@ selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); } } + syncGroups(); KdenliveSettings::setSnaptopoints(snap); } else { m_selectionGroup = new AbstractGroupItem(m_document->fps()); @@ -3950,4 +3951,15 @@ } } +void CustomTrackView::syncGroups() { + // create groups list + QList<QGraphicsItem*> items = scene()->items(); + int i = 0; + while (i < items.count()) { + if (items.at(i)->type() != GROUPWIDGET) items.removeAt(i); + else i++; + } + m_document->clipManager()->setGroups(items); +} + #include "customtrackview.moc" Modified: trunk/kdenlive/src/customtrackview.h =================================================================== --- trunk/kdenlive/src/customtrackview.h 2009-03-17 15:03:53 UTC (rev 3161) +++ trunk/kdenlive/src/customtrackview.h 2009-03-18 12:51:39 UTC (rev 3162) @@ -234,6 +234,8 @@ void getClipAvailableSpace(AbstractClipItem *item, GenTime &minimum, GenTime &maximum); /** Get available space for transition move (min and max free positions) */ void getTransitionAvailableSpace(AbstractClipItem *item, GenTime &minimum, GenTime &maximum); + /** Send a list of all current groups to clipmanager */ + void syncGroups(); private slots: Modified: trunk/kdenlive/src/kdenlivedoc.cpp =================================================================== --- trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-17 15:03:53 UTC (rev 3161) +++ trunk/kdenlive/src/kdenlivedoc.cpp 2009-03-18 12:51:39 UTC (rev 3162) @@ -984,8 +984,13 @@ } } addedXml.appendChild(markers); + + // Add guides if (!m_guidesXml.isNull()) addedXml.appendChild(sceneList.importNode(m_guidesXml, true)); + // Add clip groups + addedXml.appendChild(sceneList.importNode(m_clipManager->groupsXml(), true)); + //wes.appendChild(doc.importNode(kdenliveData, true)); QFile file(path); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-18 17:27:49
|
Revision: 3163 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3163&view=rev Author: j-b-m Date: 2009-03-18 17:27:31 +0000 (Wed, 18 Mar 2009) Log Message: ----------- improve management of groups Modified Paths: -------------- trunk/kdenlive/src/clipmanager.cpp trunk/kdenlive/src/clipmanager.h trunk/kdenlive/src/customtrackview.cpp trunk/kdenlive/src/customtrackview.h Modified: trunk/kdenlive/src/clipmanager.cpp =================================================================== --- trunk/kdenlive/src/clipmanager.cpp 2009-03-18 12:51:39 UTC (rev 3162) +++ trunk/kdenlive/src/clipmanager.cpp 2009-03-18 17:27:31 UTC (rev 3163) @@ -24,6 +24,7 @@ #include "docclipbase.h" #include "kdenlivedoc.h" #include "abstractclipitem.h" +#include "abstractgroupitem.h" #include <mlt++/Mlt.h> @@ -342,10 +343,16 @@ m_folderList.remove(id); } -void ClipManager::setGroups(QList <QGraphicsItem *> groups) { - m_groupsList = groups; +AbstractGroupItem *ClipManager::createGroup() { + AbstractGroupItem *group = new AbstractGroupItem(m_doc->fps()); + m_groupsList.append(group); + return group; } +void ClipManager::removeGroup(AbstractGroupItem *group) { + m_groupsList.removeAll(group); +} + QDomElement ClipManager::groupsXml() const { QDomDocument doc; QDomElement groups = doc.createElement("groups"); @@ -353,7 +360,7 @@ for (int i = 0; i < m_groupsList.count(); i++) { QDomElement group = doc.createElement("group"); groups.appendChild(group); - QList <QGraphicsItem *> children = static_cast <QGraphicsItemGroup *>(m_groupsList.at(i))->childItems(); + QList <QGraphicsItem *> children = m_groupsList.at(i)->childItems(); for (int j = 0; j < children.count(); j++) { if (children.at(j)->type() == AVWIDGET || children.at(j)->type() == TRANSITIONWIDGET) { AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(j)); Modified: trunk/kdenlive/src/clipmanager.h =================================================================== --- trunk/kdenlive/src/clipmanager.h 2009-03-18 12:51:39 UTC (rev 3162) +++ trunk/kdenlive/src/clipmanager.h 2009-03-18 17:27:31 UTC (rev 3163) @@ -38,7 +38,7 @@ class KdenliveDoc; class DocClipBase; -class QGraphicsItem; +class AbstractGroupItem; namespace Mlt { class Producer; @@ -75,7 +75,8 @@ void addFolder(const QString&, const QString&); void deleteFolder(const QString&); void clear(); - void setGroups(QList <QGraphicsItem *> groups); + AbstractGroupItem *createGroup(); + void removeGroup(AbstractGroupItem *group); QDomElement groupsXml() const; public slots: @@ -85,7 +86,7 @@ /** the list of clips in the document */ QList <DocClipBase*> m_clipList; /** the list of groups in the document */ - QList <QGraphicsItem *> m_groupsList; + QList <AbstractGroupItem *> m_groupsList; QMap <QString, QString> m_folderList; QList <QString> m_audioThumbsQueue; /** the document undo stack*/ Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-03-18 12:51:39 UTC (rev 3162) +++ trunk/kdenlive/src/customtrackview.cpp 2009-03-18 17:27:31 UTC (rev 3163) @@ -823,12 +823,13 @@ children.at(i)->setSelected(selectItems); // Rebuild groups or they get corrupted (because of translate / move issues) - QGraphicsItemGroup *group = static_cast <QGraphicsItemGroup *>(children.at(i)); + AbstractGroupItem *group = static_cast <AbstractGroupItem *>(children.at(i)); //kDebug()<<"// GRP POS:"<<group->scenePos()<<", SELECT:"<<selectionPos; if (group->scenePos() != selectionPos) group->translate(selectionPos.x(), selectionPos.y()); //group->setPos(-selectionPos.x(), -selectionPos.y()); QList<QGraphicsItem *> selection = group->childItems(); + m_document->clipManager()->removeGroup(group); scene()->destroyItemGroup(group); if (!selection.isEmpty()) { QPointF top = selection.at(0)->sceneBoundingRect().topLeft(); @@ -844,7 +845,7 @@ } } - AbstractGroupItem *newGroup = new AbstractGroupItem(m_document->fps()); + AbstractGroupItem *newGroup = m_document->clipManager()->createGroup(); newGroup->translate(-top.x(), -top.y() + 1); newGroup->setPos(top.x(), top.y() - 1); scene()->addItem(newGroup); @@ -885,22 +886,23 @@ bool snap = KdenliveSettings::snaptopoints(); KdenliveSettings::setSnaptopoints(false); if (createNewGroup) { - AbstractGroupItem *newGroup = new AbstractGroupItem(m_document->fps()); + AbstractGroupItem *newGroup = m_document->clipManager()->createGroup(); newGroup->translate(-top.x(), -top.y() + 1); newGroup->setPos(top.x(), top.y() - 1); scene()->addItem(newGroup); // CHeck if we are trying to include a group in a group - QList <QGraphicsItemGroup *> groups; + QList <AbstractGroupItem *> groups; for (int i = 0; i < selection.count(); i++) { - if (selection.at(i)->type() == GROUPWIDGET && !groups.contains(static_cast<QGraphicsItemGroup *>(selection.at(i)))) { - groups.append(static_cast<QGraphicsItemGroup *>(selection.at(i))); - } else if (selection.at(i)->parentItem() && !groups.contains(static_cast<QGraphicsItemGroup *>(selection.at(i)->parentItem()))) groups.append(static_cast<QGraphicsItemGroup *>(selection.at(i)->parentItem())); + if (selection.at(i)->type() == GROUPWIDGET && !groups.contains(static_cast<AbstractGroupItem *>(selection.at(i)))) { + groups.append(static_cast<AbstractGroupItem *>(selection.at(i))); + } else if (selection.at(i)->parentItem() && !groups.contains(static_cast<AbstractGroupItem *>(selection.at(i)->parentItem()))) groups.append(static_cast<AbstractGroupItem *>(selection.at(i)->parentItem())); } if (!groups.isEmpty()) { // ungroup previous groups while (!groups.isEmpty()) { - QGraphicsItemGroup *grp = groups.takeFirst(); + AbstractGroupItem *grp = groups.takeFirst(); + m_document->clipManager()->removeGroup(grp); scene()->destroyItemGroup(grp); } selection = m_scene->selectedItems(); @@ -912,7 +914,6 @@ selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); } } - syncGroups(); KdenliveSettings::setSnaptopoints(snap); } else { m_selectionGroup = new AbstractGroupItem(m_document->fps()); @@ -2629,13 +2630,21 @@ for (int i = 0; i < clipInfos.count(); i++) { ClipItem *clip = getClipItemAt(clipInfos.at(i).startPos, clipInfos.at(i).track); if (clip == NULL) continue; - if (clip->parentItem()) scene()->destroyItemGroup(static_cast <QGraphicsItemGroup *>(clip->parentItem())); + if (clip->parentItem() && clip->parentItem()->type() == GROUPWIDGET) { + AbstractGroupItem *grp = static_cast <AbstractGroupItem *>(clip->parentItem()); + m_document->clipManager()->removeGroup(grp); + scene()->destroyItemGroup(grp); + } clip->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); } for (int i = 0; i < transitionInfos.count(); i++) { Transition *tr = getTransitionItemAt(transitionInfos.at(i).startPos, transitionInfos.at(i).track); if (tr == NULL) continue; - if (tr->parentItem()) scene()->destroyItemGroup(static_cast <QGraphicsItemGroup *>(tr->parentItem())); + if (tr->parentItem() && tr->parentItem()->type() == GROUPWIDGET) { + AbstractGroupItem *grp = static_cast <AbstractGroupItem *>(tr->parentItem()); + m_document->clipManager()->removeGroup(grp); + scene()->destroyItemGroup(grp); + } tr->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); } m_document->setModified(true); @@ -3951,15 +3960,5 @@ } } -void CustomTrackView::syncGroups() { - // create groups list - QList<QGraphicsItem*> items = scene()->items(); - int i = 0; - while (i < items.count()) { - if (items.at(i)->type() != GROUPWIDGET) items.removeAt(i); - else i++; - } - m_document->clipManager()->setGroups(items); -} #include "customtrackview.moc" Modified: trunk/kdenlive/src/customtrackview.h =================================================================== --- trunk/kdenlive/src/customtrackview.h 2009-03-18 12:51:39 UTC (rev 3162) +++ trunk/kdenlive/src/customtrackview.h 2009-03-18 17:27:31 UTC (rev 3163) @@ -234,8 +234,6 @@ void getClipAvailableSpace(AbstractClipItem *item, GenTime &minimum, GenTime &maximum); /** Get available space for transition move (min and max free positions) */ void getTransitionAvailableSpace(AbstractClipItem *item, GenTime &minimum, GenTime &maximum); - /** Send a list of all current groups to clipmanager */ - void syncGroups(); private slots: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-03-19 12:44:43
|
Revision: 3164 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3164&view=rev Author: j-b-m Date: 2009-03-19 12:44:41 +0000 (Thu, 19 Mar 2009) Log Message: ----------- rebuild clip groups when loading a project Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp trunk/kdenlive/src/customtrackview.h trunk/kdenlive/src/trackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-03-18 17:27:31 UTC (rev 3163) +++ trunk/kdenlive/src/customtrackview.cpp 2009-03-19 12:44:41 UTC (rev 3164) @@ -2766,8 +2766,8 @@ return getClipItemAt(framepos, track); } -Transition *CustomTrackView::getTransitionItemAt(GenTime pos, int track) { - QList<QGraphicsItem *> list = scene()->items(QPointF(pos.frames(m_document->fps()), (track + 1) * m_tracksHeight)); +Transition *CustomTrackView::getTransitionItemAt(int pos, int track) { + QList<QGraphicsItem *> list = scene()->items(QPointF(pos, (track + 1) * m_tracksHeight)); Transition *clip = NULL; for (int i = 0; i < list.size(); i++) { if (list.at(i)->type() == TRANSITIONWIDGET) { @@ -2778,6 +2778,10 @@ return clip; } +Transition *CustomTrackView::getTransitionItemAt(GenTime pos, int track) { + return getTransitionItemAt(pos.frames(m_document->fps()), track); +} + Transition *CustomTrackView::getTransitionItemAtEnd(GenTime pos, int track) { int framepos = (int)(pos.frames(m_document->fps())); QList<QGraphicsItem *> list = scene()->items(QPointF(framepos - 1, (track + 1) * m_tracksHeight)); @@ -3961,4 +3965,25 @@ } +void CustomTrackView::loadGroups(const QDomNodeList groups) { + for (int i = 0; i < groups.count(); i++) { + QDomNodeList children = groups.at(i).childNodes(); + scene()->clearSelection(); + for (int nodeindex = 0; nodeindex < children.count(); nodeindex++) { + QDomNode n = children.item(nodeindex); + QDomElement elem = n.toElement(); + int pos = elem.attribute("position").toInt(); + int track = elem.attribute("track").toInt(); + if (elem.tagName() == "clipitem") { + ClipItem *clip = getClipItemAt(pos, track); //m_document->tracksCount() - transitiontrack); + if (clip) clip->setSelected(true); + } else { + Transition *clip = getTransitionItemAt(pos, track); //m_document->tracksCount() - transitiontrack); + if (clip) clip->setSelected(true); + } + } + groupSelectedItems(false, true); + } +} + #include "customtrackview.moc" Modified: trunk/kdenlive/src/customtrackview.h =================================================================== --- trunk/kdenlive/src/customtrackview.h 2009-03-18 17:27:31 UTC (rev 3163) +++ trunk/kdenlive/src/customtrackview.h 2009-03-19 12:44:41 UTC (rev 3164) @@ -112,6 +112,7 @@ void lockTrack(int ix, bool lock); void groupClips(bool group = true); void doGroupClips(QList <ItemInfo> clipInfos, QList <ItemInfo> transitionInfos, bool group); + void loadGroups(const QDomNodeList groups); public slots: void setCursorPos(int pos, bool seek = true); @@ -189,6 +190,7 @@ ClipItem *getClipItemAt(GenTime pos, int track); ClipItem *getClipItemAtEnd(GenTime pos, int track); ClipItem *getClipItemAtStart(GenTime pos, int track); + Transition *getTransitionItemAt(int pos, int track); Transition *getTransitionItemAt(GenTime pos, int track); Transition *getTransitionItemAtEnd(GenTime pos, int track); Transition *getTransitionItemAtStart(GenTime pos, int track); Modified: trunk/kdenlive/src/trackview.cpp =================================================================== --- trunk/kdenlive/src/trackview.cpp 2009-03-18 17:27:31 UTC (rev 3163) +++ trunk/kdenlive/src/trackview.cpp 2009-03-19 12:44:41 UTC (rev 3164) @@ -316,6 +316,10 @@ m_trackview->addGuide(pos, comment); } + // Rebuild groups + QDomNodeList groups = doc.elementsByTagName("group"); + m_trackview->loadGroups(groups); + m_trackview->setDuration(duration); kDebug() << "/////////// TOTAL PROJECT DURATION: " << duration; slotRebuildTrackHeaders(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |