Skip to content

Commit 48acd73

Browse files
author
dave
committed
#179 checkbox boolean support added
1 parent 0de17d3 commit 48acd73

18 files changed

+107
-63
lines changed

examples/avr/keyboardEthernetShield/keyboardEthernetShield.emf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@
382382
"type": "boolItem",
383383
"defaultValue": "false",
384384
"item": {
385-
"naming": "YES_NO",
385+
"naming": "CHECKBOX",
386386
"name": "Flag3",
387387
"variableName": "AdditionalBoolFlagFlag3",
388388
"id": 27,
@@ -397,7 +397,7 @@
397397
"type": "boolItem",
398398
"defaultValue": "false",
399399
"item": {
400-
"naming": "YES_NO",
400+
"naming": "CHECKBOX",
401401
"name": "Flag4",
402402
"variableName": "AdditionalBoolFlagFlag4",
403403
"id": 28,
@@ -747,8 +747,8 @@
747747
"eepromDefinition": "avr:",
748748
"authenticatorDefinition": "rom:100:6",
749749
"projectIoExpanders": [
750-
"deviceIO:",
751-
"mcp23017:io23017:32:2"
750+
"mcp23017:io23017:32:2",
751+
"deviceIO:"
752752
],
753753
"menuInMenuCollection": {
754754
"menuDefinitions": []

examples/avr/keyboardEthernetShield/keyboardEthernetShield.ino

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ void setup() {
8888
// Here we set the character to be used for back, next and editing for the "cursor".
8989
renderer.setEditorChars(0b01111111, 0b01111110, '=');
9090

91+
// You can also have title widgets on LCDs, maximum of 7 states. They use up the custom chars 0..7. How it works
92+
// is that you define a custom character for each icon, and treat them just as you would a regular icon. The height
93+
// of the widget is fixed, and the height field instead indicates the first custom character for the first icon.
94+
renderer.setFirstWidget(&connectedWidget);
95+
9196
setupMenu();
9297

9398
auto* authenticator = reinterpret_cast<EepromAuthenticatorManager*>(menuMgr.getAuthenticator());
@@ -127,7 +132,6 @@ void setup() {
127132
// and lastly we register a communication listener, it updates the title widget
128133
// that shows connectivity state on the right corner.
129134
menuConnectivityIoTMonitor.registerCommsNotification(onCommsChange);
130-
renderer.setFirstWidget(&connectedWidget);
131135

132136
// and finally, when the display times out, take over and draw a custom screen
133137
renderer.setResetCallback([] {

examples/avr/keyboardEthernetShield/keyboardEthernetShield_menu.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ RENDERING_CALLBACK_NAME_INVOKE(fnRomChoicesRtCall, backSubItemRenderFn, "Rom Cho
4444
const PROGMEM SubMenuInfo minfoRomChoices = { "Rom Choices", 20, 0xffff, 0, NO_CALLBACK };
4545
BackMenuItem menuBackRomChoices(fnRomChoicesRtCall, &menuRomChoicesItemNum);
4646
SubMenuItem menuRomChoices(&minfoRomChoices, &menuBackRomChoices, NULL);
47-
const PROGMEM BooleanMenuInfo minfoAdditionalBoolFlagFlag4 = { "Flag4", 28, 41, 1, NO_CALLBACK, NAMING_YES_NO };
47+
const PROGMEM BooleanMenuInfo minfoAdditionalBoolFlagFlag4 = { "Flag4", 28, 41, 1, NO_CALLBACK, NAMING_CHECKBOX };
4848
BooleanMenuItem menuAdditionalBoolFlagFlag4(&minfoAdditionalBoolFlagFlag4, false, NULL);
49-
const PROGMEM BooleanMenuInfo minfoAdditionalBoolFlagFlag3 = { "Flag3", 27, 40, 1, NO_CALLBACK, NAMING_YES_NO };
49+
const PROGMEM BooleanMenuInfo minfoAdditionalBoolFlagFlag3 = { "Flag3", 27, 40, 1, NO_CALLBACK, NAMING_CHECKBOX };
5050
BooleanMenuItem menuAdditionalBoolFlagFlag3(&minfoAdditionalBoolFlagFlag3, false, &menuAdditionalBoolFlagFlag4);
5151
const PROGMEM BooleanMenuInfo minfoAdditionalBoolFlagFlag2 = { "Flag2", 26, 39, 1, NO_CALLBACK, NAMING_ON_OFF };
5252
BooleanMenuItem menuAdditionalBoolFlagFlag2(&minfoAdditionalBoolFlagFlag2, false, &menuAdditionalBoolFlagFlag3);
@@ -113,8 +113,8 @@ void setupMenu() {
113113
authManager.initialise(menuMgr.getEepromAbstraction(), 100);
114114
menuMgr.setAuthenticator(&authManager);
115115
// Now add any readonly, non-remote and visible flags.
116-
menuConnectivityIoTMonitor.setLocalOnly(true);
117116
menuConnectivityAuthenticator.setLocalOnly(true);
117+
menuConnectivityIoTMonitor.setLocalOnly(true);
118118
menuConnectivity.setLocalOnly(true);
119119
menuConnectivity.setSecured(true);
120120
menuHiddenItem.setVisible(false);

examples/avr/keyboardEthernetShield/keyboardEthernetShield_menu.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
#include <ScrollChoiceMenuItem.h>
2222
#include <RemoteMenuItem.h>
2323
#include <EditableLargeNumberMenuItem.h>
24-
#include <IoAbstraction.h>
2524
#include <IoAbstractionWire.h>
25+
#include <IoAbstraction.h>
2626
#include <EepromAbstraction.h>
2727
#include <RemoteAuthentication.h>
2828
#include "tcMenuLiquidCrystal.h"

examples/esp/esp32s2Saola/esp32s2Saola.emf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,21 @@
153153
"visible": true
154154
}
155155
},
156+
{
157+
"parentId": 6,
158+
"type": "boolItem",
159+
"defaultValue": "true",
160+
"item": {
161+
"naming": "CHECKBOX",
162+
"name": "New BoolItem",
163+
"variableName": "SelectMeNewBoolItem",
164+
"id": 21,
165+
"eepromAddress": -1,
166+
"readOnly": false,
167+
"localOnly": false,
168+
"visible": true
169+
}
170+
},
156171
{
157172
"parentId": 0,
158173
"type": "subMenu",

examples/esp/esp32s2Saola/esp32s2Saola.ino

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#include <tcMenuVersion.h>
1414
#include <WiFi.h>
1515
#include <stockIcons/wifiAndConnectionIcons16x12.h>
16-
16+
#include <tcUtil.h>
1717

1818
#define MENU_WIFIMODE_STATION 0
1919
const char pgmsListHeader[] PROGMEM = "List items";
@@ -45,19 +45,9 @@ void setup() {
4545
startWiFiAndListener();
4646
renderer.setFirstWidget(&wifiWidget);
4747

48-
// lastly when the title is pressed present a dialog.
48+
// lastly we capture when the root title is pressed present a standard version dialog.
4949
setTitlePressedCallback([](int titleCb) {
50-
auto dlg = renderer.getDialog();
51-
if(!dlg->isInUse()) {
52-
dlg->setButtons(BTNTYPE_NONE, BTNTYPE_CLOSE);
53-
dlg->show(applicationInfo.name, false);
54-
char sz[25];
55-
char ver[10];
56-
tccore::copyTcMenuVersion(ver, sizeof ver);
57-
strcpy(sz, "TcMenu lib ");
58-
strcat(sz, ver);
59-
dlg->copyIntoBuffer(sz);
60-
}
50+
showVersionDialog(&applicationInfo);
6151
});
6252
}
6353

examples/esp/esp32s2Saola/esp32s2Saola_menu.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,10 @@ RENDERING_CALLBACK_NAME_INVOKE(fnExtrasRtCall, backSubItemRenderFn, "Extras", -1
5454
const PROGMEM SubMenuInfo minfoExtras = { "Extras", 10, 0xffff, 0, NO_CALLBACK };
5555
BackMenuItem menuBackExtras(fnExtrasRtCall, &menuExtrasText);
5656
SubMenuItem menuExtras(&minfoExtras, &menuBackExtras, &menuConnectivity);
57+
const PROGMEM BooleanMenuInfo minfoSelectMeNewBoolItem = { "New BoolItem", 21, 0xffff, 1, NO_CALLBACK, NAMING_CHECKBOX };
58+
BooleanMenuItem menuSelectMeNewBoolItem(&minfoSelectMeNewBoolItem, true, NULL);
5759
const PROGMEM AnyMenuInfo minfoSelectMePressMe = { "Press Me", 9, 0xffff, 0, pressMeActionRun };
58-
ActionMenuItem menuSelectMePressMe(&minfoSelectMePressMe, NULL);
60+
ActionMenuItem menuSelectMePressMe(&minfoSelectMePressMe, &menuSelectMeNewBoolItem);
5961
const PROGMEM FloatMenuInfo minfoSelectMeFloat2 = { "Float 2", 8, 0xffff, 3, NO_CALLBACK };
6062
FloatMenuItem menuSelectMeFloat2(&minfoSelectMeFloat2, 0.0, &menuSelectMePressMe);
6163
const PROGMEM FloatMenuInfo minfoSelectMeFloat1 = { "Float 1", 7, 0xffff, 3, NO_CALLBACK };

examples/esp/esp32s2Saola/esp32s2Saola_menu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ extern Rgb32MenuItem menuExtrasColor;
4848
extern TextMenuItem menuExtrasText;
4949
extern BackMenuItem menuBackExtras;
5050
extern SubMenuItem menuExtras;
51+
extern BooleanMenuItem menuSelectMeNewBoolItem;
5152
extern ActionMenuItem menuSelectMePressMe;
5253
extern FloatMenuItem menuSelectMeFloat2;
5354
extern FloatMenuItem menuSelectMeFloat1;

examples/mbed/stm32f429FrameBuffer/stm32f429FrameBuffer.emf

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,21 @@
251251
"visible": true
252252
}
253253
},
254+
{
255+
"parentId": 11,
256+
"type": "boolItem",
257+
"defaultValue": "false",
258+
"item": {
259+
"naming": "CHECKBOX",
260+
"name": "Bool Check",
261+
"variableName": "SamplesBoolCheck",
262+
"id": 22,
263+
"eepromAddress": -1,
264+
"readOnly": false,
265+
"localOnly": false,
266+
"visible": true
267+
}
268+
},
254269
{
255270
"parentId": 0,
256271
"type": "actionMenu",
@@ -357,7 +372,7 @@
357372
},
358373
{
359374
"name": "ITEM_FONT",
360-
"latestValue": "ada:OpenSans18,0",
375+
"latestValue": "ada:OpenSansCyrillicLatin18,0",
361376
"subsystem": "THEME"
362377
},
363378
{

examples/mbed/stm32f429FrameBuffer/stm32f429FrameBuffer_menu.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,10 @@ BackMenuItem menuBackUnicode(fnUnicodeRtCall, &menuUnicodeChoice);
3737
SubMenuItem menuUnicode(&minfoUnicode, &menuBackUnicode, NULL);
3838
const AnyMenuInfo minfoDialogs = { "Dialogs", 18, 0xffff, 0, onPresentDialog };
3939
ActionMenuItem menuDialogs(&minfoDialogs, &menuUnicode);
40+
const BooleanMenuInfo minfoSamplesBoolCheck = { "Bool Check", 22, 0xffff, 1, NO_CALLBACK, NAMING_CHECKBOX };
41+
BooleanMenuItem menuSamplesBoolCheck(&minfoSamplesBoolCheck, false, NULL);
4042
RENDERING_CALLBACK_NAME_INVOKE(fnSamplesLgePosRtCall, largeNumItemRenderFn, "LgePos", -1, NO_CALLBACK)
41-
EditableLargeNumberMenuItem menuSamplesLgePos(fnSamplesLgePosRtCall, LargeFixedNumber(7, 0, 12456U, 0U, false), 17, false, NULL);
43+
EditableLargeNumberMenuItem menuSamplesLgePos(fnSamplesLgePosRtCall, LargeFixedNumber(7, 0, 12456U, 0U, false), 17, false, &menuSamplesBoolCheck);
4244
RENDERING_CALLBACK_NAME_INVOKE(fnSamplesRGBRtCall, rgbAlphaItemRenderFn, "RGB", -1, NO_CALLBACK)
4345
Rgb32MenuItem menuSamplesRGB(fnSamplesRGBRtCall, RgbColor32(255, 170, 187), 16, false, &menuSamplesLgePos);
4446
RENDERING_CALLBACK_NAME_INVOKE(fnSamplesTimeRtCall, timeItemRenderFn, "Time", -1, NO_CALLBACK)
@@ -93,6 +95,6 @@ void setupMenu() {
9395
renderer.setTitleMode(BaseGraphicalRenderer::TITLE_FIRST_ROW);
9496
renderer.setUseSliderForAnalog(true);
9597
renderer.enableTcUnicode();
96-
installCoolBlueModernTheme(renderer, MenuFontDef(OpenSansCyrillicLatin18, 0), MenuFontDef(&RobotoMedium24, 1), false);
98+
installCoolBlueModernTheme(renderer, MenuFontDef(&OpenSansCyrillicLatin18, 0), MenuFontDef(&RobotoMedium24, 1), false);
9799
}
98100

0 commit comments

Comments
 (0)