home *** CD-ROM | disk | FTP | other *** search
Wrap
/// headers /* MUI */ #include <libraries/mui.h> /* System */ #include <dos/dos.h> #include <graphics/gfxmacros.h> #include <workbench/workbench.h> #include <exec/memory.h> #include <datatypes/pictureclass.h> #include <libraries/locale.h> /* Prototypes */ #include <clib/alib_protos.h> #include <clib/exec_protos.h> #include <clib/dos_protos.h> #include <clib/icon_protos.h> #include <clib/graphics_protos.h> #include <clib/intuition_protos.h> #include <clib/gadtools_protos.h> #include <clib/utility_protos.h> #include <clib/asl_protos.h> #ifndef __GNUC__ #include <clib/muimaster_protos.h> #else #include <inline/muimaster.h> #endif /* ANSI C */ #include <stdlib.h> #include <string.h> #include <stdio.h> #ifndef MAKE_ID #define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d)) #endif /// #define STRINGARRAY YES #include "TinyMeterPrefs.lh" #include "tinymeter.h" static struct MUI_CustomClass *CL_FieldsList; static struct MUI_CustomClass *CL_ChooseFields; static struct MUI_CustomClass *CL_MainWindow; static struct MUI_CustomClass *CL_Composer; #define USE_ABOUT_COLORS YES #define USE_ABOUT_HEADER YES #define USE_ABOUT_BODY YES #define USE_QUESTION_COLORS YES #define USE_QUESTION_HEADER YES #define USE_QUESTION_BODY YES unsigned long __stack=10000L; enum { MEN_PROJECT=1,MEN_ABOUT,MEN_OPEN,MEN_SAVE,MEN_QUIT,CMP_LOAD, CMP_SAVE, CMP_CANCEL, CMP_PROJECT }; ULONG MainWindow_Finish(struct IClass *cl,Object *obj,Msg *msg); /*************************************************************************************************/ /* misc funcs */ /*************************************************************************************************/ /// ULONG DoSuperNew(struct IClass *cl,Object *obj,ULONG tag1,...) { return(DoSuperMethod(cl,obj,OM_NEW,&tag1,NULL)); } LONG xget(Object *obj,ULONG attribute) { LONG x; get(obj,attribute,&x); return(x); } initColor(struct GAU_Color *col,Object *obj) { struct MUI_PenSpec pspec; if(col->pen==TRUE) { sprintf(&pspec.buf[0],"p%d\0",col->red); set(obj,MUIA_Pendisplay_Spec,&pspec); } else { sprintf(&pspec.buf[0],"r%08lx,%08lx,%08lx\0",col->red,col->green,col->blue); set(obj,MUIA_Pendisplay_Spec,&pspec); } } ULONG convertColor(char *colstr) { } getColor(struct GAU_Color *col,Object *obj) { struct MUI_PenSpec *pspec; char *buf; ULONG *dummy1,dummy2,dummy3; get(obj,MUIA_Pendisplay_Spec,&pspec); if(buf=(char *)AllocVec(256L,MEMF_CLEAR)) { strcpy(buf,&pspec->buf[0]); if(buf[0]) { switch (buf[0]) { case 'r': col->pen=(UWORD)FALSE; sscanf(buf+1,"%lx,%lx,%lx",&dummy1,&dummy2,&dummy3); col->red=(ULONG)dummy1; col->green=(ULONG)dummy2; col->blue=(ULONG)dummy3; break; case 'p': col->pen=(UWORD)TRUE; sscanf(buf+1,"%ld",&col->red); break; case 'm': MUI_RequestA(NULL,NULL,0,"TinyMeterPrefs","BAD LUCK!","Please do not use MUI colors.\nThey are not supported by TinyMeter!\n\nUse Colormap or a RBG color instead.",NULL); break; } } FreeVec(buf); } } __saveds __asm void IntuiMsgFunc(__a1 struct IntuiMessage *imsg,__a2 struct FileRequester *req) { if (imsg->Class==IDCMP_REFRESHWINDOW) DoMethod(req->fr_UserData,MUIM_Application_CheckRefresh); } char *getfilename(Object *win,char *title,char *pattern,BOOL save) { static char buf[512]; struct FileRequester *req; struct Window *w; static LONG left=-1,top=-1,width=-1,height=-1; Object *app = (Object *)xget(win,MUIA_ApplicationObject); char *res = NULL; static const struct Hook IntuiMsgHook = { { 0,0 },(VOID *)IntuiMsgFunc,NULL,NULL }; get(win,MUIA_Window_Window,&w); if (left==-1) { left = w->LeftEdge+w->BorderLeft+2; top = w->TopEdge+w->BorderTop+2; width = w->Width-w->BorderLeft-w->BorderRight-4; height = w->Height-w->BorderTop-w->BorderBottom-4; } if (req=MUI_AllocAslRequestTags(ASL_FileRequest, ASLFR_Window, w, ASLFR_TitleText, title, ASLFR_InitialLeftEdge, left, ASLFR_InitialTopEdge , top, ASLFR_InitialWidth , width, ASLFR_InitialHeight , height, ASLFR_InitialPattern , pattern, ASLFR_DoSaveMode , save, ASLFR_DoPatterns , TRUE, ASLFR_RejectIcons , TRUE, ASLFR_UserData , app, ASLFR_IntuiMsgFunc , &IntuiMsgHook, TAG_DONE)) { set(app,MUIA_Application_Sleep,TRUE); if (MUI_AslRequestTags(req,TAG_DONE)) { if (*req->fr_File) { res = buf; strcpy(buf,req->fr_Drawer); AddPart(buf,req->fr_File,sizeof(buf)); } left = req->fr_LeftEdge; top = req->fr_TopEdge; width = req->fr_Width; height = req->fr_Height; } MUI_FreeAslRequest(req); set(app,MUIA_Application_Sleep,FALSE); } return(res); } /// extern struct Library *SysBase, *IntuitionBase, *UtilityBase, *GfxBase, *DOSBase, *IconBase; struct Library *MUIMasterBase, *LocaleBase; struct tm_data *maindata; struct Catalog *Catalog; /*************************************************************************************************/ /* locale stuff */ /*************************************************************************************************/ /// char *GetStr(int num) { struct AppString *as = (struct AppString *)AppStrings; while (as->as_ID != num) as++; if (LocaleBase && Catalog) return(GetCatalogStr(Catalog,num,as->as_Str)); return((char *)as->as_Str); } VOID LocalizeStringArray(char **array) { char **x; for (x=array;*x;x++) *x = GetStr((int)*x); } VOID LocalizeNewMenu(struct NewMenu *nm) { for (;nm->nm_Type!=NM_END;nm++) if (nm->nm_Label != NM_BARLABEL) nm->nm_Label = GetStr((int)nm->nm_Label); } VOID InitLocale(VOID) { if (LocaleBase = OpenLibrary("locale.library",38)) Catalog = (struct Catalog *)OpenCatalog(NULL,"TinyMeterPrefs.catalog",TAG_DONE); } VOID ExitLocale(VOID) { if (Catalog) { CloseCatalog(Catalog); Catalog=NULL; } if (LocaleBase) CloseLibrary(LocaleBase); { LocaleBase=NULL; } } Object *MakePen() { return(MUI_NewObject(MUIC_Poppen, MUIA_CycleChain, 1, MUIA_Window_Title, GetStr(MO_MakePen), TAG_DONE)); } /// /*************************************************/ /* some pics */ /*************************************************/ #include "about.c" #include "header_logo.c" #include "tmp_logo.c" #include "question.c" /*************************************************/ /* default settings */ /*************************************************/ /// struct tm_sys_set default_set= { "TM40", 1, 10, 10, 400, 2, "Workbench", "XHelvetica.font", 11, bg_file, "hd0:prefs/patterns/leather", -3, FALSE,0x55555555,0x55555555,0x55555555, 5, 1, 0, TRUE, win_normal, 0, 4, 4, 8, 8, bd_standard, FALSE,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF, FALSE,0x0,0x0,0x0, idle_own }; struct tm_gau_set g4= { typ_volume, typ_histmeter, 200, "Quill.font", 11, "ChipMem", "HD1: %kd kb,%p%% free", "HD1:", ind_right, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE,2,0,0, TRUE,2,0,0, FALSE,0,0xFFFFFFFF,0, FALSE,0,0,0xFFFFFFFF, FALSE,0xFFFFFFFF,0,0, TRUE,2,0,0, TRUE,1,0,0, TRUE,1,0,0, NULL }; struct tm_gau_set g3= { typ_idle, typ_histmeter, 200, "Quill.font", 11, "ChipMem", "CPU %p%% free", "", ind_right, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE,2,0,0, TRUE,2,0,0, FALSE,0,0xFFFFFFFF,0, FALSE,0,0,0xFFFFFFFF, FALSE,0xFFFFFFFF,0,0, TRUE,2,0,0, TRUE,1,0,0, TRUE,1,0,0, &g4 }; struct tm_gau_set g2= { typ_fast, typ_gauge, 20, "XHelvetica.font", 11, "FastMem", "%td Bytes free", "", ind_right, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE,2,0,0, TRUE,2,0,0, FALSE,0,0xFFFFFFFF,0, FALSE,0,0,0xFFFFFFFF, FALSE,0xFFFFFFFF,0,0, TRUE,2,0,0, TRUE,1,0,0, TRUE,0,0,0, &g3, }; struct tm_gau_set g1= { typ_chip, typ_gauge, 20, "XHelvetica.font", 11, "ChipMem", "%td Bytes free", "", ind_right, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE,2,0,0, TRUE,2,0,0, FALSE,0,0xFFFFFFFF,0, FALSE,0,0,0xFFFFFFFF, FALSE,0xFFFFFFFF,0,0, TRUE,2,0,0, TRUE,1,0,0, TRUE,0,0,0, &g2 }; struct tm_gau_set default_gauge= { NULL, typ_gauge, 20, "topaz.font", 8, "", "", "", ind_right, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE,2,0,0, TRUE,2,0,0, FALSE,0,0xFFFFFFFF,0, FALSE,0,0,0xFFFFFFFF, FALSE,0xFFFFFFFF,0,0, TRUE,2,0,0, TRUE,1,0,0, TRUE,0,0,0, NULL }; /// /*************************************************/ /* Drag & Drop lists */ /*************************************************/ /******************************************/ /* some hooks */ /******************************************/ /// char *gau_types[]= { (STRPTR)MDL_typ_space, (STRPTR)MDL_typ_total, (STRPTR)MDL_typ_chip, (STRPTR)MDL_typ_fast, (STRPTR)MDL_typ_volume, (STRPTR)MDL_typ_cpu, (STRPTR)MDL_typ_retina, (STRPTR)MDL_typ_largest_chip, (STRPTR)MDL_typ_largest_fast, (STRPTR)MDL_typ_largest_total, (STRPTR)MDL_typ_largest_retina, (STRPTR)MDL_typ_clock, 0L, }; __geta4 ULONG gau_consfunc(__a1 struct tm_gau_set *src) { /* struct tm_gau_set *dst; if(dst=AllocVec(sizeof(struct tm_gau_set),0L)) { CopyMem(src,dst, sizeof(struct tm_gau_set)); return(dst); } else return(0L);*/ return(src); } __geta4 void gau_desfunc(__a1 struct tm_gau_set *src) { FreeVec(src); } __geta4 ULONG gau_dispfunc(__a2 char **array,__a1 struct tm_gau_set *src) { if(src->type!=0) { *array++ = gau_types[src->type]; if(src->type==typ_volume) { *array = &src->expansion[0]; } else *array = ""; } else { *array++ = "-----------------"; *array = ""; } return(0L); } static const struct Hook gau_ConstructHook = { { 0,0 }, (void *)gau_consfunc, NULL, NULL }; static const struct Hook gau_DestructHook = { { 0,0 }, (void *)gau_desfunc , NULL, NULL }; static const struct Hook gau_DisplayHook = { { 0,0 }, (void *)gau_dispfunc, NULL, NULL }; /// /******************************************/ /* FieldsList class */ /******************************************/ /// struct FieldsList_Data { LONG dummy; }; ULONG FieldsList_DragQuery(struct IClass *cl,Object *obj,struct MUIP_DragDrop *msg) { if (msg->obj==obj) return(DoSuperMethodA(cl,obj,msg)); else if (msg->obj==(Object *)muiUserData(obj)) return(MUIV_DragQuery_Accept); else return(MUIV_DragQuery_Refuse); } ULONG FieldsList_DragDrop(struct IClass *cl,Object *obj,struct MUIP_DragDrop *msg) { if (msg->obj==obj) return(DoSuperMethodA(cl,obj,msg)); else { struct tm_gau_set *entry; LONG dropmark; LONG sortable; LONG active; get(obj,MUIA_List_DragSortable,&sortable); if (sortable) { get(msg->obj,MUIA_List_Active,&active); if(entry=(struct tm_gau_set *)AllocVec(sizeof(struct tm_gau_set),MEMF_CLEAR)) { CopyMem(&default_gauge,entry, sizeof(struct tm_gau_set)); entry->type = (UWORD)active; if(active==typ_clock_) entry->gauge_type=typ_clock; get (obj, MUIA_List_DropMark, &dropmark); DoMethod(obj, MUIM_List_InsertSingle, entry,dropmark); set (obj, MUIA_List_Active, dropmark); set (msg->obj, MUIA_List_Active, MUIV_List_Active_Off); } } else { DoMethod(msg->obj,MUIM_List_Remove,MUIV_List_Remove_Active); } return(obj); } } __geta4 ULONG FieldsList_Dispatcher(__a0 struct IClass *cl,__a2 Object *obj,__a1 Msg msg) { switch (msg->MethodID) { case MUIM_DragQuery: return(FieldsList_DragQuery(cl,obj,(APTR)msg)); case MUIM_DragDrop : return(FieldsList_DragDrop (cl,obj,(APTR)msg)); } return(DoSuperMethodA(cl,obj,msg)); } /// /******************************************/ /* ChooseFields class */ /******************************************/ /// Object *available, *visible; struct ChooseFields_Data { ULONG dummy; }; struct ComposerMsg { ULONG MethodID; Object *listview; struct ChooseFields_Data *data; }; #define Dis_ID_DoubleClickComposer 1 #define Dis_ID_ComposerClose 2 #define Dis_ID_Composer_Save 3 #define Composer_Originator ( TAG_USER + 1 ) #define Gauge_Settings ( TAG_USER + 2 ) static ULONG DoubleClickComposer(struct IClass *cl,Object *obj, struct ComposerMsg *msg) { struct tm_gau_set *desc; Object *tmp; DoMethod(msg->listview,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&desc); if (desc) { set((Object *)xget(obj,MUIA_ApplicationObject),MUIA_Application_Sleep,TRUE); if (desc->type!=typ_none) { if (tmp = (APTR)NewObject(CL_Composer->mcc_Class,NULL, Composer_Originator, obj, Gauge_Settings, desc, TAG_DONE)) { DoMethod((Object *)xget(obj,MUIA_ApplicationObject),OM_ADDMEMBER,tmp); set(tmp,MUIA_Window_Open,TRUE); } else DisplayBeep(0); } set((Object *)xget(obj,MUIA_ApplicationObject),MUIA_Application_Sleep,FALSE); } return((ULONG)0); } static ULONG ChooseFields_New(struct IClass *cl,Object *obj,struct opSet *msg) { obj = (Object *)DoSuperNew(cl,obj, MUIA_Group_Columns, 2, MUIA_Group_VertSpacing, 1, Child, TextObject, MUIA_Text_Contents, GetStr(MDL_Available), End, Child, TextObject, MUIA_Text_Contents, GetStr(MDL_Selected ), End, Child, ListviewObject, MUIA_Listview_DragType, 1, MUIA_Listview_List, available = NewObject(CL_FieldsList->mcc_Class,NULL, InputListFrame, MUIA_List_SourceArray , gau_types, MUIA_List_ShowDropMarks, FALSE, TAG_DONE), End, Child, ListviewObject, MUIA_Listview_DragType, 1, MUIA_Listview_DoubleClick, TRUE, MUIA_Listview_List, visible = NewObject(CL_FieldsList->mcc_Class,NULL, InputListFrame, MUIA_List_ConstructHook, &gau_ConstructHook, MUIA_List_DestructHook , &gau_DestructHook, MUIA_List_DisplayHook , &gau_DisplayHook, MUIA_List_Format , "MIW=50 MAW=100 BAR,", MUIA_List_DragSortable , TRUE, TAG_DONE), End, End; if (obj) { DoMethod(visible,MUIM_Notify,MUIA_Listview_DoubleClick,TRUE,obj,2,Dis_ID_DoubleClickComposer,visible); set(available,MUIA_UserData,visible); set(visible,MUIA_UserData,available); set(available,MUIA_ShortHelp,GetStr(MDH_Available)); set(visible,MUIA_ShortHelp,GetStr(MDH_Selected)); } return((ULONG)obj); } struct ComposerFinishMsg { ULONG MethodID; Object *win; ULONG ok; }; ULONG Composer_Close(struct IClass *cl, Object *obj, struct ComposerFinishMsg *msg) { DoMethod(msg->win,Dis_ID_Composer_Save,msg->win,msg->ok); set(msg->win,MUIA_Window_Open,FALSE); DoMethod((Object *)xget(obj,MUIA_ApplicationObject),OM_REMMEMBER,msg->win); MUI_DisposeObject(msg->win); return((ULONG)0L); } static __saveds __asm ULONG ChooseFields_Dispatcher(__a0 struct IClass *cl,__a2 Object *obj,__a1 Msg msg) { switch (msg->MethodID) { case OM_NEW : return(ChooseFields_New (cl,obj,(APTR)msg)); case Dis_ID_DoubleClickComposer : return(DoubleClickComposer (cl,obj,(APTR)msg)); case Dis_ID_ComposerClose : return(Composer_Close (cl,obj,(APTR)msg)); } return(DoSuperMethodA(cl,obj,msg)); } /// /*************************************************/ /* Composer Class */ /*************************************************/ /******************************************/ /* Composer Menu */ /******************************************/ /// struct NewMenu CmpMenuData[] = { { NM_TITLE, (STRPTR)MCM_Gauge , 0 ,0 ,0 ,(APTR)CMP_PROJECT }, { NM_ITEM , (STRPTR)MCM_Open ,"O",0 ,0 ,(APTR)CMP_LOAD }, { NM_ITEM , (STRPTR)MCM_SaveAs ,"S",0 ,0 ,(APTR)CMP_SAVE }, { NM_ITEM , NM_BARLABEL , 0 ,0 ,0 ,(APTR)0 }, { NM_ITEM , (STRPTR)MCM_Cancel ,"C",0 ,0 ,(APTR)CMP_CANCEL }, { NM_END,NULL,0,0,0,(APTR)0 } }; /// /******************************************/ /* Composer class */ /******************************************/ /// #define Dis_ID_DoubleClickDevice 8 #define Dis_ID_SaveGauge 9 #define Dis_ID_LoadGauge 10 #define Dis_ID_ShowFormatHelp 11 struct Composer_Data { Object *ST_Label, *PO_Device, *ST_Device, *CY_Type, *NB_Height, *CS_Colors[16], *ST_Font, *ST_Format, *CM_3D, *CM_Border, *CM_Bg, *CM_Shadow, *CM_NoGauge, *CM_NoFmt, *CM_NoBase, *CY_Indent, *VL_Device, *originator, *sub_win; struct tm_gau_set *gauge; }; static ULONG DoubleClickDev(struct IClass *cl,Object *obj, struct DoubleClkMsg *msg) { char *my_ptr; struct Composer_Data *data = INST_DATA(cl,obj); DoMethod(data->VL_Device,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&my_ptr); if(my_ptr) { set(data->ST_Device,MUIA_String_Contents,my_ptr); DoMethod(data->PO_Device,MUIM_Popstring_Close,0L); return(DoSuperMethodA(cl,obj,msg)); } else return(0L); } ULONG Composer_Save(struct IClass *cl, Object *obj, struct ComposerFinishMsg *msg) { int i; ULONG dummy; struct Composer_Data *data = INST_DATA(cl,obj); if(msg->ok==TRUE) { for(i=0;i<8;i++) getColor(&data->gauge->Colors[i],data->CS_Colors[i]); get(data->ST_Label ,MUIA_String_Contents,&dummy); strcpy(&data->gauge->label[0] , dummy ? (char *)dummy : " " ); get(data->ST_Device ,MUIA_String_Contents,&dummy); strcpy(&data->gauge->expansion[0], dummy ? (char *)dummy : " " ); get(data->CY_Type ,MUIA_Cycle_Active ,&dummy); data->gauge->gauge_type =(UWORD)dummy; get(data->NB_Height ,MUIA_Numeric_Value ,&dummy); data->gauge->size_y =(UWORD)dummy-100; get(data->CM_3D ,MUIA_Selected ,&dummy); data->gauge->sty_3d =(UWORD)dummy; get(data->CM_Border ,MUIA_Selected ,&dummy); data->gauge->sty_border =(UWORD)dummy; get(data->CM_Bg ,MUIA_Selected ,&dummy); data->gauge->sty_bg =(UWORD)dummy; get(data->CM_Shadow ,MUIA_Selected ,&dummy); data->gauge->sty_shadow =(UWORD)dummy; get(data->CM_NoGauge,MUIA_Selected ,&dummy); data->gauge->sty_nogauge =(UWORD)dummy; get(data->CM_NoFmt ,MUIA_Selected ,&dummy); data->gauge->sty_noformat=(UWORD)dummy; get(data->CM_NoBase ,MUIA_Selected ,&dummy); data->gauge->sty_nobase =(UWORD)dummy; get(data->CY_Indent ,MUIA_Cycle_Active ,&dummy); data->gauge->indent =(UWORD)dummy; get(data->ST_Font ,MUIA_String_Contents,&dummy); sscanf((char *)dummy,"%[^/]/%d",&data->gauge->font[0],&i); strcat(&data->gauge->font[0],".font"); data->gauge->font_size=(WORD)i; get(data->ST_Format ,MUIA_String_Contents,&dummy); strcpy((char *)&data->gauge->format[0], dummy ? (char *)dummy : " " ); } DoMethod(visible,MUIM_List_Redraw,MUIV_List_Redraw_All); } char *types[] ={(STRPTR)MCL_Normal,(STRPTR)MCL_Historymeter,0L}; char *indent[] ={(STRPTR)MCL_center,(STRPTR)MCL_left,(STRPTR)MCL_right,0L}; char *regcomposer[] ={(STRPTR)MCR_general,(STRPTR)MCR_flags,(STRPTR)MCR_colors,0L}; insertComposerSettings(struct tm_gau_set *gauge, struct Composer_Data *data) { int i; char dummy[256]; for(i=0;i<8;i++) { initColor(&gauge->Colors[i],data->CS_Colors[i]); if(gauge->type == typ_clock_) set(data->CS_Colors[i],MUIA_Disabled, TRUE); } set(data->NB_Height,MUIA_Numeric_Value,gauge->size_y+100); if(gauge->type != typ_volume) set(data->PO_Device, MUIA_Disabled, TRUE); if((gauge->gauge_type==typ_histmeter)||(gauge->type==typ_clock_)) { set(data->ST_Label, MUIA_Disabled, TRUE); set(data->CM_3D, MUIA_Disabled, TRUE); set(data->CM_Shadow, MUIA_Disabled, TRUE); if(gauge->type==typ_clock_) { set(data->CM_Bg, MUIA_Disabled, TRUE); set(data->CS_Colors[col_format] ,MUIA_Disabled,FALSE); set(data->CS_Colors[col_dark] ,MUIA_Disabled,FALSE); set(data->CM_Shadow ,MUIA_Disabled,FALSE); set(data->CM_Border ,MUIA_Disabled, TRUE); set(data->CM_NoGauge ,MUIA_Disabled, TRUE); set(data->CM_NoFmt ,MUIA_Disabled, TRUE); set(data->CM_NoBase ,MUIA_Disabled, TRUE); set(data->CY_Type ,MUIA_Disabled, TRUE); } } set(data->CM_3D ,MUIA_Selected,gauge->sty_3d); set(data->CM_Border ,MUIA_Selected,gauge->sty_border); set(data->CM_Bg ,MUIA_Selected,gauge->sty_bg); set(data->CM_Shadow ,MUIA_Selected,gauge->sty_shadow); set(data->CM_NoGauge,MUIA_Selected,gauge->sty_nogauge); set(data->CM_NoFmt ,MUIA_Selected,gauge->sty_noformat); set(data->CM_NoBase ,MUIA_Selected,gauge->sty_nobase); set(data->ST_Format ,MUIA_String_Contents,&gauge->format[0]); strcpy(&dummy[0],gauge->font); sprintf((char *)&dummy[strlen(&dummy[0])-5],"/%d",gauge->font_size); set(data->ST_Font ,MUIA_String_Contents,&dummy[0]); set(data->ST_Device ,MUIA_String_Contents,&gauge->expansion[0]); set(data->ST_Label ,MUIA_String_Contents,&gauge->label[0]); set(data->CY_Indent ,MUIA_Cycle_Active,gauge->indent); set(data->CY_Type ,MUIA_Cycle_Active,gauge->gauge_type); } LoadGaugeSet(struct IClass *cl,Object *obj) { struct Composer_Data *data=INST_DATA(cl,obj); char *file; ULONG my_file; ULONG buf; UWORD old_type; char old_expansion[128]; if(file=getfilename(obj,GetStr(MCM_LoadGauge),"#?.tmgauge",FALSE)) { if(my_file=(ULONG)Open(file,MODE_OLDFILE)) { Read(my_file,&buf,4L); if(buf==0x544D4731) { old_type=data->gauge->type; CopyMem(&data->gauge->expansion[0],&old_expansion[0],128L); Read(my_file,data->gauge,sizeof(struct tm_gau_set)); data->gauge->type=old_type; CopyMem(&old_expansion[0],&data->gauge->expansion[0],128L); insertComposerSettings(data->gauge,data); } else MUI_RequestA((Object *)xget(obj,MUIA_ApplicationObject),obj,0,"TinyMeterPrefs",GetStr(MCM_NotTmGauge_fmt),GetStr(MCM_NotTmGauge),NULL); Close(my_file); } } } SaveGaugeSet(struct IClass *cl,Object *obj) { struct Composer_Data *data=INST_DATA(cl,obj); char *file; ULONG buf,my_file; struct ComposerFinishMsg msg; msg.ok=TRUE; Composer_Save( cl,obj,&msg); buf=0x544D4731; if(file=getfilename(obj,GetStr(MCM_SaveGauge),"#?.tmgauge",TRUE)) { if(my_file=Open(file,MODE_NEWFILE)) { Write(my_file,&buf,4L); Write(my_file,data->gauge,sizeof(struct tm_gau_set)); Close(my_file); } } } Object *WI_HelpFmt, *WI_HelpClock; static ULONG Composer_New(struct IClass *cl,Object *obj,struct opSet *msg) { struct Composer_Data *data; struct tm_gau_set *gauge; Object *BT_Use, *BT_Cancel, *ST_Label, *PO_Device, *ST_Device, *CY_Type, *NB_Height, *CS_Colors[8], *ST_Font, *ST_Format, *CM_3D, *CM_Border, *CM_Bg, *CM_Shadow, *CM_NoGauge, *CM_NoFmt, *CM_NoBase, *CY_Indent, *LV_Device, *VL_Device, *CMP_Menu, *BT_Quest; if(gauge = (struct tm_gau_set *)GetTagData(Gauge_Settings,0,msg->ops_AttrList)) { if( obj = (Object *)DoSuperNew(cl,obj, MUIA_Window_Title , gau_types[gauge->type] , MUIA_Window_ID , MAKE_ID('T','M','C','O'), MUIA_Window_Menustrip , CMP_Menu = MUI_MakeObject(MUIO_MenustripNM,CmpMenuData,0), WindowContents, VGroup, ButtonFrame, Child, HGroup, Child, VGroup, MUIA_Background, MUII_SHADOW, Child, VSpace(0), Child, BodychunkObject, MUIA_FixWidth , HEADER_LOGO_WIDTH , MUIA_FixHeight , HEADER_LOGO_HEIGHT, MUIA_Bitmap_Width , HEADER_LOGO_WIDTH , MUIA_Bitmap_Height , HEADER_LOGO_HEIGHT, MUIA_Bodychunk_Depth , HEADER_LOGO_DEPTH , MUIA_Bodychunk_Body , (UBYTE *)header_logo_body, MUIA_Bodychunk_Compression, HEADER_LOGO_COMPRESSION, MUIA_Bodychunk_Masking , HEADER_LOGO_MASKING, MUIA_Bitmap_SourceColors , (ULONG *)header_logo_colors, MUIA_Bitmap_Transparent , 0, End, End, Child, RegisterGroup(regcomposer), MUIA_Register_Frame, TRUE, Child, ColGroup(2), Child, VSpace(0), Child, VSpace(0), Child, Label(GetStr(MCO_type)), Child, CY_Type=CycleObject, MUIA_Cycle_Entries, types, End, Child, Label(GetStr(MCO_label)), Child, ST_Label=String(0L,16), Child, Label(GetStr(MCO_height)), Child, ColGroup(2), Child, NB_Height=MUI_MakeObject(MUIO_NumericButton,NULL,100,1000,GetStr(MCO_height_fmt)), Child, HVSpace, End, Child, Label(GetStr(MCO_font)), Child, PopaslObject, MUIA_Popstring_String, ST_Font=(Object *)String(0L,80), MUIA_Popstring_Button, PopButton(MUII_PopUp), MUIA_Popasl_Type , ASL_FontRequest, ASLFO_TitleText , GetStr(MCO_sel_font), End, Child, Label(GetStr(MCO_device)), Child, PO_Device=PopobjectObject, MUIA_Popstring_String, ST_Device=String(0L,128), MUIA_Popstring_Button, PopButton(MUII_PopUp), MUIA_Popobject_Object, LV_Device=ListviewObject, MUIA_Weight, 20, MUIA_Listview_Input, TRUE, MUIA_Listview_DoubleClick, TRUE, MUIA_Listview_List, VL_Device=VolumelistObject, InputListFrame, MUIA_Dirlist_Directory, "ram:", End, End, End, Child, VSpace(0), Child, VSpace(0), End, Child, ColGroup(2), Child, VSpace(0), Child, VSpace(0), Child, Label(GetStr(MCO_3dlook)), Child, CM_3D=CheckMark(gauge->sty_3d), Child, Label(GetStr(MCO_border)), Child, CM_Border=CheckMark(gauge->sty_border), Child, Label(GetStr(MCO_nobgcol)), Child, CM_Bg=CheckMark(gauge->sty_bg), Child, Label(GetStr(MCO_shadow)), Child, CM_Shadow=CheckMark(gauge->sty_shadow), Child, Label(GetStr(MCO_disgaug)), Child, CM_NoGauge=CheckMark(gauge->sty_nogauge), Child, Label(GetStr(MCO_disfmt)), Child, CM_NoFmt=CheckMark(gauge->sty_noformat), Child, Label(GetStr(MCO_disbas)), Child, CM_NoBase=CheckMark(gauge->sty_nobase), Child, VSpace(0), Child, VSpace(0), End, Child, ColGroup(2), Child, ColGroup(2), Child, VSpace(0), Child, VSpace(0), Child, Label(GetStr(MCO_col_label)), Child, CS_Colors[col_label] =MakePen(), Child, Label(GetStr(MCO_col_fmt)), Child, CS_Colors[col_format] =MakePen(), Child, Label(GetStr(MCO_col_bas)), Child, CS_Colors[col_base] =MakePen(), Child, Label(GetStr(MCO_col_cur)), Child, CS_Colors[col_current] =MakePen(), Child, VSpace(0), Child, VSpace(0), End, Child, ColGroup(2), Child, VSpace(0), Child, VSpace(0), Child, Label(GetStr(MCO_col_neg)), Child, CS_Colors[col_negative] =MakePen(), Child, Label(GetStr(MCO_col_bright)), Child, CS_Colors[col_bright] =MakePen(), Child, Label(GetStr(MCO_col_dark)), Child, CS_Colors[col_dark] =MakePen(), Child, Label(GetStr(MCO_col_bg)), Child, CS_Colors[col_bg] =MakePen(), Child, VSpace(0), Child, VSpace(0), End, End, End, End, Child, HGroup, GroupFrameT(GetStr(MCO_fmt)), Child, ST_Format=(Object *)String(0L,128), Child, BT_Quest=BodychunkObject, ButtonFrame, MUIA_InputMode , MUIV_InputMode_RelVerify, MUIA_FixWidth , QUESTION_WIDTH , MUIA_FixHeight , QUESTION_HEIGHT, MUIA_Bitmap_Width , QUESTION_WIDTH , MUIA_Bitmap_Height , QUESTION_HEIGHT, MUIA_Bodychunk_Depth , QUESTION_DEPTH , MUIA_Bodychunk_Body , (UBYTE *)question_body, MUIA_Bodychunk_Compression, QUESTION_COMPRESSION, MUIA_Bodychunk_Masking , QUESTION_MASKING, MUIA_Bitmap_SourceColors , (ULONG *)question_colors, MUIA_Bitmap_Transparent , 0, End, Child, CY_Indent=CycleObject, MUIA_Weight, 0, MUIA_Cycle_Entries, indent, End, End, Child, HGroup, Child, BT_Use = (Object *)SimpleButton(GetStr(MCO_Use)), Child, BT_Cancel = (Object *)SimpleButton(GetStr(MCO_Cancel)), End, End, End) { int i; data=INST_DATA(cl,obj); data->gauge = gauge; data->ST_Label = ST_Label; set(ST_Label,MUIA_ShortHelp,GetStr(MOH_Label)); data->PO_Device = PO_Device; set(PO_Device,MUIA_ShortHelp,GetStr(MOH_Device)); data->ST_Device = ST_Device; data->CY_Type = CY_Type; data->NB_Height = NB_Height; data->CM_3D = CM_3D; data->CM_Border = CM_Border; set(CM_Border,MUIA_ShortHelp,GetStr(MOH_3d)); data->CM_Bg = CM_Bg; set(CM_Bg,MUIA_ShortHelp,GetStr(MOH_Bg)); data->CM_Shadow = CM_Shadow; data->CM_NoGauge = CM_NoGauge; set(CM_NoGauge,MUIA_ShortHelp,GetStr(MOH_NoGauge)); data->CM_NoFmt = CM_NoFmt; set(CM_NoFmt,MUIA_ShortHelp,GetStr(MOH_NoFmt)); data->CM_NoBase = CM_NoBase; set(CM_NoBase,MUIA_ShortHelp,GetStr(MOH_NoBase)); data->CY_Indent = CY_Indent; data->ST_Font = ST_Font; data->VL_Device = VL_Device; data->ST_Format = ST_Format; for(i=0;i<8;i++) data->CS_Colors[i]=CS_Colors[i]; insertComposerSettings(gauge,data); data->originator = (Object *)GetTagData(Composer_Originator,0,msg->ops_AttrList); DoMethod(LV_Device, MUIM_Notify,MUIA_Listview_DoubleClick ,TRUE,obj,1,Dis_ID_DoubleClickDevice); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_gauge ,ST_Label,3,MUIM_Set,MUIA_Disabled,FALSE); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_histmeter,ST_Label,3,MUIM_Set,MUIA_Disabled,TRUE); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_gauge ,CM_3D,3,MUIM_Set,MUIA_Disabled,FALSE); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_histmeter,CM_3D,3,MUIM_Set,MUIA_Disabled,TRUE); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_gauge ,CM_Shadow,3,MUIM_Set,MUIA_Disabled,FALSE); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_histmeter,CM_Shadow,3,MUIM_Set,MUIA_Disabled,TRUE); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_gauge ,CM_Bg,3,MUIM_Set,MUIA_Disabled,FALSE); DoMethod(CY_Type, MUIM_Notify,MUIA_Cycle_Active,typ_histmeter,CM_Bg,3,MUIM_Set,MUIA_Disabled,TRUE); if(gauge->type!=typ_clock_) DoMethod(BT_Quest, MUIM_Notify,MUIA_Pressed,FALSE, WI_HelpFmt ,3,MUIM_Set,MUIA_Window_Open,TRUE); else DoMethod(BT_Quest, MUIM_Notify,MUIA_Pressed,FALSE, WI_HelpClock ,3,MUIM_Set,MUIA_Window_Open,TRUE); DoMethod(obj, MUIM_Notify,MUIA_Window_CloseRequest,TRUE, MUIV_Notify_Application,6,MUIM_Application_PushMethod,data->originator,3,Dis_ID_ComposerClose,obj,FALSE); DoMethod(BT_Cancel, MUIM_Notify,MUIA_Pressed,FALSE, MUIV_Notify_Application,6,MUIM_Application_PushMethod,data->originator,3,Dis_ID_ComposerClose,obj,FALSE); DoMethod(BT_Use, MUIM_Notify,MUIA_Pressed,FALSE, MUIV_Notify_Application,6,MUIM_Application_PushMethod,data->originator,3,Dis_ID_ComposerClose,obj,TRUE); DoMethod(obj, MUIM_Notify,MUIA_Window_MenuAction,CMP_SAVE,obj,1,Dis_ID_SaveGauge); DoMethod(obj, MUIM_Notify,MUIA_Window_MenuAction,CMP_LOAD,obj,1,Dis_ID_LoadGauge); return((ULONG)obj); } } return(0L); } static __saveds __asm ULONG ComposerDispatcher(__a0 struct IClass *cl,__a2 Object *obj,__a1 Msg msg) { switch (msg->MethodID) { case OM_NEW : return(Composer_New (cl,obj,(APTR)msg)); case Dis_ID_Composer_Save : return(Composer_Save (cl,obj,(APTR)msg)); case Dis_ID_DoubleClickDevice : return(DoubleClickDev (cl,obj,(APTR)msg)); case Dis_ID_SaveGauge : return(SaveGaugeSet (cl,obj)); case Dis_ID_LoadGauge : return(LoadGaugeSet (cl,obj)); } return(DoSuperMethodA(cl,obj,msg)); } /// /*************************************************/ /* Main Window and his dispatcher */ /*************************************************/ /******************************************/ /* some vars */ /******************************************/ /// #define Dis_ID_DoubleClick1 1 #define Dis_ID_Finish 2 #define Dis_ID_DoubleClick2 3 #define Dis_ID_Save 4 #define Dis_ID_Snap 5 #define Dis_ID_Load 6 struct NewMenu MenuData1[] = { { NM_TITLE, (STRPTR)MM_Project , 0 ,0 ,0 ,(APTR)MEN_PROJECT }, { NM_ITEM , (STRPTR)MM_Open ,"O",0 ,0 ,(APTR)MEN_OPEN }, { NM_ITEM , (STRPTR)MM_SaveAs ,"S",0 ,0 ,(APTR)MEN_SAVE }, { NM_ITEM , (STRPTR)MM_About ,"?",0 ,0 ,(APTR)MEN_ABOUT }, { NM_ITEM , NM_BARLABEL , 0 ,0 ,0 ,(APTR)0 }, { NM_ITEM , (STRPTR)MM_Quit ,"Q",0 ,0 ,(APTR)MEN_QUIT }, { NM_END,NULL,0,0,0,(APTR)0 } }; struct ls_layout { char *entry_desc; BYTE entry_selected; BOOL entry_max; char *entry[6]; }; struct ls_layout switches[]= { {(STRPTR)ML_Window, 0,0,0,0,0,0,0,0}, {(STRPTR)ML_BgPic, 0,2,(STRPTR)ML_BgPic_None,(STRPTR)ML_BgPic_File,(STRPTR)ML_BgPic_Snap,0,0,0}, {(STRPTR)ML_WinBeh, 0,2,(STRPTR)ML_WinBeh_Normal,(STRPTR)ML_WinBeh_Front,(STRPTR)ML_WinBeh_Back,0,0,0}, {(STRPTR)ML_WinMov, 0,1,(STRPTR)ML_WinMov_Normal,(STRPTR)ML_WinMov_Fixed,0,0,0,0}, {(STRPTR)ML_Border, 0,3,(STRPTR)ML_Border_None,(STRPTR)ML_Border_Simple,(STRPTR)ML_Border_Standard,(STRPTR)ML_Border_Double,0,0}, {(STRPTR)ML_Startup, 0,0,0,0,0,0,0,0}, {(STRPTR)ML_ScrNot, 0,1,(STRPTR)ML_ScrNot_No,(STRPTR)ML_ScrNot_Yes,0,0,0,0}, {(STRPTR)ML_Cpu, 0,2,(STRPTR)ML_Cpu_None,(STRPTR)ML_Cpu_Executive,(STRPTR)ML_Cpu_Own,0,0,0}, NULL }; char *mainlister[]= { (STRPTR)MOL_General, (STRPTR)MOL_Compose, NULL }; char *sublister[]= { (STRPTR)MOL_sub_General, (STRPTR)MOL_sub_Flags, (STRPTR)MOL_sub_Window, NULL }; struct MainData { ULONG dummy; }; char *pubscr[256]; struct BitMap my_bmp; Object *BT_Save, *BT_Use, *BT_Test, *BT_Cancel, *ls_Switch, *ls_PubScr, *lv_Switch, *lv_PubScr, *ST_PubScr, *PO_PubScr, *MN_Main, *WI_About, *IN_posx, *IN_posy, *IN_sizx, *ST_bg, *NB_wait, *NB_mem, *NB_vol, *NB_bordx, *NB_bordy, *NB_spcx, *NB_spcy, *NB_col, *NB_pri, *MN_Colors[3], *CM_Falling, *BT_Snap, *LV_Composer; /// /******************************************/ /* some listview hooks */ /******************************************/ /// __saveds __asm APTR lay_consfunc(__a1 struct ls_layout *src) { return(src); } __saveds __asm ULONG lay_desfunc(__a1 struct ls_layout *src) { return(0L); } __saveds __asm void lay_dispfunc(__a2 char **array,__a1 struct ls_layout *src) { *array++ = src->entry_desc; *array = src->entry[src->entry_selected]; } static const struct Hook lay_ConstructHook = { { 0,0 }, (void *)lay_consfunc, NULL, NULL }; static const struct Hook lay_DestructHook = { { 0,0 }, (void *)lay_desfunc , NULL, NULL }; static const struct Hook lay_DisplayHook = { { 0,0 }, (void *)lay_dispfunc, NULL, NULL }; /// /******************************************/ /* load settings and a method */ /******************************************/ /// #define load_standard 0 #define load_file 1 struct LoadSetMsg { ULONG MethodID; ULONG what; }; insertSettings(struct tm_sys_set *set,struct tm_gau_set *list) { struct ls_layout *src; set(NB_col ,MUIA_Numeric_Value,set->colums); set(NB_bordx,MUIA_Numeric_Value,set->win_border_x); set(NB_bordy,MUIA_Numeric_Value,set->win_border_y); set(NB_spcx ,MUIA_Numeric_Value,set->win_space_x); set(NB_spcy ,MUIA_Numeric_Value,set->win_space_y); set(NB_wait ,MUIA_Numeric_Value,set->start_wait); set(NB_mem ,MUIA_Numeric_Value,set->mem_refresh); set(NB_vol ,MUIA_Numeric_Value,set->vol_refresh); set(NB_pri ,MUIA_Numeric_Value,set->pri); DoMethod(ls_Switch,MUIM_List_GetEntry,1,&src); src->entry_selected=set->bg_type; DoMethod(ls_Switch,MUIM_List_GetEntry,2,&src); src->entry_selected=set->win_backfront; DoMethod(ls_Switch,MUIM_List_GetEntry,3,&src); src->entry_selected=set->win_move; DoMethod(ls_Switch,MUIM_List_GetEntry,4,&src); src->entry_selected=set->bd_type; DoMethod(ls_Switch,MUIM_List_GetEntry,6,&src); src->entry_selected=set->start_usescreennotify; DoMethod(ls_Switch,MUIM_List_GetEntry,7,&src); src->entry_selected=set->Executive; initColor(&set->bg_color,MN_Colors[0]); initColor(&set->bright_color,MN_Colors[1]); initColor(&set->dark_color,MN_Colors[2]); set(ST_PubScr, MUIA_String_Contents ,&set->pub_name[0]); set(IN_posx, MUIA_String_Integer ,set->x_pos); set(IN_posy, MUIA_String_Integer ,set->y_pos); set(IN_sizx, MUIA_String_Integer ,set->x_siz); set(ST_bg, MUIA_String_Contents ,&set->bg_picture[0]); set(CM_Falling, MUIA_Selected ,set->lay_falling); DoMethod(visible,MUIM_List_Clear,0L); do { DoMethod(visible,MUIM_List_InsertSingle,list,MUIV_List_Insert_Bottom); } while(list=list->next); DoMethod(visible,MUIM_List_Redraw,MUIV_List_Redraw_All); DoMethod(ls_Switch,MUIM_List_Redraw,MUIV_List_Redraw_All); } int getNum(struct tm_gau_set *list) { int num=1; while(list=list->next)num++; return(num); } useDefault(struct tm_data *data) { struct tm_gau_set *many, *act, *old; CopyMem((char *)&default_set,data->set,sizeof(struct tm_sys_set)); if(act=(struct tm_gau_set *)AllocVec(sizeof(struct tm_gau_set),0L)) { many=&g1; data->list=act; CopyMem((char *)many,act,sizeof(struct tm_gau_set)); while(many=many->next) { old=act; if(act=(struct tm_gau_set *)AllocVec(sizeof(struct tm_gau_set),0L)) { old->next=act; CopyMem((char *)many,act,sizeof(struct tm_gau_set)); } else {act->next=0L;return;} } act->next=0L; } else data->list=0L; } BOOL loadSettings(Object *obj,struct tm_data *data, char *file) { ULONG my_file; struct tm_gau_set *many,*act; if(!maindata->set)maindata->set=AllocVec(sizeof(struct tm_sys_set),0L); if(my_file=(UBYTE *)Open(file,MODE_OLDFILE)) { if(!Read(my_file,data->set,(ULONG)sizeof(struct tm_sys_set))) { useDefault(data); } else { act=(struct tm_gau_set *)AllocVec(sizeof(struct tm_gau_set),NULL); data->list=act; many=act; while(Read(my_file,(char *)act,(ULONG)sizeof(struct tm_gau_set))) { many=act; act=(struct tm_gau_set *)AllocVec(sizeof(struct tm_gau_set),NULL); many->next=act; } many->next=NULL; FreeVec(act); act=NULL; } Close(my_file); } else useDefault(data); data->num_of_gaug=getNum(data->list); } ULONG loadManager(struct IClass *cl,Object *obj, struct LoadSetMsg *msg) { char *file; switch (msg->what) { case load_standard: loadSettings(obj,maindata,"ENV:TinyMeter"); insertSettings(maindata->set,maindata->list); break; case load_file: if(file=getfilename(obj,GetStr(MM_OpenTitle),"#?.tm",FALSE)) { loadSettings(obj,maindata,file); insertSettings(maindata->set,maindata->list); } break; } return((ULONG)DoSuperMethodA(cl,obj,msg)); } /// /******************************************/ /* test settings and window snapping */ /******************************************/ /// #include <exec/memory.h> #include <exec/ports.h> #include <exec/execbase.h> #define test_test 0 #define test_getwin 1 struct TestMessage { struct Message ts_Message; ULONG MethodID; struct tm_sys_set *set; struct tm_gau_set *list; ULONG posx, posy, sizx; }; struct TestMessage *ts_msg; struct MsgPort *p_port; struct MsgPort *p_reply; BOOL SafePutToPort(struct Message *message, char *portname) { struct MsgPort *port; Forbid(); port = (struct MsgPort *)FindPort(portname); if (port) PutMsg(port, (struct Message *) message); Permit(); return(port ? TRUE : FALSE); } ULONG InitTestSettings() { if( ( ts_msg =(struct TestMessage *)AllocMem (sizeof(struct TestMessage),MEMF_PUBLIC|MEMF_CLEAR)) && ( p_reply=(struct MsgPort *) CreatePort(0,0)) ) return (1L); else return (0L); } FreeTestSettings() { if(ts_msg) FreeMem (ts_msg,sizeof(struct TestMessage)); if(p_reply)DeletePort (p_reply); } struct TestMessage *TestSettings(ULONG type) { ULONG i,j; struct tm_gau_set *act, *all[64]; if( FindPort("TinyMeter") ) if( ts_msg && p_reply) { ts_msg->ts_Message.mn_Node.ln_Type = NT_MESSAGE; ts_msg->ts_Message.mn_ReplyPort = p_reply; ts_msg->ts_Message.mn_Length = sizeof ( struct TestMessage ); ts_msg->MethodID = type; switch (type) { case test_test: for(i=0;i<64;i++)all[i]=0L; for(i=0;;i++) { DoMethod(visible,MUIM_List_GetEntry,i,&act); if(!act) break; if(i==63) break; if(all[i]=AllocVec(sizeof(struct tm_gau_set),0L)) { CopyMem(act, all[i], sizeof(struct tm_gau_set)); } else return(0L); } for(j=0;j<i;j++) { all[j]->next=all[j+1]; } ts_msg->list=all[0]; if(ts_msg->set = AllocVec(sizeof(struct tm_sys_set),0L)) { CopyMem(maindata->set,ts_msg->set,sizeof(struct tm_sys_set)); } else return(0L); break; case test_getwin: ts_msg->list=0L; ts_msg->set =0L; break; } if (SafePutToPort((struct Message *)ts_msg,"TinyMeter")) { WaitPort(p_reply); return(GetMsg(p_reply)); } } return(0L); } /// /******************************************/ /* snapWindow method */ /******************************************/ /// snapWindow(struct IClass *cl,Object *obj, struct Msg *msg) { struct TestMessage *testMsg; testMsg=TestSettings(test_getwin); set(IN_posx, MUIA_String_Integer ,testMsg->posx); set(IN_posy, MUIA_String_Integer ,testMsg->posy); set(IN_sizx, MUIA_String_Integer ,testMsg->sizx); } /// /******************************************/ /* save settings and the method for it */ /******************************************/ /// #define save_save 0 #define save_use 1 #define save_test 2 #define save_file 3 #define save_cancel 4 struct SaveSetMsg { ULONG MethodID; ULONG what; }; getSettings(struct tm_sys_set *set) { ULONG dummy; struct ls_layout *src; get(NB_col ,MUIA_Numeric_Value,&dummy);set->colums =(UWORD)dummy; get(NB_bordx,MUIA_Numeric_Value,&dummy);set->win_border_x =(UWORD)dummy; get(NB_bordy,MUIA_Numeric_Value,&dummy);set->win_border_y =(UWORD)dummy; get(NB_spcx ,MUIA_Numeric_Value,&dummy);set->win_space_x =(UWORD)dummy; get(NB_spcy ,MUIA_Numeric_Value,&dummy);set->win_space_y =(UWORD)dummy; get(NB_wait ,MUIA_Numeric_Value,&dummy);set->start_wait =(UWORD)dummy; get(NB_mem ,MUIA_Numeric_Value,&dummy);set->mem_refresh =(UWORD)dummy; get(NB_vol ,MUIA_Numeric_Value,&dummy);set->vol_refresh =(UWORD)dummy; get(NB_pri ,MUIA_Numeric_Value,&dummy);set->pri =(BYTE) dummy; get(CM_Falling,MUIA_Selected, &dummy);set->lay_falling =(UBYTE)dummy; DoMethod(ls_Switch,MUIM_List_GetEntry,1,&src); set->bg_type =src->entry_selected; DoMethod(ls_Switch,MUIM_List_GetEntry,2,&src); set->win_backfront =src->entry_selected; DoMethod(ls_Switch,MUIM_List_GetEntry,3,&src); set->win_move =src->entry_selected; DoMethod(ls_Switch,MUIM_List_GetEntry,4,&src); set->bd_type =src->entry_selected; DoMethod(ls_Switch,MUIM_List_GetEntry,6,&src); set->start_usescreennotify=src->entry_selected; DoMethod(ls_Switch,MUIM_List_GetEntry,7,&src); set->Executive =src->entry_selected; getColor(&set->bg_color, MN_Colors[0]); getColor(&set->bright_color,MN_Colors[1]); getColor(&set->dark_color, MN_Colors[2]); get(ST_PubScr ,MUIA_String_Contents,&dummy); strcpy(&set->pub_name[0] ,(char *)dummy); get(ST_bg ,MUIA_String_Contents,&dummy); strcpy(&set->bg_picture[0] ,(char *)dummy); get(IN_sizx ,MUIA_String_Integer, &dummy); set->x_siz=(UWORD)dummy; get(IN_posx ,MUIA_String_Integer, &dummy); set->x_pos=(UWORD)dummy; get(IN_posy ,MUIA_String_Integer, &dummy); set->y_pos=(UWORD)dummy; } static saveSettings(Object *listv, struct tm_sys_set *set, char *file) { int i; ULONG my_file; struct tm_gau_set *act; if(my_file=(ULONG)Open(file,MODE_NEWFILE)) { Write(my_file,set,(ULONG)sizeof(struct tm_sys_set)); for (i=0;;i++) { DoMethod(listv,MUIM_List_GetEntry,i,&act); if(!act) break; if(i==63) break; Write(my_file,act,(ULONG)sizeof(struct tm_gau_set)); } Close(my_file); } } ULONG saveManager(struct IClass *cl,Object *obj, struct SaveSetMsg *msg) { int i=0; char *file; getSettings(maindata->set); switch (msg->what) { case save_save: saveSettings(visible,maindata->set,"ENVARC:TinyMeter"); case save_use: saveSettings(visible,maindata->set,"ENV:TinyMeter"); TestSettings(test_test); while(pubscr[i]) FreeVec(pubscr[i++]); DoMethod((Object *)xget(obj,MUIA_ApplicationObject),MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit); return(0L); case save_test: TestSettings(test_test); return(obj); case save_file: if(file=getfilename(obj,GetStr(MM_SaveTitle),"#?.tm",TRUE)) saveSettings(visible,maindata->set,file); break; case save_cancel: loadSettings(obj,maindata,"ENV:TinyMeter"); insertSettings(maindata->set,maindata->list); TestSettings(test_test); DoMethod((Object *)xget(obj,MUIA_ApplicationObject),MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit); break; } return((ULONG)DoSuperMethodA(cl,obj,msg)); } /// /******************************************/ /* other MainWindow methods */ /******************************************/ /// struct DoubleClkMsg { ULONG MethodID; struct MainData *data; }; static ULONG Dis_DoubleClick2(struct IClass *cl,Object *obj, struct DoubleClkMsg *msg) { struct ls_layout *src; DoMethod(ls_Switch,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&src); if(src) { if(src->entry_max>0) { src->entry_selected++;if(src->entry_max<src->entry_selected)src->entry_selected=0; DoMethod(ls_Switch,MUIM_List_Redraw,MUIV_List_Redraw_Active); } return(DoSuperMethodA(cl,obj,msg)); } else return(0L); } static ULONG Dis_DoubleClick1(struct IClass *cl,Object *obj, struct DoubleClkMsg *msg) { char *my_ptr; DoMethod(ls_PubScr,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&my_ptr); if(my_ptr) { set(ST_PubScr,MUIA_String_Contents,my_ptr); DoMethod(PO_PubScr,MUIM_Popstring_Close,0L); return(DoSuperMethodA(cl,obj,msg)); } else return(0L); } ULONG MainWindow_Finish(struct IClass *cl,Object *obj,Msg *msg) { int i=0; struct MainData *data; data=INST_DATA(cl,obj); while(pubscr[i++]) FreeVec(pubscr[i]); pubscr[i]=0; DoMethod((Object *)xget(obj,MUIA_ApplicationObject),MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit); return((ULONG)0L); } static GetPubScreens() { struct List *PubScreenList; struct PubScreenNode *ScreenNode; int i=0; PubScreenList = LockPubScreenList(); for(ScreenNode=(struct PubScreenNode *)PubScreenList->lh_Head;ScreenNode->psn_Node.ln_Succ;ScreenNode=(struct PubScreenNode *)ScreenNode->psn_Node.ln_Succ) { pubscr[i]=(char *)AllocVec(256L,0L); strcpy(pubscr[i],ScreenNode->psn_Node.ln_Name); i++; } UnlockPubScreenList(); } static ULONG MainWindow_New(struct IClass *cl,Object *obj,Msg *msg) { struct MainData *data; int i; InitBitMap(&my_bmp,3,41,192); my_bmp.Planes[0]=&tmp_logoData[0]; my_bmp.Planes[1]=&tmp_logoData[576]; my_bmp.Planes[2]=&tmp_logoData[1152]; GetPubScreens(); if (obj = (Object *) DoSuperNew(cl,obj, MUIA_Window_Title, GetStr(MO_Title), MUIA_Window_ID , MAKE_ID('T','I','N','Y'), WindowContents, VGroup, ButtonFrame, Child, HGroup, Child, VGroup, MUIA_Background, MUII_SHADOW, Child, HVSpace, Child, BitmapObject, MUIA_Bitmap_Bitmap, &my_bmp, MUIA_Bitmap_Width, 41, MUIA_Bitmap_Height, 192, MUIA_Bitmap_SourceColors, &tmp_logoPaletteRGB32[1], MUIA_FixHeight, 192, MUIA_FixWidth, 41, MUIA_ShortHelp, "Greets to: hANGKOK, pEPE, bEZZZERK, tRACER, rALPH...", End, End, Child, RegisterGroup(mainlister), MUIA_Register_Frame, TRUE, Child, HGroup, Child, RegisterGroup(sublister), MUIA_Register_Frame, TRUE, Child, HGroup, Child, ColGroup(2), GroupFrameT(GetStr(MOL_Handler)), Child, HVSpace, Child, HVSpace, Child, Label(GetStr(MO_MemRefresh)), Child, ColGroup(2), Child, NB_mem=MUI_MakeObject(MUIO_NumericButton,NULL,1,100,GetStr(MO_fmt_seconds)), Child, HVSpace, End, Child, Label(GetStr(MO_VolRefresh)), Child, ColGroup(2), Child, NB_vol=MUI_MakeObject(MUIO_NumericButton,NULL,1,100,GetStr(MO_fmt_seconds)), Child, HVSpace, End, Child, Label(GetStr(MO_Wait)), Child, ColGroup(2), Child, NB_wait=MUI_MakeObject(MUIO_NumericButton,NULL,0,100,GetStr(MO_fmt_seconds)), Child, HVSpace, End, Child, Label(GetStr(MO_TaskPrio)), Child, ColGroup(2), Child, NB_pri=MUI_MakeObject(MUIO_NumericButton,NULL,-128,127,"%ld"), Child, HVSpace, End, Child, HVSpace, Child, HVSpace, End, Child, ColGroup(2), GroupFrameT(GetStr(MOL_sub_Layout)), Child, HVSpace, Child, HVSpace, Child, Label(GetStr(MO_Colums)), Child, ColGroup(2), Child, NB_col=MUI_MakeObject(MUIO_NumericButton,NULL,1,32,"%3ld"), Child, HVSpace, End, Child, Label(GetStr(MO_FallingCol)), Child, HGroup, Child, CM_Falling=CheckMark(NULL), Child, HVSpace, End, Child, Label(GetStr(MO_SpaceX)), Child, ColGroup(2), Child, NB_spcx=MUI_MakeObject(MUIO_NumericButton,NULL,0,256,GetStr(MO_fmt_pixels)), Child, HVSpace, End, Child, Label(GetStr(MO_SpaceY)), Child, ColGroup(2), Child, NB_spcy=MUI_MakeObject(MUIO_NumericButton,NULL,0,256,GetStr(MO_fmt_pixels)), Child, HVSpace, End, Child, Label(GetStr(MO_BordX)), Child, ColGroup(2), Child, NB_bordx=MUI_MakeObject(MUIO_NumericButton,NULL,0,256,GetStr(MO_fmt_pixels)), Child, HVSpace, End, Child, Label(GetStr(MO_BordY)), Child, ColGroup(2), Child, NB_bordy=MUI_MakeObject(MUIO_NumericButton,NULL,0,256,GetStr(MO_fmt_pixels)), Child, HVSpace, End, Child, HVSpace, Child, HVSpace, End, End, Child, lv_Switch=(Object *)ListviewObject, MUIA_Listview_Input, TRUE, MUIA_Listview_DoubleClick, TRUE, MUIA_Listview_List, ls_Switch=(Object *)ListObject, MUIA_Frame, MUIV_Frame_InputList, MUIA_List_ConstructHook, &lay_ConstructHook, MUIA_List_DestructHook , &lay_DestructHook, MUIA_List_DisplayHook , &lay_DisplayHook, MUIA_List_Format , "MIW=5 MAW=100 BAR,", MUIA_List_Active, MUIV_List_Active_Top, End, End, Child, ColGroup(2), Child, HVSpace, Child, HVSpace, Child, Label(GetStr(MO_Public)), Child, PO_PubScr=(Object *)PopobjectObject, MUIA_Popstring_String, ST_PubScr=(Object *)String(NULL,80), MUIA_Popstring_Button, PopButton(MUII_PopUp), MUIA_Popobject_Object, lv_PubScr=(Object *)ListviewObject, MUIA_Listview_Input, TRUE, MUIA_Listview_DoubleClick, TRUE, MUIA_Listview_List, ls_PubScr=(Object *)ListObject, MUIA_Frame, MUIV_Frame_InputList, MUIA_List_Active, MUIV_List_Active_Top, MUIA_List_SourceArray,&pubscr[0], End, End, End, Child, Label(GetStr(MO_WindowPos)), Child, ColGroup(2), Child, IN_posx=StringObject, StringFrame, MUIA_String_Accept , "0123456879", End, Child, IN_posy=StringObject, StringFrame, MUIA_String_Accept , "0123456879", End, End, Child, Label(GetStr(MO_WindowSiz)), Child, ColGroup(2), MUIA_Group_SameWidth, TRUE, Child, IN_sizx=StringObject, StringFrame, MUIA_String_Accept , "0123456879", End, Child, BT_Snap=SimpleButton(GetStr(MO_Snap)), End, Child, Label(GetStr(MO_BackgroundPic)), Child, ST_bg=PopaslObject, MUIA_Popstring_String, String(NULL,80), MUIA_Popstring_Button, PopButton(MUII_PopFile), ASLFO_TitleText , GetStr(MO_SelectBg), End, Child, Label(GetStr(MO_BackgroundCol)), Child, ColGroup(3),Child, HVSpace, Child, MN_Colors[0]=MakePen(), Child, HVSpace, End, Child, Label(GetStr(MO_BrightCol)), Child, ColGroup(3),Child, HVSpace, Child, MN_Colors[1]=MakePen(), Child, HVSpace, End, Child, Label(GetStr(MO_DarkCol)), Child, ColGroup(3),Child, HVSpace, Child, MN_Colors[2]=MakePen(), Child, HVSpace, End, Child, HVSpace, Child, HVSpace, End, End, End, Child, VGroup, Child, NewObject(CL_ChooseFields->mcc_Class,NULL,TAG_DONE), End, End, End, Child, HGroup, Child, BT_Save = (Object *)SimpleButton(GetStr(MO_Save)), Child, BT_Use = (Object *)SimpleButton(GetStr(MO_Use)), Child, BT_Test = (Object *)SimpleButton(GetStr(MO_Test)), Child, BT_Cancel = (Object *)SimpleButton(GetStr(MO_Cancel)), End, End, End) { data=INST_DATA(cl,obj); set(BT_Save ,MUIA_ShortHelp,GetStr(MH_Save)); set(BT_Use ,MUIA_ShortHelp,GetStr(MH_Use)); set(BT_Test ,MUIA_ShortHelp,GetStr(MH_Test)); set(BT_Cancel ,MUIA_ShortHelp,GetStr(MH_Cancel)); set(NB_mem ,MUIA_ShortHelp,GetStr(MH_MemRefresh)); set(NB_vol ,MUIA_ShortHelp,GetStr(MH_VolRefresh)); set(NB_wait ,MUIA_ShortHelp,GetStr(MH_Wait)); set(lv_Switch ,MUIA_ShortHelp,GetStr(MH_Flags)); set(PO_PubScr ,MUIA_ShortHelp,GetStr(MH_Public)); set(IN_posx ,MUIA_ShortHelp,GetStr(MH_PosX)); set(IN_posy ,MUIA_ShortHelp,GetStr(MH_PosY)); set(IN_sizx ,MUIA_ShortHelp,GetStr(MH_SizX)); set(BT_Snap ,MUIA_ShortHelp,GetStr(MH_Snap)); set(ST_bg ,MUIA_ShortHelp,GetStr(MH_BackgroundPic)); set(MN_Colors[0],MUIA_ShortHelp,GetStr(MH_BackgroundCol)); set(MN_Colors[1],MUIA_ShortHelp,GetStr(MH_BrightCol)); set(MN_Colors[2],MUIA_ShortHelp,GetStr(MH_DarkCol)); set(NB_col ,MUIA_ShortHelp,GetStr(MH_Colums)); set(NB_spcx ,MUIA_ShortHelp,GetStr(MH_SpaceX)); set(NB_spcy ,MUIA_ShortHelp,GetStr(MH_SpaceX)); set(NB_bordx ,MUIA_ShortHelp,GetStr(MH_BordX)); set(NB_bordy ,MUIA_ShortHelp,GetStr(MH_BordY)); DoMethod(BT_Snap ,MUIM_Notify,MUIA_Pressed ,FALSE,obj,1,Dis_ID_Snap); DoMethod(BT_Save ,MUIM_Notify,MUIA_Pressed ,FALSE,obj,2,Dis_ID_Save ,save_save); DoMethod(BT_Use ,MUIM_Notify,MUIA_Pressed ,FALSE,obj,2,Dis_ID_Save ,save_use ); DoMethod(BT_Test ,MUIM_Notify,MUIA_Pressed ,FALSE,obj,2,Dis_ID_Save ,save_test); DoMethod(lv_PubScr,MUIM_Notify,MUIA_Listview_DoubleClick ,TRUE ,obj,2,Dis_ID_DoubleClick1,data); DoMethod(lv_Switch,MUIM_Notify,MUIA_Listview_DoubleClick ,TRUE ,obj,1,Dis_ID_DoubleClick2); DoMethod(obj,MUIM_Notify,MUIA_Window_MenuAction,MEN_SAVE,obj,2,Dis_ID_Save,save_file); DoMethod(obj,MUIM_Notify,MUIA_Window_MenuAction,MEN_OPEN,obj,2,Dis_ID_Load,load_file); DoMethod(BT_Cancel,MUIM_Notify,MUIA_Pressed ,FALSE,obj,2,Dis_ID_Save ,save_cancel); for(i=0;i<8;i++)DoMethod(ls_Switch,MUIM_List_InsertSingle,&switches[i],MUIV_List_Insert_Bottom); DoMethod(obj,Dis_ID_Load,load_standard); } return((ULONG)obj); } /// static __saveds __asm ULONG MainWindowDispatcher(__a0 struct IClass *cl,__a2 Object *obj,__a1 Msg msg) { switch (msg->MethodID) { case OM_NEW : return (MainWindow_New (cl,obj,(APTR)msg)); case Dis_ID_Finish : return (MainWindow_Finish (cl,obj,(APTR)msg)); case Dis_ID_DoubleClick1 : return (Dis_DoubleClick1 (cl,obj,(APTR)msg)); case Dis_ID_DoubleClick2 : return (Dis_DoubleClick2 (cl,obj,(APTR)msg)); case Dis_ID_Save : return (saveManager (cl,obj,(APTR)msg)); case Dis_ID_Snap : return (snapWindow (cl,obj,(APTR)msg)); case Dis_ID_Load : return (loadManager (cl,obj,(APTR)msg)); } return (DoSuperMethodA (cl,obj,(APTR)msg)); } /*************************************************/ /* Init all classes */ /*************************************************/ /// VOID ExitClasses(VOID) { if (CL_FieldsList ) MUI_DeleteCustomClass(CL_FieldsList); if (CL_ChooseFields) MUI_DeleteCustomClass(CL_ChooseFields); if (CL_MainWindow) MUI_DeleteCustomClass(CL_MainWindow); if (CL_Composer) MUI_DeleteCustomClass(CL_Composer); } BOOL InitClasses(VOID) { CL_MainWindow = MUI_CreateCustomClass(NULL,MUIC_Window ,NULL, sizeof(struct MainData) ,MainWindowDispatcher); CL_FieldsList = MUI_CreateCustomClass(NULL,MUIC_List ,NULL, sizeof(struct FieldsList_Data) ,FieldsList_Dispatcher); CL_ChooseFields = MUI_CreateCustomClass(NULL,MUIC_Group ,NULL, sizeof(struct ChooseFields_Data) ,ChooseFields_Dispatcher); CL_Composer = MUI_CreateCustomClass(NULL,MUIC_Window ,NULL, sizeof(struct Composer_Data) ,ComposerDispatcher); if ( CL_FieldsList && CL_ChooseFields && CL_MainWindow && CL_Composer ) return(TRUE); ExitClasses(); return(FALSE); } /// /*************************************************/ /* Main: MUIApplication and Aboutwindow */ /*************************************************/ /// #include <exec/tasks.h> #ifdef _DCC int brkfunc(void) { return(0); } #endif void LocalizeSwitches(struct ls_layout *ll) { int i; for (;ll->entry_desc!=NULL;ll++) { ll->entry_desc=GetStr((int)ll->entry_desc); for(i=0;i<6;i++) { if (ll->entry[i]!=NULL) ll->entry[i]=GetStr((int)ll->entry[i]); else ll->entry[i]=" "; } } } BOOL quit_not; int main(int argc, char *argv[]) { Object *app,*window; struct Task *me; if (MUIMasterBase = OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN)) { if(me= FindTask(NULL)) { if((me->tc_SPUpper-me->tc_SPLower)>8000) { if(maindata=(struct tm_data *)AllocVec(sizeof(struct tm_data),MEMF_CLEAR)) { if(InitTestSettings()) { InitClasses(); InitLocale(); LocalizeNewMenu(MenuData1); LocalizeNewMenu(CmpMenuData); LocalizeSwitches(switches); LocalizeStringArray(gau_types); LocalizeStringArray(types); LocalizeStringArray(indent); LocalizeStringArray(mainlister); LocalizeStringArray(sublister); LocalizeStringArray(regcomposer); strcpy(&default_gauge.label[0],GetStr(MDef_Label)); strcpy(&default_gauge.format[0],GetStr(MDef_fmt)); strcpy(&default_gauge.expansion[0],GetStr(MDef_Device)); app = ApplicationObject, MUIA_Application_Title , "TinyMeterPrefs V4.10", MUIA_Application_Version , "$VER: TinyMeterPrefs V4.10 (05.02.95)", MUIA_Application_Copyright , "©1994-95, Tinic Urou", MUIA_Application_Author , "Tinic Urou", MUIA_Application_Description, GetStr(MA_Description), MUIA_Application_Base , "TMPREFS", MUIA_Application_HelpFile , "HELP:TinyMeter.guide", MUIA_Application_Menustrip , MN_Main = MUI_MakeObject(MUIO_MenustripNM,MenuData1,0), SubWindow , window = (Object *)NewObject(CL_MainWindow->mcc_Class,NULL,TAG_DONE), SubWindow , WI_About = WindowObject, MUIA_Window_Title, GetStr(MA_About_Title), MUIA_Window_ID , MAKE_ID('T','M','A','B'), WindowContents, VGroup, ButtonFrame, Child, BodychunkObject, MUIA_FixWidth , ABOUT_WIDTH , MUIA_FixHeight , ABOUT_HEIGHT, MUIA_Bitmap_Width , ABOUT_WIDTH , MUIA_Bitmap_Height , ABOUT_HEIGHT, MUIA_Bodychunk_Depth , ABOUT_DEPTH , MUIA_Bodychunk_Body , (UBYTE *)about_body, MUIA_Bodychunk_Compression, ABOUT_COMPRESSION, MUIA_Bodychunk_Masking , ABOUT_MASKING, MUIA_Bitmap_SourceColors , (ULONG *)about_colors, MUIA_Bitmap_Transparent , 0, End, End, End, SubWindow , WI_HelpFmt = WindowObject, MUIA_Window_Title, GetStr(MH_FormatHelp), MUIA_Window_ID , MAKE_ID('T','H','L','P'), WindowContents, VGroup, Child, ScrollgroupObject, MUIA_Scrollgroup_Contents, VirtgroupObject,TextFrame, Child, TextObject, MUIA_Text_Contents, GetStr(MOH_Format), End, End, End, End, End, SubWindow , WI_HelpClock = WindowObject, MUIA_Window_Title, GetStr(MH_ClockHelp), MUIA_Window_ID , MAKE_ID('T','H','L','P'), WindowContents, VGroup, Child, ScrollgroupObject, MUIA_Scrollgroup_Contents, VirtgroupObject,TextFrame, Child, TextObject, MUIA_Text_Contents, GetStr(MOH_Clock), End, End, End, End, End, End; if(app) { DoMethod(app ,MUIM_Notify,MUIA_Application_MenuAction,MEN_QUIT ,app ,2,MUIM_Application_ReturnID ,MUIV_Application_ReturnID_Quit); DoMethod(app ,MUIM_Notify,MUIA_Application_MenuAction,MEN_ABOUT,WI_About,3,MUIM_Set ,MUIA_Window_Open,TRUE); DoMethod(WI_About ,MUIM_Notify,MUIA_Window_CloseRequest ,TRUE ,WI_About,3,MUIM_Set ,MUIA_Window_Open,FALSE); DoMethod(WI_HelpFmt ,MUIM_Notify,MUIA_Window_CloseRequest ,TRUE ,WI_HelpFmt,3,MUIM_Set ,MUIA_Window_Open,FALSE); DoMethod(WI_HelpClock,MUIM_Notify,MUIA_Window_CloseRequest ,TRUE ,WI_HelpClock,3,MUIM_Set ,MUIA_Window_Open,FALSE); DoMethod(window,MUIM_Notify,MUIA_Window_CloseRequest,TRUE, app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit); set(window,MUIA_Window_Open,TRUE); { ULONG sigs = 0; while (DoMethod(app,MUIM_Application_NewInput,&sigs) != MUIV_Application_ReturnID_Quit) { if (sigs) { sigs = Wait(sigs | SIGBREAKF_CTRL_C); if (sigs & SIGBREAKF_CTRL_C) break; } } } MUI_DisposeObject(app); } ExitLocale(); ExitClasses(); FreeTestSettings(); } if(maindata->set)FreeVec(maindata->set); FreeVec(maindata); } } else MUI_RequestA(NULL,NULL,0,"Early Startup","OK","Stacksize too small!\n\nA minimum of 8192 bytes is needed.",NULL); } CloseLibrary(MUIMasterBase); } quit_not=FALSE; return(0); } int wbmain(struct WBStartup *wb_startup) { return(main(0, (char **)wb_startup)); } ///