MCPcopy Create free account
hub / github.com/VCVRack/AudibleInstruments / appendContextMenu

Method appendContextMenu

src/Frames.cpp:338–423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

336 }
337
338 void appendContextMenu(Menu* menu) override {
339 Frames* frames = dynamic_cast<Frames*>(module);
340 assert(frames);
341
342 struct FramesCurveItem : MenuItem {
343 Frames* frames;
344 uint8_t channel;
345 frames::EasingCurve curve;
346 void onAction(const event::Action& e) override {
347 frames->keyframer.mutable_settings(channel)->easing_curve = curve;
348 }
349 void step() override {
350 rightText = (frames->keyframer.mutable_settings(channel)->easing_curve == curve) ? "✔" : "";
351 MenuItem::step();
352 }
353 };
354
355 struct FramesResponseItem : MenuItem {
356 Frames* frames;
357 uint8_t channel;
358 uint8_t response;
359 void onAction(const event::Action& e) override {
360 frames->keyframer.mutable_settings(channel)->response = response;
361 }
362 void step() override {
363 rightText = (frames->keyframer.mutable_settings(channel)->response == response) ? "✔" : "";
364 MenuItem::step();
365 }
366 };
367
368 struct FramesChannelSettingsItem : MenuItem {
369 Frames* frames;
370 uint8_t channel;
371 Menu* createChildMenu() override {
372 Menu* menu = new Menu();
373
374 menu->addChild(construct<MenuLabel>(&MenuLabel::text, string::f("Channel %d", channel + 1)));
375 menu->addChild(new MenuSeparator);
376
377 menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Interpolation Curve"));
378 menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Step", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_STEP));
379 menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Linear", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_LINEAR));
380 menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Accelerating", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_IN_QUARTIC));
381 menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Decelerating", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_OUT_QUARTIC));
382 menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Smooth Departure/Arrival", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_SINE));
383 menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Bouncing", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_BOUNCE));
384 menu->addChild(new MenuSeparator);
385 menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Response Curve"));
386 menu->addChild(construct<FramesResponseItem>(&MenuItem::text, "Linear", &FramesResponseItem::frames, frames, &FramesResponseItem::channel, channel, &FramesResponseItem::response, 0));
387 menu->addChild(construct<FramesResponseItem>(&MenuItem::text, "Exponential", &FramesResponseItem::frames, frames, &FramesResponseItem::channel, channel, &FramesResponseItem::response, 255));
388
389 return menu;
390 }
391 };
392
393 struct FramesClearItem : MenuItem {
394 Frames* frames;
395 void onAction(const event::Action& e) override {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected