]> git.sesse.net Git - kdenlive/commitdiff
Allow document closing
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 7 Mar 2008 13:19:03 +0000 (13:19 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 7 Mar 2008 13:19:03 +0000 (13:19 +0000)
svn path=/branches/KDE4/; revision=2003

src/mainwindow.cpp
src/mainwindow.h

index 10dc35d7a6c64237ed327ff7d1cb3be5c8283792..1890424587c266ad297c171305f6e34c01360c8f 100644 (file)
@@ -67,6 +67,8 @@ MainWindow::MainWindow(QWidget *parent)
     m_timelineArea->setTabReorderingEnabled(true);
     m_timelineArea->setTabBarHidden(true);
     connect(m_timelineArea, SIGNAL(currentChanged(int)), this, SLOT(activateDocument()));
+    connect(m_timelineArea, SIGNAL(closeRequest(QWidget *)), this, SLOT(closeDocument(QWidget *)));
+
 
     initEffects::parseEffectFiles(&m_audioEffects, &m_videoEffects);
     m_monitorManager = new MonitorManager();
@@ -299,7 +301,7 @@ void MainWindow::newFile() {
     if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal");
     KdenliveDoc *doc = new KdenliveDoc(KUrl(), prof);
     TrackView *trackView = new TrackView(doc);
-    m_timelineArea->addTab(trackView, i18n("Untitled") + " / " + prof.description);
+    m_timelineArea->addTab(trackView, KIcon("kdenlive"), i18n("Untitled") + " / " + prof.description);
     if (m_timelineArea->count() == 1)
         connectDocument(trackView, doc);
     else m_timelineArea->setTabBarHidden(false);
@@ -311,6 +313,21 @@ void MainWindow::activateDocument() {
     connectDocument(currentTab, currentDoc);
 }
 
+void MainWindow::closeDocument(QWidget *w) {
+    if (w == m_timelineArea->currentWidget()) {
+        // closing current document
+        int ix = m_timelineArea->currentIndex() + 1;
+        if (ix == m_timelineArea->count()) ix = 0;
+        m_timelineArea->setCurrentIndex(ix);
+    }
+
+    TrackView *tabToClose = (TrackView *) w;
+    KdenliveDoc *docToClose = tabToClose->document();
+    m_timelineArea->removeTab(m_timelineArea->indexOf(w));
+    delete docToClose;
+    delete w;
+}
+
 void MainWindow::saveFileAs(const QString &outputFileName) {
     KSaveFile file(outputFileName);
     file.open();
@@ -349,7 +366,7 @@ void MainWindow::openFile(const KUrl &url) { //new
     if (prof.width == 0) prof = ProfilesDialog::getVideoProfile("dv_pal");
     KdenliveDoc *doc = new KdenliveDoc(url, prof);
     TrackView *trackView = new TrackView(doc);
-    m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, QIcon(), doc->description()));
+    m_timelineArea->setCurrentIndex(m_timelineArea->addTab(trackView, KIcon("kdenlive"), doc->description()));
     m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path());
     if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false);
     //connectDocument(trackView, doc);
index 7a231529df46b885259c82d067fb2e4ea5151627..c4dc6a905cb09622ad98c055ce5b693b851c324b 100644 (file)
@@ -110,6 +110,7 @@ public slots:
 private slots:
     void newFile();
     void activateDocument();
+    void closeDocument(QWidget *w);
     void connectDocument(TrackView*, KdenliveDoc*);
     void openFile();
     void saveFile();