comparison framework/MainWindowBase.cpp @ 350:aebee52e86b3

Merge from branch tony_integration
author Chris Cannam
date Wed, 14 May 2014 09:54:46 +0100
parents b3609adae921
children 1d8cb0d92f4b
comparison
equal deleted inserted replaced
330:46b24009ce7a 350:aebee52e86b3
20 #include "view/Pane.h" 20 #include "view/Pane.h"
21 #include "view/PaneStack.h" 21 #include "view/PaneStack.h"
22 #include "data/model/WaveFileModel.h" 22 #include "data/model/WaveFileModel.h"
23 #include "data/model/SparseOneDimensionalModel.h" 23 #include "data/model/SparseOneDimensionalModel.h"
24 #include "data/model/NoteModel.h" 24 #include "data/model/NoteModel.h"
25 #include "data/model/FlexiNoteModel.h"
25 #include "data/model/Labeller.h" 26 #include "data/model/Labeller.h"
26 #include "data/model/TabularModel.h" 27 #include "data/model/TabularModel.h"
27 #include "view/ViewManager.h" 28 #include "view/ViewManager.h"
28 29
29 #include "layer/WaveformLayer.h" 30 #include "layer/WaveformLayer.h"
33 #include "layer/Colour3DPlotLayer.h" 34 #include "layer/Colour3DPlotLayer.h"
34 #include "layer/SliceLayer.h" 35 #include "layer/SliceLayer.h"
35 #include "layer/SliceableLayer.h" 36 #include "layer/SliceableLayer.h"
36 #include "layer/ImageLayer.h" 37 #include "layer/ImageLayer.h"
37 #include "layer/NoteLayer.h" 38 #include "layer/NoteLayer.h"
39 #include "layer/FlexiNoteLayer.h"
38 #include "layer/RegionLayer.h" 40 #include "layer/RegionLayer.h"
39 41
40 #include "widgets/ListInputDialog.h" 42 #include "widgets/ListInputDialog.h"
41 #include "widgets/CommandHistory.h" 43 #include "widgets/CommandHistory.h"
42 #include "widgets/ProgressDialog.h" 44 #include "widgets/ProgressDialog.h"
43 #include "widgets/MIDIFileImportDialog.h" 45 #include "widgets/MIDIFileImportDialog.h"
44 #include "widgets/CSVFormatDialog.h" 46 #include "widgets/CSVFormatDialog.h"
45 #include "widgets/ModelDataTableDialog.h" 47 #include "widgets/ModelDataTableDialog.h"
48 #include "widgets/InteractiveFileFinder.h"
46 49
47 #include "audioio/AudioCallbackPlaySource.h" 50 #include "audioio/AudioCallbackPlaySource.h"
48 #include "audioio/AudioCallbackPlayTarget.h" 51 #include "audioio/AudioCallbackPlayTarget.h"
49 #include "audioio/AudioTargetFactory.h" 52 #include "audioio/AudioTargetFactory.h"
50 #include "audioio/PlaySpeedRangeMapper.h" 53 #include "audioio/PlaySpeedRangeMapper.h"
307 return ff->getOpenFileName(type, m_audioFile); 310 return ff->getOpenFileName(type, m_audioFile);
308 case FileFinder::LayerFile: 311 case FileFinder::LayerFile:
309 return ff->getOpenFileName(type, m_sessionFile); 312 return ff->getOpenFileName(type, m_sessionFile);
310 case FileFinder::LayerFileNoMidi: 313 case FileFinder::LayerFileNoMidi:
311 return ff->getOpenFileName(type, m_sessionFile); 314 return ff->getOpenFileName(type, m_sessionFile);
315 case FileFinder::LayerFileNonSV:
316 return ff->getOpenFileName(type, m_sessionFile);
317 case FileFinder::LayerFileNoMidiNonSV:
318 return ff->getOpenFileName(type, m_sessionFile);
312 case FileFinder::SessionOrAudioFile: 319 case FileFinder::SessionOrAudioFile:
313 return ff->getOpenFileName(type, m_sessionFile); 320 return ff->getOpenFileName(type, m_sessionFile);
314 case FileFinder::ImageFile: 321 case FileFinder::ImageFile:
315 return ff->getOpenFileName(type, m_sessionFile); 322 return ff->getOpenFileName(type, m_sessionFile);
316 case FileFinder::CSVFile: 323 case FileFinder::CSVFile:
338 case FileFinder::AudioFile: 345 case FileFinder::AudioFile:
339 return ff->getSaveFileName(type, m_audioFile); 346 return ff->getSaveFileName(type, m_audioFile);
340 case FileFinder::LayerFile: 347 case FileFinder::LayerFile:
341 return ff->getSaveFileName(type, m_sessionFile); 348 return ff->getSaveFileName(type, m_sessionFile);
342 case FileFinder::LayerFileNoMidi: 349 case FileFinder::LayerFileNoMidi:
350 return ff->getSaveFileName(type, m_sessionFile);
351 case FileFinder::LayerFileNonSV:
352 return ff->getSaveFileName(type, m_sessionFile);
353 case FileFinder::LayerFileNoMidiNonSV:
343 return ff->getSaveFileName(type, m_sessionFile); 354 return ff->getSaveFileName(type, m_sessionFile);
344 case FileFinder::SessionOrAudioFile: 355 case FileFinder::SessionOrAudioFile:
345 return ff->getSaveFileName(type, m_sessionFile); 356 return ff->getSaveFileName(type, m_sessionFile);
346 case FileFinder::ImageFile: 357 case FileFinder::ImageFile:
347 return ff->getSaveFileName(type, m_sessionFile); 358 return ff->getSaveFileName(type, m_sessionFile);
428 (haveCurrentLayer && 439 (haveCurrentLayer &&
429 dynamic_cast<TimeInstantLayer *>(currentLayer)); 440 dynamic_cast<TimeInstantLayer *>(currentLayer));
430 bool haveCurrentDurationLayer = 441 bool haveCurrentDurationLayer =
431 (haveCurrentLayer && 442 (haveCurrentLayer &&
432 (dynamic_cast<NoteLayer *>(currentLayer) || 443 (dynamic_cast<NoteLayer *>(currentLayer) ||
444 dynamic_cast<FlexiNoteLayer *>(currentLayer) ||
433 dynamic_cast<RegionLayer *>(currentLayer))); 445 dynamic_cast<RegionLayer *>(currentLayer)));
434 bool haveCurrentColour3DPlot = 446 bool haveCurrentColour3DPlot =
435 (haveCurrentLayer && 447 (haveCurrentLayer &&
436 dynamic_cast<Colour3DPlotLayer *>(currentLayer)); 448 dynamic_cast<Colour3DPlotLayer *>(currentLayer));
437 bool haveClipboardContents = 449 bool haveClipboardContents =
1013 1025
1014 if (c) { 1026 if (c) {
1015 CommandHistory::getInstance()->addCommand(c, false); 1027 CommandHistory::getInstance()->addCommand(c, false);
1016 return; 1028 return;
1017 } 1029 }
1030
1031 FlexiNoteModel *fnm = dynamic_cast<FlexiNoteModel *>(layer->getModel());
1032 if (fnm) {
1033 FlexiNoteModel::Point point(alignedStart,
1034 rm->getValueMinimum(),
1035 alignedDuration,
1036 1.f,
1037 "");
1038 FlexiNoteModel::EditCommand *command =
1039 new FlexiNoteModel::EditCommand(fnm, tr("Add Point"));
1040 command->addPoint(point);
1041 command->setName(name);
1042 c = command->finish();
1043 }
1044
1045 if (c) {
1046 CommandHistory::getInstance()->addCommand(c, false);
1047 return;
1048 }
1018 } 1049 }
1019 1050
1020 void 1051 void
1021 MainWindowBase::renumberInstants() 1052 MainWindowBase::renumberInstants()
1022 { 1053 {
1361 } 1392 }
1362 m_openingAudioFile = false; 1393 m_openingAudioFile = false;
1363 1394
1364 currentPaneChanged(m_paneStack->getCurrentPane()); 1395 currentPaneChanged(m_paneStack->getCurrentPane());
1365 1396
1397 emit audioFileLoaded();
1398
1366 return FileOpenSucceeded; 1399 return FileOpenSucceeded;
1367 } 1400 }
1368 1401
1369 MainWindowBase::FileOpenStatus 1402 MainWindowBase::FileOpenStatus
1370 MainWindowBase::openPlaylist(FileSource source, AudioFileOpenMode mode) 1403 MainWindowBase::openPlaylist(FileSource source, AudioFileOpenMode mode)
1605 SVDEBUG << "MainWindowBase::openSession(" << source.getLocation() << ")" << endl; 1638 SVDEBUG << "MainWindowBase::openSession(" << source.getLocation() << ")" << endl;
1606 1639
1607 if (!source.isAvailable()) return FileOpenFailed; 1640 if (!source.isAvailable()) return FileOpenFailed;
1608 source.waitForData(); 1641 source.waitForData();
1609 1642
1610 if (source.getExtension().toLower() != "sv") { 1643 QString sessionExt =
1644 InteractiveFileFinder::getInstance()->getApplicationSessionExtension();
1645
1646 if (source.getExtension().toLower() != sessionExt) {
1611 1647
1612 RDFImporter::RDFDocumentType rdfType = 1648 RDFImporter::RDFDocumentType rdfType =
1613 RDFImporter::identifyDocumentType 1649 RDFImporter::identifyDocumentType
1614 (QUrl::fromLocalFile(source.getLocalFilename()).toString()); 1650 (QUrl::fromLocalFile(source.getLocalFilename()).toString());
1615 1651
1636 1672
1637 QXmlInputSource *inputSource = 0; 1673 QXmlInputSource *inputSource = 0;
1638 BZipFileDevice *bzFile = 0; 1674 BZipFileDevice *bzFile = 0;
1639 QFile *rawFile = 0; 1675 QFile *rawFile = 0;
1640 1676
1641 if (source.getExtension().toLower() == "sv") { 1677 if (source.getExtension().toLower() == sessionExt) {
1642 bzFile = new BZipFileDevice(source.getLocalFilename()); 1678 bzFile = new BZipFileDevice(source.getLocalFilename());
1643 if (!bzFile->open(QIODevice::ReadOnly)) { 1679 if (!bzFile->open(QIODevice::ReadOnly)) {
1644 delete bzFile; 1680 delete bzFile;
1645 return FileOpenFailed; 1681 return FileOpenFailed;
1646 } 1682 }
1709 if (!source.isRemote()) { 1745 if (!source.isRemote()) {
1710 // for file dialog 1746 // for file dialog
1711 registerLastOpenedFilePath(FileFinder::SessionFile, 1747 registerLastOpenedFilePath(FileFinder::SessionFile,
1712 source.getLocalFilename()); 1748 source.getLocalFilename());
1713 } 1749 }
1750
1751 emit sessionLoaded();
1714 1752
1715 } else { 1753 } else {
1716 setWindowTitle(QApplication::applicationName()); 1754 setWindowTitle(QApplication::applicationName());
1717 } 1755 }
1718 1756
1792 1830
1793 CommandHistory::getInstance()->clear(); 1831 CommandHistory::getInstance()->clear();
1794 CommandHistory::getInstance()->documentSaved(); 1832 CommandHistory::getInstance()->documentSaved();
1795 m_documentModified = false; 1833 m_documentModified = false;
1796 updateMenuStates(); 1834 updateMenuStates();
1835
1836 emit sessionLoaded();
1797 } 1837 }
1798 1838
1799 return ok ? FileOpenSucceeded : FileOpenFailed; 1839 return ok ? FileOpenSucceeded : FileOpenFailed;
1800 } 1840 }
1801 1841
1822 .arg(QApplication::applicationName()) 1862 .arg(QApplication::applicationName())
1823 .arg(source.getLocation())); 1863 .arg(source.getLocation()));
1824 CommandHistory::getInstance()->clear(); 1864 CommandHistory::getInstance()->clear();
1825 CommandHistory::getInstance()->documentSaved(); 1865 CommandHistory::getInstance()->documentSaved();
1826 m_documentModified = false; 1866 m_documentModified = false;
1867
1868 emit sessionLoaded();
1827 1869
1828 return status; 1870 return status;
1829 } 1871 }
1830 1872
1831 MainWindowBase::FileOpenStatus 1873 MainWindowBase::FileOpenStatus
2177 } 2219 }
2178 2220
2179 Pane * 2221 Pane *
2180 MainWindowBase::addPaneToStack() 2222 MainWindowBase::addPaneToStack()
2181 { 2223 {
2224 cerr << "MainWindowBase::addPaneToStack()" << endl;
2182 AddPaneCommand *command = new AddPaneCommand(this); 2225 AddPaneCommand *command = new AddPaneCommand(this);
2183 CommandHistory::getInstance()->addCommand(command); 2226 CommandHistory::getInstance()->addCommand(command);
2184 Pane *pane = command->getPane(); 2227 Pane *pane = command->getPane();
2185 return pane; 2228 return pane;
2186 } 2229 }
2227 2270
2228 void 2271 void
2229 MainWindowBase::zoomDefault() 2272 MainWindowBase::zoomDefault()
2230 { 2273 {
2231 Pane *currentPane = m_paneStack->getCurrentPane(); 2274 Pane *currentPane = m_paneStack->getCurrentPane();
2232 if (currentPane) currentPane->setZoomLevel(1024); 2275 QSettings settings;
2276 settings.beginGroup("MainWindow");
2277 int zoom = settings.value("zoom-default", 1024).toInt();
2278 settings.endGroup();
2279 if (currentPane) currentPane->setZoomLevel(zoom);
2233 } 2280 }
2234 2281
2235 void 2282 void
2236 MainWindowBase::scrollLeft() 2283 MainWindowBase::scrollLeft()
2237 { 2284 {
2281 } 2328 }
2282 2329
2283 void 2330 void
2284 MainWindowBase::showMinimalOverlays() 2331 MainWindowBase::showMinimalOverlays()
2285 { 2332 {
2286 m_viewManager->setOverlayMode(ViewManager::MinimalOverlays); 2333 m_viewManager->setOverlayMode(ViewManager::StandardOverlays);
2287 } 2334 }
2288 2335
2289 void 2336 void
2290 MainWindowBase::showAllOverlays() 2337 MainWindowBase::showAllOverlays()
2291 { 2338 {
3089 3136
3090 void 3137 void
3091 MainWindowBase::modelAdded(Model *model) 3138 MainWindowBase::modelAdded(Model *model)
3092 { 3139 {
3093 // SVDEBUG << "MainWindowBase::modelAdded(" << model << ")" << endl; 3140 // SVDEBUG << "MainWindowBase::modelAdded(" << model << ")" << endl;
3141 std::cerr << "\nAdding model " << model->getTypeName() << " to playsource " << std::endl;
3094 m_playSource->addModel(model); 3142 m_playSource->addModel(model);
3095 } 3143 }
3096 3144
3097 void 3145 void
3098 MainWindowBase::mainModelChanged(WaveFileModel *model) 3146 MainWindowBase::mainModelChanged(WaveFileModel *model)
3170 void 3218 void
3171 MainWindowBase::inProgressSelectionChanged() 3219 MainWindowBase::inProgressSelectionChanged()
3172 { 3220 {
3173 Pane *currentPane = 0; 3221 Pane *currentPane = 0;
3174 if (m_paneStack) currentPane = m_paneStack->getCurrentPane(); 3222 if (m_paneStack) currentPane = m_paneStack->getCurrentPane();
3175 if (currentPane) updateVisibleRangeDisplay(currentPane); 3223 if (currentPane) {
3224 //cerr << "JTEST: mouse event on selection pane" << endl;
3225 updateVisibleRangeDisplay(currentPane);
3226 }
3176 } 3227 }
3177 3228
3178 void 3229 void
3179 MainWindowBase::contextHelpChanged(const QString &s) 3230 MainWindowBase::contextHelpChanged(const QString &s)
3180 { 3231 {