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 }