Skip to content

Commit 8cff754

Browse files
committed
conditional compile MENU_FMT_WRAPS
safe 566 bytes of flash
1 parent 02c4c45 commit 8cff754

File tree

2 files changed

+74
-22
lines changed

2 files changed

+74
-22
lines changed

src/menu.cpp

Lines changed: 70 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ idx_t prompt::printRaw(menuOut& out,idx_t len) const {
2121

2222
Used prompt::printTo(navRoot &root,bool sel,menuOut& out, idx_t idx,idx_t len,idx_t panelNr) {
2323
trace(Serial<<"prompt::printTo"<<endl);
24+
#ifdef MENU_FMT_WRAPS
2425
out.fmtStart(menuOut::fmtPrompt,root.node(),idx);
26+
#endif
2527
idx_t r=printRaw(out,len);
2628
if (is((systemStyles)(_menuData|_parentDraw|_asPad))
2729
//&&((&((menuNode*)root.node().target)->operator[](idx))==this)
@@ -31,7 +33,9 @@ Used prompt::printTo(navRoot &root,bool sel,menuOut& out, idx_t idx,idx_t len,id
3133
else
3234
out.previewMenu(root,*(menuNode*)this,panelNr);
3335
}
36+
#ifdef MENU_FMT_WRAPS
3437
out.fmtEnd(menuOut::fmtPrompt,root.node(),idx);
38+
#endif
3539
return r;
3640
}
3741

@@ -297,15 +301,19 @@ Used menuOut::printMenu(navNode &nav,idx_t panelNr) {
297301
//-----> panel start
298302
trace(Serial<<"panel start"<<endl);
299303
bool titleChanged=st||nav.target->changed(nav,*this,false);
300-
fmtStart(fmtPanel,nav);
304+
#ifdef MENU_FMT_WRAPS
305+
fmtStart(fmtPanel,nav);
306+
#endif
301307
if (all||titleChanged) {
302308
trace(Serial<<"all:"<<all<<" panelNr:"<<panelNr<<endl);
303309
trace(Serial<<"{x:"<<pan.x<<" y:"<<pan.y<<" w:"<<pan.w<<" h:"<<pan.h<<"}"<<endl);
304310
if (all&&!asPad) clear(panelNr);
305311
if (st||asPad) {
306312
///------> titleStart
307313
trace(Serial<<"title start"<<endl);
308-
fmtStart(fmtTitle,nav,-1);
314+
#ifdef MENU_FMT_WRAPS
315+
fmtStart(fmtTitle,nav,-1);
316+
#endif
309317
if (!asPad) {
310318
setColor(titleColor,false);
311319
clearLine(0,panelNr);
@@ -317,12 +325,16 @@ Used menuOut::printMenu(navNode &nav,idx_t panelNr) {
317325
if (asPad) print(":");
318326
//else print(']');
319327
///<----- titleEnd
320-
fmtEnd(fmtTitle,nav,-1);
328+
#ifdef MENU_FMT_WRAPS
329+
fmtEnd(fmtTitle,nav,-1);
330+
#endif
321331
}
322332
}
323333
//------> bodyStart
324334
trace(Serial<<"body start"<<endl);
325-
fmtStart(fmtBody,nav);
335+
#ifdef MENU_FMT_WRAPS
336+
fmtStart(fmtBody,nav);
337+
#endif
326338
idx_t top=asPad?0:tops[topi];
327339
// idx_t idxCnt=top;
328340
// idx_t exitCnt=0;
@@ -333,11 +345,15 @@ Used menuOut::printMenu(navNode &nav,idx_t panelNr) {
333345
idx_t len=pan.w;
334346
if (all||p.changed(nav,*this,false)) {
335347
//-------> opStart
336-
fmtStart(fmtOp,nav,i);
348+
#ifdef MENU_FMT_WRAPS
349+
fmtStart(fmtOp,nav,i);
350+
#endif
337351
bool selected=nav.sel==i+top;
338352
bool ed=nav.target==&p;
339353
//-----> idxStart
340-
fmtStart(fmtIdx,nav,i);
354+
#ifdef MENU_FMT_WRAPS
355+
fmtStart(fmtIdx,nav,i);
356+
#endif
341357
if (!asPad) {//pad MUST be able of clearing part of a line!!!!!
342358
clearLine(ist,panelNr,bgColor,selected,p.enabled);//<-- THIS IS DEPENDENT OF A DROP MENU!!!!
343359
setCursor(0,ist,panelNr);//<-- THIS IS MAKING A DROP MENU!!!!
@@ -358,16 +374,24 @@ Used menuOut::printMenu(navNode &nav,idx_t panelNr) {
358374
len-=3;
359375
}
360376
//<------idxEnd
361-
fmtEnd(fmtIdx,nav,i);
377+
#ifdef MENU_FMT_WRAPS
378+
fmtEnd(fmtIdx,nav,i);
379+
#endif
362380
//------> cursorStart
363-
fmtStart(fmtCursor,nav,i);
381+
#ifdef MENU_FMT_WRAPS
382+
fmtStart(fmtCursor,nav,i);
383+
#endif
364384
if (asPad&&selected) print("[");
365385
else drawCursor(ist,selected,p.enabled,ed,panelNr);//assuming only one character
366386
//<------ cursorEnd
367-
fmtEnd(fmtCursor,nav,i);
387+
#ifdef MENU_FMT_WRAPS
388+
fmtEnd(fmtCursor,nav,i);
389+
#endif
368390
len--;
369391
//---->opBodyStart
370-
fmtStart(fmtOpBody,nav,i);
392+
#ifdef MENU_FMT_WRAPS
393+
fmtStart(fmtOpBody,nav,i);
394+
#endif
371395
setColor(fgColor,selected,p.enabled,ed);
372396
if (len>0) len=p.printTo(*nav.root,selected,*this,i,len,panelNr);
373397
if (len>0) {
@@ -377,7 +401,9 @@ Used menuOut::printMenu(navNode &nav,idx_t panelNr) {
377401
}
378402
}
379403
//<---opBodyEnd
380-
fmtEnd(fmtOpBody,nav,i);
404+
#ifdef MENU_FMT_WRAPS
405+
fmtEnd(fmtOpBody,nav,i);
406+
#endif
381407
if (selected&&panels.sz>panelNr+1) {
382408
if(p.isMenu()) {
383409
//-----> previewStart
@@ -387,16 +413,22 @@ Used menuOut::printMenu(navNode &nav,idx_t panelNr) {
387413
} else if (panels.nodes[panelNr+1]) clear(panelNr+1);
388414
}
389415
//opEnd
390-
fmtEnd(fmtOp,nav,i);
416+
#ifdef MENU_FMT_WRAPS
417+
fmtEnd(fmtOp,nav,i);
418+
#endif
391419
}
392420
}
393421
}
394422
//<-----bodyEnd
395-
fmtEnd(fmtBody,nav,-1);
423+
#ifdef MENU_FMT_WRAPS
424+
fmtEnd(fmtBody,nav,-1);
425+
#endif
396426
drawn=nav.target;
397427
//lastSel=nav.sel;
398428
//<---- panel end
399-
fmtEnd(fmtPanel,nav,-1);
429+
#ifdef MENU_FMT_WRAPS
430+
fmtEnd(fmtPanel,nav,-1);
431+
#endif
400432
return 0;
401433
}
402434

@@ -722,16 +754,24 @@ Used fieldBase::printTo(navRoot &root,bool sel,menuOut& out, idx_t idx,idx_t len
722754
out.print((root.navFocus==this&&sel)?(tunning?'>':':'):' ');
723755
l++;
724756
if (l<len) {
725-
out.fmtStart(menuOut::fmtField,root.node(),idx);
757+
#ifdef MENU_FMT_WRAPS
758+
out.fmtStart(menuOut::fmtField,root.node(),idx);
759+
#endif
726760
out.setColor(valColor,sel,enabled,ed);
727761
//out<<reflex;
728762
l+=printReflex(out);//NOTE: this can exceed the limits!
729-
out.fmtEnd(menuOut::fmtField,root.node(),idx);
763+
#ifdef MENU_FMT_WRAPS
764+
out.fmtEnd(menuOut::fmtField,root.node(),idx);
765+
#endif
730766
if (l<len) {
731-
out.fmtStart(menuOut::fmtUnit,root.node(),idx);
767+
#ifdef MENU_FMT_WRAPS
768+
out.fmtStart(menuOut::fmtUnit,root.node(),idx);
769+
#endif
732770
out.setColor(unitColor,sel,enabled,ed);
733771
l+=print_P(out,units(),len);
734-
out.fmtEnd(menuOut::fmtUnit,root.node(),idx);
772+
#ifdef MENU_FMT_WRAPS
773+
out.fmtEnd(menuOut::fmtUnit,root.node(),idx);
774+
#endif
735775
}
736776
}
737777
}
@@ -749,11 +789,17 @@ Used menuVariantBase::printTo(navRoot &root,bool sel,menuOut& out, idx_t idx,idx
749789
if (len-l<0) return 0;
750790
out.print(this==&root.active()?':':' ');
751791
l--;
792+
#ifdef MENU_FMT_WRAPS
752793
if (out.fmtStart(type()==selectClass?menuOut::fmtSelect:menuOut::fmtChoose,root.node(),idx)==proceed) {
794+
#endif
753795
out.setColor(valColor,sel,prompt::enabled,ed);
754796
if (l>0) l-=operator[](at).printRaw(out,l);
797+
#ifdef MENU_FMT_WRAPS
755798
}
799+
#endif
800+
#ifdef MENU_FMT_WRAPS
756801
out.fmtEnd(type()==selectClass?menuOut::fmtSelect:menuOut::fmtChoose,root.node(),idx);
802+
#endif
757803
trace(Serial<<"menuVariantBase::printTo ended!"<<endl);
758804
return len-l;
759805
}
@@ -767,9 +813,13 @@ idx_t menuVariantBase::togglePrintTo(navRoot &root,bool sel,menuOut& out, idx_t
767813
out.setColor(valColor,sel,prompt::enabled,ed);
768814
//out<<menuNode::operator[](at);
769815
if (len-l>0) {
770-
out.fmtStart(menuOut::fmtToggle,root.node(),idx);
816+
#ifdef MENU_FMT_WRAPS
817+
out.fmtStart(menuOut::fmtToggle,root.node(),idx);
818+
#endif
771819
l+=operator[](at).printRaw(out,len-l);
772-
out.fmtEnd(menuOut::fmtToggle,root.node(),idx);
820+
#ifdef MENU_FMT_WRAPS
821+
out.fmtEnd(menuOut::fmtToggle,root.node(),idx);
822+
#endif
773823
}
774824
return l;
775825
}

src/menu.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,10 @@ for correcting unsigned values validation
501501
write(selected?(stat==disabledStatus? options->disabledCursor : options->selectedCursor):' ');
502502
}
503503
void doNav(navCmd cmd,navNode &nav);
504-
virtual result fmtStart(fmtParts part,navNode &nav,idx_t idx=-1) {return proceed;}
505-
virtual result fmtEnd(fmtParts part,navNode &nav,idx_t idx=-1) {return proceed;}
504+
#ifdef MENU_FMT_WRAPS
505+
virtual result fmtStart(fmtParts part,navNode &nav,idx_t idx=-1) {return proceed;}
506+
virtual result fmtEnd(fmtParts part,navNode &nav,idx_t idx=-1) {return proceed;}
507+
#endif
506508
//text editor cursors
507509
virtual idx_t startCursor(navRoot& root,idx_t x,idx_t y,bool charEdit,idx_t panelNr=0) {write(charEdit?">":"[");return 1;}
508510
virtual idx_t endCursor(navRoot& root,idx_t x,idx_t y,bool charEdit,idx_t panelNr=0) {write(charEdit?"<":"]");return 1;}

0 commit comments

Comments
 (0)