comparison widgets/InteractiveFileFinder.cpp @ 771:a964151832a7

Merge from branch tony_integration
author Chris Cannam
date Wed, 14 May 2014 09:54:34 +0100
parents d0fd7630d32f
children 6d95d87f1654
comparison
equal deleted inserted replaced
768:8b614632568c 771:a964151832a7
31 31
32 InteractiveFileFinder 32 InteractiveFileFinder
33 InteractiveFileFinder::m_instance; 33 InteractiveFileFinder::m_instance;
34 34
35 InteractiveFileFinder::InteractiveFileFinder() : 35 InteractiveFileFinder::InteractiveFileFinder() :
36 m_sessionExtension("sv"),
36 m_lastLocatedLocation("") 37 m_lastLocatedLocation("")
37 { 38 {
38 SVDEBUG << "Registering interactive file finder" << endl; 39 SVDEBUG << "Registering interactive file finder" << endl;
39 FileFinder::registerFileFinder(this); 40 FileFinder::registerFileFinder(this);
40 } 41 }
41 42
42 InteractiveFileFinder::~InteractiveFileFinder() 43 InteractiveFileFinder::~InteractiveFileFinder()
43 { 44 {
45 }
46
47 void
48 InteractiveFileFinder::setApplicationSessionExtension(QString extension)
49 {
50 m_sessionExtension = extension;
44 } 51 }
45 52
46 QString 53 QString
47 InteractiveFileFinder::getOpenFileName(FileType type, QString fallbackLocation) 54 InteractiveFileFinder::getOpenFileName(FileType type, QString fallbackLocation)
48 { 55 {
55 switch (type) { 62 switch (type) {
56 63
57 case SessionFile: 64 case SessionFile:
58 settingsKey = "sessionpath"; 65 settingsKey = "sessionpath";
59 title = tr("Select a session file"); 66 title = tr("Select a session file");
60 filter = tr("Sonic Visualiser session files (*.sv)\nRDF files (%1)\nAll files (*.*)").arg(RDFImporter::getKnownExtensions()); 67 filter = tr("%1 session files (*.%1)\nRDF files (%3)\nAll files (*.*)")
68 .arg(QApplication::applicationName())
69 .arg(m_sessionExtension)
70 .arg(RDFImporter::getKnownExtensions());
61 break; 71 break;
62 72
63 case AudioFile: 73 case AudioFile:
64 settingsKey = "audiopath"; 74 settingsKey = "audiopath";
65 title = "Select an audio file"; 75 title = "Select an audio file";
79 filter = tr("All supported files (%1 %2)\nSonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nRDF files (%2)\nText files (*.txt)\nAll files (*.*)") 89 filter = tr("All supported files (%1 %2)\nSonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nRDF files (%2)\nText files (*.txt)\nAll files (*.*)")
80 .arg(DataFileReaderFactory::getKnownExtensions()) 90 .arg(DataFileReaderFactory::getKnownExtensions())
81 .arg(RDFImporter::getKnownExtensions()); 91 .arg(RDFImporter::getKnownExtensions());
82 break; 92 break;
83 93
94 case LayerFileNonSV:
95 settingsKey = "layerpath";
96 filter = tr("All supported files (%1 %2)\nComma-separated data files (*.csv)\nSonic Visualiser Layer XML files (*.svl)\nSpace-separated .lab files (*.lab)\nRDF files (%2)\nMIDI files (*.mid)\nText files (*.txt)\nAll files (*.*)")
97 .arg(DataFileReaderFactory::getKnownExtensions())
98 .arg(RDFImporter::getKnownExtensions());
99 break;
100
101 case LayerFileNoMidiNonSV:
102 settingsKey = "layerpath";
103 filter = tr("All supported files (%1 %2)\nComma-separated data files (*.csv)\nSonic Visualiser Layer XML files (*.svl)\nSpace-separated .lab files (*.lab)\nRDF files (%2)\nText files (*.txt)\nAll files (*.*)")
104 .arg(DataFileReaderFactory::getKnownExtensions())
105 .arg(RDFImporter::getKnownExtensions());
106 break;
107
84 case SessionOrAudioFile: 108 case SessionOrAudioFile:
85 settingsKey = "lastpath"; 109 settingsKey = "lastpath";
86 filter = tr("All supported files (*.sv %1 %2)\nSonic Visualiser session files (*.sv)\nAudio files (%2)\nRDF files (%1)\nAll files (*.*)") 110 filter = tr("All supported files (*.sv %1 %2)\n%3 session files (*.%4)\nAudio files (%2)\nRDF files (%1)\nAll files (*.*)")
87 .arg(RDFImporter::getKnownExtensions()) 111 .arg(RDFImporter::getKnownExtensions())
88 .arg(AudioFileReaderFactory::getKnownExtensions()); 112 .arg(AudioFileReaderFactory::getKnownExtensions())
113 .arg(QApplication::applicationName())
114 .arg(m_sessionExtension);
89 break; 115 break;
90 116
91 case ImageFile: 117 case ImageFile:
92 settingsKey = "imagepath"; 118 settingsKey = "imagepath";
93 { 119 {
107 filter = tr("Comma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nText files (*.txt)\nAll files (*.*)"); 133 filter = tr("Comma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nText files (*.txt)\nAll files (*.*)");
108 break; 134 break;
109 135
110 case AnyFile: 136 case AnyFile:
111 settingsKey = "lastpath"; 137 settingsKey = "lastpath";
112 filter = tr("All supported files (*.sv %1 %2 %3)\nSonic Visualiser session files (*.sv)\nAudio files (%1)\nLayer files (%2)\nRDF files (%3)\nAll files (*.*)") 138 filter = tr("All supported files (*.sv %1 %2 %3)\n%4 session files (*.%5)\nAudio files (%1)\nLayer files (%2)\nRDF files (%3)\nAll files (*.*)")
113 .arg(AudioFileReaderFactory::getKnownExtensions()) 139 .arg(AudioFileReaderFactory::getKnownExtensions())
114 .arg(DataFileReaderFactory::getKnownExtensions()) 140 .arg(DataFileReaderFactory::getKnownExtensions())
115 .arg(RDFImporter::getKnownExtensions()); 141 .arg(RDFImporter::getKnownExtensions())
142 .arg(QApplication::applicationName())
143 .arg(m_sessionExtension);
116 break; 144 break;
117 }; 145 };
118 146
119 if (lastPath == "") { 147 if (lastPath == "") {
120 char *home = getenv("HOME"); 148 char *home = getenv("HOME");
200 switch (type) { 228 switch (type) {
201 229
202 case SessionFile: 230 case SessionFile:
203 settingsKey = "savesessionpath"; 231 settingsKey = "savesessionpath";
204 title = tr("Select a session file"); 232 title = tr("Select a session file");
205 filter = tr("Sonic Visualiser session files (*.sv)\nAll files (*.*)"); 233 filter = tr("%1 session files (*.%2)\nAll files (*.*)")
234 .arg(QApplication::applicationName()).arg(m_sessionExtension);
206 break; 235 break;
207 236
208 case AudioFile: 237 case AudioFile:
209 settingsKey = "saveaudiopath"; 238 settingsKey = "saveaudiopath";
210 title = "Select an audio file"; 239 title = "Select an audio file";
220 249
221 case LayerFileNoMidi: 250 case LayerFileNoMidi:
222 settingsKey = "savelayerpath"; 251 settingsKey = "savelayerpath";
223 title = tr("Select a file to export to"); 252 title = tr("Select a file to export to");
224 filter = tr("Sonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nRDF/Turtle files (%1)\nText files (*.txt)\nAll files (*.*)").arg(RDFExporter::getSupportedExtensions()); 253 filter = tr("Sonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nRDF/Turtle files (%1)\nText files (*.txt)\nAll files (*.*)").arg(RDFExporter::getSupportedExtensions());
254 break;
255
256 case LayerFileNonSV:
257 settingsKey = "savelayerpath";
258 title = tr("Select a file to export to");
259 filter = tr("Comma-separated data files (*.csv)\nSonic Visualiser Layer XML files (*.svl)\nRDF/Turtle files (%1)\nMIDI files (*.mid)\nText files (*.txt)\nAll files (*.*)").arg(RDFExporter::getSupportedExtensions());
260 break;
261
262 case LayerFileNoMidiNonSV:
263 settingsKey = "savelayerpath";
264 title = tr("Select a file to export to");
265 filter = tr("Comma-separated data files (*.csv)\nSonic Visualiser Layer XML files (*.svl)\nRDF/Turtle files (%1)\nText files (*.txt)\nAll files (*.*)").arg(RDFExporter::getSupportedExtensions());
225 break; 266 break;
226 267
227 case SessionOrAudioFile: 268 case SessionOrAudioFile:
228 cerr << "ERROR: Internal error: InteractiveFileFinder::getSaveFileName: SessionOrAudioFile cannot be used here" << endl; 269 cerr << "ERROR: Internal error: InteractiveFileFinder::getSaveFileName: SessionOrAudioFile cannot be used here" << endl;
229 abort(); 270 abort();
272 dialog.setAcceptMode(QFileDialog::AcceptSave); 313 dialog.setAcceptMode(QFileDialog::AcceptSave);
273 dialog.setFileMode(QFileDialog::AnyFile); 314 dialog.setFileMode(QFileDialog::AnyFile);
274 dialog.setConfirmOverwrite(false); // we'll do that 315 dialog.setConfirmOverwrite(false); // we'll do that
275 316
276 if (type == SessionFile) { 317 if (type == SessionFile) {
277 dialog.setDefaultSuffix("sv"); 318 dialog.setDefaultSuffix(m_sessionExtension);
278 } else if (type == AudioFile) { 319 } else if (type == AudioFile) {
279 dialog.setDefaultSuffix("wav"); 320 dialog.setDefaultSuffix("wav");
280 } else if (type == ImageFile) { 321 } else if (type == ImageFile) {
281 dialog.setDefaultSuffix("png"); 322 dialog.setDefaultSuffix("png");
282 } else if (type == CSVFile) { 323 } else if (type == CSVFile) {
297 338
298 QFileInfo fi(path); 339 QFileInfo fi(path);
299 340
300 cerr << "type = " << type << ", suffix = " << fi.suffix() << endl; 341 cerr << "type = " << type << ", suffix = " << fi.suffix() << endl;
301 342
302 if ((type == LayerFile || type == LayerFileNoMidi) 343 if ((type == LayerFile || type == LayerFileNoMidi ||
344 type == LayerFileNonSV || type == LayerFileNoMidiNonSV)
303 && fi.suffix() == "") { 345 && fi.suffix() == "") {
304 QString expectedExtension; 346 QString expectedExtension;
305 QString selectedFilter = dialog.selectedNameFilter(); 347 QString selectedFilter = dialog.selectedNameFilter();
306 if (selectedFilter.contains(".svl")) { 348 if (selectedFilter.contains(".svl")) {
307 expectedExtension = "svl"; 349 expectedExtension = "svl";
367 409
368 case LayerFileNoMidi: 410 case LayerFileNoMidi:
369 settingsKey = "layerpath"; 411 settingsKey = "layerpath";
370 break; 412 break;
371 413
414 case LayerFileNonSV:
415 settingsKey = "layerpath";
416 break;
417
418 case LayerFileNoMidiNonSV:
419 settingsKey = "layerpath";
420 break;
421
372 case SessionOrAudioFile: 422 case SessionOrAudioFile:
373 settingsKey = "lastpath"; 423 settingsKey = "lastpath";
374 break; 424 break;
375 425
376 case ImageFile: 426 case ImageFile: