/* A simple example of using NList, NListview and NFloattext in AmigaE Written by Piotr Pawlow (PP/UNION) */ OPT PREPROCESS MODULE 'utility/tagitem','mui/nlist_mcc','mui/nlistview_mcc', 'mui/nfloattext_mcc','muimaster','libraries/mui','amigalib/boopsi', 'libraries/asl','workbench/startup','fakestack' DEF app,wi_Master PROC main() HANDLE DEF signal,opened,filename,rdargs,args:PTR TO LONG DEF buf,nlist,filenameobj,retid,nfloattext DEF wb:wbstartup,filename2,filename2obj,buf2 DEF stack stack:=fakestack() IF (wb:=wbmessage) THEN CurrentDir(wb.arglist.lock) args:=[0,0] IF (rdargs:=ReadArgs('NLISTFILE=NF,FLOATTEXTFILE=FF',args,0))=0 THEN Raise('Wrong arguments') IF args[0] THEN filename:=args[0] ELSE filename:='nlist_example.txt' IF args[1] THEN filename2:=args[1] ELSE filename2:='nfloattext_example.txt' IF (muimasterbase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN Raise('failed to open muimaster.library') app := ApplicationObject, MUIA_Application_Title , 'NList Example', MUIA_Application_Version , '$VER: NList Exaple 1.0 (14.10.96)', MUIA_Application_Author , 'Piotr Pawlow (PP/UNION)', MUIA_Application_Description, 'Just a little example...', MUIA_Application_Base , 'NL_EXAMPLE', SubWindow, wi_Master := WindowObject, MUIA_Window_ID, "MAIN", MUIA_Window_Title, 'NList Example', MUIA_Window_ActiveObject,nlist, MUIA_Window_Height,MUIV_Window_Height_Visible(80), MUIA_Window_Width,MUIV_Window_Width_Visible(80), WindowContents, RegisterGroup(['NList','NFloattext',0]), Child, VGroup, GroupFrameT('NList class'), Child, nlist:=NListviewObject, MUIA_CycleChain,MUI_TRUE, MUIA_NListview_NList,NListObject, MUIA_NList_DragSortable,MUI_TRUE, MUIA_NList_ShowDropMarks,MUI_TRUE, MUIA_NList_MultiSelect,MUIV_NList_MultiSelect_Default, End, End, Child, HGroup, Child, KeyLabel2('File:',"F"), Child, PopaslObject, MUIA_Popstring_String, filenameobj:=StringObject, MUIA_CycleChain,MUI_TRUE, MUIA_String_MaxLen,138, StringFrame, MUIA_ControlChar,"f", End, MUIA_Popstring_Button, PopButton(MUII_PopFile), ASLFR_TITLETEXT, 'Please select a file...', ASLFR_REJECTICONS,TRUE, End, End, End, Child, VGroup, GroupFrameT('NFloattext class'), Child, NListviewObject, MUIA_CycleChain,MUI_TRUE, MUIA_NListview_Horiz_ScrollBar,MUIV_NListview_HSB_None, MUIA_NListview_NList,nfloattext:=NFloattextObject, MUIA_Floattext_Justify,MUI_TRUE, End, End, Child, HGroup, Child, KeyLabel2('File:',"F"), Child, PopaslObject, MUIA_Popstring_String, filename2obj:=StringObject, MUIA_CycleChain,MUI_TRUE, MUIA_String_MaxLen,138, StringFrame, MUIA_ControlChar,"f", End, MUIA_Popstring_Button, PopButton(MUII_PopFile), ASLFR_TITLETEXT, 'Please select a file...', ASLFR_REJECTICONS,TRUE, End, End, End, End, End, End IF app=NIL THEN Raise('Failed to create application.') doMethodA(wi_Master,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit]) doMethodA(filenameobj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOAD"]) doMethodA(filename2obj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOD2"]) set(wi_Master,MUIA_Window_Open,MUI_TRUE) get(wi_Master,MUIA_Window_Open,{opened}) IF opened=FALSE THEN Raise('Failed to open window.') buf2:=loadcontents(filename2) set(filename2obj,MUIA_String_Contents,filename2) IF buf2 THEN set(nfloattext,MUIA_NFloattext_Text,buf2) buf:=loadcontents(filename) set(filenameobj,MUIA_String_Contents,filename) IF buf THEN doMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top]) REPEAT retid:=doMethodA(app,[MUIM_Application_NewInput,{signal}]) IF retid="LOAD" THEN buf:=loadnew(buf,nlist,filenameobj) IF retid="LOD2" THEN buf2:=loadnew2(buf2,nfloattext,filename2obj) IF (signal) THEN Wait(signal) UNTIL retid=MUIV_Application_ReturnID_Quit set(wi_Master,MUIA_Window_Open,FALSE) EXCEPT DO IF rdargs THEN FreeArgs(rdargs) IF app THEN Mui_DisposeObject(app) IF muimasterbase THEN CloseLibrary(muimasterbase) IF exception THEN WriteF('\s\n',exception) fakestack(stack) ENDPROC PROC loadcontents(filename) DEF len,handle,buf:PTR TO CHAR len:=FileLength(filename) IF handle:=Open(filename,OLDFILE) IF (buf:=New(len+1))=0 info('Not enough memory') RETURN 0 ENDIF IF (Read(handle,buf,len)=-1) OR (len<1) Close(handle) info('Failed to read file %s',[filename]) RETURN 0 ENDIF Close(handle) ELSE info('Failed to open file %s',[filename]) RETURN 0 ENDIF ENDPROC buf PROC info(text,args=0) IS Mui_RequestA(app,wi_Master,0,0,'*_OK',text,args) PROC loadnew(buf,nlist,stringobject) DEF name Dispose(buf) doMethodA(nlist,[MUIM_NList_Clear,0]) get(stringobject,MUIA_String_Contents,{name}) buf:=loadcontents(name) IF buf THEN doMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top]) ENDPROC buf PROC loadnew2(buf,nfloattext,stringobject) DEF name Dispose(buf) get(stringobject,MUIA_String_Contents,{name}) buf:=loadcontents(name) set(nfloattext,MUIA_Floattext_Text,buf) ENDPROC buf