Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
MarlinKimbra
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
machinery
MarlinKimbra
Commits
aaf8a30d
Commit
aaf8a30d
authored
Mar 20, 2015
by
MagoKimbra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update menu LCD
parent
3b222416
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
151 additions
and
246 deletions
+151
-246
ultralcd.cpp
MarlinKimbra/ultralcd.cpp
+62
-47
ultralcd_implementation_hitachi_HD44780.h
MarlinKimbra/ultralcd_implementation_hitachi_HD44780.h
+89
-199
No files found.
MarlinKimbra/ultralcd.cpp
View file @
aaf8a30d
...
@@ -134,64 +134,84 @@ static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned l
...
@@ -134,64 +134,84 @@ static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned l
/* Helper macros for menus */
/* Helper macros for menus */
/**
* START_MENU generates the init code for a menu function
*/
#define START_MENU() do { \
#define START_MENU() do { \
encoderRateMultiplierEnabled = false; \
encoderRateMultiplierEnabled = false; \
if (encoderPosition > 0x8000) encoderPosition = 0; \
if (encoderPosition > 0x8000) encoderPosition = 0; \
if (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM < currentMenuViewOffset) currentMenuViewOffset = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM;\
uint8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \
uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \
if (encoderLine < currentMenuViewOffset) currentMenuViewOffset = encoderLine; \
bool wasClicked = LCD_CLICKED;\
uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \
for(uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \
bool wasClicked = LCD_CLICKED, itemSelected; \
_menuItemNr = 0;
if (wasClicked) lcd_quick_feedback(); \
for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \
_menuItemNr = 0;
/**
* MENU_ITEM generates draw & handler code for a menu item, potentially calling:
*
* lcd_implementation_drawmenu_[type](sel, row, label, arg3...)
* menu_action_[type](arg3...)
*
* Examples:
* MENU_ITEM(back, MSG_WATCH, lcd_status_screen)
* lcd_implementation_drawmenu_back(sel, row, PSTR(MSG_WATCH), lcd_status_screen)
* menu_action_back(lcd_status_screen)
*
* MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause)
* lcd_implementation_drawmenu_function(sel, row, PSTR(MSG_PAUSE_PRINT), lcd_sdcard_pause)
* menu_action_function(lcd_sdcard_pause)
*
* MENU_ITEM_EDIT(int3, MSG_SPEED, &feedmultiply, 10, 999)
* MENU_ITEM(setting_edit_int3, MSG_SPEED, PSTR(MSG_SPEED), &feedmultiply, 10, 999)
* lcd_implementation_drawmenu_setting_edit_int3(sel, row, PSTR(MSG_SPEED), PSTR(MSG_SPEED), &feedmultiply, 10, 999)
* menu_action_setting_edit_int3(PSTR(MSG_SPEED), &feedmultiply, 10, 999)
*
*/
#define MENU_ITEM(type, label, args...) do { \
#define MENU_ITEM(type, label, args...) do { \
if (_menuItemNr == _lineNr) { \
if (_menuItemNr == _lineNr) { \
if (lcdDrawUpdate) { \
itemSelected = encoderLine == _menuItemNr; \
const char* _label_pstr = PSTR(label); \
if (lcdDrawUpdate) \
if ((encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) { \
lcd_implementation_drawmenu_ ## type(itemSelected, _drawLineNr, PSTR(label), ## args); \
lcd_implementation_drawmenu_ ## type ## _selected (_drawLineNr, _label_pstr , ## args ); \
if (wasClicked && itemSelected) { \
}else{\
menu_action_ ## type(args); \
lcd_implementation_drawmenu_ ## type (_drawLineNr, _label_pstr , ## args ); \
return; \
}\
} \
}\
} \
if (wasClicked && (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) {\
_menuItemNr++; \
lcd_quick_feedback(); \
menu_action_ ## type ( args ); \
return;\
}\
}\
_menuItemNr++;\
} while(0)
} while(0)
#ifdef ENCODER_RATE_MULTIPLIER
#ifdef ENCODER_RATE_MULTIPLIER
/**
* MENU_MULTIPLIER_ITEM generates drawing and handling code for a multiplier menu item
*/
#define MENU_MULTIPLIER_ITEM(type, label, args...) do { \
#define MENU_MULTIPLIER_ITEM(type, label, args...) do { \
if (_menuItemNr == _lineNr) { \
if (_menuItemNr == _lineNr) { \
if (lcdDrawUpdate) { \
itemSelected = encoderLine == _menuItemNr; \
const char* _label_pstr = PSTR(label); \
if (lcdDrawUpdate) \
if ((encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) { \
lcd_implementation_drawmenu_ ## type(itemSelected, _drawLineNr, PSTR(label), ## args); \
lcd_implementation_drawmenu_ ## type ## _selected (_drawLineNr, _label_pstr , ## args ); \
if (wasClicked && itemSelected) { \
} \
else { \
lcd_implementation_drawmenu_ ## type (_drawLineNr, _label_pstr , ## args ); \
} \
} \
if (wasClicked && (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) { \
lcd_quick_feedback(); \
encoderRateMultiplierEnabled = true; \
encoderRateMultiplierEnabled = true; \
lastEncoderMovementMillis = 0; \
lastEncoderMovementMillis = 0; \
menu_action_ ## type
( args
); \
menu_action_ ## type
(args
); \
return; \
return; \
} \
} \
} \
} \
_menuItemNr++; \
_menuItemNr++; \
} while(0)
} while(0)
#endif //ENCODER_RATE_MULTIPLIER
#endif //ENCODER_RATE_MULTIPLIER
#define MENU_ITEM_DUMMY() do { _menuItemNr++; } while(0)
#define MENU_ITEM_DUMMY() do { _menuItemNr++; } while(0)
#define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label)
, ## args
)
#define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label)
, ## args
)
#define MENU_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label)
, ## args
)
#define MENU_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label)
, ## args
)
#ifdef ENCODER_RATE_MULTIPLIER
#ifdef ENCODER_RATE_MULTIPLIER
#define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_ ## type, label, PSTR(label)
, ## args
)
#define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_ ## type, label, PSTR(label)
, ## args
)
#define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_callback_ ## type, label, PSTR(label)
, ## args
)
#define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_callback_ ## type, label, PSTR(label)
, ## args
)
#else //!ENCODER_RATE_MULTIPLIER
#else //!ENCODER_RATE_MULTIPLIER
#define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label)
, ## args
)
#define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label)
, ## args
)
#define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label)
, ## args
)
#define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label)
, ## args
)
#endif //!ENCODER_RATE_MULTIPLIER
#endif //!ENCODER_RATE_MULTIPLIER
#define END_MENU() \
#define END_MENU() \
if (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM >= _menuItemNr) encoderPosition = _menuItemNr * ENCODER_STEPS_PER_MENU_ITEM - 1; \
if (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM >= _menuItemNr) encoderPosition = _menuItemNr * ENCODER_STEPS_PER_MENU_ITEM - 1; \
...
@@ -365,16 +385,11 @@ static void lcd_sdcard_pause() { card.pauseSDPrint(); }
...
@@ -365,16 +385,11 @@ static void lcd_sdcard_pause() { card.pauseSDPrint(); }
static
void
lcd_sdcard_resume
()
{
card
.
startFileprint
();
}
static
void
lcd_sdcard_resume
()
{
card
.
startFileprint
();
}
static
void
lcd_sdcard_stop
()
{
static
void
lcd_sdcard_stop
()
{
quickStop
();
card
.
sdprinting
=
false
;
card
.
sdprinting
=
false
;
card
.
closefile
();
card
.
closefile
();
quickStop
();
if
(
SD_FINISHED_STEPPERRELEASE
)
{
enquecommands_P
(
PSTR
(
SD_FINISHED_RELEASECOMMAND
));
}
autotempShutdown
();
autotempShutdown
();
cancel_heatup
=
true
;
cancel_heatup
=
true
;
lcd_setstatus
(
MSG_PRINT_ABORTED
);
lcd_setstatus
(
MSG_PRINT_ABORTED
);
}
}
...
...
MarlinKimbra/ultralcd_implementation_hitachi_HD44780.h
View file @
aaf8a30d
...
@@ -634,214 +634,104 @@ static void lcd_implementation_status_screen()
...
@@ -634,214 +634,104 @@ static void lcd_implementation_status_screen()
lcd
.
print
(
lcd_status_message
);
lcd
.
print
(
lcd_status_message
);
}
}
static
void
lcd_implementation_drawmenu_generic
(
uint8_t
row
,
const
char
*
pstr
,
char
pre_char
,
char
post_char
)
{
static
void
lcd_implementation_drawmenu_generic
(
bool
sel
,
uint8_t
row
,
const
char
*
pstr
,
char
pre_char
,
char
post_char
)
{
char
c
;
char
c
;
//Use all characters in narrow LCDs
uint8_t
n
=
LCD_WIDTH
-
1
-
(
LCD_WIDTH
<
20
?
1
:
2
);
#if LCD_WIDTH < 20
lcd
.
setCursor
(
0
,
row
);
uint8_t
n
=
LCD_WIDTH
-
1
-
1
;
lcd
.
print
(
sel
?
pre_char
:
' '
);
#else
while
((
c
=
pgm_read_byte
(
pstr
))
&&
n
>
0
)
{
uint8_t
n
=
LCD_WIDTH
-
1
-
2
;
lcd
.
print
(
c
);
#endif
pstr
++
;
lcd
.
setCursor
(
0
,
row
);
if
((
pgm_read_byte
(
pstr
)
&
0xc0
)
!=
0x80
)
n
--
;
lcd
.
print
(
pre_char
);
}
while
(
((
c
=
pgm_read_byte
(
pstr
))
!=
'\0'
)
&&
(
n
>
0
)
)
while
(
n
--
)
lcd
.
print
(
' '
);
{
lcd
.
print
(
post_char
);
lcd
.
print
(
c
);
lcd
.
print
(
' '
);
pstr
++
;
if
((
pgm_read_byte
(
pstr
)
&
0xc0
)
!=
0x80
)
n
--
;
}
while
(
n
--
)
lcd
.
print
(
' '
);
lcd
.
print
(
post_char
);
lcd
.
print
(
' '
);
}
}
static
void
lcd_implementation_drawmenu_setting_edit_generic
(
uint8_t
row
,
const
char
*
pstr
,
char
pre_char
,
char
*
data
)
static
void
lcd_implementation_drawmenu_setting_edit_generic
(
bool
sel
,
uint8_t
row
,
const
char
*
pstr
,
char
pre_char
,
char
*
data
)
{
{
char
c
;
char
c
;
uint8_t
n
=
LCD_WIDTH
-
1
-
(
LCD_WIDTH
<
20
?
1
:
2
)
-
lcd_strlen
(
data
);
//Use all characters in narrow LCDs
lcd
.
setCursor
(
0
,
row
);
#if LCD_WIDTH < 20
lcd
.
print
(
sel
?
pre_char
:
' '
);
uint8_t
n
=
LCD_WIDTH
-
1
-
1
-
lcd_strlen
(
data
);
while
((
c
=
pgm_read_byte
(
pstr
))
&&
n
>
0
)
{
#else
lcd
.
print
(
c
);
uint8_t
n
=
LCD_WIDTH
-
1
-
2
-
lcd_strlen
(
data
);
pstr
++
;
#endif
if
((
pgm_read_byte
(
pstr
)
&
0xc0
)
!=
0x80
)
n
--
;
lcd
.
setCursor
(
0
,
row
);
}
lcd
.
print
(
pre_char
);
lcd
.
print
(
':'
);
while
(
((
c
=
pgm_read_byte
(
pstr
))
!=
'\0'
)
&&
(
n
>
0
)
)
while
(
n
--
)
lcd
.
print
(
' '
);
{
lcd
.
print
(
data
);
lcd
.
print
(
c
);
pstr
++
;
if
((
pgm_read_byte
(
pstr
)
&
0xc0
)
!=
0x80
)
n
--
;
}
lcd
.
print
(
':'
);
while
(
n
--
)
lcd
.
print
(
' '
);
lcd
.
print
(
data
);
}
}
static
void
lcd_implementation_drawmenu_setting_edit_generic_P
(
uint8_t
row
,
const
char
*
pstr
,
char
pre_char
,
const
char
*
data
)
static
void
lcd_implementation_drawmenu_setting_edit_generic_P
(
bool
sel
,
uint8_t
row
,
const
char
*
pstr
,
char
pre_char
,
const
char
*
data
)
{
{
char
c
;
char
c
;
uint8_t
n
=
LCD_WIDTH
-
1
-
(
LCD_WIDTH
<
20
?
1
:
2
)
-
lcd_strlen_P
(
data
);
//Use all characters in narrow LCDs
lcd
.
setCursor
(
0
,
row
);
#if LCD_WIDTH < 20
lcd
.
print
(
sel
?
pre_char
:
' '
);
uint8_t
n
=
LCD_WIDTH
-
1
-
1
-
lcd_strlen_P
(
data
);
while
((
c
=
pgm_read_byte
(
pstr
))
&&
n
>
0
)
{
#else
lcd
.
print
(
c
);
uint8_t
n
=
LCD_WIDTH
-
1
-
2
-
lcd_strlen_P
(
data
);
pstr
++
;
#endif
if
((
pgm_read_byte
(
pstr
)
&
0xc0
)
!=
0x80
)
n
--
;
lcd
.
setCursor
(
0
,
row
);
}
lcd
.
print
(
pre_char
);
lcd
.
print
(
':'
);
while
(
((
c
=
pgm_read_byte
(
pstr
))
!=
'\0'
)
&&
(
n
>
0
)
)
while
(
n
--
)
lcd
.
print
(
' '
);
{
lcd_printPGM
(
data
);
lcd
.
print
(
c
);
pstr
++
;
if
((
pgm_read_byte
(
pstr
)
&
0xc0
)
!=
0x80
)
n
--
;
}
lcd
.
print
(
':'
);
while
(
n
--
)
lcd
.
print
(
' '
);
lcd_printPGM
(
data
);
}
}
#define lcd_implementation_drawmenu_setting_edit_int3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_int3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_int3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float32(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float43(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr43(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float5(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float32(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float52(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float43_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float51(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float43(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data)))
#define lcd_implementation_drawmenu_setting_edit_long5(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_bool(sel, row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
#define lcd_implementation_drawmenu_setting_edit_float5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float52_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float52(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float51_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float51(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_long5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_long5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_bool_selected(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
#define lcd_implementation_drawmenu_setting_edit_bool(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
//Add version for callback functions
//Add version for callback functions
#define lcd_implementation_drawmenu_setting_edit_callback_int3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_int3(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_int3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float3(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float32(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float43(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr43(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float32(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float52(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float43_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float51(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float43(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_long5(sel, row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_bool(sel, row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(sel, row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
#define lcd_implementation_drawmenu_setting_edit_callback_float5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float52_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data)))
void
lcd_implementation_drawedit
(
const
char
*
pstr
,
char
*
value
)
{
#define lcd_implementation_drawmenu_setting_edit_callback_float52(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data)))
lcd
.
setCursor
(
1
,
1
);
#define lcd_implementation_drawmenu_setting_edit_callback_float51_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data)))
lcd_printPGM
(
pstr
);
#define lcd_implementation_drawmenu_setting_edit_callback_float51(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data)))
lcd
.
print
(
':'
);
#define lcd_implementation_drawmenu_setting_edit_callback_long5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
lcd
.
setCursor
(
LCD_WIDTH
-
(
LCD_WIDTH
<
20
?
0
:
1
)
-
lcd_strlen
(
value
),
1
);
#define lcd_implementation_drawmenu_setting_edit_callback_long5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
lcd
.
print
(
value
);
#define lcd_implementation_drawmenu_setting_edit_callback_bool_selected(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
#define lcd_implementation_drawmenu_setting_edit_callback_bool(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
void
lcd_implementation_drawedit
(
const
char
*
pstr
,
char
*
value
)
{
lcd
.
setCursor
(
1
,
1
);
lcd_printPGM
(
pstr
);
lcd
.
print
(
':'
);
#if LCD_WIDTH < 20
lcd
.
setCursor
(
LCD_WIDTH
-
lcd_strlen
(
value
),
1
);
#else
lcd
.
setCursor
(
LCD_WIDTH
-
1
-
lcd_strlen
(
value
),
1
);
#endif
lcd
.
print
(
value
);
}
static
void
lcd_implementation_drawmenu_sdfile_selected
(
uint8_t
row
,
const
char
*
pstr
,
const
char
*
filename
,
char
*
longFilename
)
{
char
c
;
uint8_t
n
=
LCD_WIDTH
-
1
;
lcd
.
setCursor
(
0
,
row
);
lcd
.
print
(
'>'
);
if
(
longFilename
[
0
]
!=
'\0'
)
{
filename
=
longFilename
;
longFilename
[
LCD_WIDTH
-
1
]
=
'\0'
;
}
while
(
((
c
=
*
filename
)
!=
'\0'
)
&&
(
n
>
0
)
)
{
lcd
.
print
(
c
);
filename
++
;
n
--
;
}
while
(
n
--
)
lcd
.
print
(
' '
);
}
}
static
void
lcd_implementation_drawmenu_sdfile
(
uint8_t
row
,
const
char
*
pstr
,
const
char
*
filename
,
char
*
longFilename
)
static
void
lcd_implementation_drawmenu_sd
(
bool
sel
,
uint8_t
row
,
const
char
*
pstr
,
const
char
*
filename
,
char
*
longFilename
,
uint8_t
concat
)
{
{
char
c
;
char
c
;
uint8_t
n
=
LCD_WIDTH
-
concat
;
uint8_t
n
=
LCD_WIDTH
-
1
;
lcd
.
setCursor
(
0
,
row
);
lcd
.
setCursor
(
0
,
row
);
lcd
.
print
(
sel
?
'>'
:
' '
);
lcd
.
print
(
' '
);
if
(
longFilename
[
0
])
{
if
(
longFilename
[
0
]
!=
'\0'
)
filename
=
longFilename
;
{
longFilename
[
n
]
=
'\0'
;
filename
=
longFilename
;
}
longFilename
[
LCD_WIDTH
-
1
]
=
'\0'
;
while
((
c
=
*
filename
)
&&
n
>
0
)
{
}
lcd
.
print
(
c
);
while
(
((
c
=
*
filename
)
!=
'\0'
)
&&
(
n
>
0
)
)
filename
++
;
{
n
--
;
lcd
.
print
(
c
);
}
filename
++
;
while
(
n
--
)
lcd
.
print
(
' '
);
n
--
;
}
while
(
n
--
)
lcd
.
print
(
' '
);
}
}
static
void
lcd_implementation_drawmenu_sddirectory_selected
(
uint8_t
row
,
const
char
*
pstr
,
const
char
*
filename
,
char
*
longFilename
)
{
static
void
lcd_implementation_drawmenu_sdfile
(
bool
sel
,
uint8_t
row
,
const
char
*
pstr
,
const
char
*
filename
,
char
*
longFilename
)
{
char
c
;
lcd_implementation_drawmenu_sd
(
sel
,
row
,
pstr
,
filename
,
longFilename
,
1
);
uint8_t
n
=
LCD_WIDTH
-
2
;
lcd
.
setCursor
(
0
,
row
);
lcd
.
print
(
'>'
);
lcd
.
print
(
LCD_STR_FOLDER
[
0
]);
if
(
longFilename
[
0
]
!=
'\0'
)
{
filename
=
longFilename
;
longFilename
[
LCD_WIDTH
-
2
]
=
'\0'
;
}
while
(
((
c
=
*
filename
)
!=
'\0'
)
&&
(
n
>
0
)
)
{
lcd
.
print
(
c
);
filename
++
;
n
--
;
}
while
(
n
--
)
lcd
.
print
(
' '
);
}
}
static
void
lcd_implementation_drawmenu_sddirectory
(
uint8_t
row
,
const
char
*
pstr
,
const
char
*
filename
,
char
*
longFilename
)
static
void
lcd_implementation_drawmenu_sddirectory
(
bool
sel
,
uint8_t
row
,
const
char
*
pstr
,
const
char
*
filename
,
char
*
longFilename
)
{
{
lcd_implementation_drawmenu_sd
(
sel
,
row
,
pstr
,
filename
,
longFilename
,
2
);
char
c
;
uint8_t
n
=
LCD_WIDTH
-
2
;
lcd
.
setCursor
(
0
,
row
);
lcd
.
print
(
' '
);
lcd
.
print
(
LCD_STR_FOLDER
[
0
]);
if
(
longFilename
[
0
]
!=
'\0'
)
{
filename
=
longFilename
;
longFilename
[
LCD_WIDTH
-
2
]
=
'\0'
;
}
while
(
((
c
=
*
filename
)
!=
'\0'
)
&&
(
n
>
0
)
)
{
lcd
.
print
(
c
);
filename
++
;
n
--
;
}
while
(
n
--
)
lcd
.
print
(
' '
);
}
}
#define lcd_implementation_drawmenu_back_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
#define lcd_implementation_drawmenu_back(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
#define lcd_implementation_drawmenu_back(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_UPLEVEL[0])
#define lcd_implementation_drawmenu_submenu(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', LCD_STR_ARROW_RIGHT[0])
#define lcd_implementation_drawmenu_submenu_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', LCD_STR_ARROW_RIGHT[0])
#define lcd_implementation_drawmenu_gcode(sel, row, pstr, gcode) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
#define lcd_implementation_drawmenu_submenu(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_ARROW_RIGHT[0])
#define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
#define lcd_implementation_drawmenu_gcode_selected(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ')
#define lcd_implementation_drawmenu_gcode(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ')
#define lcd_implementation_drawmenu_function_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ')
#define lcd_implementation_drawmenu_function(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ')
static
void
lcd_implementation_quick_feedback
()
static
void
lcd_implementation_quick_feedback
()
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment