/* E Source generated by SRCGEN v0.1 */ OPT OSVERSION=37 MODULE 'dos/dos', /* */ 'exec/lists', /* Disse må være med for at ListView skal funke */ 'exec/nodes', /* pga vi bruker kommandoer som trenges til listview */ 'gadtools', 'libraries/gadtools', 'intuition/intuition', 'intuition/screens', 'intuition/gadgetclass', 'graphics/text', '+SvProjects/sort' /* Werry usefull... Maybe detatch also l8r... */ ENUM NONE,NOCONTEXT,NOGADGET,NOWB,NOVISUAL,OPENGT,NOWINDOW,NOMENUS DEF project0wnd:PTR TO window,project1wnd:PTR TO window, project0glist,project1glist, infos:PTR TO gadget, /* Knapp nr, Hvilken knapp nr. man har trygt */ type, /* Hvilken GADGET type det er */ gadstri:PTR TO stringinfo, /* Henter info ifra tekst gadgeter */ gadtext:PTR TO LONG, /* Lager en tekst pointer for GADTEXT */ itemPosition=0, /* Hvor langt vi er kommet i lista */ itemposition2=0, add:PTR TO gadget, /* Pointer til ListView vinduet */ add2:PTR TO gadget, listv:PTR TO LONG, /* Pointer til ListView adder */ listv2:PTR TO LONG, addname:PTR TO ln, /* Pointer til linje nummer i ListView */ addname2:PTR TO ln, text[100]:STRING, /* Temp String */ text2[100]:STRING, gadinfo, /* Denne brukes til å sjekke LISTVIEW linje nr +++ */ scr:PTR TO screen, visual=NIL, offx,offy,tattr, choosentxt[2048]:ARRAY OF LONG,dummy,dirpath[1024]:STRING,pubscr[2048]:STRING PROC setupscreen() IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN OPENGT IF (scr:=LockPubScreen(pubscr))=NIL THEN RETURN NOWB IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN NOVISUAL offy:=scr.wbortop+Int(scr.rastport+58)-10 tattr:=['topaz.font',8,0,0]:textattr ENDPROC PROC closedownscreen() IF visual THEN FreeVisualInfo(visual) IF scr THEN UnlockPubScreen(NIL,scr) IF gadtoolsbase THEN CloseLibrary(gadtoolsbase) ENDPROC PROC openproject0window() DEF g:PTR TO gadget IF (g:=CreateContext({project0glist}))=NIL THEN RETURN NOCONTEXT IF (g:=CreateGadgetA(CYCLE_KIND,g, [offx+5,offy+11,281,11,'',tattr,0,0,visual,0]:newgadget, [GTCY_LABELS,['General','Class','Datatypes','Devices','Diskfont','Dos','Exec','Gadgets','Graphics','Hardware','Intuition','Libraries','Other','Prefs','Resources','Rexx','Tools','Utility','Workbench',0], NIL]))=NIL THEN RETURN NOGADGET /* Dette er argumenter ListView skal ha.... */ listv:=[0,0,0,0]; listv[0]:=listv+4; listv[2]:=listv /* Først lager vi en pointer pga listview skal funke, ellers så har vi ingen pointere vi kan legge den nye teksten på (add:=) */ IF (add:=g:=CreateGadgetA(LISTVIEW_KIND,g, [offx+4,offy+22,282,104,NIL,tattr,1,0,visual,0]:newgadget, [GTLV_LABELS,listv, GTLV_TOP,itemPosition, GTLV_SHOWSELECTED, NIL]))=NIL THEN RETURN NOGADGET /* GTLV_TOP = LES AUTODOCS */ /* listv = en pointer til labels */ /* itemPosit= Hvor mange linjer vi er kommet til !! :) */ IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+127,282,11,'Read module',tattr,2,16,visual,0]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+4,offy+138,63,12,'Search',tattr,3,16,visual,0]:newgadget, [GA_DISABLED,TRUE, NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(STRING_KIND,g, [offx+69,offy+138,217,12,'',tattr,4,0,visual,0]:newgadget, [GTST_MAXCHARS,$200, GA_DISABLED,TRUE, NIL]))=NIL THEN RETURN NOGADGET IF (project0wnd:=OpenWindowTagList(NIL, [WA_LEFT,350, WA_TOP,91, WA_WIDTH,offx+290, WA_HEIGHT,offy+165, WA_IDCMP,$24C077E, WA_FLAGS,$100E, WA_TITLE,'Show E modules', WA_CUSTOMSCREEN,scr, WA_MINWIDTH,67, WA_MINHEIGHT,21, WA_MAXWIDTH,$280, WA_MAXHEIGHT,256, WA_AUTOADJUST,1, WA_GADGETS,project0glist, NIL]))=NIL THEN RETURN NOWINDOW Gt_RefreshWindow(project0wnd,NIL) ENDPROC PROC openproject1window() /* Display window'et vårt... hehe */ DEF g:PTR TO gadget IF (g:=CreateContext({project1glist}))=NIL THEN RETURN NOCONTEXT listv2:=[0,0,0,0]; listv2[0]:=listv2+4; listv2[2]:=listv2 IF (add2:=g:=CreateGadgetA(LISTVIEW_KIND,g, [offx+8,offy+12,625,112,'',tattr,0,0,visual,0]:newgadget, [GTLV_LABELS,listv2, GTLV_READONLY,1, NIL]))=NIL THEN RETURN NOGADGET IF (project1wnd:=OpenWindowTagList(NIL, [WA_LEFT,0, WA_TOP,107, WA_WIDTH,offx+640, WA_HEIGHT,offy+133, WA_IDCMP,$24C077E, WA_FLAGS,$100E, WA_TITLE,'Output window', WA_CUSTOMSCREEN,scr, WA_MINWIDTH,67, WA_MINHEIGHT,21, WA_MAXWIDTH,$280, WA_MAXHEIGHT,256, WA_AUTOADJUST,1, WA_AUTOADJUST,1, WA_GADGETS,project1glist, NIL]))=NIL THEN RETURN NOWINDOW Gt_RefreshWindow(project1wnd,NIL) ENDPROC PROC closeproject0window() IF project0wnd THEN CloseWindow(project0wnd) IF project0glist THEN FreeGadgets(project0glist) ENDPROC PROC closeproject1window() IF project1wnd THEN CloseWindow(project1wnd) IF project1glist THEN FreeGadgets(project1glist) ENDPROC PROC wait4message(win:PTR TO window) DEF mes:PTR TO intuimessage,g:PTR TO gadget /* Fiksa litt på denne,*/ REPEAT /* så vi får avslutta..*/ type:=0 IF mes:=Gt_GetIMsg(win.userport) type:=mes.class IF type=IDCMP_MENUPICK infos:=mes.code ELSEIF (type=IDCMP_GADGETDOWN) OR (type=IDCMP_GADGETUP) g:=mes.iaddress /* Den nye beskjed Pointer'n */ infos:=g.gadgetid /* Gadget/Knapp nr */ gadstri:=g.specialinfo /* Hent gadget tekst */ gadtext:=gadstri.buffer /* Putt inn Gadget tekst */ gadinfo:=mes.code /* ListView skroll nr. ++++ */ ELSEIF type=IDCMP_REFRESHWINDOW Gt_BeginRefresh(win) Gt_EndRefresh(win,TRUE) type:=0 ELSEIF type<>IDCMP_CLOSEWINDOW /* remove these if you like */ type:=0 ENDIF Gt_ReplyIMsg(mes) ELSE WaitPort(win.userport) ENDIF UNTIL type ENDPROC type PROC reporterr(er) DEF erlist:PTR TO LONG,tempstr[512]:STRING StrCopy(tempstr,'lock public screen: ',STRLEN) StrAdd(tempstr,pubscr,ALL) IF er erlist:=['get context','create gadget',tempstr,'get visual infos', 'open "gadtools.library" v37+','open window','create menus'] EasyRequestArgs(0,[20,0,0,'Could not \s!','ok'],0,[erlist[er-1]]) ENDIF ENDPROC er PROC main() DEF myowntask,newestsel[200]:STRING,tempstr[1024]:STRING,fload,fsave, huffda=0,suxess,argptr,argu:PTR TO LONG VOID '$VER: Show E Modules V1.3' IF KickVersion(37)=FALSE THEN (WriteF('This programm requires Kickstart 37+\n') AND CleanUp(0)) argu:=[0] IF arg[]<>0 IF argptr:=ReadArgs('PUBSCREEN/A/F',argu,NIL) StrCopy(pubscr,argu[0],ALL) FreeArgs(argptr) ENDIF ELSE StrCopy(pubscr,'Workbench',ALL) ENDIF FOR dummy:=0 TO 2047 choosentxt[dummy]:=String(200) ENDFOR IF myowntask:=FindTask(NIL) SetTaskPri(myowntask,50) ENDIF /* Vi setter taskprien til min task slik fordi at å lese directoryer ** og tekst skal bli raskere hvis andre programm multitasker */ -> WbenchToBack() -> Fjern denne senere.... og det er gjort hehehe IF reporterr(setupscreen())=0 reporterr(openproject0window()) updatemods(0) REPEAT wait4message(project0wnd) IF (type=64 AND infos=4) /* Search string... */ /* Her får vi plasere en search rutine... ** -- Hooops. Det hadde vert VELDIG lurt å ha en slik ** search all funksjon... Det er jo egentlig nokså enkelt ** det er bare å teste om man dobbelklikker på gadgeten ** venter altså 1 sec før man gjør noe og hvis man dobbelclick.. ** så søker vi gjennom ALT... */ -> WriteF('Du skrev: \s\n',gadtext) ENDIF /* gadgettype wichbutton listinfo */ IF (type=64 AND infos=2) IF StrLen(newestsel)<>NIL StrCopy(tempstr,'ShowModule ',ALL) StrAdd(tempstr,dirpath,ALL) StrAdd(tempstr,newestsel,StrLen(newestsel)) IF fsave:=Open('T:TempAEMS',NEWFILE) Execute(tempstr,NIL,fsave) Close(fsave) IF fload:=Open('T:TempAEMS',OLDFILE) openproject1window() WHILE huffda:=Fgets(fload,tempstr,100)<>NIL inserttext2(0,tempstr) ENDWHILE inserttext2(1,' ') REPEAT wait4message(project1wnd) UNTIL type=$200 REPEAT ; suxess:=RemTail(listv2) ; UNTIL suxess=0 type:=64 closeproject1window() Close(fload) ENDIF DeleteFile('T:TempAEMS') ENDIF ENDIF ENDIF IF (type=64 AND infos=3) THEN dummy:=dummy /* SearchButton */ IF (type=64 AND infos=0) THEN updatemods(gadinfo) IF (type=64 AND (infos=1 AND gadinfo>-1)) THEN ( StrCopy(newestsel,choosentxt[gadinfo+1],ALL)) UNTIL type=IDCMP_CLOSEWINDOW /* Vent på Avsluttnings boks */ closeproject0window() ENDIF closedownscreen() ENDPROC PROC inserttext(insinfo) INC itemPosition /* Gadget posisjon i ListView */ addname:=New(SIZEOF ln) /* Hvilken linje vi er kommer til */ text:=String(100) /* Denne MÅ være her, prøv uten så får du se */ StrCopy(text,insinfo,StrLen(insinfo)) /* Kopier gadget innhold til text string */ addname.name:=text /* Bruk innholdet */ AddTail(listv,addname) /* Add den til LISTA :) */ Gt_SetGadgetAttrsA(add,project0wnd,NIL,[GTLV_LABELS,listv,GTLV_TOP,itemPosition,NIL,NIL]) /* Oppdater lista */ ENDPROC PROC inserttext2(opt,insinfo) addname2:=New(SIZEOF ln) /* Hvilken linje vi er kommer til */ text2:=String(100) /* Denne MÅ være her, prøv uten så får du se */ StrCopy(text2,insinfo,StrLen(insinfo)-1) /* Kopier gadget innhold til text string */ addname2.name:=text2 /* Bruk innholdet */ AddTail(listv2,addname2) /* Add den til LISTA :) */ IF opt<>0 /* Dette gir en DRAMATISK speed up! */ Gt_SetGadgetAttrsA(add2,project1wnd,NIL,[GTLV_LABELS,listv2,GTLV_TOP,itemposition2:=NIL,NIL,NIL]) /* Oppdater lista */ ENDIF ENDPROC PROC updatemods(gadinfo) DEF suxess,yep:fileinfoblock,lock,temptell=NIL,tull /* Først må man clreare ListView gadgeten! */ REPEAT ; suxess:=RemTail(listv) ; UNTIL suxess=0 Gt_SetGadgetAttrsA(add,project0wnd,NIL,[GTLV_LABELS,listv,GTLV_TOP,itemPosition,NIL,NIL]) /* Så setter man inn de nye itemene.... */ IF gadinfo=0 StrCopy(dirpath,'Emodules:',ALL) ELSEIF gadinfo=1 StrCopy(dirpath,'Emodules:Class/',ALL) ELSEIF gadinfo=2 StrCopy(dirpath,'Emodules:Datatypes/',ALL) ELSEIF gadinfo=3 StrCopy(dirpath,'Emodules:Devices/',ALL) ELSEIF gadinfo=4 StrCopy(dirpath,'Emodules:Diskfont/',ALL) ELSEIF gadinfo=5 StrCopy(dirpath,'Emodules:Dos/',ALL) ELSEIF gadinfo=6 StrCopy(dirpath,'Emodules:Exec/',ALL) ELSEIF gadinfo=7 StrCopy(dirpath,'Emodules:Gadgets/',ALL) ELSEIF gadinfo=8 StrCopy(dirpath,'Emodules:Graphics/',ALL) ELSEIF gadinfo=9 StrCopy(dirpath,'Emodules:Hardware/',ALL) ELSEIF gadinfo=10 StrCopy(dirpath,'Emodules:Intuition/',ALL) ELSEIF gadinfo=11 StrCopy(dirpath,'Emodules:Libraries/',ALL) ELSEIF gadinfo=12 StrCopy(dirpath,'Emodules:Other/',ALL) ELSEIF gadinfo=13 StrCopy(dirpath,'Emodules:Prefs/',ALL) ELSEIF gadinfo=14 StrCopy(dirpath,'Emodules:Resources/',ALL) ELSEIF gadinfo=15 StrCopy(dirpath,'Emodules:Rexx/',ALL) ELSEIF gadinfo=16 StrCopy(dirpath,'Emodules:Tools/',ALL) ELSEIF gadinfo=17 StrCopy(dirpath,'Emodules:Utility/',ALL) ELSEIF gadinfo=18 StrCopy(dirpath,'Emodules:Workbench/',ALL) ELSE StrCopy(dirpath,' ',ALL) ENDIF /* -------------- */ IF lock:=Lock(dirpath,-2) IF Examine(lock,yep) IF yep.direntrytype<>0 WHILE ExNext(lock,yep) IF yep.direntrytype>0 -> inserttext(yep.filename) /* Directoryed */ ELSEIF yep.direntrytype<0 INC temptell StrCopy(choosentxt[temptell],yep.filename,ALL) ENDIF ENDWHILE ENDIF ENDIF UnLock(lock) ENDIF sort(choosentxt,temptell) FOR tull:=1 TO temptell DO inserttext(choosentxt[tull]) /* -------------- */ ENDPROC