@@ -560,7 +560,8 @@ class ConfigSchema {
560560 'SINGLENOZZLE' ,
561561 'DUAL_X_CARRIAGE' ,
562562 'PARKING_EXTRUDER' , 'MAGNETIC_PARKING_EXTRUDER' ,
563- 'SWITCHING_TOOLHEAD' , 'MAGNETIC_SWITCHING_TOOLHEAD' , 'ELECTROMAGNETIC_SWITCHING_TOOLHEAD'
563+ 'SWITCHING_TOOLHEAD' , 'MAGNETIC_SWITCHING_TOOLHEAD' , 'ELECTROMAGNETIC_SWITCHING_TOOLHEAD' ,
564+ 'MIXING_EXTRUDER'
564565 ] ,
565566
566567 // Axis Homing Submenus
@@ -736,11 +737,11 @@ class ConfigSchema {
736737 }
737738
738739 // The item is enabled by its E < EXTRUDERS.
739- function HAS_EAXIS ( eindex ) {
740+ function HAS_EAXIS ( eindex , name = null ) {
740741 const extruders = priorItemNamed ( 'EXTRUDERS' ) || priorItemNamed ( 'EXTRUDERS' , Infinity ) ;
741742 if ( extruders == null ) return false ;
742743 const stat = eindex < extruders . value ;
743- //console.log(`HAS_EAXIS(${eindex}) == ${stat ? 'true' : 'false'}`, extruders);
744+ //console.log(`HAS_EAXIS(${eindex}, ${name} ) == ${stat ? 'true' : 'false'}`, extruders);
744745 return stat ;
745746 }
746747
@@ -1022,6 +1023,7 @@ class ConfigSchema {
10221023 }
10231024
10241025 // Refresh all requires that follow a changed item.
1026+ // TODO: Add a flag for items whose visibility in the UI depends on a later item (like En_DRIVER_TYPE depending on EXTRUDERS).
10251027 refreshRequiresAfter ( after ) {
10261028 for ( const item of this . iterateDataBySID ( after + 1 ) ) delete item . evaled ;
10271029 for ( const item of this . iterateDataBySID ( after + 1 ) ) this . evaluateRequires ( item ) ;
@@ -1619,10 +1621,24 @@ class ConfigSchema {
16191621 || name . match ( / ^ T E M P _ S E N S O R _ ( \d ) $ / )
16201622 || name . match ( / ^ F I L _ R U N O U T ( \d ) _ ( S T A T E | P U L L ( U P | D O W N ) ) $ / ) ;
16211623 if ( m1 ) return m1 [ 1 ] ;
1622- if ( [ 'DISABLE_IDLE_E' , 'STEP_STATE_E' , 'NOZZLE_PARK_FEATURE' , 'NOZZLE_CLEAN_FEATURE' ] . includes ( name ) ) return '0' ;
1624+ if ( [
1625+ 'STEP_STATE_E' , 'DEFAULT_NOMINAL_FILAMENT_DIA' ,
1626+ 'SINGLENOZZLE' , 'SWITCHING_EXTRUDER' , 'MECHANICAL_SWITCHING_EXTRUDER' ,
1627+ 'SWITCHING_NOZZLE' , 'MECHANICAL_SWITCHING_NOZZLE' ,
1628+ 'PARKING_EXTRUDER' , 'MAGNETIC_PARKING_EXTRUDER' ,
1629+ 'DIFFERENTIAL_EXTRUDER' ,
1630+ 'SWITCHING_TOOLHEAD' , 'MAGNETIC_SWITCHING_TOOLHEAD' , 'ELECTROMAGNETIC_SWITCHING_TOOLHEAD' ,
1631+ 'MIXING_EXTRUDER' ,
1632+ 'HOTEND_OFFSET_X' , 'HOTEND_OFFSET_Y' , 'HOTEND_OFFSET_Z' ,
1633+ 'DISABLE_IDLE_E' , 'DISABLE_E' , 'DISABLE_OTHER_EXTRUDERS' ,
1634+ 'NOZZLE_PARK_FEATURE' , 'NOZZLE_CLEAN_FEATURE' ,
1635+ 'DISTINCT_E_FACTORS' , 'DEFAULT_RETRACT_ACCELERATION' ,
1636+ 'PIDTEMP' , 'MPCTEMP' , 'BANG_MAX'
1637+ ] . includes ( name ) ) return '0' ;
16231638 }
16241639
16251640 // Items that depend on *_DRIVER_TYPE to be enabled.
1641+ // Return the part of the given 'name' that matches an axis name, for use in test conditions.
16261642 function is_axis_item ( name ) {
16271643 const m1 = name . match ( / ^ ( [ X Y Z I J K U V W ] \d ? ) _ ( C H A I N _ P O S | C S _ P I N | C U R R E N T ( _ H O M E ) ? | E N A B L E _ O N | H O L D _ M U L T I P L I E R | H O M E _ D I R | H Y B R I D _ T H R E S H O L D | I N T E R P O L A T E | M A X _ C U R R E N T | M ( A X | I N ) _ E N D S T O P _ ( I N V E R T I N G | H I T _ S T A T E ) | M ( A X | I N ) _ P O S | M I C R O S T E P S | R S E N S E | S A F E T Y _ S T O P | S E N S E _ R E S I S T O R | S L A V E _ A D D R E S S | S T A L L _ S E N S I T I V I T Y ) $ / )
16281644 || name . match ( / ^ (?: C H O P P E R _ T I M I N G | D I S A B L E (?: _ I N A C T I V E | _ I D L E ) ? | M (?: A X | I N ) _ S O F T W A R E _ E N D S T O P | S A F E _ B E D _ L E V E L I N G _ S T A R T | S T E A L T H C H O P | S T E P _ S T A T E ) _ ( [ X Y Z I J K U V W ] \d ? ) $ / )
@@ -1660,7 +1676,7 @@ class ConfigSchema {
16601676 extend_requires ( `HAS_AXIS(${ axis } )` ) ;
16611677 define_info . requires = define_info . requires . replace ( ` && defined(${ axis } _DRIVER_TYPE)` , '' ) ;
16621678 }
1663- if ( eindex ) extend_requires ( `HAS_EAXIS(${ eindex } )` ) ;
1679+ if ( eindex ) extend_requires ( `HAS_EAXIS(${ eindex } , ${ define_name } )` ) ;
16641680 if ( hindex ) extend_requires ( `HAS_SENSOR(${ hindex } )` ) ;
16651681 if ( tindex ) extend_requires ( `ANY_THERMISTOR_IS(${ tindex } )` ) ;
16661682 if ( sindex ) extend_requires ( `HAS_SERIAL(${ sindex } )` ) ;
0 commit comments