CONST L_SCREEN=0, /* Type of the list (screens or windows )*/
L_WINDOW=1
RAISE ER_MEM IF New()=NIL
RAISE ER_MEM IF String()=NIL
DEF scr=NIL:PTR TO screen, /* Ptr to screen */
visual=NIL, /* Ptr to visual */
wnd=NIL:PTR TO window, /* Ptr to Window */
glist=NIL,offy,g,g1,gwb, /* Gadgetlist and listview (g1) WB (gwb)*/
type,infos /* type and infos for IDCMP */
DEF new_liste:PTR TO lh /* My list */
DEF add_node[1000]:ARRAY OF LONG /* Address of node */
DEF add_texte[1000]:ARRAY OF LONG /* Texte of node */
DEF add_scr[1000]:ARRAY OF LONG /* Address of screen */
DEF type_liste=L_SCREEN /* initialise list to screen */
DEF max_node=1 /* initialise the number of node */
DEF ac_win,wb_add,check=FALSE /* Address of the first windowAnd WB */
/* check for CloseScreen when selected in */
/* the listview */
DEF tattr
PROC main() HANDLE /*"main()"*/
/* Initialise my list */
DEF sig
new_liste:=[0,0,0,0]
IF (sig:=AllocSignal(-1))=NIL THEN checkerror(ER_SIG)
checkerror(initinterface())
checkerror(openinterface())
REPEAT
wait4message()
UNTIL type=IDCMP_CLOSEWINDOW
OpenWorkBench()
Raise(NONE)
EXCEPT
IF sig THEN FreeSignal(sig)
closeinterface()
SELECT exception
CASE NONE; NOP
CASE ER_MEM; WriteF('Mémoire insufisante.\n')
DEFAULT; NOP
ENDSELECT
ENDPROC
PROC initinterface() /*"initinterface()"*/
/* Open library - Remember the address of firstwindow and wb */
IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN ER_OPENLIB
IF (reqtoolsbase:=OpenLibrary('reqtools.library',37))=NIL THEN RETURN ER_OPENLIB
IF (scr:=LockPubScreen('Workbench'))=NIL THEN RETURN ER_WB
wb_add:=scr
/*IF scr THEN UnlockPubScreen(NIL,scr)*/
ac_win:=wnd
ENDPROC
PROC openinterface() /*"openinterface()"*/
/* Open interface */
tattr:=['topaz.font',8,0,0]:textattr
IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN ER_VISUAL
offy:=scr.wbortop+Int(scr.rastport+58)+1
IF (g:=CreateContext({glist}))=NIL THEN RETURN ER_CONTEXT
new_liste:=[0,0,0,0]
displayscreens()
/* Gadget for CLose And open WB */
IF (gwb:=CreateGadgetA(CYCLE_KIND,g,[scr.wborleft+92,12,80,12,'',tattr,1,0,visual,0]:newgadget,[GTCY_LABELS,['CloseWB','OpenWB',0],0]))=NIL THEN RETURN ER_GADGET
/* Gadget For Screens and Windows */
IF (g:=CreateGadgetA(CYCLE_KIND,gwb,[scr.wborleft+2,12,80,12,'',tattr,2,0,visual,0]:newgadget,[GTCY_LABELS,['Screens','Windows',0],0]))=NIL THEN RETURN ER_GADGET
/* Checkbox For CloseScreen */
IF (g:=CreateGadgetA(CHECKBOX_KIND,g,[scr.wborleft+176,13,80,12,'CloseScreen',tattr,4,PLACETEXT_RIGHT,visual,0]:newgadget,NIL))=NIL THEN RETURN ER_GADGET
/* Gadget of ViewList */
IF (g1:=CreateGadgetA(LISTVIEW_KIND,g,[scr.wborleft+2,25,315,50,NIL,NIL,3,0,visual,new_liste]:newgadget,
[GTLV_TOP,0,GTLV_SCROLLWIDTH,15,
GTLV_LABELS,new_liste,0]))=NIL THEN RETURN ER_GADGET
/* Open the Window */
IF (wnd:=OpenW(0,0,325,76,$304 OR LISTVIEWIDCMP,2+4+8+WFLG_HASZOOM,'SelectS v0.0a (c) 1993 NasGûl',scr,15,glist))=NIL THEN RETURN ER_WINDOW