# HG changeset patch # User Chris Cannam # Date 1228502749 0 # Node ID 975f6b6c414c5f9b6332910ec1cd8f5b5abac3b0 # Parent c4bc499122ec457c58e1bc2f2ed34c844b86e6ab * Improvements to importer feedback dialogs and suchlike diff -r c4bc499122ec -r 975f6b6c414c main/MainWindow.cpp --- a/main/MainWindow.cpp Thu Dec 04 17:17:06 2008 +0000 +++ b/main/MainWindow.cpp Fri Dec 05 18:45:49 2008 +0000 @@ -2182,7 +2182,7 @@ } else if (status == FileOpenWrongMode) { emit hideSplash(); QMessageBox::critical(this, tr("Failed to open file"), - tr("Audio required
Please load at least one audio file before importing annotation data")); + tr("Audio required
Unable to load layer data from \"%1\" without an audio file.
Please load at least one audio file before importing annotations.").arg(path));
         }
     }
 }
@@ -2482,7 +2482,7 @@
     } else if (status == FileOpenWrongMode) {
         emit hideSplash();
         QMessageBox::critical(this, tr("Failed to open file"),
-                              tr("Audio required
Please load at least one audio file before importing annotation data")); + tr("Audio required
Unable to load layer data from \"%1\" without an audio file.
Please load at least one audio file before importing annotations.").arg(path));
     }
 }
 
@@ -2514,7 +2514,7 @@
     } else if (status == FileOpenWrongMode) {
         emit hideSplash();
         QMessageBox::critical(this, tr("Failed to open location"),
-                              tr("Audio required
Please load at least one audio file before importing annotation data")); + tr("Audio required
Unable to load layer data from \"%1\" without an audio file.
Please load at least one audio file before importing annotations.").arg(text));
     }
 }
 
@@ -2542,7 +2542,7 @@
     } else if (status == FileOpenWrongMode) {
         emit hideSplash();
         QMessageBox::critical(this, tr("Failed to open location"),
-                              tr("Audio required
Please load at least one audio file before importing annotation data")); + tr("Audio required
Unable to load layer data from \"%1\" without an audio file.
Please load at least one audio file before importing annotations.").arg(path));
     }
 }
 
@@ -2580,7 +2580,7 @@
         } else if (status == FileOpenWrongMode) {
             emit hideSplash();
             QMessageBox::critical(this, tr("Failed to open dropped URL"),
-                                  tr("Audio required
Please load at least one audio file before importing annotation data")); + tr("Audio required
Unable to load layer data from \"%1\" without an audio file.
Please load at least one audio file before importing annotations.").arg(*i));
         }
     }
 }
@@ -2728,20 +2728,39 @@
 }
 
 bool
-MainWindow::shouldCreateNewSessionForRDFAudio()
+MainWindow::shouldCreateNewSessionForRDFAudio(bool *cancel)
 {
-    QMessageBox mb;
-    mb.setWindowTitle("Open as new session?");
-    mb.setText("RDF refers to audio files
This RDF document refers to one or more audio files.
Do you want to start a new session for it?");
-    QPushButton *a = mb.addButton(tr("Create new session"), QMessageBox::AcceptRole);
-    QPushButton *b = mb.addButton(tr("Add to current session"), QMessageBox::RejectRole);
-    mb.setDefaultButton(a);
-    mb.exec();
-    if (mb.clickedButton() == a) {
-        return true;
-    } else {
+    //!!! This is very similar to part of MainWindowBase::openAudio --
+    //!!! make them a bit more uniform
+
+    QSettings settings;
+    settings.beginGroup("MainWindow");
+    bool prevNewSession = settings.value("newsessionforrdfaudio", true).toBool();
+    settings.endGroup();
+    bool newSession = true;
+            
+    QStringList items;
+    items << tr("Close the current session and create a new one")
+          << tr("Add this data to the current session");
+
+    bool ok = false;
+    QString item = ListInputDialog::getItem
+        (this, tr("Select target for import"),
+         tr("Select a target for import
This RDF document refers to one or more audio files.
You already have an audio waveform loaded.
What would you like to do with the new data?"),
+         items, prevNewSession ? 0 : 1, &ok);
+            
+    if (!ok || item.isEmpty()) {
+        *cancel = true;
         return false;
     }
+            
+    newSession = (item == items[0]);
+    settings.beginGroup("MainWindow");
+    settings.setValue("newsessionforrdfaudio", newSession);
+    settings.endGroup();
+
+    if (newSession) return true;
+    else return false;
 }
 
 void
@@ -3731,3 +3750,4 @@
     m_keyReference->show();
 }
 
+
diff -r c4bc499122ec -r 975f6b6c414c main/MainWindow.h
--- a/main/MainWindow.h	Thu Dec 04 17:17:06 2008 +0000
+++ b/main/MainWindow.h	Fri Dec 05 18:45:49 2008 +0000
@@ -261,7 +261,7 @@
 
     virtual void updateVisibleRangeDisplay(Pane *p) const;
 
-    virtual bool shouldCreateNewSessionForRDFAudio();
+    virtual bool shouldCreateNewSessionForRDFAudio(bool *cancel);
     
     virtual void connectLayerEditDialog(ModelDataTableDialog *);
 };