Mercurial > hg > tony
comparison src/MainWindow.cpp @ 291:cddada03e222
Fix to the button enabling problem from feature #835
author | Chris Cannam |
---|---|
date | Tue, 03 Jun 2014 15:28:01 +0100 |
parents | 634e9adfdc84 |
children | 2895ca89b024 |
comparison
equal
deleted
inserted
replaced
290:634e9adfdc84 | 291:cddada03e222 |
---|---|
1018 connect(this, SIGNAL(canPlay(bool)), m_showAudio, SLOT(setEnabled(bool))); | 1018 connect(this, SIGNAL(canPlay(bool)), m_showAudio, SLOT(setEnabled(bool))); |
1019 | 1019 |
1020 m_playAudio = toolbar->addAction(il.load("speaker"), tr("Play Audio")); | 1020 m_playAudio = toolbar->addAction(il.load("speaker"), tr("Play Audio")); |
1021 m_playAudio->setCheckable(true); | 1021 m_playAudio->setCheckable(true); |
1022 connect(m_playAudio, SIGNAL(triggered()), this, SLOT(playAudioToggled())); | 1022 connect(m_playAudio, SIGNAL(triggered()), this, SLOT(playAudioToggled())); |
1023 connect(this, SIGNAL(canPlay(bool)), m_playAudio, SLOT(setEnabled(bool))); | 1023 connect(this, SIGNAL(canPlayWaveform(bool)), m_playAudio, SLOT(setEnabled(bool))); |
1024 | 1024 |
1025 toolbar->addWidget(m_gainAudio); | 1025 toolbar->addWidget(m_gainAudio); |
1026 toolbar->addWidget(m_panAudio); | 1026 toolbar->addWidget(m_panAudio); |
1027 | 1027 |
1028 // Pitch (f0) | 1028 // Pitch (f0) |
1036 connect(this, SIGNAL(canPlay(bool)), m_showPitch, SLOT(setEnabled(bool))); | 1036 connect(this, SIGNAL(canPlay(bool)), m_showPitch, SLOT(setEnabled(bool))); |
1037 | 1037 |
1038 m_playPitch = toolbar->addAction(il.load("speaker"), tr("Play Pitch Track")); | 1038 m_playPitch = toolbar->addAction(il.load("speaker"), tr("Play Pitch Track")); |
1039 m_playPitch->setCheckable(true); | 1039 m_playPitch->setCheckable(true); |
1040 connect(m_playPitch, SIGNAL(triggered()), this, SLOT(playPitchToggled())); | 1040 connect(m_playPitch, SIGNAL(triggered()), this, SLOT(playPitchToggled())); |
1041 connect(this, SIGNAL(canPlay(bool)), m_playPitch, SLOT(setEnabled(bool))); // JTEST: this resets the enabled state of m_playPitch. | 1041 connect(this, SIGNAL(canPlayPitch(bool)), m_playPitch, SLOT(setEnabled(bool))); |
1042 | 1042 |
1043 toolbar->addWidget(m_gainPitch); | 1043 toolbar->addWidget(m_gainPitch); |
1044 toolbar->addWidget(m_panPitch); | 1044 toolbar->addWidget(m_panPitch); |
1045 | 1045 |
1046 // Notes | 1046 // Notes |
1054 connect(this, SIGNAL(canPlay(bool)), m_showNotes, SLOT(setEnabled(bool))); | 1054 connect(this, SIGNAL(canPlay(bool)), m_showNotes, SLOT(setEnabled(bool))); |
1055 | 1055 |
1056 m_playNotes = toolbar->addAction(il.load("speaker"), tr("Play Notes")); | 1056 m_playNotes = toolbar->addAction(il.load("speaker"), tr("Play Notes")); |
1057 m_playNotes->setCheckable(true); | 1057 m_playNotes->setCheckable(true); |
1058 connect(m_playNotes, SIGNAL(triggered()), this, SLOT(playNotesToggled())); | 1058 connect(m_playNotes, SIGNAL(triggered()), this, SLOT(playNotesToggled())); |
1059 connect(this, SIGNAL(canPlay(bool)), m_playNotes, SLOT(setEnabled(bool))); | 1059 connect(this, SIGNAL(canPlayNotes(bool)), m_playNotes, SLOT(setEnabled(bool))); |
1060 | 1060 |
1061 toolbar->addWidget(m_gainNotes); | 1061 toolbar->addWidget(m_gainNotes); |
1062 toolbar->addWidget(m_panNotes); | 1062 toolbar->addWidget(m_panNotes); |
1063 | 1063 |
1064 // Spectrogram | 1064 // Spectrogram |
1181 Layer *currentLayer = 0; | 1181 Layer *currentLayer = 0; |
1182 | 1182 |
1183 if (m_paneStack) currentPane = m_paneStack->getCurrentPane(); | 1183 if (m_paneStack) currentPane = m_paneStack->getCurrentPane(); |
1184 if (currentPane) currentLayer = currentPane->getSelectedLayer(); | 1184 if (currentPane) currentLayer = currentPane->getSelectedLayer(); |
1185 | 1185 |
1186 bool haveMainModel = | |
1187 (getMainModel() != 0); | |
1188 bool havePlayTarget = | |
1189 (m_playTarget != 0); | |
1186 bool haveCurrentPane = | 1190 bool haveCurrentPane = |
1187 (currentPane != 0); | 1191 (currentPane != 0); |
1188 bool haveCurrentLayer = | 1192 bool haveCurrentLayer = |
1189 (haveCurrentPane && | 1193 (haveCurrentPane && |
1190 (currentLayer != 0)); | 1194 (currentLayer != 0)); |
1210 emit canChangePlaybackSpeed(true); | 1214 emit canChangePlaybackSpeed(true); |
1211 int v = m_playSpeed->value(); | 1215 int v = m_playSpeed->value(); |
1212 emit canSpeedUpPlayback(v < m_playSpeed->maximum()); | 1216 emit canSpeedUpPlayback(v < m_playSpeed->maximum()); |
1213 emit canSlowDownPlayback(v > m_playSpeed->minimum()); | 1217 emit canSlowDownPlayback(v > m_playSpeed->minimum()); |
1214 | 1218 |
1219 bool haveWaveform = | |
1220 m_analyser->isVisible(Analyser::Audio) && | |
1221 m_analyser->getLayer(Analyser::Audio); | |
1222 | |
1215 bool havePitchTrack = | 1223 bool havePitchTrack = |
1216 m_analyser->isVisible(Analyser::PitchTrack) && | 1224 m_analyser->isVisible(Analyser::PitchTrack) && |
1217 m_analyser->getLayer(Analyser::PitchTrack); | 1225 m_analyser->getLayer(Analyser::PitchTrack); |
1218 | 1226 |
1219 bool haveNotes = | 1227 bool haveNotes = |
1221 m_analyser->getLayer(Analyser::Notes); | 1229 m_analyser->getLayer(Analyser::Notes); |
1222 | 1230 |
1223 emit canExportPitchTrack(havePitchTrack); | 1231 emit canExportPitchTrack(havePitchTrack); |
1224 emit canExportNotes(haveNotes); | 1232 emit canExportNotes(haveNotes); |
1225 emit canSnapNotes(haveSelection && haveNotes); | 1233 emit canSnapNotes(haveSelection && haveNotes); |
1234 | |
1235 emit canPlayWaveform(haveWaveform && haveMainModel && havePlayTarget); | |
1236 emit canPlayPitch(havePitchTrack && haveMainModel && havePlayTarget); | |
1237 emit canPlayNotes(haveNotes && haveMainModel && havePlayTarget); | |
1226 | 1238 |
1227 if (pitchCandidatesVisible) { | 1239 if (pitchCandidatesVisible) { |
1228 m_showCandidatesAction->setText(tr("Hide Pitch Candidates")); | 1240 m_showCandidatesAction->setText(tr("Hide Pitch Candidates")); |
1229 m_showCandidatesAction->setStatusTip(tr("Remove the display of alternate pitch candidates for the selected region")); | 1241 m_showCandidatesAction->setStatusTip(tr("Remove the display of alternate pitch candidates for the selected region")); |
1230 } else { | 1242 } else { |
1255 void | 1267 void |
1256 MainWindow::showAudioToggled() | 1268 MainWindow::showAudioToggled() |
1257 { | 1269 { |
1258 m_analyser->toggleVisible(Analyser::Audio); | 1270 m_analyser->toggleVisible(Analyser::Audio); |
1259 | 1271 |
1260 // JTEST | 1272 QSettings settings; |
1261 if (!m_analyser->isVisible(Analyser::Audio)) | 1273 settings.beginGroup("MainWindow"); |
1262 { | 1274 |
1263 m_analyser->setAudible(Analyser::Audio,false); | 1275 bool playOn = false; |
1264 m_playAudio->setChecked(false); | 1276 if (m_analyser->isVisible(Analyser::Audio)) { |
1265 m_playAudio->setEnabled(false); | 1277 // just switched layer on; check whether playback was also on previously |
1266 } | 1278 playOn = settings.value("playaudiowas", true).toBool(); |
1267 else | 1279 } else { |
1268 { | 1280 settings.setValue("playaudiowas", m_playAudio->isChecked()); |
1269 m_playAudio->setEnabled(true); | 1281 } |
1270 } | 1282 m_analyser->setAudible(Analyser::Audio, playOn); |
1283 m_playAudio->setChecked(playOn); | |
1284 | |
1285 settings.endGroup(); | |
1286 | |
1287 updateMenuStates(); | |
1271 } | 1288 } |
1272 | 1289 |
1273 void | 1290 void |
1274 MainWindow::showPitchToggled() | 1291 MainWindow::showPitchToggled() |
1275 { | 1292 { |
1276 m_analyser->toggleVisible(Analyser::PitchTrack); | 1293 m_analyser->toggleVisible(Analyser::PitchTrack); |
1277 | 1294 |
1278 // JTEST | 1295 QSettings settings; |
1279 if (!m_analyser->isVisible(Analyser::PitchTrack)) | 1296 settings.beginGroup("MainWindow"); |
1280 { | 1297 |
1281 m_analyser->setAudible(Analyser::PitchTrack,false); | 1298 bool playOn = false; |
1282 m_playPitch->setChecked(false); | 1299 if (m_analyser->isVisible(Analyser::PitchTrack)) { |
1283 m_playPitch->setEnabled(false); | 1300 // just switched layer on; check whether playback was also on previously |
1284 } | 1301 playOn = settings.value("playpitchwas", true).toBool(); |
1285 else | 1302 } else { |
1286 { | 1303 settings.setValue("playpitchwas", m_playPitch->isChecked()); |
1287 m_playPitch->setEnabled(true); | 1304 } |
1288 } | 1305 m_analyser->setAudible(Analyser::PitchTrack, playOn); |
1306 m_playPitch->setChecked(playOn); | |
1307 | |
1308 settings.endGroup(); | |
1309 | |
1310 updateMenuStates(); | |
1289 } | 1311 } |
1290 | 1312 |
1291 void | 1313 void |
1292 MainWindow::showSpectToggled() | 1314 MainWindow::showSpectToggled() |
1293 { | 1315 { |
1297 void | 1319 void |
1298 MainWindow::showNotesToggled() | 1320 MainWindow::showNotesToggled() |
1299 { | 1321 { |
1300 m_analyser->toggleVisible(Analyser::Notes); | 1322 m_analyser->toggleVisible(Analyser::Notes); |
1301 | 1323 |
1302 // JTEST | 1324 QSettings settings; |
1303 if (!m_analyser->isVisible(Analyser::Notes)) | 1325 settings.beginGroup("MainWindow"); |
1304 { | 1326 |
1305 m_analyser->setAudible(Analyser::Notes,false); | 1327 bool playOn = false; |
1306 m_playNotes->setChecked(false); | 1328 if (m_analyser->isVisible(Analyser::Notes)) { |
1307 m_playNotes->setEnabled(false); | 1329 // just switched layer on; check whether playback was also on previously |
1308 } | 1330 playOn = settings.value("playnoteswas", true).toBool(); |
1309 else | 1331 } else { |
1310 { | 1332 settings.setValue("playnoteswas", m_playNotes->isChecked()); |
1311 m_playNotes->setEnabled(true); | 1333 } |
1312 } | 1334 m_analyser->setAudible(Analyser::Notes, playOn); |
1335 m_playNotes->setChecked(playOn); | |
1336 | |
1337 settings.endGroup(); | |
1338 | |
1339 updateMenuStates(); | |
1313 } | 1340 } |
1314 | 1341 |
1315 void | 1342 void |
1316 MainWindow::playAudioToggled() | 1343 MainWindow::playAudioToggled() |
1317 { | 1344 { |