[syslinux] Comboot Menu
ganapathy murali krishnan
gmurali at cs.uchicago.edu
Thu Jan 29 16:28:05 PST 2004
With lots of help from Peter and the Watcom developers, I have managed
to get the thing working. Right now, you still have to hard code the
menu entries. However, it has its advantages. For example, one can
disable certain options, based on other options, "install event
handlers"....
One really useful menusystem would be combining this with chain.c32. The
program, first queries the BIOS and finds all the installed hard drives
and floppy drives, and using chain.c32 like code, finds which one is
bootable and which is not. Then one can dynamially generate a menu, one
option for each partition, with the unbootable partitions disabled.
So my question is: Do we still need a way to read a file and display the
menu from the file? We can only describe static menu systems using the
file, and besides the following code is not all that difficult to write.
If people are still interested in having static menu entries, then can
somebody else write that code. I have already spent a lot of time on
this now, and don't have the time to write the parser now.
You can download this from
http://people.cs.uchicago.edu/~gmurali/gui/comboot/tui.tgz.
Warnings:
* The color choices I made turned out to be horrible when run under BIOS
(they did not look very bad under DOS box).
* For some reason I haven't figured out, the color palette of the
syslinux display changes if I exit out of the menu. If somebody finds
out why, I'd appreciate knowing it so I can fix it.
--------REALLY SIMPLE EXAMPLE -------
// Bunch of #includes here
int _start()
{
t_menuitem * curr;
MAIN = add_menu(" Main Menu ");
add_item("Prepare","Status Line",OPT_RUN,"syslinux command",0);
add_item("Second Menu item","Status Line",OPT_RUN,"command",0);
add_item("Exit", "Exit the menu system", OPT_EXITMENU,"exit", 0);
curr = showmenus(MAIN); // All the action happens here
if (!curr) return 0; // user hit Esc in main menu
if (curr->action == OPT_RUN) runcommand(curr->data);// Call syslinux here
return 1; // Should never come here
}
------- EXAMPLE ENDS ---------------
- Murali
More information about the Syslinux
mailing list