@@ -673,19 +673,26 @@ struct AppSettings
673673 // Window positions/sizes (persisted as "x y w h" strings, empty = default)
674674 juce::String mainWindowBounds;
675675 juce::String pdlViewBounds;
676+ juce::String slqViewBounds;
676677 juce::String trackMapBounds;
677678 juce::String mixerMapBounds;
678679
679680 // PDL View layout state
680681 bool pdlViewHorizontal = false ;
681682 bool pdlViewShowMixer = true ;
682683
684+ // SLQ View layout state
685+ bool slqViewHorizontal = false ;
686+
683687 // Per-engine settings
684688 std::vector<EngineSettings> engines;
685689
686690 // Which engine tab was selected
687691 int selectedEngine = 0 ;
688692
693+ // Show Mode lock -- prevents accidental changes during live shows
694+ bool showModeLocked = false ;
695+
689696 // Track map (Track ID -> timecode offset mapping)
690697 TrackMap trackMap;
691698
@@ -709,14 +716,17 @@ struct AppSettings
709716 obj->setProperty (" preferredSampleRate" , preferredSampleRate);
710717 obj->setProperty (" preferredBufferSize" , preferredBufferSize);
711718 obj->setProperty (" selectedEngine" , selectedEngine);
719+ obj->setProperty (" showModeLocked" , showModeLocked);
712720 obj->setProperty (" proDJLinkInterface" , proDJLinkInterface);
713721
714722 if (mainWindowBounds.isNotEmpty ()) obj->setProperty (" mainWindowBounds" , mainWindowBounds);
715723 if (pdlViewBounds.isNotEmpty ()) obj->setProperty (" pdlViewBounds" , pdlViewBounds);
724+ if (slqViewBounds.isNotEmpty ()) obj->setProperty (" slqViewBounds" , slqViewBounds);
716725 if (trackMapBounds.isNotEmpty ()) obj->setProperty (" trackMapBounds" , trackMapBounds);
717726 if (mixerMapBounds.isNotEmpty ()) obj->setProperty (" mixerMapBounds" , mixerMapBounds);
718727 obj->setProperty (" pdlViewHorizontal" , pdlViewHorizontal);
719728 obj->setProperty (" pdlViewShowMixer" , pdlViewShowMixer);
729+ obj->setProperty (" slqViewHorizontal" , slqViewHorizontal);
720730
721731 juce::Array<juce::var> engineArray;
722732 for (auto & eng : engines)
@@ -761,14 +771,20 @@ struct AppSettings
761771 preferredSampleRate = getDouble (" preferredSampleRate" , 0.0 );
762772 preferredBufferSize = getInt (" preferredBufferSize" , 0 );
763773 selectedEngine = getInt (" selectedEngine" , 0 );
774+ {
775+ auto v = obj->getProperty (" showModeLocked" );
776+ showModeLocked = v.isVoid () ? false : (bool )v;
777+ }
764778 proDJLinkInterface = getInt (" proDJLinkInterface" , 0 );
765779
766780 mainWindowBounds = getString (" mainWindowBounds" );
767781 pdlViewBounds = getString (" pdlViewBounds" );
782+ slqViewBounds = getString (" slqViewBounds" );
768783 trackMapBounds = getString (" trackMapBounds" );
769784 mixerMapBounds = getString (" mixerMapBounds" );
770785 pdlViewHorizontal = getInt (" pdlViewHorizontal" , 0 ) != 0 ;
771786 pdlViewShowMixer = getInt (" pdlViewShowMixer" , 1 ) != 0 ;
787+ slqViewHorizontal = getInt (" slqViewHorizontal" , 0 ) != 0 ;
772788
773789 engines.clear ();
774790 auto * engArray = obj->getProperty (" engines" ).getArray ();
0 commit comments