Skip to content

Commit a074713

Browse files
committed
tested menus after Print derivation, PASSED
1 parent 56882fa commit a074713

File tree

7 files changed

+20
-55
lines changed

7 files changed

+20
-55
lines changed

examples/gfx_menu/gfx_menu.ino

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/********************
22
Arduino generic menu system
33
GFX menu - unsing adafruit gfx screens
4+
tested on ATmega2560
45
http://www.r-site.net/?at=//op%5B%40id=%273090%27%5D
56
67
Sept. 2014 Rui Azevedo - ruihfazevedo(@rrob@)gmail.com

menu.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ void menu::activate(menuOut& p,Stream& c,bool canExit) {
7474
if (op>=0&&op<sz) {
7575
sel=op;
7676
if (data[op]->enabled) {
77+
printMenu(p,canExit);//clearing old selection
7778
data[op]->activate(p,c,true);
7879
}
7980
} else if (op==-1) {//then exit

menu.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,6 @@ www.r-site.net
164164
virtual void clearLine(int ln)=0;
165165
virtual void clear()=0;
166166
virtual void setCursor(int x,int y)=0;
167-
/*virtual void print(char ch)=0;
168-
virtual void print(const char *text)=0;
169-
virtual void println(const char *text="")=0;
170-
virtual void print(unsigned long)=0;
171-
virtual void println(unsigned long)=0;
172-
virtual void print(double)=0;
173-
virtual void println(double)=0;*/
174167
virtual void printPrompt(prompt &o,bool selected,int idx,int posY,int width);
175168
virtual void printMenu(menu&,bool drawExit)=0;
176169
};

menuGFX.h

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,34 +61,25 @@ www.r-site.net
6161
setCursor(0,0);
6262
}
6363
virtual void setCursor(int x,int y) {gfx.setCursor(x*resX,y*resY);}
64-
virtual void print(char ch) {gfx.print(ch);}
65-
virtual void print(const char *text) {gfx.print(text);}
66-
virtual void println(const char *text="") {gfx.println(text);};
67-
virtual void print(unsigned long i) {gfx.print(i);};
68-
virtual void println(unsigned long i) {gfx.println(i);};
69-
virtual void print(double i) {gfx.print(i);};
70-
virtual void println(double i) {gfx.println(i);};
71-
virtual void print(prompt &o,bool selected,int idx,int posY,int width) {
64+
virtual size_t write(uint8_t ch) {return gfx.write(ch);}
65+
virtual void printPrompt(prompt &o,bool selected,int idx,int posY,int width) {
7266
gfx.fillRect(0,posY*resY,maxX*resX,resY,selected?hiliteColor:bgColor);
7367
gfx.setTextColor(o.enabled?enabledColor:disabledColor);
7468
setCursor(0,posY);
7569
o.printTo(*this);
76-
//println();
7770
}
7871
virtual void printMenu(menu& m,bool drawExit) {
7972
if (drawn!=&m) clear();//clear all screen when changing menu
8073
if (m.sel-top>=maxY) top=m.sel-maxY+1;//selected option outside device (bottom)
8174
else if (m.sel<top) top=m.sel;//selected option outside device (top)
8275
int i=top;for(;i<m.sz;i++) {
83-
//if ((i>=top)&&((i-top)<maxY)) {
8476
if(i-top>=maxY) break;
8577
if (needRedraw(m,i)) {
86-
print(*m.data[i],i==m.sel,i+1,i-top,m.width);
78+
printPrompt(*m.data[i],i==m.sel,i+1,i-top,m.width);
8779
}
88-
//}
8980
}
9081
if (drawExit&&i-top<maxY&&needRedraw(m,i))
91-
print(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
82+
printPrompt(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
9283
lastTop=top;
9384
lastSel=m.sel;
9485
drawn=&m;

menuLCD.h

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,8 @@ www.r-site.net
2828
}
2929
virtual void clear() {lcd.clear();}
3030
virtual void setCursor(int x,int y) {lcd.setCursor(x*resX,y*resY);}
31-
virtual void print(char ch) {lcd.print(ch);}
32-
virtual void print(const char *text) {lcd.print(text);}
33-
virtual void println(const char *text="") {lcd.print(text);};
34-
virtual void print(unsigned long i) {lcd.print(i);};
35-
virtual void println(unsigned long i) {lcd.println(i);};
36-
virtual void print(double i) {lcd.print(i);};
37-
virtual void println(double i) {lcd.println(i);};
38-
virtual void print(prompt &o,bool selected,int idx,int posY,int width) {
31+
virtual size_t write(uint8_t ch) {return lcd.write(ch);}
32+
virtual void printPrompt(prompt &o,bool selected,int idx,int posY,int width) {
3933
clearLine(posY);
4034
print(selected?(o.enabled?menu::enabledCursor:menu::disabledCursor):' ');
4135
o.printTo(*this);
@@ -46,14 +40,13 @@ www.r-site.net
4640
else if (m.sel<top) top=m.sel;//selected option outside device (top)
4741
int i=0;for(;i<m.sz;i++) {
4842
if ((i>=top)&&((i-top)<maxY)) {
49-
//if(i-top>=maxY) break;
5043
if (needRedraw(m,i)) {
51-
print(*m.data[i],i==m.sel,i+1,i-top,m.width);
44+
printPrompt(*m.data[i],i==m.sel,i+1,i-top,m.width);
5245
}
5346
}
5447
}
5548
if (drawExit&&i-top<maxY&&needRedraw(m,i))
56-
print(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
49+
printPrompt(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
5750
lastTop=top;
5851
lastSel=m.sel;
5952
drawn=&m;

menuLCDs.h

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,8 @@ www.r-site.net
3131
}//clear current line
3232
virtual void clear() {lcd.clear();}
3333
virtual void setCursor(int x,int y) {lcd.setCursor(x*resX,y*resY);}
34-
virtual void print(char ch) {lcd.print(ch);}
35-
virtual void print(const char *text) {lcd.print(text);}
36-
virtual void println(const char *text="") {lcd.print(text);};
37-
virtual void print(unsigned long i) {lcd.print(i);};
38-
virtual void println(unsigned long i) {lcd.println(i);};
39-
virtual void print(double i) {lcd.print(i);};
40-
virtual void println(double i) {lcd.println(i);};
41-
virtual void print(prompt &o,bool selected,int idx,int posY,int width) {
34+
virtual size_t write(uint8_t ch) {return lcd.write(ch);}
35+
virtual void printPrompt(prompt &o,bool selected,int idx,int posY,int width) {
4236
clearLine(posY);
4337
print(selected?(o.enabled?menu::enabledCursor:menu::disabledCursor):' ');
4438
o.printTo(*this);
@@ -48,14 +42,12 @@ www.r-site.net
4842
else if (m.sel<top) top=m.sel;//selected option outside device (top)
4943
if (drawn!=&m||top!=lastTop) clear();
5044
int i=top;for(;i<m.sz;i++) {
51-
//if ((i>=top)&&((i-top)<maxY)) {
52-
if(i-top>=maxY) break;
53-
if (needRedraw(m,i))
54-
print(*m.data[i],i==m.sel,i+1,i-top,m.width);
55-
//}
45+
if(i-top>=maxY) break;
46+
if (needRedraw(m,i))
47+
printPrompt(*m.data[i],i==m.sel,i+1,i-top,m.width);
5648
}
5749
if (drawExit&&i-top<maxY&&needRedraw(m,i))
58-
print(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
50+
printPrompt(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
5951
lastTop=top;
6052
lastSel=m.sel;
6153
drawn=&m;

menuPrint.h

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,8 @@ www.r-site.net
2222
virtual void clearLine(int ln) {}
2323
virtual void clear() {device.println("");device.println("");}
2424
virtual void setCursor(int x,int y) {device.println("");}
25-
virtual void print(char ch) {device.print(ch);}
26-
virtual void print(const char *text) {device.print(text);}
27-
virtual void println(const char *text="") {device.println(text);}
28-
virtual void print(unsigned long i) {device.print(i);};
29-
virtual void println(unsigned long i) {device.println(i);};
30-
virtual void print(double i) {device.print(i);};
31-
virtual void println(double i) {device.println(i);};
32-
virtual void print(prompt &o,bool selected,int idx,int posY,int width) {
25+
virtual size_t write(uint8_t ch) {return device.write(ch);}
26+
virtual void printPrompt(prompt &o,bool selected,int idx,int posY,int width) {
3327
print(idx<10?" ":"");
3428
print((unsigned long)idx);
3529
print(selected?(o.enabled?menu::enabledCursor:menu::disabledCursor):' ');
@@ -41,8 +35,8 @@ www.r-site.net
4135
clear();
4236
int i=0;
4337
for(;i<m.sz;i++)
44-
print(*m.data[i],i==m.sel,i+1,i-top,m.width);
45-
if (drawExit) print(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
38+
printPrompt(*m.data[i],i==m.sel,i+1,i-top,m.width);
39+
if (drawExit) printPrompt(menu::exitOption,m.sel==m.sz,0,i-top,m.width);
4640
lastTop=top;
4741
lastSel=m.sel;
4842
drawn=&m;

0 commit comments

Comments
 (0)