#include <KLocale>
#include <KUrl>
#include <KCursor>
+#include <KXmlGuiWindow>
+#include <KActionCollection>
#include "customtrackview.h"
#include "clipitem.h"
m_cursorLine->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIgnoresTransformations);
m_cursorLine->setZValue(1000);
}
+ m_timelineContextClipMenu = new QMenu(this);
+ QAction *delClip = static_cast<KXmlGuiWindow*>(parent)->actionCollection()->action("delete_timeline_clip");
+ if (delClip) m_timelineContextClipMenu->addAction(delClip);
}
void CustomTrackView::checkAutoScroll() {
}
QList<QGraphicsItem *> itemList = items(event->pos());
- int i = 0;
QGraphicsRectItem *item = NULL;
for (int i = 0; i < itemList.count(); i++) {
if (itemList.at(i)->type() == AVWIDGET || itemList.at(i)->type() == TRANSITIONWIDGET) {
scene()->addItem(tr);
//m_dragItem->addTransition(tra);
}
-
+ updateSnapPoints(m_dragItem);
kDebug() << "//////// ITEM CLICKED: " << m_startPos;
collision = true;
break;
for (int i = 0; i < itemList.count(); i++)
itemList.at(i)->setSelected(false);
emit clipItemSelected(NULL);
- setCursorPos((int) mapToScene(event->x(), 0).x() / m_scale);
+ if (event->button() == Qt::RightButton) {
+ displayContextMenu(event->globalPos());
+ } else setCursorPos((int) mapToScene(event->x(), 0).x() / m_scale);
+ } else if (event->button() == Qt::RightButton) {
+ m_operationMode = NONE;
+ displayContextMenu(event->globalPos(), (ClipItem *) m_dragItem);
+ m_dragItem = NULL;
}
}
- updateSnapPoints(m_dragItem);
//kDebug()<<pos;
//QGraphicsView::mousePressEvent(event);
}
+void CustomTrackView::displayContextMenu(QPoint pos, ClipItem *clip) {
+ m_timelineContextClipMenu->popup(pos);
+}
+
void CustomTrackView::activateMonitor() {
emit activateDocumentMonitor();
}
m_document->renderer()->doRefresh();
}
+void CustomTrackView::deleteSelectedClips() {
+ QList<QGraphicsItem *> itemList = items();
+ for (int i = 0; i < itemList.count(); i++) {
+ if (itemList.at(i)->type() == AVWIDGET && itemList.at(i)->isSelected()) {
+ ClipItem *item = (ClipItem *) itemList.at(i);
+ AddTimelineClipCommand *command = new AddTimelineClipCommand(this, item->xml(), item->clipProducer(), item->track(), item->startPos(), item->rect(), item->duration(), true, true);
+ m_commandStack->push(command);
+ }
+ }
+}
+
void CustomTrackView::addClip(QDomElement xml, int clipId, int track, GenTime startpos, const QRectF &rect, GenTime duration) {
QRect r(startpos.frames(m_document->fps()) * m_scale, 50 * track, duration.frames(m_document->fps()) * m_scale, 49);
DocClipBase *baseclip = m_document->clipManager()->getClipById(clipId);
#include <QGraphicsView>
#include <QGraphicsItemAnimation>
#include <QTimeLine>
+#include <QMenu>
#include <KUndoStack>
void updateEffect(int track, GenTime pos, QDomElement effect);
void activateMonitor();
int duration() const;
+ void deleteSelectedClips();
public slots:
void setCursorPos(int pos, bool seek = true);
void checkScrolling();
/** Should we auto scroll while playing (keep in sync with KdenliveSettings::autoscroll() */
bool m_autoScroll;
+ void displayContextMenu(QPoint pos, ClipItem *clip = NULL);
+ QMenu *m_timelineContextMenu;
+ QMenu *m_timelineContextClipMenu;
+ QMenu *m_timelineContextTransitionMenu;
signals:
void cursorMoved(int, int);
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<gui name="kdenlive" version="9">
+<gui name="kdenlive" version="10">
<ToolBar name="extraToolBar" >
<text>Extra Toolbar</text>
<Action name="clear" />
<Action name="project_settings" />
</Menu>
+ <Menu name="timeline" ><text>Timeline</text>
+ <Action name="delete_timeline_clip" />
+ </Menu>
+
<Menu name="monitor" ><text>Monitor</text>
<Action name="monitor_play" />
</Menu>
actionCollection()->addAction("monitor_play", monitorPlay);
connect(monitorPlay, SIGNAL(triggered(bool)), m_monitorManager, SLOT(slotPlay()));
+ KAction* deleteTimelineClip = new KAction(this);
+ deleteTimelineClip->setText(i18n("Delete Clip"));
+ deleteTimelineClip->setShortcut(Qt::Key_Delete);
+ deleteTimelineClip->setIcon(KIcon("edit-delete"));
+ actionCollection()->addAction("delete_timeline_clip", deleteTimelineClip);
+ connect(deleteTimelineClip, SIGNAL(triggered(bool)), this, SLOT(slotDeleteTimelineClip()));
+
KStandardAction::quit(kapp, SLOT(quit()),
actionCollection());
MltVideoProfile prof = ProfilesDialog::getVideoProfile(profileName);
if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal");
KdenliveDoc *doc = new KdenliveDoc(KUrl(), prof, m_commandStack);
- TrackView *trackView = new TrackView(doc);
+ TrackView *trackView = new TrackView(doc, this);
m_timelineArea->addTab(trackView, KIcon("kdenlive"), i18n("Untitled") + " / " + prof.description);
if (m_timelineArea->count() == 1)
connectDocument(trackView, doc);
MltVideoProfile prof = ProfilesDialog::getVideoProfile(KdenliveSettings::default_profile());
if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal");
KdenliveDoc *doc = new KdenliveDoc(url, prof, m_commandStack);
- TrackView *trackView = new TrackView(doc);
+ TrackView *trackView = new TrackView(doc, this);
m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, KIcon("kdenlive"), doc->description()));
m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path());
if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false);
m_monitorManager->setTimecode(doc->timecode());
doc->setRenderer(m_projectMonitor->render);
m_commandStack->setActiveStack(doc->commandStack());
+ if (m_commandStack->isClean()) kDebug() << "//////////// UNDO STACK IS CLEAN";
+ else kDebug() << "//////////// UNDO STACK IS NOT CLEAN*******************";
m_overView->setScene(trackView->projectScene());
//m_overView->scale(m_overView->width() / trackView->duration(), m_overView->height() / (50 * trackView->tracksNumber()));
timeline_buttons_ui.buttonAudio->setDown(KdenliveSettings::audiothumbnails());
}
+void MainWindow::slotDeleteTimelineClip() {
+ TrackView *currentTab = (TrackView *) m_timelineArea->currentWidget();
+ if (currentTab) {
+ currentTab->projectView()->deleteSelectedClips();
+ }
+}
+
void MainWindow::slotZoomIn() {
timeline_buttons_ui.zoom_slider->setValue(timeline_buttons_ui.zoom_slider->value() - 1);
}
void slotZoomOut();
void slotFitZoom();
void slotRemoveTab();
+ void slotDeleteTimelineClip();
};
#endif
view->setupUi(this);
m_scene = new QGraphicsScene();
- m_trackview = new CustomTrackView(doc, m_scene, this);
+ m_trackview = new CustomTrackView(doc, m_scene, parent);
m_trackview->scale(1, 1);
m_trackview->setAlignment(Qt::AlignLeft | Qt::AlignTop);
//m_scene->addRect(QRectF(0, 0, 100, 100), QPen(), QBrush(Qt::red));