Mercurial > hg > svgui
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: |