From: Jean-Baptiste Mardelle Date: Fri, 14 Mar 2008 21:35:02 +0000 (+0000) Subject: Rework monitor & timeline UI, and send profile to renderer X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=86930a8503d9ea42a4df2f58cf687d6f1d922bf6;p=kdenlive Rework monitor & timeline UI, and send profile to renderer svn path=/branches/KDE4/; revision=2056 --- diff --git a/renderer/kdenlive_render.cpp b/renderer/kdenlive_render.cpp index 27dc63bc..67a5088c 100644 --- a/renderer/kdenlive_render.cpp +++ b/renderer/kdenlive_render.cpp @@ -46,6 +46,8 @@ int main(int argc, char **argv) { } QString render = args.at(0); args.takeFirst(); + QString profile = args.at(0); + args.takeFirst(); QString rendermodule = args.at(0); args.takeFirst(); QString player = args.at(0); @@ -54,7 +56,7 @@ int main(int argc, char **argv) { args.takeFirst(); QString dest = args.at(0); args.takeFirst(); - RenderJob *job = new RenderJob(erase, render, rendermodule, player, src, dest, args, in, out); + RenderJob *job = new RenderJob(erase, render, profile, rendermodule, player, src, dest, args, in, out); job->start(); app.exec(); } else { @@ -64,6 +66,7 @@ int main(int argc, char **argv) { " in=pos: start rendering at frame pos\n" " out=pos: end rendering at frame pos\n" " render: path to inigo rendrer\n" + " profile: the MLT video profile\n" " rendermodule: the MLT consumer used for rendering, usually it is avformat\n" " player: path to video player to play when rendering is over, use '-' to disable playing\n" " src: source file (usually westley playlist)\n" diff --git a/renderer/renderjob.cpp b/renderer/renderjob.cpp index ed042f61..909b6a52 100644 --- a/renderer/renderjob.cpp +++ b/renderer/renderjob.cpp @@ -24,7 +24,7 @@ static QDBusConnection connection(QLatin1String("")); -RenderJob::RenderJob(bool erase, QString renderer, QString rendermodule, QString player, QString scenelist, QString dest, QStringList args, int in, int out) : QObject() { +RenderJob::RenderJob(bool erase, QString renderer, QString profile, QString rendermodule, QString player, QString scenelist, QString dest, QStringList args, int in, int out) : QObject() { m_scenelist = scenelist; m_dest = dest; m_player = player; @@ -32,7 +32,7 @@ RenderJob::RenderJob(bool erase, QString renderer, QString rendermodule, QString m_erase = erase; m_renderProcess = new QProcess; m_prog = renderer; - m_args << scenelist; + m_args << "-profile" << profile << scenelist; if (in != -1) m_args << "in=" + QString::number(in); if (out != -1) m_args << "out=" + QString::number(out); m_args << "-consumer" << rendermodule + ":" + m_dest << "progress=1" << args; @@ -75,7 +75,7 @@ void RenderJob::start() { QDBusReply objectPath = kuiserver.call("requestView", "kdenlive", "kdenlive", 1); QString reply = ((QDBusObjectPath) objectPath).path(); m_jobUiserver = new QDBusInterface("org.kde.JobViewServer", reply, "org.kde.JobView"); - m_jobUiserver->call("setInfoMessage", tr("Rendering %1").arg(m_dest)); + m_jobUiserver->call("setInfoMessage", tr("Rendering %1").arg(m_dest.section('/', -1))); QDBusConnection::sessionBus().connect("org.kde.JobViewServer", reply, "org.kde.JobView", "cancelRequested", this, SLOT(slotAbort())); diff --git a/renderer/renderjob.h b/renderer/renderjob.h index 5068d730..bfccb5e9 100644 --- a/renderer/renderjob.h +++ b/renderer/renderjob.h @@ -28,7 +28,7 @@ class RenderJob : public QObject { Q_OBJECT public: - RenderJob(bool erase, QString renderer, QString rendermodule, QString player, QString scenelist, QString dest, QStringList args, int in = -1, int out = -1); + RenderJob(bool erase, QString renderer, QString profile, QString rendermodule, QString player, QString scenelist, QString dest, QStringList args, int in = -1, int out = -1); ~RenderJob(); void start(); diff --git a/src/customruler.cpp b/src/customruler.cpp index a56f7422..e7bd20e5 100644 --- a/src/customruler.cpp +++ b/src/customruler.cpp @@ -118,11 +118,11 @@ void CustomRuler::mouseMoveEvent(QMouseEvent * event) { update(); } -int CustomRuler::inPoint() { +int CustomRuler::inPoint() const { return m_zoneStart; } -int CustomRuler::outPoint() { +int CustomRuler::outPoint() const { return m_zoneEnd; } diff --git a/src/customruler.h b/src/customruler.h index d391bb96..0d2e076c 100644 --- a/src/customruler.h +++ b/src/customruler.h @@ -17,8 +17,8 @@ public: virtual void mouseMoveEvent(QMouseEvent * event); void setPixelPerMark(double rate); static const int comboScale[]; - int outPoint(); - int inPoint(); + int outPoint() const; + int inPoint() const; protected: virtual void paintEvent(QPaintEvent * /*e*/); diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index d98bceef..e52e4d34 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -61,7 +61,6 @@ CustomTrackView::CustomTrackView(KdenliveDoc *doc, QGraphicsScene * projectscene QColor border = QColor(255, 255, 255, 100); m_tipPen.setColor(border); m_tipPen.setWidth(3); - setContentsMargins(0, 0, 0, 0); if (projectscene) { m_cursorLine = projectscene->addLine(0, 0, 0, 50); @@ -762,7 +761,7 @@ void CustomTrackView::drawBackground(QPainter * painter, const QRectF & rect) { painter->drawLine(rectInView.left(), 0, rectInView.right(), 0); for (uint i = 0; i < m_tracksCount;i++) { painter->drawLine(rectInView.left(), 50 * (i + 1), rectInView.right(), 50 * (i + 1)); - painter->drawText(QRectF(10, 50 * i, 100, 50 * i + 49), Qt::AlignLeft, i18n(" Track ") + QString::number(i + 1)); + //painter->drawText(QRectF(10, 50 * i, 100, 50 * i + 49), Qt::AlignLeft, i18n(" Track ") + QString::number(i + 1)); } int lowerLimit = 50 * m_tracksCount + 1; if (height() > lowerLimit) diff --git a/src/customtrackview.h b/src/customtrackview.h index ce7704ba..b3e446a7 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -104,7 +104,6 @@ private: /** Should we auto scroll while playing (keep in sync with KdenliveSettings::autoscroll() */ bool m_autoScroll; - signals: void cursorMoved(int, int); void zoomIn(); diff --git a/src/headertrack.cpp b/src/headertrack.cpp index 3b7508da..ec4a3039 100644 --- a/src/headertrack.cpp +++ b/src/headertrack.cpp @@ -1,26 +1,29 @@ #include #include - -#include #include #include #include - +#include +#include #include "headertrack.h" -HeaderTrack::HeaderTrack(QWidget *parent) - : QWidget(parent) { +HeaderTrack::HeaderTrack(int index, QWidget *parent) + : QWidget(parent), m_index(index) { setFixedHeight(50); + //setFixedWidth(30); + m_label = QString::number(m_index); } // virtual void HeaderTrack::paintEvent(QPaintEvent *e) { QRect region = e->rect(); + region.setTopLeft(QPoint(region.left() + 1, region.top() + 1)); region.setBottomRight(QPoint(region.right() - 1, region.bottom() - 1)); QPainter painter(this); - painter.drawRect(region); + painter.fillRect(region, QBrush(QColor(255, 255, 255))); + painter.drawText(region, Qt::AlignCenter, m_label); } diff --git a/src/headertrack.h b/src/headertrack.h index 9012055d..f933dc6e 100644 --- a/src/headertrack.h +++ b/src/headertrack.h @@ -7,12 +7,14 @@ class HeaderTrack : public QWidget { Q_OBJECT public: - HeaderTrack(QWidget *parent = 0); + HeaderTrack(int index, QWidget *parent = 0); protected: virtual void paintEvent(QPaintEvent * /*e*/); private: + int m_index; + QString m_label; public slots: diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 1f71c2fd..feb61ef4 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -521,7 +521,7 @@ void MainWindow::slotDoRender(const QString &dest, const QString &render, const if (zoneOnly) args << "in=" + QString::number(in) << "out=" + QString::number(out); QString videoPlayer = "-"; if (playAfter) videoPlayer = "kmplayer"; - args << "inigo" << render << videoPlayer << temp.fileName() << dest << avformat_args; + args << "inigo" << m_activeDocument->profilePath() << render << videoPlayer << temp.fileName() << dest << avformat_args; QProcess::startDetached("kdenlive_render", args); } } @@ -563,6 +563,7 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha disconnect(m_activeDocument, SIGNAL(deletTimelineClip(int)), m_activeTimeline, SLOT(slotDeleteClip(int))); disconnect(m_activeDocument, SIGNAL(thumbsProgress(KUrl, int)), this, SLOT(slotGotProgressInfo(KUrl, int))); disconnect(m_activeTimeline, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*))); + disconnect(timeline_buttons_ui.zoom_slider, SIGNAL(valueChanged(int)), m_activeTimeline, SLOT(slotChangeZoom(int))); disconnect(m_activeDocument, SIGNAL(docModified(bool)), this, SLOT(slotUpdateDocumentState(bool))); disconnect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), m_activeTimeline->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement))); disconnect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), m_activeTimeline->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement))); @@ -589,6 +590,10 @@ void MainWindow::connectDocument(TrackView *trackView, KdenliveDoc *doc) { //cha connect(doc, SIGNAL(docModified(bool)), this, SLOT(slotUpdateDocumentState(bool))); connect(trackView, SIGNAL(clipItemSelected(ClipItem*)), effectStack, SLOT(slotClipItemSelected(ClipItem*))); + timeline_buttons_ui.zoom_slider->setValue(trackView->currentZoom()); + connect(timeline_buttons_ui.zoom_slider, SIGNAL(valueChanged(int)), trackView, SLOT(slotChangeZoom(int))); + connect(trackView->projectView(), SIGNAL(zoomIn()), this, SLOT(slotZoomIn())); + connect(trackView->projectView(), SIGNAL(zoomOut()), this, SLOT(slotZoomOut())); connect(effectStack, SIGNAL(updateClipEffect(ClipItem*, QDomElement, QDomElement)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, QDomElement, QDomElement))); connect(effectStack, SIGNAL(removeEffect(ClipItem*, QDomElement)), trackView->projectView(), SLOT(slotDeleteEffect(ClipItem*, QDomElement))); connect(effectStack, SIGNAL(changeEffectState(ClipItem*, QDomElement, bool)), trackView->projectView(), SLOT(slotChangeEffectState(ClipItem*, QDomElement, bool))); @@ -657,6 +662,14 @@ void MainWindow::slotSwitchAudioThumbs() { timeline_buttons_ui.buttonAudio->setDown(KdenliveSettings::audiothumbnails()); } +void MainWindow::slotZoomIn() { + timeline_buttons_ui.zoom_slider->setValue(timeline_buttons_ui.zoom_slider->value() - 1); +} + +void MainWindow::slotZoomOut() { + timeline_buttons_ui.zoom_slider->setValue(timeline_buttons_ui.zoom_slider->value() + 1); +} + void MainWindow::slotGotProgressInfo(KUrl url, int progress) { statusProgressBar->setValue(progress); if (progress > 0) { diff --git a/src/mainwindow.h b/src/mainwindow.h index 882f7667..536968a6 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -136,6 +136,8 @@ private slots: void slotDoRender(const QString &dest, const QString &render, const QStringList &avformat_args, bool zoneOnly, bool playAfter); void slotFullScreen(); void slotUpdateDocumentState(bool modified); + void slotZoomIn(); + void slotZoomOut(); }; #endif diff --git a/src/monitor.cpp b/src/monitor.cpp index 92982dfe..d36288cf 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -20,6 +20,8 @@ #include #include +#include +#include #include #include @@ -35,21 +37,50 @@ Monitor::Monitor(QString name, MonitorManager *manager, QWidget *parent) QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(m_ruler); ui.ruler_frame->setLayout(layout); - //m_ruler->setPixelPerMark(3); + + m_toolbar = new QToolBar(name, this); + QVBoxLayout *layout2 = new QVBoxLayout; + m_playIcon = KIcon("media-playback-start"); m_pauseIcon = KIcon("media-playback-pause"); - ui.button_play->setIcon(m_playIcon); - ui.button_rew1->setIcon(KIcon("media-skip-backward")); - ui.button_rew->setIcon(KIcon("media-seek-backward")); - ui.button_fwd1->setIcon(KIcon("media-skip-forward")); - ui.button_fwd->setIcon(KIcon("media-seek-forward")); - connect(m_ruler, SIGNAL(seekRenderer(int)), this, SLOT(slotSeek(int))); - connect(ui.button_rew, SIGNAL(clicked()), this, SLOT(slotRewind())); - connect(ui.button_rew1, SIGNAL(clicked()), this, SLOT(slotRewindOneFrame())); - connect(ui.button_fwd, SIGNAL(clicked()), this, SLOT(slotForward())); - connect(ui.button_fwd1, SIGNAL(clicked()), this, SLOT(slotForwardOneFrame())); - connect(ui.button_play, SIGNAL(clicked()), this, SLOT(slotPlay())); - //if ( render ) return; + + QAction *m_rewAction = m_toolbar->addAction(KIcon("media-seek-backward"), i18n("Rewind")); + connect(m_rewAction, SIGNAL(triggered()), this, SLOT(slotRewind())); + QAction *m_rew1Action = m_toolbar->addAction(KIcon("media-skip-backward"), i18n("Rewind 1 frame")); + connect(m_rew1Action, SIGNAL(triggered()), this, SLOT(slotRewindOneFrame())); + + QToolButton *playButton = new QToolButton(m_toolbar); + QMenu *playMenu = new QMenu(this); + playButton->setMenu(playMenu); + playButton->setPopupMode(QToolButton::MenuButtonPopup); + m_toolbar->addWidget(playButton); + + m_playAction = playMenu->addAction(m_playIcon, i18n("Play")); + m_playAction->setCheckable(true); + connect(m_playAction, SIGNAL(triggered()), this, SLOT(slotPlay())); + QAction *m_playSectionAction = playMenu->addAction(m_playIcon, i18n("Play Section")); + connect(m_playSectionAction, SIGNAL(triggered()), this, SLOT(slotPlay())); + QAction *m_loopSectionAction = playMenu->addAction(m_playIcon, i18n("Loop Section")); + connect(m_loopSectionAction, SIGNAL(triggered()), this, SLOT(slotPlay())); + + QAction *m_fwd1Action = m_toolbar->addAction(KIcon("media-skip-forward"), i18n("Forward 1 frame")); + connect(m_fwd1Action, SIGNAL(triggered()), this, SLOT(slotForwardOneFrame())); + QAction *m_fwdAction = m_toolbar->addAction(KIcon("media-seek-forward"), i18n("Forward")); + connect(m_fwdAction, SIGNAL(triggered()), this, SLOT(slotForward())); + + playButton->setDefaultAction(m_playAction); + + m_timePos = new KRestrictedLine(this); + m_timePos->setInputMask("99:99:99:99"); + m_toolbar->addWidget(m_timePos); + + layout2->addWidget(m_toolbar); + ui.button_frame->setLayout(layout2); + + //m_ruler->setPixelPerMark(3); + + + ui.video_frame->setAttribute(Qt::WA_PaintOnScreen); render = new Render(m_name, (int) ui.video_frame->winId(), -1, this); connect(render, SIGNAL(durationChanged(int)), this, SLOT(adjustRulerSize(int))); connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int))); @@ -93,7 +124,7 @@ void Monitor::slotSeek(int pos) { render->seekToFrame(realPos); m_position = realPos; emit renderPosition(m_position); - ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); + m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); } void Monitor::slotRewind() { @@ -101,8 +132,8 @@ void Monitor::slotRewind() { double speed = render->playSpeed(); if (speed >= 0) render->play(-2); else render->play(speed * 2); - ui.button_play->setChecked(true); - ui.button_play->setIcon(m_pauseIcon); + m_playAction->setChecked(true); + m_playAction->setIcon(m_pauseIcon); } void Monitor::slotForward() { @@ -110,8 +141,8 @@ void Monitor::slotForward() { double speed = render->playSpeed(); if (speed <= 1) render->play(2); else render->play(speed * 2); - ui.button_play->setChecked(true); - ui.button_play->setIcon(m_pauseIcon); + m_playAction->setChecked(true); + m_playAction->setIcon(m_pauseIcon); } void Monitor::slotRewindOneFrame() { @@ -121,7 +152,7 @@ void Monitor::slotRewindOneFrame() { m_position--; render->seekToFrame(m_position); emit renderPosition(m_position); - ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); + m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); } void Monitor::slotForwardOneFrame() { @@ -131,14 +162,14 @@ void Monitor::slotForwardOneFrame() { m_position++; render->seekToFrame(m_position); emit renderPosition(m_position); - ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); + m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position)); } void Monitor::seekCursor(int pos) { if (!m_isActive) m_monitorManager->activateMonitor(m_name); int rulerPos = (int)(pos * m_scale); m_position = pos; - ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); + m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); //kDebug() << "seek: " << pos << ", scale: " << m_scale; m_ruler->slotNewValue(rulerPos); } @@ -147,9 +178,9 @@ void Monitor::rendererStopped(int pos) { int rulerPos = (int)(pos * m_scale); m_ruler->slotNewValue(rulerPos); m_position = pos; - ui.monitor_time->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); - ui.button_play->setChecked(false); - ui.button_play->setIcon(m_playIcon); + m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(pos)); + m_playAction->setChecked(false); + m_playAction->setIcon(m_playIcon); } void Monitor::initMonitor() { @@ -158,8 +189,10 @@ void Monitor::initMonitor() { // virtual void Monitor::resizeEvent(QResizeEvent * event) { + QWidget::resizeEvent(event); adjustRulerSize(-1); - if (render) render->askForRefresh(); + if (render && m_isActive) render->doRefresh(); + // } void Monitor::adjustRulerSize(int length) { @@ -185,15 +218,18 @@ void Monitor::start() { } void Monitor::refreshMonitor(bool visible) { - if (visible && render) render->askForRefresh(); + if (visible && render) { + if (!m_isActive) m_monitorManager->activateMonitor(m_name); + render->askForRefresh(); + } } void Monitor::slotPlay() { if (render == NULL) return; if (!m_isActive) m_monitorManager->activateMonitor(m_name); render->switchPlay(); - ui.button_play->setChecked(true); - ui.button_play->setIcon(m_pauseIcon); + m_playAction->setChecked(true); + m_playAction->setIcon(m_pauseIcon); } void Monitor::slotSetXml(const QDomElement &e) { @@ -205,7 +241,7 @@ void Monitor::slotSetXml(const QDomElement &e) { westley.appendChild(e); render->setSceneList(doc, 0); m_ruler->slotNewValue(0); - ui.monitor_time->setText("00:00:00:00"); + m_timePos->setText("00:00:00:00"); m_position = 0; } @@ -232,9 +268,11 @@ void Monitor::saveSceneList(QString path, QDomElement e) { render->saveSceneList(path, e); } +/* Commented out, takes huge CPU resources + void Monitor::paintEvent(QPaintEvent * event) { if (render != NULL && m_isActive) render->doRefresh(); QWidget::paintEvent(event); -} +}*/ #include "monitor.moc" diff --git a/src/monitor.h b/src/monitor.h index 62977381..647478d2 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -21,7 +21,10 @@ #ifndef MONITOR_H #define MONITOR_H +#include #include +#include +#include #include "ui_monitor_ui.h" #include "renderer.h" @@ -39,11 +42,13 @@ public: void resetProfile(QString prof); QString name() const; - virtual void resizeEvent(QResizeEvent * event); + protected: virtual void mousePressEvent(QMouseEvent * event); virtual void wheelEvent(QWheelEvent * event); - virtual void paintEvent(QPaintEvent * event); + virtual void resizeEvent(QResizeEvent * event); +// virtual void paintEvent(QPaintEvent * event); + private: Ui::Monitor_UI ui; MonitorManager *m_monitorManager; @@ -55,6 +60,9 @@ private: KIcon m_playIcon; KIcon m_pauseIcon; bool m_isActive; + QToolBar *m_toolbar; + KRestrictedLine *m_timePos; + QAction *m_playAction; private slots: void adjustRulerSize(int length); diff --git a/src/trackview.cpp b/src/trackview.cpp index ee9672c4..c5717a63 100644 --- a/src/trackview.cpp +++ b/src/trackview.cpp @@ -30,7 +30,7 @@ #include "clipitem.h" TrackView::TrackView(KdenliveDoc *doc, QWidget *parent) - : QWidget(parent), m_doc(doc), m_scale(1.0), m_projectTracks(0), m_projectDuration(0) { + : QWidget(parent), m_doc(doc), m_scale(1.0), m_projectTracks(0), m_projectDuration(0), m_currentZoom(4) { view = new Ui::TimeLine_UI(); view->setupUi(this); @@ -42,7 +42,7 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent) //m_scene->addRect(QRectF(0, 0, 100, 100), QPen(), QBrush(Qt::red)); m_ruler = new CustomRuler(doc->timecode(), m_trackview); - QVBoxLayout *layout = new QVBoxLayout; + QHBoxLayout *layout = new QHBoxLayout; view->ruler_frame->setLayout(layout); int left_margin; int right_margin; @@ -50,46 +50,50 @@ TrackView::TrackView(KdenliveDoc *doc, QWidget *parent) layout->setContentsMargins(left_margin, 0, right_margin, 0); layout->addWidget(m_ruler); + QHBoxLayout *tracksLayout = new QHBoxLayout; + tracksLayout->setContentsMargins(0, 0, 0, 0); + view->tracks_frame->setLayout(tracksLayout); + + view->headers_area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + view->headers_area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + m_headersLayout = new QVBoxLayout; m_headersLayout->setContentsMargins(0, 0, 0, 0); - view->headers_frame->setLayout(m_headersLayout); + m_headersLayout->setSpacing(0); + view->headers_container->setLayout(m_headersLayout); + + connect(view->headers_area->verticalScrollBar(), SIGNAL(valueChanged(int)), m_trackview->verticalScrollBar(), SLOT(setValue(int))); - QVBoxLayout *tracksLayout = new QVBoxLayout; - tracksLayout->setContentsMargins(0, 0, 0, 0); - view->tracks_frame->setLayout(tracksLayout); tracksLayout->addWidget(m_trackview); + connect(m_trackview->verticalScrollBar(), SIGNAL(valueChanged(int)), view->headers_area->verticalScrollBar(), SLOT(setValue(int))); + parseDocument(doc->toXml()); - /* - TrackPanelClipMoveFunction *m_moveFunction = new TrackPanelClipMoveFunction(this); - registerFunction("move", m_moveFunction); - setEditMode("move");*/ - connect(view->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(slotChangeZoom(int))); connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int))); - connect(m_trackview, SIGNAL(zoomIn()), this, SLOT(slotZoomIn())); - connect(m_trackview, SIGNAL(zoomOut()), this, SLOT(slotZoomOut())); connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int))); connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int))); connect(m_trackview, SIGNAL(clipItemSelected(ClipItem*)), this, SLOT(slotClipItemSelected(ClipItem*))); - view->horizontalSlider->setValue(4); - m_currentZoom = view->horizontalSlider->value(); + slotChangeZoom(m_currentZoom); } +int TrackView::currentZoom() const { + return m_currentZoom; +} -int TrackView::duration() { +int TrackView::duration() const { return m_projectDuration; } -int TrackView::tracksNumber() { +int TrackView::tracksNumber() const { return m_projectTracks; } -int TrackView::inPoint() { +int TrackView::inPoint() const { return m_ruler->inPoint(); } -int TrackView::outPoint() { +int TrackView::outPoint() const { return m_ruler->outPoint(); } @@ -147,14 +151,6 @@ const double TrackView::zoomFactor() const { return m_scale; } -void TrackView::slotZoomIn() { - view->horizontalSlider->setValue(view->horizontalSlider->value() - 1); -} - -void TrackView::slotZoomOut() { - view->horizontalSlider->setValue(view->horizontalSlider->value() + 1); -} - const int TrackView::mapLocalToValue(int x) const { return (int) x * zoomFactor(); } @@ -170,9 +166,10 @@ void TrackView::refresh() { int TrackView::slotAddAudioTrack(int ix, QDomElement xml) { kDebug() << "************* ADD AUDIO TRACK " << ix; m_trackview->addTrack(); - HeaderTrack *header = new HeaderTrack(); + HeaderTrack *header = new HeaderTrack(ix); //m_tracksAreaLayout->addWidget(track); //, ix, Qt::AlignTop); m_headersLayout->addWidget(header); //, ix, Qt::AlignTop); + view->headers_container->adjustSize(); //documentTracks.insert(ix, track); return 0; //track->show(); @@ -180,7 +177,7 @@ int TrackView::slotAddAudioTrack(int ix, QDomElement xml) { int TrackView::slotAddVideoTrack(int ix, QDomElement xml) { m_trackview->addTrack(); - HeaderTrack *header = new HeaderTrack(); + HeaderTrack *header = new HeaderTrack(ix); int trackTop = 50 * ix; int trackBottom = trackTop + 50; // parse track @@ -206,6 +203,7 @@ int TrackView::slotAddVideoTrack(int ix, QDomElement xml) { //m_tracksAreaLayout->addWidget(track); //, ix, Qt::AlignTop); m_headersLayout->addWidget(header); //, ix, Qt::AlignTop); + view->headers_container->adjustSize(); //documentTracks.insert(ix, track); kDebug() << "************* ADD VIDEO TRACK " << ix << ", DURATION: " << position; return position; diff --git a/src/trackview.h b/src/trackview.h index 09304cb7..43c1b511 100644 --- a/src/trackview.h +++ b/src/trackview.h @@ -48,15 +48,17 @@ public: const QString & editMode() const; QGraphicsScene *projectScene(); CustomTrackView *projectView(); - int duration(); - int tracksNumber(); + int duration() const; + int tracksNumber() const; KdenliveDoc *document(); void refresh() ; - int outPoint(); - int inPoint(); + int outPoint() const; + int inPoint() const; + int currentZoom() const; public slots: void slotDeleteClip(int clipId); + void slotChangeZoom(int factor); private: Ui::TimeLine_UI *view; @@ -69,7 +71,6 @@ private: QGraphicsScene *m_scene; uint m_currentZoom; - KdenliveDoc *m_doc; QVBoxLayout *m_tracksLayout; QVBoxLayout *m_headersLayout; @@ -81,12 +82,10 @@ private: int slotAddVideoTrack(int ix, QDomElement xml); private slots: - void slotChangeZoom(int factor); - void slotZoomIn(); - void slotZoomOut(); void setCursorPos(int pos); void moveCursorPos(int pos); void slotClipItemSelected(ClipItem*); + signals: void mousePosition(int); void cursorMoved(); diff --git a/src/widgets/monitor_ui.ui b/src/widgets/monitor_ui.ui index dcfa70b9..9e85a383 100644 --- a/src/widgets/monitor_ui.ui +++ b/src/widgets/monitor_ui.ui @@ -5,34 +5,24 @@ 0 0 - 339 - 216 + 237 + 177 - - Form - - - - 0 - - - 0 - - - 0 - - + + 0 - - 0 - - + 0 + + + NoAntialias + + 0 @@ -63,275 +53,27 @@ - - - - 0 - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - false - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - - 0 + + + + + 0 + 0 + - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - true - - - - - - - - - 99:99:99:99; + + + 16 + 15 + - - + + 0 - - - KPushButton - QPushButton -
kpushbutton.h
-
- - KRestrictedLine - KLineEdit -
krestrictedline.h
-
-
diff --git a/src/widgets/timeline_ui.ui b/src/widgets/timeline_ui.ui index cf3c7500..2099f849 100644 --- a/src/widgets/timeline_ui.ui +++ b/src/widgets/timeline_ui.ui @@ -5,57 +5,42 @@ 0 0 - 308 - 130 + 341 + 189
- - + + 0 - - 0 - - - 0 - - - 0 - - - 0 - - + 0 - - + + + + 0 + 0 + + + - 80 - 16777215 + 25 + 0 - - 0 - - - 13 - - - 1 - - - 3 - - - 5 + + + 50 + 20 + - - 5 + + QFrame::Raised - - Qt::Horizontal + + 0 @@ -67,37 +52,71 @@ 0 - - QFrame::StyledPanel + + + 16777215 + 20 + QFrame::Raised + + 0 + - + - 80 - 16 + 50 + 0 - 80 + 50 16777215 - - QFrame::StyledPanel - - - QFrame::Raised - - - 0 - + + Qt::NoFocus + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 44 + 173 + + + + + + + + + + Qt::Vertical + + + + 20 + 148 + + + + + + diff --git a/src/widgets/timelinebuttons_ui.ui b/src/widgets/timelinebuttons_ui.ui index f732d8b2..324db7b5 100644 --- a/src/widgets/timelinebuttons_ui.ui +++ b/src/widgets/timelinebuttons_ui.ui @@ -5,7 +5,7 @@ 0 0 - 58 + 183 30 @@ -13,17 +13,68 @@ Form + + 0 + 0 + + + + 70 + 0 + + + + + 100 + 16777215 + + + + 13 + + + 1 + + + 4 + + + Qt::Horizontal + + + + + + + V + + + + + + + Qt::Horizontal + + + + 13 + 20 + + + + + V - + A