}
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);
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 {
" 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"
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;
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;
QDBusReply<QDBusObjectPath> 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()));
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();
update();
}
-int CustomRuler::inPoint() {
+int CustomRuler::inPoint() const {
return m_zoneStart;
}
-int CustomRuler::outPoint() {
+int CustomRuler::outPoint() const {
return m_zoneEnd;
}
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*/);
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);
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)
/** Should we auto scroll while playing (keep in sync with KdenliveSettings::autoscroll() */
bool m_autoScroll;
-
signals:
void cursorMoved(int, int);
void zoomIn();
#include <QMouseEvent>
#include <QStylePainter>
-
-#include <KDebug>
#include <QFrame>
#include <QWidget>
#include <QPainter>
-
+#include <KLocale>
+#include <KDebug>
#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);
}
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:
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);
}
}
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)));
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)));
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) {
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
#include <QMouseEvent>
#include <QStylePainter>
+#include <QMenu>
+#include <QToolButton>
#include <KDebug>
#include <KLocale>
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)));
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() {
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() {
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() {
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() {
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);
}
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() {
// 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) {
}
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) {
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;
}
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"
#ifndef MONITOR_H
#define MONITOR_H
+#include <QToolBar>
#include <KIcon>
+#include <KAction>
+#include <KRestrictedLine>
#include "ui_monitor_ui.h"
#include "renderer.h"
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;
KIcon m_playIcon;
KIcon m_pauseIcon;
bool m_isActive;
+ QToolBar *m_toolbar;
+ KRestrictedLine *m_timePos;
+ QAction *m_playAction;
private slots:
void adjustRulerSize(int length);
#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);
//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;
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();
}
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();
}
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();
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
//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;
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;
QGraphicsScene *m_scene;
uint m_currentZoom;
-
KdenliveDoc *m_doc;
QVBoxLayout *m_tracksLayout;
QVBoxLayout *m_headersLayout;
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();
<rect>
<x>0</x>
<y>0</y>
- <width>339</width>
- <height>216</height>
+ <width>237</width>
+ <height>177</height>
</rect>
</property>
- <property name="windowTitle" >
- <string>Form</string>
- </property>
- <layout class="QGridLayout" >
- <property name="leftMargin" >
- <number>0</number>
- </property>
- <property name="topMargin" >
- <number>0</number>
- </property>
- <property name="rightMargin" >
- <number>0</number>
- </property>
- <property name="bottomMargin" >
+ <layout class="QGridLayout" name="gridLayout" >
+ <property name="margin" >
<number>0</number>
</property>
- <property name="horizontalSpacing" >
- <number>0</number>
- </property>
- <property name="verticalSpacing" >
+ <property name="spacing" >
<number>0</number>
</property>
<item row="0" column="0" colspan="2" >
<widget class="QFrame" name="video_frame" >
+ <property name="font" >
+ <font>
+ <stylestrategy>NoAntialias</stylestrategy>
+ </font>
+ </property>
<property name="lineWidth" >
<number>0</number>
</property>
</property>
</widget>
</item>
- <item row="2" column="0" >
- <layout class="QHBoxLayout" >
- <property name="spacing" >
- <number>0</number>
- </property>
- <item>
- <widget class="KPushButton" name="button_rew" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="button_rew1" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="button_play" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="checkable" >
- <bool>true</bool>
- </property>
- <property name="checked" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="button_fwd1" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="button_fwd" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="kpushbutton_20" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="3" column="0" >
- <layout class="QHBoxLayout" >
- <property name="spacing" >
- <number>0</number>
+ <item row="2" column="0" colspan="2" >
+ <widget class="QFrame" name="button_frame" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <item>
- <widget class="KPushButton" name="kpushbutton_9" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="kpushbutton_10" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="kpushbutton_11" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="kpushbutton_12" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="kpushbutton_13" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="KPushButton" name="kpushbutton_14" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize" >
- <size>
- <width>40</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="3" column="1" >
- <widget class="KRestrictedLine" name="monitor_time" >
- <property name="inputMask" >
- <string>99:99:99:99; </string>
+ <property name="minimumSize" >
+ <size>
+ <width>16</width>
+ <height>15</height>
+ </size>
</property>
- <property name="validChars" >
- <string/>
+ <property name="lineWidth" >
+ <number>0</number>
</property>
</widget>
</item>
</layout>
</widget>
- <customwidgets>
- <customwidget>
- <class>KPushButton</class>
- <extends>QPushButton</extends>
- <header>kpushbutton.h</header>
- </customwidget>
- <customwidget>
- <class>KRestrictedLine</class>
- <extends>KLineEdit</extends>
- <header>krestrictedline.h</header>
- </customwidget>
- </customwidgets>
<resources/>
<connections/>
</ui>
<rect>
<x>0</x>
<y>0</y>
- <width>308</width>
- <height>130</height>
+ <width>341</width>
+ <height>189</height>
</rect>
</property>
- <layout class="QGridLayout" >
- <property name="leftMargin" >
+ <layout class="QGridLayout" name="gridLayout" >
+ <property name="margin" >
<number>0</number>
</property>
- <property name="topMargin" >
- <number>0</number>
- </property>
- <property name="rightMargin" >
- <number>0</number>
- </property>
- <property name="bottomMargin" >
- <number>0</number>
- </property>
- <property name="horizontalSpacing" >
- <number>0</number>
- </property>
- <property name="verticalSpacing" >
+ <property name="spacing" >
<number>0</number>
</property>
<item row="0" column="0" >
- <widget class="QSlider" name="horizontalSlider" >
- <property name="maximumSize" >
+ <widget class="QFrame" name="ruler_frame_2" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize" >
<size>
- <width>80</width>
- <height>16777215</height>
+ <width>25</width>
+ <height>0</height>
</size>
</property>
- <property name="minimum" >
- <number>0</number>
- </property>
- <property name="maximum" >
- <number>13</number>
- </property>
- <property name="singleStep" >
- <number>1</number>
- </property>
- <property name="pageStep" >
- <number>3</number>
- </property>
- <property name="value" >
- <number>5</number>
+ <property name="maximumSize" >
+ <size>
+ <width>50</width>
+ <height>20</height>
+ </size>
</property>
- <property name="sliderPosition" >
- <number>5</number>
+ <property name="frameShadow" >
+ <enum>QFrame::Raised</enum>
</property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
+ <property name="lineWidth" >
+ <number>0</number>
</property>
</widget>
</item>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
+ <property name="maximumSize" >
+ <size>
+ <width>16777215</width>
+ <height>20</height>
+ </size>
</property>
<property name="frameShadow" >
<enum>QFrame::Raised</enum>
</property>
+ <property name="lineWidth" >
+ <number>0</number>
+ </property>
</widget>
</item>
<item row="1" column="0" >
- <widget class="QFrame" name="headers_frame" >
+ <widget class="QScrollArea" name="headers_area" >
<property name="minimumSize" >
<size>
- <width>80</width>
- <height>16</height>
+ <width>50</width>
+ <height>0</height>
</size>
</property>
<property name="maximumSize" >
<size>
- <width>80</width>
+ <width>50</width>
<height>16777215</height>
</size>
</property>
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
- </property>
- <property name="frameShadow" >
- <enum>QFrame::Raised</enum>
- </property>
- <property name="lineWidth" >
- <number>0</number>
- </property>
+ <property name="focusPolicy" >
+ <enum>Qt::NoFocus</enum>
+ </property>
+ <property name="widgetResizable" >
+ <bool>true</bool>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>44</width>
+ <height>173</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2" >
+ <item row="0" column="0" >
+ <widget class="QWidget" native="1" name="headers_container" />
+ </item>
+ <item row="1" column="0" >
+ <spacer name="verticalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>20</width>
+ <height>148</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
</widget>
</item>
<item row="1" column="1" >
<rect>
<x>0</x>
<y>0</y>
- <width>58</width>
+ <width>183</width>
<height>30</height>
</rect>
</property>
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout" >
+ <property name="verticalSpacing" >
+ <number>0</number>
+ </property>
<property name="margin" >
<number>0</number>
</property>
<item row="0" column="0" >
+ <widget class="QSlider" name="zoom_slider" >
+ <property name="minimumSize" >
+ <size>
+ <width>70</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize" >
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="maximum" >
+ <number>13</number>
+ </property>
+ <property name="pageStep" >
+ <number>1</number>
+ </property>
+ <property name="value" >
+ <number>4</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" >
+ <widget class="QToolButton" name="buttonFitZoom" >
+ <property name="text" >
+ <string>V</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2" >
+ <spacer name="horizontalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>13</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="3" >
<widget class="QToolButton" name="buttonVideo" >
<property name="text" >
<string>V</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
+ <item row="0" column="4" >
<widget class="QToolButton" name="buttonAudio" >
<property name="text" >
<string>A</string>