@@ -421,13 +421,13 @@ class GuiApp : public kitgui::BaseApp {
421421 for (const auto & knobInfo : knobs) {
422422 clap_id id = static_cast <clap_id>(knobInfo.param );
423423 mKnobs .push_back (std::make_unique<kitgui::BaseParamKnob>(*mParams .GetBaseParam (id), id, knobInfo.node ));
424- auto pos = mScene ->GetObjectScreenPositionByName (knobInfo.node );
425- if (pos ) {
424+ auto objectInfo = mScene ->GetObjectScreenPositionByName (knobInfo.node );
425+ if (objectInfo ) {
426426 // TODO: to size the knob appropriately we need the bounding range of the object and then transform the
427427 // corners of that into screen positions. for now, hardcoded.
428428 float w = 40 .0f * scale;
429429 float hw = w * 0 .5f ;
430- mKnobs .back ()->mPos = {pos-> x () - hw, pos-> y () - hw};
430+ mKnobs .back ()->mPos = {objectInfo-> pos . x () - hw, objectInfo-> pos . y () - hw};
431431 mKnobs .back ()->mWidth = w;
432432 mKnobs .back ()->mShowDebug = false ;
433433 }
@@ -439,13 +439,13 @@ class GuiApp : public kitgui::BaseApp {
439439 for (const auto & knobInfo : toggles) {
440440 clap_id id = static_cast <clap_id>(knobInfo.param );
441441 mToggles .push_back (std::make_unique<kitgui::BaseParamToggle>(*mParams .GetBaseParam (id), id, knobInfo.node ));
442- auto pos = mScene ->GetObjectScreenPositionByName (knobInfo.node );
443- if (pos ) {
442+ auto objectInfo = mScene ->GetObjectScreenPositionByName (knobInfo.node );
443+ if (objectInfo ) {
444444 // TODO: to size the knob appropriately we need the bounding range of the object and then transform the
445445 // corners of that into screen positions. for now, hardcoded.
446446 float w = 40 .0f * scale;
447447 float hw = w * 0 .5f ;
448- mToggles .back ()->mPos = {pos-> x () - hw, pos-> y () - hw};
448+ mKnobs .back ()->mPos = {objectInfo-> pos . x () - hw, objectInfo-> pos . y () - hw};
449449 mToggles .back ()->mWidth = w;
450450 mToggles .back ()->mShowDebug = false ;
451451 }
@@ -490,14 +490,6 @@ class GuiApp : public kitgui::BaseApp {
490490 void OnUpdate () override {
491491 mParams .FlushFromAudio ();
492492 mScene ->Update ();
493- // imgui
494- if (ImGui::BeginMenuBar ()) {
495- if (ImGui::BeginMenu (" View" )) {
496- ImGui::MenuItem (" Debug Window" , NULL , &mShowDebugWindow );
497- ImGui::EndMenu ();
498- }
499- }
500-
501493 for (auto & knob : mKnobs ) {
502494 clap_id id = knob->GetParamId ();
503495 double raw = mParams .GetMainHandle ().GetRawValue (id);
@@ -511,7 +503,7 @@ class GuiApp : public kitgui::BaseApp {
511503 raw = std::trunc (raw);
512504 }
513505 auto normalizedValue = kitdsp::clamp ((raw - knob->mMin ) / (knob->mMax - knob->mMin ), 0.0 , 1.0 );
514- constexpr float maxTurn = kitdsp::kPi * 2 .0f * 0 .25f ;
506+ constexpr float maxTurn = kitdsp::kPi * 2 .0f * 0 .75f ;
515507 mScene ->SetObjectRotationByName (knob->GetSceneNode (),
516508 (static_cast <float >(normalizedValue) - 0 .5f ) * -maxTurn, kitgui::Scene::Axis::Y);
517509 }
@@ -531,12 +523,31 @@ class GuiApp : public kitgui::BaseApp {
531523 }
532524
533525 void OnGuiUpdate () override {
526+ if (ImGui::BeginMainMenuBar ()) {
527+ ImGui::MenuItem (" Help/About" , NULL , &mShowHelpWindow );
528+ if (ImGui::MenuItem (" Reset All" )) {
529+ mParams .ResetAllParamsToDefault ();
530+ }
531+ ImGui::MenuItem (" Debug" , NULL , &mShowDebugWindow );
532+ ImGui::EndMainMenuBar ();
533+ }
534+
534535 if (ImGui::IsKeyPressed (ImGuiKey_GraveAccent)) {
535536 mShowDebugWindow = !mShowDebugWindow ;
536537 }
537538
539+ if (mShowHelpWindow ) {
540+ if (ImGui::Begin (" Help" , &mShowHelpWindow )) {
541+ ImGui::TextWrapped (" KitsKeys is an intentionally simple-ish virtual analog polysynth. This is the first one I'm really dumping effort into the UI for so extra feedback there is very appreciated :)" );
542+ ImGui::BulletText (" Shift-click for fine adjustment" );
543+ ImGui::BulletText (" double-click to reset to default" );
544+ ImGui::BulletText (" right-click to get a text input" );
545+ }
546+ ImGui::End ();
547+ }
548+
538549 if (mShowDebugWindow ) {
539- if (ImGui::Begin (" Debug Window " , &mShowDebugWindow )) {
550+ if (ImGui::Begin (" Debugger " , &mShowDebugWindow )) {
540551 DebugParamList ();
541552 }
542553 ImGui::End ();
@@ -550,7 +561,8 @@ class GuiApp : public kitgui::BaseApp {
550561 std::unique_ptr<kitgui::Scene> mScene ;
551562 std::vector<std::unique_ptr<kitgui::BaseParamKnob>> mKnobs ;
552563 std::vector<std::unique_ptr<kitgui::BaseParamToggle>> mToggles ;
553- bool mShowDebugWindow = true ;
564+ bool mShowDebugWindow = false ;
565+ bool mShowHelpWindow = false ;
554566};
555567#endif
556568
0 commit comments