| 377 | } |
| 378 | |
| 379 | void SpectralDataDialogWorker::OnToolChanged(ProjectSettingsEvent evt) |
| 380 | { |
| 381 | if (evt.type == ProjectSettingsEvent::ChangedTool) { |
| 382 | // Find not Get to avoid creating the dialog if not yet done |
| 383 | if (auto pDialog = SpectralDataDialog::Find(&mProject); |
| 384 | pDialog && pDialog->IsShown()) |
| 385 | pDialog->DoToolChanged(); |
| 386 | else { |
| 387 | // Dialog is hidden, or not yet constructed |
| 388 | using Type = std::underlying_type_t<decltype(ToolCodes::brushTool)>; |
| 389 | constexpr auto value = static_cast<Type>(ToolCodes::brushTool); |
| 390 | |
| 391 | auto &projectSettings = ProjectSettings::Get( mProject ); |
| 392 | if (projectSettings.GetTool() == value) { |
| 393 | auto oldValue = evt.oldValue; |
| 394 | if (oldValue + 1 == value) |
| 395 | // continue tool rotation |
| 396 | wxTheApp->CallAfter([&]{ projectSettings.SetTool( |
| 397 | (value + 1) % ToolCodes::numTools); }); |
| 398 | else if ((oldValue + ToolCodes::numTools - 1 ) % ToolCodes::numTools |
| 399 | == value) |
| 400 | // continue backwards tool rotation |
| 401 | wxTheApp->CallAfter([&]{ projectSettings.SetTool( |
| 402 | (value + ToolCodes::numTools - 1 ) % ToolCodes::numTools); }); |
| 403 | else |
| 404 | // restore old tool value |
| 405 | wxTheApp->CallAfter([&]{ projectSettings.SetTool(oldValue); }); |
| 406 | } |
| 407 | } |
| 408 | } |
| 409 | } |
| 410 | |
| 411 | static bool HasVisibleSpectralView(WaveTrack *wt) |
| 412 | { |
nothing calls this directly
no test coverage detected