Mercurial > hg > svapp
diff framework/MainWindowBase.cpp @ 371:dfcc5b355f33
Merge from branch warnfix_no_size_t
author | Chris Cannam |
---|---|
date | Wed, 18 Jun 2014 13:51:38 +0100 |
parents | f1cab64363d7 |
children | 024226dd9f51 |
line wrap: on
line diff
--- a/framework/MainWindowBase.cpp Tue Jun 03 11:03:09 2014 +0100 +++ b/framework/MainWindowBase.cpp Wed Jun 18 13:51:38 2014 +0100 @@ -152,7 +152,9 @@ m_openingAudioFile(false), m_abandoning(false), m_labeller(0), - m_lastPlayStatusSec(0) + m_lastPlayStatusSec(0), + m_initialDarkBackground(false), + m_defaultFfwdRwdStep(2, 0) { Profiler profiler("MainWindowBase::MainWindowBase"); @@ -213,8 +215,8 @@ m_playSource = new AudioCallbackPlaySource(m_viewManager, QApplication::applicationName()); - connect(m_playSource, SIGNAL(sampleRateMismatch(size_t, size_t, bool)), - this, SLOT(sampleRateMismatch(size_t, size_t, bool))); + connect(m_playSource, SIGNAL(sampleRateMismatch(int, int, bool)), + this, SLOT(sampleRateMismatch(int, int, bool))); connect(m_playSource, SIGNAL(audioOverloadPluginDisabled()), this, SLOT(audioOverloadPluginDisabled())); connect(m_playSource, SIGNAL(audioTimeStretchMultiChannelDisabled()), @@ -223,17 +225,17 @@ connect(m_viewManager, SIGNAL(outputLevelsChanged(float, float)), this, SLOT(outputLevelsChanged(float, float))); - connect(m_viewManager, SIGNAL(playbackFrameChanged(unsigned long)), - this, SLOT(playbackFrameChanged(unsigned long))); - - connect(m_viewManager, SIGNAL(globalCentreFrameChanged(unsigned long)), - this, SLOT(globalCentreFrameChanged(unsigned long))); - - connect(m_viewManager, SIGNAL(viewCentreFrameChanged(View *, unsigned long)), - this, SLOT(viewCentreFrameChanged(View *, unsigned long))); - - connect(m_viewManager, SIGNAL(viewZoomLevelChanged(View *, unsigned long, bool)), - this, SLOT(viewZoomLevelChanged(View *, unsigned long, bool))); + connect(m_viewManager, SIGNAL(playbackFrameChanged(int)), + this, SLOT(playbackFrameChanged(int))); + + connect(m_viewManager, SIGNAL(globalCentreFrameChanged(int)), + this, SLOT(globalCentreFrameChanged(int))); + + connect(m_viewManager, SIGNAL(viewCentreFrameChanged(View *, int)), + this, SLOT(viewCentreFrameChanged(View *, int))); + + connect(m_viewManager, SIGNAL(viewZoomLevelChanged(View *, int, bool)), + this, SLOT(viewZoomLevelChanged(View *, int, bool))); connect(Preferences::getInstance(), SIGNAL(propertyChanged(PropertyContainer::PropertyName)), @@ -281,7 +283,11 @@ } void -MainWindowBase::finaliseMenu(QMenu *menu) +MainWindowBase::finaliseMenu(QMenu * +#ifdef Q_OS_MAC + menu +#endif + ) { #ifdef Q_OS_MAC // See https://bugreports.qt-project.org/browse/QTBUG-38256 and @@ -368,26 +374,8 @@ MainWindowBase::getOpenFileName(FileFinder::FileType type) { FileFinder *ff = FileFinder::getInstance(); - switch (type) { - case FileFinder::SessionFile: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::AudioFile: - return ff->getOpenFileName(type, m_audioFile); - case FileFinder::LayerFile: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::LayerFileNoMidi: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::LayerFileNonSV: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::LayerFileNoMidiNonSV: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::SessionOrAudioFile: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::ImageFile: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::CSVFile: - return ff->getOpenFileName(type, m_sessionFile); - case FileFinder::AnyFile: + + if (type == FileFinder::AnyFile) { if (getMainModel() != 0 && m_paneStack != 0 && m_paneStack->getCurrentPane() != 0) { // can import a layer @@ -396,37 +384,28 @@ return ff->getOpenFileName(FileFinder::SessionOrAudioFile, m_sessionFile); } + } + + QString lastPath = m_sessionFile; + + if (type == FileFinder::AudioFile) { + lastPath = m_audioFile; } - return ""; + + return ff->getOpenFileName(type, lastPath); } QString MainWindowBase::getSaveFileName(FileFinder::FileType type) { + QString lastPath = m_sessionFile; + + if (type == FileFinder::AudioFile) { + lastPath = m_audioFile; + } + FileFinder *ff = FileFinder::getInstance(); - switch (type) { - case FileFinder::SessionFile: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::AudioFile: - return ff->getSaveFileName(type, m_audioFile); - case FileFinder::LayerFile: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::LayerFileNoMidi: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::LayerFileNonSV: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::LayerFileNoMidiNonSV: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::SessionOrAudioFile: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::ImageFile: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::CSVFile: - return ff->getSaveFileName(type, m_sessionFile); - case FileFinder::AnyFile: - return ff->getSaveFileName(type, m_sessionFile); - } - return ""; + return ff->getSaveFileName(type, lastPath); } void @@ -549,6 +528,7 @@ emit canClearSelection(haveSelection); emit canEditSelection(haveSelection && haveCurrentEditableLayer); emit canSave(m_sessionFile != "" && m_documentModified); + emit canSaveAs(haveMainModel); emit canSelectPreviousPane(havePrevPane); emit canSelectNextPane(haveNextPane); emit canSelectPreviousLayer(havePrevLayer); @@ -744,7 +724,7 @@ Pane *currentPane = m_paneStack->getCurrentPane(); if (!currentPane) return; - size_t startFrame, endFrame; + int startFrame, endFrame; if (currentPane->getStartFrame() < 0) startFrame = 0; else startFrame = currentPane->getStartFrame(); @@ -815,17 +795,17 @@ void MainWindowBase::pasteAtPlaybackPosition() { - unsigned long pos = getFrame(); + int pos = getFrame(); Clipboard &clipboard = m_viewManager->getClipboard(); if (!clipboard.empty()) { - long firstEventFrame = clipboard.getPoints()[0].getFrame(); - long offset = 0; + int firstEventFrame = clipboard.getPoints()[0].getFrame(); + int offset = 0; if (firstEventFrame < 0) { - offset = (long)pos - firstEventFrame; + offset = pos - firstEventFrame; } else if (firstEventFrame < pos) { - offset = pos - (unsigned long)firstEventFrame; + offset = pos - firstEventFrame; } else { - offset = -((unsigned long)firstEventFrame - pos); + offset = -(firstEventFrame - pos); } pasteRelative(offset); } @@ -898,7 +878,7 @@ // FrameTimer method -unsigned long +int MainWindowBase::getFrame() const { if (m_playSource && m_playSource->isPlaying()) { @@ -920,8 +900,8 @@ MultiSelection::SelectionList selections = m_viewManager->getSelections(); for (MultiSelection::SelectionList::iterator i = selections.begin(); i != selections.end(); ++i) { - size_t start = i->getStartFrame(); - size_t end = i->getEndFrame(); + int start = i->getStartFrame(); + int end = i->getEndFrame(); if (start != end) { insertInstantAt(start); insertInstantAt(end); @@ -930,7 +910,7 @@ } void -MainWindowBase::insertInstantAt(size_t frame) +MainWindowBase::insertInstantAt(int frame) { Pane *pane = m_paneStack->getCurrentPane(); if (!pane) { @@ -1022,8 +1002,8 @@ MultiSelection::SelectionList selections = m_viewManager->getSelections(); for (MultiSelection::SelectionList::iterator i = selections.begin(); i != selections.end(); ++i) { - size_t start = i->getStartFrame(); - size_t end = i->getEndFrame(); + int start = i->getStartFrame(); + int end = i->getEndFrame(); if (start < end) { insertItemAt(start, end - start); } @@ -1031,7 +1011,7 @@ } void -MainWindowBase::insertItemAt(size_t frame, size_t duration) +MainWindowBase::insertItemAt(int frame, int duration) { Pane *pane = m_paneStack->getCurrentPane(); if (!pane) { @@ -1040,10 +1020,10 @@ // ugh! - size_t alignedStart = pane->alignFromReference(frame); - size_t alignedEnd = pane->alignFromReference(frame + duration); + int alignedStart = pane->alignFromReference(frame); + int alignedEnd = pane->alignFromReference(frame + duration); if (alignedStart >= alignedEnd) return; - size_t alignedDuration = alignedEnd - alignedStart; + int alignedDuration = alignedEnd - alignedStart; Command *c = 0; @@ -1237,9 +1217,11 @@ m_openingAudioFile = true; - size_t rate = 0; - - if (Preferences::getInstance()->getResampleOnLoad()) { + int rate = 0; + + if (Preferences::getInstance()->getFixedSampleRate() != 0) { + rate = Preferences::getInstance()->getFixedSampleRate(); + } else if (Preferences::getInstance()->getResampleOnLoad()) { rate = m_playSource->getSourceSampleRate(); } @@ -1848,7 +1830,6 @@ QXmlInputSource *inputSource = 0; QFile *file = 0; - bool isTemplate = false; file = new QFile(source.getLocalFilename()); inputSource = new QXmlInputSource(file); @@ -1938,7 +1919,7 @@ MainWindowBase::FileOpenStatus MainWindowBase::openLayersFromRDF(FileSource source) { - size_t rate = 0; + int rate = 0; SVDEBUG << "MainWindowBase::openLayersFromRDF" << endl; @@ -2316,17 +2297,17 @@ Model *model = getMainModel(); if (!model) return; - size_t start = model->getStartFrame(); - size_t end = model->getEndFrame(); + int start = model->getStartFrame(); + int end = model->getEndFrame(); if (m_playSource) end = std::max(end, m_playSource->getPlayEndFrame()); - size_t pixels = currentPane->width(); - - size_t sw = currentPane->getVerticalScaleWidth(); + int pixels = currentPane->width(); + + int sw = currentPane->getVerticalScaleWidth(); if (pixels > sw * 2) pixels -= sw * 2; else pixels = 1; if (pixels > 4) pixels -= 4; - size_t zoomLevel = (end - start) / pixels; + int zoomLevel = (end - start) / pixels; if (zoomLevel < 1) zoomLevel = 1; currentPane->setZoomLevel(zoomLevel); @@ -2544,19 +2525,19 @@ Pane *pane = m_paneStack->getCurrentPane(); Layer *layer = getSnapLayer(); - size_t sr = getMainModel()->getSampleRate(); + int sr = getMainModel()->getSampleRate(); if (!layer) { frame = RealTime::realTime2Frame - (RealTime::frame2RealTime(frame, sr) + RealTime(2, 0), sr); + (RealTime::frame2RealTime(frame, sr) + m_defaultFfwdRwdStep, sr); if (frame > int(getMainModel()->getEndFrame())) { frame = getMainModel()->getEndFrame(); } } else { - size_t resolution = 0; + int resolution = 0; if (pane) frame = pane->alignFromReference(frame); if (layer->snapToFeatureFrame(m_paneStack->getCurrentPane(), frame, resolution, Layer::SnapRight)) { @@ -2569,12 +2550,12 @@ if (frame < 0) frame = 0; if (m_viewManager->getPlaySelectionMode()) { - frame = m_viewManager->constrainFrameToSelection(size_t(frame)); + frame = m_viewManager->constrainFrameToSelection(int(frame)); } m_viewManager->setPlaybackFrame(frame); - if (frame == getMainModel()->getEndFrame() && + if (frame == (int)getMainModel()->getEndFrame() && m_playSource && m_playSource->isPlaying() && !m_viewManager->getPlayLoopMode()) { @@ -2593,7 +2574,7 @@ stop(); } - size_t frame = getMainModel()->getEndFrame(); + int frame = getMainModel()->getEndFrame(); if (m_viewManager->getPlaySelectionMode()) { frame = m_viewManager->constrainFrameToSelection(frame); @@ -2611,11 +2592,9 @@ if (!layer) { ffwd(); return; } Pane *pane = m_paneStack->getCurrentPane(); - size_t sr = getMainModel()->getSampleRate(); - int frame = m_viewManager->getPlaybackFrame(); - size_t resolution = 0; + int resolution = 0; if (pane) frame = pane->alignFromReference(frame); if (layer->snapToSimilarFeature(m_paneStack->getCurrentPane(), frame, resolution, Layer::SnapRight)) { @@ -2627,12 +2606,12 @@ if (frame < 0) frame = 0; if (m_viewManager->getPlaySelectionMode()) { - frame = m_viewManager->constrainFrameToSelection(size_t(frame)); + frame = m_viewManager->constrainFrameToSelection(int(frame)); } m_viewManager->setPlaybackFrame(frame); - if (frame == getMainModel()->getEndFrame() && + if (frame == (int)getMainModel()->getEndFrame() && m_playSource && m_playSource->isPlaying() && !m_viewManager->getPlayLoopMode()) { @@ -2650,14 +2629,14 @@ Pane *pane = m_paneStack->getCurrentPane(); Layer *layer = getSnapLayer(); - size_t sr = getMainModel()->getSampleRate(); + int sr = getMainModel()->getSampleRate(); // when rewinding during playback, we want to allow a period // following a rewind target point at which the rewind will go to // the prior point instead of the immediately neighbouring one if (m_playSource && m_playSource->isPlaying()) { RealTime ct = RealTime::frame2RealTime(frame, sr); - ct = ct - RealTime::fromSeconds(0.25); + ct = ct - RealTime::fromSeconds(0.15); if (ct < RealTime::zeroTime) ct = RealTime::zeroTime; frame = RealTime::realTime2Frame(ct, sr); } @@ -2665,14 +2644,14 @@ if (!layer) { frame = RealTime::realTime2Frame - (RealTime::frame2RealTime(frame, sr) - RealTime(2, 0), sr); + (RealTime::frame2RealTime(frame, sr) - m_defaultFfwdRwdStep, sr); if (frame < int(getMainModel()->getStartFrame())) { frame = getMainModel()->getStartFrame(); } } else { - size_t resolution = 0; + int resolution = 0; if (pane) frame = pane->alignFromReference(frame); if (layer->snapToFeatureFrame(m_paneStack->getCurrentPane(), frame, resolution, Layer::SnapLeft)) { @@ -2685,7 +2664,7 @@ if (frame < 0) frame = 0; if (m_viewManager->getPlaySelectionMode()) { - frame = m_viewManager->constrainFrameToSelection(size_t(frame)); + frame = m_viewManager->constrainFrameToSelection(int(frame)); } m_viewManager->setPlaybackFrame(frame); @@ -2696,7 +2675,7 @@ { if (!getMainModel()) return; - size_t frame = getMainModel()->getStartFrame(); + int frame = getMainModel()->getStartFrame(); if (m_viewManager->getPlaySelectionMode()) { frame = m_viewManager->constrainFrameToSelection(frame); @@ -2714,11 +2693,9 @@ if (!layer) { rewind(); return; } Pane *pane = m_paneStack->getCurrentPane(); - size_t sr = getMainModel()->getSampleRate(); - int frame = m_viewManager->getPlaybackFrame(); - size_t resolution = 0; + int resolution = 0; if (pane) frame = pane->alignFromReference(frame); if (layer->snapToSimilarFeature(m_paneStack->getCurrentPane(), frame, resolution, Layer::SnapLeft)) { @@ -2730,7 +2707,7 @@ if (frame < 0) frame = 0; if (m_viewManager->getPlaySelectionMode()) { - frame = m_viewManager->constrainFrameToSelection(size_t(frame)); + frame = m_viewManager->constrainFrameToSelection(int(frame)); } m_viewManager->setPlaybackFrame(frame); @@ -2942,24 +2919,24 @@ MainWindowBase::connectLayerEditDialog(ModelDataTableDialog *dialog) { connect(m_viewManager, - SIGNAL(globalCentreFrameChanged(unsigned long)), + SIGNAL(globalCentreFrameChanged(int)), dialog, - SLOT(userScrolledToFrame(unsigned long))); + SLOT(userScrolledToFrame(int))); connect(m_viewManager, - SIGNAL(playbackFrameChanged(unsigned long)), + SIGNAL(playbackFrameChanged(int)), dialog, - SLOT(playbackScrolledToFrame(unsigned long))); + SLOT(playbackScrolledToFrame(int))); connect(dialog, - SIGNAL(scrollToFrame(unsigned long)), + SIGNAL(scrollToFrame(int)), m_viewManager, - SLOT(setGlobalCentreFrame(unsigned long))); + SLOT(setGlobalCentreFrame(int))); connect(dialog, - SIGNAL(scrollToFrame(unsigned long)), + SIGNAL(scrollToFrame(int)), m_viewManager, - SLOT(setPlaybackFrame(unsigned long))); + SLOT(setPlaybackFrame(int))); } void @@ -3047,7 +3024,7 @@ } void -MainWindowBase::playbackFrameChanged(unsigned long frame) +MainWindowBase::playbackFrameChanged(int frame) { if (!(m_playSource && m_playSource->isPlaying()) || !getMainModel()) return; @@ -3083,7 +3060,7 @@ } void -MainWindowBase::globalCentreFrameChanged(unsigned long ) +MainWindowBase::globalCentreFrameChanged(int ) { if ((m_playSource && m_playSource->isPlaying()) || !getMainModel()) return; Pane *p = 0; @@ -3093,7 +3070,7 @@ } void -MainWindowBase::viewCentreFrameChanged(View *v, unsigned long frame) +MainWindowBase::viewCentreFrameChanged(View *v, int frame) { // SVDEBUG << "MainWindowBase::viewCentreFrameChanged(" << v << "," << frame << ")" << endl; @@ -3110,7 +3087,7 @@ } void -MainWindowBase::viewZoomLevelChanged(View *v, unsigned long , bool ) +MainWindowBase::viewZoomLevelChanged(View *v, int , bool ) { if ((m_playSource && m_playSource->isPlaying()) || !getMainModel()) return; Pane *p = 0; @@ -3213,7 +3190,9 @@ // SVDEBUG << "MainWindowBase::mainModelChanged(" << model << ")" << endl; updateDescriptionLabel(); if (model) m_viewManager->setMainModelSampleRate(model->getSampleRate()); - if (model && !m_playTarget && m_audioOutput) createPlayTarget(); + if (model && !m_playTarget && m_audioOutput) { + createPlayTarget(); + } } void @@ -3316,15 +3295,12 @@ process->start("open", args); #else #ifdef Q_OS_WIN32 - - QString pf(getenv("ProgramFiles")); - QString command = pf + QString("\\Internet Explorer\\IEXPLORE.EXE"); - - args.append(url); - process->start(command, args); - + QString pf(getenv("ProgramFiles")); + QString command = pf + QString("\\Internet Explorer\\IEXPLORE.EXE"); + + args.append(url); + process->start(command, args); #else -#ifdef Q_WS_X11 if (!qgetenv("KDE_FULL_SESSION").isEmpty()) { args.append("exec"); args.append(url); @@ -3338,7 +3314,6 @@ } #endif #endif -#endif }