@ -148,10 +148,6 @@ uint16_t max_display_update_time = 0;
void lcd_dac_write_eeprom ( ) ;
void lcd_dac_write_eeprom ( ) ;
# endif
# endif
# if HAS_LCD_CONTRAST
void lcd_set_contrast ( ) ;
# endif
# if ENABLED(FWRETRACT)
# if ENABLED(FWRETRACT)
void lcd_control_retract_menu ( ) ;
void lcd_control_retract_menu ( ) ;
# endif
# endif
@ -181,7 +177,7 @@ uint16_t max_display_update_time = 0;
void menu_edit_callback_ # # _name ( ) ; \
void menu_edit_callback_ # # _name ( ) ; \
void _menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) ; \
void _menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) ; \
void menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) ; \
void menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) ; \
void menu_action_setting_edit_callback_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue , const screenFunc_t callback ); \
void menu_action_setting_edit_callback_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue , const screenFunc_t callback , const bool live = false ); \
typedef void _name # # _void
typedef void _name # # _void
DECLARE_MENU_EDIT_TYPE ( int , int3 ) ;
DECLARE_MENU_EDIT_TYPE ( int , int3 ) ;
@ -419,6 +415,7 @@ uint16_t max_display_update_time = 0;
void * editValue ;
void * editValue ;
int32_t minEditValue , maxEditValue ;
int32_t minEditValue , maxEditValue ;
screenFunc_t callbackFunc ;
screenFunc_t callbackFunc ;
bool liveEdit ;
// Manual Moves
// Manual Moves
const float manual_feedrate_mm_m [ ] = MANUAL_FEEDRATE ;
const float manual_feedrate_mm_m [ ] = MANUAL_FEEDRATE ;
@ -590,7 +587,7 @@ void lcd_status_screen() {
}
}
# if ENABLED(ULTIPANEL_FEEDMULTIPLY)
# if ENABLED(ULTIPANEL_FEEDMULTIPLY)
int new_frm = feedrate_percentage + ( int32_t ) encoderPosition ;
const int new_frm = feedrate_percentage + ( int32_t ) encoderPosition ;
// Dead zone at 100% feedrate
// Dead zone at 100% feedrate
if ( ( feedrate_percentage < 100 & & new_frm > 100 ) | | ( feedrate_percentage > 100 & & new_frm < 100 ) ) {
if ( ( feedrate_percentage < 100 & & new_frm > 100 ) | | ( feedrate_percentage > 100 & & new_frm < 100 ) ) {
feedrate_percentage = 100 ;
feedrate_percentage = 100 ;
@ -2465,6 +2462,17 @@ void kill_screen(const char* lcd_msg) {
*
*
*/
*/
/**
*
* Callback for LCD contrast
*
*/
# if HAS_LCD_CONTRAST
void lcd_callback_set_contrast ( ) { set_lcd_contrast ( lcd_contrast ) ; }
# endif // HAS_LCD_CONTRAST
# if ENABLED(EEPROM_SETTINGS)
# if ENABLED(EEPROM_SETTINGS)
static void lcd_store_settings ( ) { lcd_completion_feedback ( settings . save ( ) ) ; }
static void lcd_store_settings ( ) { lcd_completion_feedback ( settings . save ( ) ) ; }
static void lcd_load_settings ( ) { lcd_completion_feedback ( settings . load ( ) ) ; }
static void lcd_load_settings ( ) { lcd_completion_feedback ( settings . load ( ) ) ; }
@ -2483,8 +2491,7 @@ void kill_screen(const char* lcd_msg) {
MENU_ITEM ( submenu , MSG_FILAMENT , lcd_control_filament_menu ) ;
MENU_ITEM ( submenu , MSG_FILAMENT , lcd_control_filament_menu ) ;
# if HAS_LCD_CONTRAST
# if HAS_LCD_CONTRAST
//MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
MENU_ITEM_EDIT_CALLBACK ( int3 , MSG_CONTRAST , & lcd_contrast , LCD_CONTRAST_MIN , LCD_CONTRAST_MAX , lcd_callback_set_contrast , true ) ;
MENU_ITEM ( submenu , MSG_CONTRAST , lcd_set_contrast ) ;
# endif
# endif
# if ENABLED(FWRETRACT)
# if ENABLED(FWRETRACT)
MENU_ITEM ( submenu , MSG_RETRACT , lcd_control_retract_menu ) ;
MENU_ITEM ( submenu , MSG_RETRACT , lcd_control_retract_menu ) ;
@ -2953,32 +2960,6 @@ void kill_screen(const char* lcd_msg) {
END_MENU ( ) ;
END_MENU ( ) ;
}
}
/**
*
* " Control " > " Contrast " submenu
*
*/
# if HAS_LCD_CONTRAST
void lcd_set_contrast ( ) {
if ( lcd_clicked ) { return lcd_goto_previous_menu ( ) ; }
ENCODER_DIRECTION_NORMAL ( ) ;
if ( encoderPosition ) {
set_lcd_contrast ( lcd_contrast + encoderPosition ) ;
encoderPosition = 0 ;
lcdDrawUpdate = LCDVIEW_REDRAW_NOW ;
}
if ( lcdDrawUpdate ) {
lcd_implementation_drawedit ( PSTR ( MSG_CONTRAST ) ,
# if LCD_CONTRAST_MAX >= 100
itostr3 ( lcd_contrast )
# else
itostr2 ( lcd_contrast )
# endif
) ;
}
}
# endif // HAS_LCD_CONTRAST
/**
/**
*
*
* " Control " > " Retract " submenu
* " Control " > " Retract " submenu
@ -3492,7 +3473,7 @@ void kill_screen(const char* lcd_msg) {
* void menu_edit_callback_int3 ( ) ; // edit int (interactively) with callback on completion
* void menu_edit_callback_int3 ( ) ; // edit int (interactively) with callback on completion
* void _menu_action_setting_edit_int3 ( const char * const pstr , int * const ptr , const int minValue , const int maxValue ) ;
* void _menu_action_setting_edit_int3 ( const char * const pstr , int * const ptr , const int minValue , const int maxValue ) ;
* void menu_action_setting_edit_int3 ( const char * const pstr , int * const ptr , const int minValue , const int maxValue ) ;
* void menu_action_setting_edit_int3 ( const char * const pstr , int * const ptr , const int minValue , const int maxValue ) ;
* void menu_action_setting_edit_callback_int3 ( const char * const pstr , int * const ptr , const int minValue , const int maxValue , const screenFunc_t callback ); // edit int with callback
* void menu_action_setting_edit_callback_int3 ( const char * const pstr , int * const ptr , const int minValue , const int maxValue , const screenFunc_t callback , const bool live ); // edit int with callback
*
*
* You can then use one of the menu macros to present the edit interface :
* You can then use one of the menu macros to present the edit interface :
* MENU_ITEM_EDIT ( int3 , MSG_SPEED , & feedrate_percentage , 10 , 999 )
* MENU_ITEM_EDIT ( int3 , MSG_SPEED , & feedrate_percentage , 10 , 999 )
@ -3500,29 +3481,27 @@ void kill_screen(const char* lcd_msg) {
* This expands into a more primitive menu item :
* This expands into a more primitive menu item :
* MENU_ITEM ( setting_edit_int3 , MSG_SPEED , PSTR ( MSG_SPEED ) , & feedrate_percentage , 10 , 999 )
* MENU_ITEM ( setting_edit_int3 , MSG_SPEED , PSTR ( MSG_SPEED ) , & feedrate_percentage , 10 , 999 )
*
*
*
* . . . which calls :
* Also : MENU_MULTIPLIER_ITEM_EDIT , MENU_ITEM_EDIT_CALLBACK , and MENU_MULTIPLIER_ITEM_EDIT_CALLBACK
*
* menu_action_setting_edit_int3 ( PSTR ( MSG_SPEED ) , & feedrate_percentage , 10 , 999 )
* menu_action_setting_edit_int3 ( PSTR ( MSG_SPEED ) , & feedrate_percentage , 10 , 999 )
*/
*/
# define DEFINE_MENU_EDIT_TYPE(_type, _name, _strFunc, _scale) \
# define DEFINE_MENU_EDIT_TYPE(_type, _name, _strFunc, _scale) \
bool _menu_edit_ # # _name ( ) { \
bool _menu_edit_ # # _name ( ) { \
ENCODER_DIRECTION_NORMAL ( ) ; \
ENCODER_DIRECTION_NORMAL ( ) ; \
if ( ( int32_t ) encoderPosition < 0 ) encoderPosition = 0 ; \
if ( ( int32_t ) encoderPosition < 0 ) encoderPosition = 0 ; \
if ( ( int32_t ) encoderPosition > maxEditValue ) encoderPosition = maxEditValue ; \
if ( ( int32_t ) encoderPosition > maxEditValue ) encoderPosition = maxEditValue ; \
if ( lcdDrawUpdate ) \
if ( lcdDrawUpdate ) \
lcd_implementation_drawedit ( editLabel , _strFunc ( ( ( _type ) ( ( int32_t ) encoderPosition + minEditValue ) ) * ( 1.0 / _scale ) ) ) ; \
lcd_implementation_drawedit ( editLabel , _strFunc ( ( ( _type ) ( ( int32_t ) encoderPosition + minEditValue ) ) * ( 1.0 / _scale ) ) ) ; \
if ( lcd_clicked ) { \
if ( lcd_clicked | | ( liveEdit & & lcdDrawUpdate ) ) { \
_type value = ( ( _type ) ( ( int32_t ) encoderPosition + minEditValue ) ) * ( 1.0 / _scale ) ; \
_type value = ( ( _type ) ( ( int32_t ) encoderPosition + minEditValue ) ) * ( 1.0 / _scale ) ; \
if ( editValue ! = NULL ) \
if ( editValue ! = NULL ) * ( ( _type * ) editValue ) = value ; \
* ( ( _type * ) editValue ) = value ; \
if ( liveEdit ) ( * callbackFunc ) ( ) ; \
lcd_goto_previous_menu ( ) ; \
if ( lcd_clicked ) lcd_goto_previous_menu ( ) ; \
} \
} \
return lcd_clicked ; \
return lcd_clicked ; \
} \
} \
void menu_edit_ # # _name ( ) { _menu_edit_ # # _name ( ) ; } \
void menu_edit_ # # _name ( ) { _menu_edit_ # # _name ( ) ; } \
void menu_edit_callback_ # # _name ( ) { if ( _menu_edit_ # # _name ( ) ) ( * callbackFunc ) ( ) ; } \
void menu_edit_callback_ # # _name ( ) { if ( _menu_edit_ # # _name ( ) ) ( * callbackFunc ) ( ) ; } \
void _menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) { \
void _menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) { \
lcd_save_previous_screen ( ) ; \
lcd_save_previous_screen ( ) ; \
\
\
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW ; \
lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW ; \
@ -3533,14 +3512,15 @@ void kill_screen(const char* lcd_msg) {
maxEditValue = maxValue * _scale - minEditValue ; \
maxEditValue = maxValue * _scale - minEditValue ; \
encoderPosition = ( * ptr ) * _scale - minEditValue ; \
encoderPosition = ( * ptr ) * _scale - minEditValue ; \
} \
} \
void menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) { \
void menu_action_setting_edit_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue ) { \
_menu_action_setting_edit_ # # _name ( pstr , ptr , minValue , maxValue ) ; \
_menu_action_setting_edit_ # # _name ( pstr , ptr , minValue , maxValue ) ; \
currentScreen = menu_edit_ # # _name ; \
currentScreen = menu_edit_ # # _name ; \
} \
} \
void menu_action_setting_edit_callback_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue , const screenFunc_t callback ) { \
void menu_action_setting_edit_callback_ # # _name ( const char * const pstr , _type * const ptr , const _type minValue , const _type maxValue , const screenFunc_t callback , const bool live ) { \
_menu_action_setting_edit_ # # _name ( pstr , ptr , minValue , maxValue ) ; \
_menu_action_setting_edit_ # # _name ( pstr , ptr , minValue , maxValue ) ; \
currentScreen = menu_edit_callback_ # # _name ; \
currentScreen = menu_edit_callback_ # # _name ; \
callbackFunc = callback ; \
callbackFunc = callback ; \
liveEdit = live ; \
} \
} \
typedef void _name
typedef void _name
@ -3641,7 +3621,7 @@ void kill_screen(const char* lcd_msg) {
# endif // SDSUPPORT
# endif // SDSUPPORT
void menu_action_setting_edit_bool ( const char * pstr , bool * ptr ) { UNUSED ( pstr ) ; * ptr ^ = true ; lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW ; }
void menu_action_setting_edit_bool ( const char * pstr , bool * ptr ) { UNUSED ( pstr ) ; * ptr ^ = true ; lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW ; }
void menu_action_setting_edit_callback_bool ( const char * pstr , bool * ptr , screenFunc_t callback ) {
void menu_action_setting_edit_callback_bool ( const char * pstr , bool * ptr , screenFunc_t callback ) {
menu_action_setting_edit_bool ( pstr , ptr ) ;
menu_action_setting_edit_bool ( pstr , ptr ) ;
( * callback ) ( ) ;
( * callback ) ( ) ;
@ -4071,10 +4051,12 @@ void lcd_setalertstatuspgm(const char * const message) {
void lcd_reset_alert_level ( ) { lcd_status_message_level = 0 ; }
void lcd_reset_alert_level ( ) { lcd_status_message_level = 0 ; }
# if HAS_LCD_CONTRAST
# if HAS_LCD_CONTRAST
void set_lcd_contrast ( const int value ) {
void set_lcd_contrast ( const int value ) {
lcd_contrast = constrain ( value , LCD_CONTRAST_MIN , LCD_CONTRAST_MAX ) ;
lcd_contrast = constrain ( value , LCD_CONTRAST_MIN , LCD_CONTRAST_MAX ) ;
u8g . setContrast ( lcd_contrast ) ;
u8g . setContrast ( lcd_contrast ) ;
}
}
# endif
# endif
# if ENABLED(ULTIPANEL)
# if ENABLED(ULTIPANEL)