added help menu (#563)
This commit is contained in:
97
menu.cpp
97
menu.cpp
@@ -117,6 +117,9 @@ enum MENU
|
||||
MENU_SCRIPTS_FB,
|
||||
MENU_SCRIPTS_FB2,
|
||||
|
||||
MENU_DOC_FILE_SELECTED,
|
||||
MENU_DOC_FILE_SELECTED_2,
|
||||
|
||||
MENU_CHEATS1,
|
||||
MENU_CHEATS2,
|
||||
|
||||
@@ -386,7 +389,15 @@ void SelectFile(const char* path, const char* pFileExt, int Options, unsigned ch
|
||||
}
|
||||
else
|
||||
{
|
||||
const char *home = is_menu() ? "Scripts" : user_io_get_core_path((is_pce() && !strncasecmp(pFileExt, "CUE", 3)) ? PCECD_DIR : NULL, 1);
|
||||
// if we are inside the menu, then the path needs
|
||||
// to be Scripts if we are looking for SH or
|
||||
// Docs if we are looking for PDFTXTMD
|
||||
const char *menu_dir;
|
||||
if (!strcasecmp(pFileExt,"PDFTXTMD"))
|
||||
menu_dir="Docs";
|
||||
else
|
||||
menu_dir="Scripts";
|
||||
const char *home = is_menu() ? menu_dir : user_io_get_core_path((is_pce() && !strncasecmp(pFileExt, "CUE", 3)) ? PCECD_DIR : NULL, 1);
|
||||
home_dir = strrchr(home, '/');
|
||||
if (home_dir) home_dir++;
|
||||
else home_dir = home;
|
||||
@@ -2360,7 +2371,7 @@ void HandleUI(void)
|
||||
while(1)
|
||||
{
|
||||
n = 0;
|
||||
menumask = 0x3802f;
|
||||
menumask = 0x7802f;
|
||||
|
||||
if (!menusub) firstmenu = 0;
|
||||
adjvisible = 0;
|
||||
@@ -2419,10 +2430,11 @@ void HandleUI(void)
|
||||
MenuWrite(n++);
|
||||
cr = n;
|
||||
MenuWrite(n++, " Reboot (hold \x16 cold reboot)", menusub == 15);
|
||||
MenuWrite(n++, " About", menusub == 16);
|
||||
MenuWrite(n++, " Help \x16", menusub == 16);
|
||||
MenuWrite(n++, " About", menusub == 17);
|
||||
|
||||
while(n < OsdGetSize() - 1) MenuWrite(n++);
|
||||
MenuWrite(n++, STD_EXIT, menusub == 17, 0, OSD_ARROW_LEFT);
|
||||
MenuWrite(n++, STD_EXIT, menusub == 18, 0, OSD_ARROW_LEFT);
|
||||
sysinfo_timer = 0;
|
||||
|
||||
if (!adjvisible) break;
|
||||
@@ -2579,6 +2591,12 @@ void HandleUI(void)
|
||||
break;
|
||||
|
||||
case 16:
|
||||
Selected_tmp[0]=0;
|
||||
snprintf(Selected_tmp, sizeof(Selected_tmp), "Docs/%s",user_io_get_core_name() );
|
||||
//SelectFile(Selected_tmp, 0, SCANO_DIR | SCANO_TXT, MENU_AFILTER_FILE_SELECTED, MENU_COMMON1);
|
||||
SelectFile(Selected_tmp, "PDFTXTMD", SCANO_DIR | SCANO_TXT , MENU_DOC_FILE_SELECTED, MENU_COMMON1);
|
||||
break;
|
||||
case 17:
|
||||
menustate = MENU_ABOUT1;
|
||||
menusub = 0;
|
||||
break;
|
||||
@@ -2843,7 +2861,64 @@ void HandleUI(void)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MENU_DOC_FILE_SELECTED:
|
||||
if (cfg.fb_terminal)
|
||||
{
|
||||
memcpy(Selected_tmp, selPath, sizeof(Selected_tmp));
|
||||
static char cmd[1024 * 2];
|
||||
const char *path = getFullPath(selPath);
|
||||
menustate = MENU_DOC_FILE_SELECTED_2;
|
||||
video_chvt(2);
|
||||
video_fb_enable(1);
|
||||
vga_nag();
|
||||
// check file type
|
||||
const char *ext = "";
|
||||
if (strlen(path) > 4) ext = path + strlen(path) - 4;
|
||||
static char binary[1024*2];
|
||||
printf("extension: [%s]\n",ext);
|
||||
strcpy(binary,"/media/fat/linux/pdfviewer");
|
||||
if (!strcasecmp(ext,".pdf")) {
|
||||
sprintf(binary,"/media/fat/linux/pdfviewer --zoom_to_fit \"%s\"",path);
|
||||
} else if (!strcasecmp(ext,".txt")) {
|
||||
sprintf(binary,"less \"%s\"",path);
|
||||
} else if (!strcasecmp(ext+1,".md")) {
|
||||
sprintf(binary,"/media/fat/linux/glow --style dark \"%s\" | less -R",path);
|
||||
}
|
||||
|
||||
sprintf(cmd, "#!/bin/bash\nexport LC_ALL=en_US.UTF-8\nexport HOME=/root\nexport LESSKEY=/media/fat/linux/lesskey\ncd $(dirname \"%s\")\n%s \necho \"Press any key to continue\"\n", path, binary );
|
||||
printf("CMD [%s]\n",cmd);
|
||||
unlink("/tmp/script");
|
||||
FileSave("/tmp/script", cmd, strlen(cmd));
|
||||
ttypid = fork();
|
||||
if (!ttypid)
|
||||
{
|
||||
execl("/sbin/agetty", "/sbin/agetty", "-a", "root", "-l", "/tmp/script", "--nohostname", "-L", "tty2", "linux", NULL);
|
||||
exit(0); //should never be reached
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MENU_DOC_FILE_SELECTED_2:
|
||||
if (ttypid)
|
||||
{
|
||||
if (waitpid(ttypid, 0, WNOHANG) > 0)
|
||||
{
|
||||
ttypid = 0;
|
||||
user_io_osd_key_enable(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c & UPSTROKE)
|
||||
{
|
||||
video_menu_bg((user_io_status(0, 0) & 0xE) >> 1);
|
||||
video_fb_enable(0);
|
||||
menustate = MENU_NONE1;
|
||||
menusub = 3;
|
||||
OsdClear();
|
||||
OsdEnable(DISABLE_KEYBOARD);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MENU_ARCADE_DIP1:
|
||||
helptext_idx = 0;
|
||||
menumask = 0;
|
||||
@@ -5975,7 +6050,7 @@ void HandleUI(void)
|
||||
|
||||
m = 0;
|
||||
OsdSetTitle("System Settings", OSD_ARROW_LEFT);
|
||||
menumask = 0x3F;
|
||||
menumask = 0x7F;
|
||||
|
||||
OsdWrite(m++);
|
||||
sprintf(s, " MiSTer v%s", version + 5);
|
||||
@@ -6027,15 +6102,16 @@ void HandleUI(void)
|
||||
OsdWrite(m++, " Remap keyboard \x16", menusub == 1);
|
||||
OsdWrite(m++, " Define joystick buttons \x16", menusub == 2);
|
||||
OsdWrite(m++, " Scripts \x16", menusub == 3);
|
||||
OsdWrite(m++, " Help \x16", menusub == 4);
|
||||
OsdWrite(m++, "");
|
||||
cr = m;
|
||||
OsdWrite(m++, " Reboot (hold \x16 cold reboot)", menusub == 4);
|
||||
OsdWrite(m++, " Reboot (hold \x16 cold reboot)", menusub == 5);
|
||||
sysinfo_timer = 0;
|
||||
|
||||
reboot_req = 0;
|
||||
|
||||
while(m < OsdGetSize()-1) OsdWrite(m++, "");
|
||||
OsdWrite(15, STD_EXIT, menusub == 5);
|
||||
OsdWrite(15, STD_EXIT, menusub == 6);
|
||||
menustate = MENU_SYSTEM2;
|
||||
break;
|
||||
|
||||
@@ -6088,6 +6164,10 @@ void HandleUI(void)
|
||||
break;
|
||||
|
||||
case 4:
|
||||
Selected_tmp[0]=0;
|
||||
SelectFile(Selected_tmp, "PDFTXTMD", SCANO_DIR, MENU_DOC_FILE_SELECTED, MENU_NONE1);
|
||||
break;
|
||||
case 5:
|
||||
{
|
||||
reboot_req = 1;
|
||||
|
||||
@@ -6100,7 +6180,7 @@ void HandleUI(void)
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case 6:
|
||||
menustate = MENU_NONE1;
|
||||
break;
|
||||
}
|
||||
@@ -6253,6 +6333,7 @@ void HandleUI(void)
|
||||
video_fb_enable(1);
|
||||
vga_nag();
|
||||
sprintf(cmd, "#!/bin/bash\nexport LC_ALL=en_US.UTF-8\nexport HOME=/root\ncd $(dirname %s)\n%s\necho \"Press any key to continue\"\n", path, path);
|
||||
|
||||
unlink("/tmp/script");
|
||||
FileSave("/tmp/script", cmd, strlen(cmd));
|
||||
ttypid = fork();
|
||||
|
||||
Reference in New Issue
Block a user