Mercurial > hg > tony
comparison src/MainWindow.cpp @ 424:ad8f94fb334d
Experiment with simple button logic for LevelPanWidget (separating out playback toggle again)
author | Chris Cannam |
---|---|
date | Mon, 30 Mar 2015 14:28:04 +0100 |
parents | bbe7ba53030e |
children | 46003a5a8736 |
comparison
equal
deleted
inserted
replaced
423:bbe7ba53030e | 424:ad8f94fb334d |
---|---|
1126 m_showAudio = toolbar->addAction(il.load("waveform"), tr("Show Audio")); | 1126 m_showAudio = toolbar->addAction(il.load("waveform"), tr("Show Audio")); |
1127 m_showAudio->setCheckable(true); | 1127 m_showAudio->setCheckable(true); |
1128 connect(m_showAudio, SIGNAL(triggered()), this, SLOT(showAudioToggled())); | 1128 connect(m_showAudio, SIGNAL(triggered()), this, SLOT(showAudioToggled())); |
1129 connect(this, SIGNAL(canPlay(bool)), m_showAudio, SLOT(setEnabled(bool))); | 1129 connect(this, SIGNAL(canPlay(bool)), m_showAudio, SLOT(setEnabled(bool))); |
1130 | 1130 |
1131 m_playAudio = toolbar->addAction(il.load("speaker"), tr("Play Audio")); | |
1132 m_playAudio->setCheckable(true); | |
1133 connect(m_playAudio, SIGNAL(triggered()), this, SLOT(playAudioToggled())); | |
1134 connect(this, SIGNAL(canPlayWaveform(bool)), m_playAudio, SLOT(setEnabled(bool))); | |
1135 | |
1131 m_audioLPW->setImageSize(m_viewManager->scalePixelSize(26)); | 1136 m_audioLPW->setImageSize(m_viewManager->scalePixelSize(26)); |
1132 toolbar->addWidget(m_audioLPW); | 1137 toolbar->addWidget(m_audioLPW); |
1133 | 1138 |
1134 // Pitch (f0) | 1139 // Pitch (f0) |
1135 QLabel *spacer = new QLabel; // blank | 1140 QLabel *spacer = new QLabel; // blank |
1140 m_showPitch->setCheckable(true); | 1145 m_showPitch->setCheckable(true); |
1141 connect(m_showPitch, SIGNAL(triggered()), this, SLOT(showPitchToggled())); | 1146 connect(m_showPitch, SIGNAL(triggered()), this, SLOT(showPitchToggled())); |
1142 connect(this, SIGNAL(canPlay(bool)), m_showPitch, SLOT(setEnabled(bool))); | 1147 connect(this, SIGNAL(canPlay(bool)), m_showPitch, SLOT(setEnabled(bool))); |
1143 | 1148 |
1144 if (m_withSonification) { | 1149 if (m_withSonification) { |
1150 m_playPitch = toolbar->addAction(il.load("speaker"), tr("Play Pitch Track")); | |
1151 m_playPitch->setCheckable(true); | |
1152 connect(m_playPitch, SIGNAL(triggered()), this, SLOT(playPitchToggled())); | |
1153 connect(this, SIGNAL(canPlayPitch(bool)), m_playPitch, SLOT(setEnabled(bool))); | |
1154 | |
1145 m_pitchLPW->setImageSize(m_viewManager->scalePixelSize(26)); | 1155 m_pitchLPW->setImageSize(m_viewManager->scalePixelSize(26)); |
1146 toolbar->addWidget(m_pitchLPW); | 1156 toolbar->addWidget(m_pitchLPW); |
1157 } else { | |
1158 m_playPitch = 0; | |
1147 } | 1159 } |
1148 | 1160 |
1149 // Notes | 1161 // Notes |
1150 spacer = new QLabel; | 1162 spacer = new QLabel; |
1151 spacer->setFixedWidth(m_viewManager->scalePixelSize(30)); | 1163 spacer->setFixedWidth(m_viewManager->scalePixelSize(30)); |
1155 m_showNotes->setCheckable(true); | 1167 m_showNotes->setCheckable(true); |
1156 connect(m_showNotes, SIGNAL(triggered()), this, SLOT(showNotesToggled())); | 1168 connect(m_showNotes, SIGNAL(triggered()), this, SLOT(showNotesToggled())); |
1157 connect(this, SIGNAL(canPlay(bool)), m_showNotes, SLOT(setEnabled(bool))); | 1169 connect(this, SIGNAL(canPlay(bool)), m_showNotes, SLOT(setEnabled(bool))); |
1158 | 1170 |
1159 if (m_withSonification) { | 1171 if (m_withSonification) { |
1172 m_playNotes = toolbar->addAction(il.load("speaker"), tr("Play Notes")); | |
1173 m_playNotes->setCheckable(true); | |
1174 connect(m_playNotes, SIGNAL(triggered()), this, SLOT(playNotesToggled())); | |
1175 connect(this, SIGNAL(canPlayNotes(bool)), m_playNotes, SLOT(setEnabled(bool))); | |
1176 | |
1160 m_notesLPW->setImageSize(m_viewManager->scalePixelSize(26)); | 1177 m_notesLPW->setImageSize(m_viewManager->scalePixelSize(26)); |
1161 toolbar->addWidget(m_notesLPW); | 1178 toolbar->addWidget(m_notesLPW); |
1179 } else { | |
1180 m_playNotes = 0; | |
1162 } | 1181 } |
1163 | 1182 |
1164 // Spectrogram | 1183 // Spectrogram |
1165 spacer = new QLabel; | 1184 spacer = new QLabel; |
1166 spacer->setFixedWidth(m_viewManager->scalePixelSize(30)); | 1185 spacer->setFixedWidth(m_viewManager->scalePixelSize(30)); |
1380 void | 1399 void |
1381 MainWindow::showAudioToggled() | 1400 MainWindow::showAudioToggled() |
1382 { | 1401 { |
1383 m_analyser->toggleVisible(Analyser::Audio); | 1402 m_analyser->toggleVisible(Analyser::Audio); |
1384 | 1403 |
1385 bool playOn = (m_analyser->isVisible(Analyser::Audio)); | 1404 QSettings settings; |
1405 settings.beginGroup("MainWindow"); | |
1406 | |
1407 bool playOn = false; | |
1408 if (m_analyser->isVisible(Analyser::Audio)) { | |
1409 // just switched layer on; check whether playback was also on previously | |
1410 playOn = settings.value("playaudiowas", true).toBool(); | |
1411 } else { | |
1412 settings.setValue("playaudiowas", m_playAudio->isChecked()); | |
1413 } | |
1386 m_analyser->setAudible(Analyser::Audio, playOn); | 1414 m_analyser->setAudible(Analyser::Audio, playOn); |
1387 m_audioLPW->setEnabled(playOn); | 1415 |
1416 settings.endGroup(); | |
1388 | 1417 |
1389 updateMenuStates(); | 1418 updateMenuStates(); |
1419 updateLayerStatuses(); | |
1390 } | 1420 } |
1391 | 1421 |
1392 void | 1422 void |
1393 MainWindow::showPitchToggled() | 1423 MainWindow::showPitchToggled() |
1394 { | 1424 { |
1395 m_analyser->toggleVisible(Analyser::PitchTrack); | 1425 m_analyser->toggleVisible(Analyser::PitchTrack); |
1396 | 1426 |
1397 bool playOn = (m_analyser->isVisible(Analyser::PitchTrack)); | 1427 QSettings settings; |
1398 m_analyser->setAudible(Analyser::PitchTrack, playOn && m_withSonification); | 1428 settings.beginGroup("MainWindow"); |
1399 m_pitchLPW->setEnabled(playOn); | 1429 |
1430 bool playOn = false; | |
1431 if (m_analyser->isVisible(Analyser::PitchTrack)) { | |
1432 // just switched layer on; check whether playback was also on previously | |
1433 playOn = settings.value("playpitchwas", true).toBool(); | |
1434 } else { | |
1435 settings.setValue("playpitchwas", m_playPitch->isChecked()); | |
1436 } | |
1437 m_analyser->setAudible(Analyser::PitchTrack, playOn); | |
1438 | |
1439 settings.endGroup(); | |
1400 | 1440 |
1401 updateMenuStates(); | 1441 updateMenuStates(); |
1442 updateLayerStatuses(); | |
1402 } | 1443 } |
1403 | 1444 |
1404 void | 1445 void |
1405 MainWindow::showSpectToggled() | 1446 MainWindow::showSpectToggled() |
1406 { | 1447 { |
1410 void | 1451 void |
1411 MainWindow::showNotesToggled() | 1452 MainWindow::showNotesToggled() |
1412 { | 1453 { |
1413 m_analyser->toggleVisible(Analyser::Notes); | 1454 m_analyser->toggleVisible(Analyser::Notes); |
1414 | 1455 |
1415 bool playOn = (m_analyser->isVisible(Analyser::Notes)); | 1456 QSettings settings; |
1416 m_analyser->setAudible(Analyser::Notes, playOn && m_withSonification); | 1457 settings.beginGroup("MainWindow"); |
1417 m_notesLPW->setEnabled(playOn); | 1458 |
1459 bool playOn = false; | |
1460 if (m_analyser->isVisible(Analyser::Notes)) { | |
1461 // just switched layer on; check whether playback was also on previously | |
1462 playOn = settings.value("playnoteswas", true).toBool(); | |
1463 } else { | |
1464 settings.setValue("playnoteswas", m_playNotes->isChecked()); | |
1465 } | |
1466 m_analyser->setAudible(Analyser::Notes, playOn); | |
1467 | |
1468 settings.endGroup(); | |
1418 | 1469 |
1419 updateMenuStates(); | 1470 updateMenuStates(); |
1471 updateLayerStatuses(); | |
1420 } | 1472 } |
1421 | 1473 |
1422 void | 1474 void |
1423 MainWindow::playAudioToggled() | 1475 MainWindow::playAudioToggled() |
1424 { | 1476 { |
1425 m_analyser->toggleAudible(Analyser::Audio); | 1477 m_analyser->toggleAudible(Analyser::Audio); |
1478 updateLayerStatuses(); | |
1426 } | 1479 } |
1427 | 1480 |
1428 void | 1481 void |
1429 MainWindow::playPitchToggled() | 1482 MainWindow::playPitchToggled() |
1430 { | 1483 { |
1431 m_analyser->toggleAudible(Analyser::PitchTrack); | 1484 m_analyser->toggleAudible(Analyser::PitchTrack); |
1485 updateLayerStatuses(); | |
1432 } | 1486 } |
1433 | 1487 |
1434 void | 1488 void |
1435 MainWindow::playNotesToggled() | 1489 MainWindow::playNotesToggled() |
1436 { | 1490 { |
1437 m_analyser->toggleAudible(Analyser::Notes); | 1491 m_analyser->toggleAudible(Analyser::Notes); |
1492 updateLayerStatuses(); | |
1438 } | 1493 } |
1439 | 1494 |
1440 void | 1495 void |
1441 MainWindow::updateLayerStatuses() | 1496 MainWindow::updateLayerStatuses() |
1442 { | 1497 { |
1443 m_showAudio->setChecked(m_analyser->isVisible(Analyser::Audio)); | 1498 m_showAudio->setChecked(m_analyser->isVisible(Analyser::Audio)); |
1444 m_audioLPW->setEnabled(m_analyser->isVisible(Analyser::Audio)); | 1499 m_playAudio->setChecked(m_analyser->isAudible(Analyser::Audio)); |
1500 m_audioLPW->setEnabled(m_analyser->isAudible(Analyser::Audio)); | |
1445 m_audioLPW->setLevel(m_analyser->getGain(Analyser::Audio)); | 1501 m_audioLPW->setLevel(m_analyser->getGain(Analyser::Audio)); |
1446 m_audioLPW->setPan(m_analyser->getPan(Analyser::Audio)); | 1502 m_audioLPW->setPan(m_analyser->getPan(Analyser::Audio)); |
1447 | 1503 |
1448 m_showPitch->setChecked(m_analyser->isVisible(Analyser::PitchTrack)); | 1504 m_showPitch->setChecked(m_analyser->isVisible(Analyser::PitchTrack)); |
1449 m_pitchLPW->setEnabled(m_analyser->isVisible(Analyser::PitchTrack)); | 1505 m_playPitch->setChecked(m_analyser->isAudible(Analyser::PitchTrack)); |
1506 m_pitchLPW->setEnabled(m_analyser->isAudible(Analyser::PitchTrack)); | |
1450 m_pitchLPW->setLevel(m_analyser->getGain(Analyser::PitchTrack)); | 1507 m_pitchLPW->setLevel(m_analyser->getGain(Analyser::PitchTrack)); |
1451 m_pitchLPW->setPan(m_analyser->getPan(Analyser::PitchTrack)); | 1508 m_pitchLPW->setPan(m_analyser->getPan(Analyser::PitchTrack)); |
1452 | 1509 |
1453 m_showNotes->setChecked(m_analyser->isVisible(Analyser::Notes)); | 1510 m_showNotes->setChecked(m_analyser->isVisible(Analyser::Notes)); |
1454 m_notesLPW->setEnabled(m_analyser->isVisible(Analyser::Notes)); | 1511 m_playNotes->setChecked(m_analyser->isAudible(Analyser::Notes)); |
1512 m_notesLPW->setEnabled(m_analyser->isAudible(Analyser::Notes)); | |
1455 m_notesLPW->setLevel(m_analyser->getGain(Analyser::Notes)); | 1513 m_notesLPW->setLevel(m_analyser->getGain(Analyser::Notes)); |
1456 m_notesLPW->setPan(m_analyser->getPan(Analyser::Notes)); | 1514 m_notesLPW->setPan(m_analyser->getPan(Analyser::Notes)); |
1457 | 1515 |
1458 m_showSpect->setChecked(m_analyser->isVisible(Analyser::Spectrogram)); | 1516 m_showSpect->setChecked(m_analyser->isVisible(Analyser::Spectrogram)); |
1459 } | 1517 } |