Mercurial > hg > svapp
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 { |