@@ -582,6 +582,7 @@ struct PatternControl : PageComponent {
582
582
uint8_t pattern_index = 0 ;
583
583
bool copy_state = false ;
584
584
bool select_all = false ;
585
+ bool save_as_state = false ;
585
586
586
587
PatternControl ()
587
588
{
@@ -626,14 +627,17 @@ struct PatternControl : PageComponent {
626
627
}
627
628
628
629
// shift goes to copy/paste function
629
- if (uCtrl.page ->isShiftPressed ()) {
630
+ if (uCtrl.page ->isShiftPressed () && !(copy_state || save_as_state) ) {
630
631
setF1 (" save as" );
631
632
setF2 (" save" );
632
633
} else {
633
634
// shift f1 goes copy, if copy state then no shift f1 goes paste instead of clear
634
635
if (copy_state) {
635
636
setF1 (" cancel" );
636
637
setF2 (" paste" );
638
+ } else if (save_as_state) {
639
+ setF1 (" cancel" );
640
+ setF2 (" save as" );
637
641
} else {
638
642
setF1 (" copy" );
639
643
setF2 (" all" , select_all ? true : false );
@@ -709,14 +713,13 @@ struct PatternControl : PageComponent {
709
713
}
710
714
711
715
void function1 () {
712
- if (uCtrl.page ->isShiftPressed ()) {
713
- // save as: gets all current memory and saves on selected pattern(all tracks)
714
- // save all memory current into selected pattern line
715
- savePattern (selected_line-2 +pattern_index);
716
+ if (uCtrl.page ->isShiftPressed () && !(copy_state || save_as_state)) {
717
+ save_as_state = true ;
716
718
} else {
717
- if (copy_state) {
719
+ if (copy_state || save_as_state ) {
718
720
// cancel
719
721
copy_state = false ;
722
+ save_as_state = false ;
720
723
} else {
721
724
// copy
722
725
if (select_all) {
@@ -733,14 +736,14 @@ struct PatternControl : PageComponent {
733
736
734
737
void function2 () {
735
738
// save: memory and pattern selected per track as it is on grid
736
- if (uCtrl.page ->isShiftPressed ()) {
739
+ if (uCtrl.page ->isShiftPressed () && !(copy_state || save_as_state) ) {
737
740
// save the grid as it is selected per track
738
741
for (uint8_t i=0 ; i < max_elements; i++) {
739
742
savePattern (_pattern_grid[i], i);
740
743
}
741
744
// save _mute_grid for current_pattern only
742
745
saveMuteGrid (current_pattern);
743
- // paste/all
746
+ // paste/all, save as selection
744
747
} else {
745
748
if (copy_state) {
746
749
// paste all
@@ -755,6 +758,11 @@ struct PatternControl : PageComponent {
755
758
}
756
759
}
757
760
copy_state = false ;
761
+ } else if (save_as_state) {
762
+ // save as: gets all current memory and saves on selected pattern(all tracks)
763
+ // save all memory current into selected pattern line
764
+ savePattern (selected_line-2 +pattern_index);
765
+ save_as_state = false ;
758
766
} else {
759
767
// copy all selection
760
768
select_all = !select_all;
@@ -1605,6 +1613,11 @@ void playStop()
1605
1613
uClock.start ();
1606
1614
}
1607
1615
1616
+ void recToggle ()
1617
+ {
1618
+ AcidSequencer.setRecStatus (!AcidSequencer.getRecStatus ());
1619
+ }
1620
+
1608
1621
void previousTrack ()
1609
1622
{
1610
1623
if (_selected_track == 0 ) {
0 commit comments