REBOL [
    Title: "Run One Script Assistant"
]

;;  -- Hard-code your own default folder. 
PROGRAMS-DIR: %.

PROGRAM-FILE?: func ["Returns true if file is an REBOL program" file] [
    find [%.r] find/last file "."
]

;;  -- Go to the folder, get all file names, filter out REBOL scripts.
change-dir PROGRAMS-DIR
PROGRAM-NAMES: []
PROGRAM-NAMES: read %.

while [not tail? PROGRAM-NAMES] [
    either PROGRAM-FILE? first PROGRAM-NAMES 
        [PROGRAM-NAMES: next PROGRAM-NAMES]
        [remove PROGRAM-NAMES]
]
PROGRAM-NAMES: head PROGRAM-NAMES
if empty? PROGRAM-NAMES [
    alert "No programs found" 
    quit
]

;;  -- Called when a program is picked from the list.
LAUNCH-PROGRAM: does [
    launch to-file PROGRAM-LIST/picked
]

MAIN-WINDOW: layout [
    across
    banner "Run One Script Assistant" font [shadow: none]
    return 
    PROGRAM-LIST: text-list 300x700 data (PROGRAM-NAMES)
        [LAUNCH-PROGRAM]
    return
    button "Quit" [quit] 
]

view MAIN-WINDOW