Just me I stay away from all default ways of adding stuff like acaddoc.lsp acad.pgp etc. I grew up when Acad was 1st started so only menu's.
The answer for your images is easy, 1st step to make you just use the command "Mslide" with your object/s on the screen and give it a name. I have made like 100 images of blocks by just making a list of block names and making a slide of each one obviously using a lisp.
Explaining a menu more it has sections POP IMAGE TOOLBAR DIGITISER. A single line in the pop section calls a image section which may have a few or even like 50 images, the preview is automatically generated you do not have to worry about that.
Using the "> & <" opens and closes sub menus, yes can have sub sub and so on.
***MENUGROUP=XXXSTDS
***POP20
**CADLIB
[LIBRARY]
[->Stddwgs]
[TRENCH]$I=XXXSTDS.TRENCH $I=*
[PIPES]$I=XXXSTDS.PIPES $I=*
[PITS]$I=XXXSTDS.PITS $I=*
[KERBS]$I=XXXSTDS.KERBS $I=*
[ROADX]$I=XXXSTDS.ROADX $I=*
[PAVEMENTS]$I=XXXSTDS.PAVEMENT $I=*
[MISC]$I=XXXSTDS.MISC $I=*
[<-]
[->IDM dwgs]
[TRENCH]$I=XXXSTDS.IDMTRENCH $I=*
[PIPES]$I=XXXSTDS.IDMPIPES $I=*
[PITS]$I=XXXSTDS.IDMPITS $I=*
[KERBS]$I=XXXSTDS.IDMKERBS $I=*
[ROADX]$I=XXXSTDS.IDMROADX $I=*
[PAVEMENTS]$I=XXXSTDS.IDMPAVEMENT $I=*
[<-]
[->SURVEY dwgs]
[SHEETS]$I=XXXSTDS.SURVEY $I=*
[<-]
[->LISP1 A-B]
[1/4 POINTS]^C^C(LOAD "1-4 POINTS")
[Add 2 Level]^C^C(LOAD "add-to-levels")
[Add-pits-drain]^C^C(LOAD"Add-pits-drain")
[Allbylayer]^C^C(LOAD "Allbylayer")
[Apndtext]^C^C^p(LOAD "apndtext")
So you can see the $I this is call an image menu.
***image
**PIPES
[PIPES]
[XXXSLD(SD201,SUBSOIL)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG201")
[XXXSLD(SD202,FLUSHOUT)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG202")
[XXXSLD(SD203,CATCH)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG203")
[XXXSLD(SD204,HOUSE)]^C^C(openblk "P:/ACADSTDS/CIVIL STANDARDS/CGG204")
You just start with a text file saved as a mnu file and use menuload to load it, then a CUIX will be made.
The pop menu above is 697 lines long developed over many years from my staff requests.
I would start to use a pop menu rather than a List box choice, if you go that way I would use a list to display in the list box that has an exaggerated description but matches true lisp name. You can change the width of a ListBox so have a bigger description.
(("program1" "actuallispfilename1")("program2" "actuallispfilename2")("program3" "actuallispfilename3").....)