|
35 | 35 | #define MENU_EDITMODE 11 |
36 | 36 | #define MENU_AUDIO 12 |
37 | 37 | #define MENU_SCREENSHOT 13 |
38 | | -#define MENU_SIZE 14 |
| 38 | +#define MENU_SCRATCHPAD 14 |
| 39 | +#define MENU_SIZE 15 |
39 | 40 |
|
40 | 41 | #define FONT_SCALE_INTERVAL 10 |
41 | 42 | #define FONT_MIN 20 |
@@ -196,20 +197,16 @@ void System::editSource(strlib::String &loadPath) { |
196 | 197 | } |
197 | 198 | break; |
198 | 199 | case SB_KEY_F(1): |
| 200 | + case SB_KEY_ALT('h'): |
199 | 201 | _output->setStatus("Keyword Help. Esc=Close"); |
200 | 202 | widget = helpWidget; |
201 | 203 | helpWidget->createKeywordIndex(); |
202 | 204 | helpWidget->show(); |
203 | 205 | break; |
204 | 206 | case SB_KEY_CTRL('h'): |
205 | | - if (widget == helpWidget) { |
206 | | - _output->setStatus("Keyword Help. Esc=Close"); |
207 | | - helpWidget->createKeywordIndex(); |
208 | | - } else { |
209 | | - _output->setStatus("Keystroke help. Esc=Close"); |
210 | | - widget = helpWidget; |
211 | | - helpWidget->createHelp(); |
212 | | - } |
| 207 | + _output->setStatus("Keystroke help. Esc=Close"); |
| 208 | + widget = helpWidget; |
| 209 | + helpWidget->createHelp(); |
213 | 210 | helpWidget->show(); |
214 | 211 | break; |
215 | 212 | case SB_KEY_CTRL('l'): |
@@ -506,6 +503,9 @@ void System::handleMenu(int menuId) { |
506 | 503 | case MENU_SCREENSHOT: |
507 | 504 | ::screen_dump(); |
508 | 505 | break; |
| 506 | + case MENU_SCRATCHPAD: |
| 507 | + scratchPad(); |
| 508 | + break; |
509 | 509 | } |
510 | 510 |
|
511 | 511 | if (fontSize != _output->getFontSize()) { |
@@ -932,10 +932,13 @@ void System::showMenu() { |
932 | 932 | _systemMenu[index++] = MENU_KEYPAD; |
933 | 933 | #endif |
934 | 934 | if (_mainBas) { |
| 935 | + sprintf(buffer, "Scratchpad"); |
| 936 | + items->add(new String(buffer)); |
935 | 937 | sprintf(buffer, "Font Size %d%%", _fontScale - FONT_SCALE_INTERVAL); |
936 | 938 | items->add(new String(buffer)); |
937 | 939 | sprintf(buffer, "Font Size %d%%", _fontScale + FONT_SCALE_INTERVAL); |
938 | 940 | items->add(new String(buffer)); |
| 941 | + _systemMenu[index++] = MENU_SCRATCHPAD; |
939 | 942 | _systemMenu[index++] = MENU_ZOOM_UP; |
940 | 943 | _systemMenu[index++] = MENU_ZOOM_DN; |
941 | 944 |
|
@@ -1096,6 +1099,28 @@ void System::printSource() { |
1096 | 1099 | } |
1097 | 1100 | } |
1098 | 1101 |
|
| 1102 | +void System::scratchPad() { |
| 1103 | + const char *path = gsb_bas_dir; |
| 1104 | +#if defined(_ANDROID) |
| 1105 | + path = "/sdcard/"; |
| 1106 | +#endif |
| 1107 | + char file[OS_PATHNAME_SIZE]; |
| 1108 | + sprintf(file, "%suntitled.bas", path); |
| 1109 | + bool ready = access(file, R_OK) == 0; |
| 1110 | + if (!ready) { |
| 1111 | + FILE *fp = fopen(file, "w"); |
| 1112 | + if (fp) { |
| 1113 | + fprintf(fp, "REM scratch buffer\n"); |
| 1114 | + fclose(fp); |
| 1115 | + ready = true; |
| 1116 | + } |
| 1117 | + } |
| 1118 | + if (ready) { |
| 1119 | + setLoadPath(file); |
| 1120 | + setExit(false); |
| 1121 | + } |
| 1122 | +} |
| 1123 | + |
1099 | 1124 | void System::setExit(bool quit) { |
1100 | 1125 | if (!isClosing()) { |
1101 | 1126 | bool running = isRunning(); |
|
0 commit comments