OPT PREPROCESS MODULE 'intuition/intuition', 'utility', 'feelin','libraries/feelin','a4' ->PROC OBJ OBJECT localobjectdata mode:INT way ENDOBJECT ENUM FA_CrazyGauge_Mode = FCCA_BASE ENUM FV_CrazyGauge_More, FV_CrazyGauge_Less, FV_CrazyGauge_TwoWays, FV_CrazyGauge_Crary ->ENDPROC DEF feelinbase:PTR TO feelinbase PROC main() DEF fcc:PTR TO feelinClass, c,w, g,b sys_SGlob() IF feelinbase := OpenLibrary('feelin.library',FV_VERSION) utilitybase := feelinbase.utility IF fcc := F_CreateClassA([FA_SuperID, FC_Gauge, FA_DataSize, SIZEOF localobjectdata, FA_Dispatcher, {mDispatcher}, NIL]) c := ClientObject, FA_Client_Title, 'Gauges_Demo', FA_Client_Version, '$VER: Gauges_Demo 1.00 (23-09-02)', FA_Client_Copyright, '©2000-2002, Olivier Laviale', FA_Client_Author, 'Olivier Laviale - (lotan9@aol.com)', FA_Client_Description, 'Show gauges & custom class', FA_Client_Base, 'GAUGES_DEMO', FA_Pen_Shine, 'c:FFDCA0', FA_Pen_Fill, 'c:AA7864', FA_Pen_Highlight, 'c:2A1E19', Child, w := WindowObject, FA_ID, "MAIN", FA_Window_Title,'Feelin : Gauges', FA_Back, FI_Fill, Child, VGroup, Child, g := HGroup, Child, VGroup, Child, Gauge(TRUE,0,100,25), Child, Gauge(TRUE,0,100,50), Child, Gauge(TRUE,0,100,75), Child, Gauge(TRUE,0,100,100), Child, F_NewObjA(fcc.id,[FA_Horizontal, TRUE, FA_Frame, FP_Frame_Gauge, DontChain, FA_Numeric_Max, 100, FA_CrazyGauge_Mode, FV_CrazyGauge_Crary, NIL]), End, -> Child, Bar, Child, BalanceObject, FA_ID,"BLNC", FA_Balance_QuickDraw, TRUE, End, Child, VGroup, FA_FixedHeight,TRUE, Child, F_NewObjA(fcc.id,[FA_Horizontal, TRUE, FA_Frame, FP_Frame_Gauge, DontChain, FA_Numeric_Max, 100, FA_Numeric_Value, 0, FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays, NIL]), Child, F_NewObjA(fcc.id,[FA_Horizontal, TRUE, FA_Frame, FP_Frame_Gauge, DontChain, FA_Numeric_Max, 100, FA_Numeric_Value, 100, FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays, NIL]), Child, F_NewObjA(fcc.id,[FA_Horizontal, TRUE, FA_Frame, FP_Frame_Gauge, DontChain, FA_Numeric_Max, 100, FA_Numeric_Value, 0, FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays, NIL]), Child, F_NewObjA(fcc.id,[FA_Horizontal, TRUE, FA_Frame, FP_Frame_Gauge, DontChain, FA_Numeric_Max, 100, FA_Numeric_Value, 100, FA_CrazyGauge_Mode, FV_CrazyGauge_TwoWays, NIL]), End, End, Child, b := TextObject, FA_InputMode, FV_InputMode_Toggle, FA_Fixed, TRUE, FA_Inner, [6,3,6,3]:CHAR, FA_Frame, 033, FA_AltFrame, 000, FA_Back, FI_Fill, FA_AltBack, FI_Dark, FA_Text, 'Toggle Gauges Look', FA_Text_PreParse, '`Ss`Sh`<0>', FA_Text_AltPreParse, '`Sn`<1>', FA_Text_VCenter, TRUE, End, End, FA_Window_ActiveObject, b, End, End IF c F_DoA(b,FM_Notify,[FA_Selected,FV_Notify_Always,g,5,FM_Set,FA_Gauge_Simple,FV_Notify_Value,FA_Group_Forward,TRUE]) F_DoA(w,FM_Notify,[FA_Window_CloseRequest,TRUE,FV_Notify_Client,2,FM_Client_ReturnID,FV_Client_Quit]) F_Set(w,FA_Window_Open,TRUE) F_DoA(c,FM_Client_Run,NIL) F_DisposeObj(c) ENDIF F_RemoveClass(fcc) ENDIF CloseLibrary(feelinbase) ENDIF ENDPROC PROC mDispatcher(cl=A2:PTR TO feelinClass,obj=A0:PTR TO feelinObject,method=D0,args=A1) DEF lod:PTR TO localobjectdata sys_RGlob() ; lod := INST_DATA(cl,obj) SELECT method CASE FM_New; RETURN mNew(cl,obj,lod,args) CASE FM_Show; F_DoA(obj,FM_ModifyHandler,[IDCMP_INTUITICKS,NIL]) CASE FM_Hide; F_DoA(obj,FM_ModifyHandler,[NIL,IDCMP_INTUITICKS]) CASE FM_HandleEvent; RETURN mHandleEvent(obj,lod,args) DEFAULT; RETURN F_SuperDoA(cl,obj,method,args) ENDSELECT ENDPROC PROC mNew(cl,obj,lod:PTR TO localobjectdata,args) IF F_SuperDoA(cl,obj,FM_New,args) lod.mode := GetTagData(FA_CrazyGauge_Mode,FV_CrazyGauge_More,args) lod.way := TRUE RETURN obj ENDIF ENDPROC PROC mHandleEvent(obj,lod:PTR TO localobjectdata,he:PTR TO FS_HandleEvent) DEF val,max,min IF he.msg.class = IDCMP_INTUITICKS F_DoA(obj,FM_Get,[ FA_Numeric_Value, {val}, FA_Numeric_Max, {max}, FA_Numeric_Min, {min}, NIL]) SELECT lod.mode CASE FV_CrazyGauge_More F_Set(obj,FA_Numeric_Value,IF val = max THEN min ELSE val + 1) CASE FV_CrazyGauge_Less F_Set(obj,FA_Numeric_Value,IF val = min THEN max ELSE val - 1) CASE FV_CrazyGauge_TwoWays IF lod.way IF val = max lod.way := FALSE ELSE F_Set(obj,FA_Numeric_Value,val + 1) ENDIF ELSE IF val = min lod.way := TRUE ELSE F_Set(obj,FA_Numeric_Value,val - 1) ENDIF ENDIF CASE FV_CrazyGauge_Crary F_Set(obj,FA_Numeric_Value,Rnd(max)) ENDSELECT ENDIF ENDPROC