home *** CD-ROM | disk | FTP | other *** search
- #include <clib/alib_stdio_protos.h>
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/alib_protos.h>
- #include <clib/diskfont_protos.h>
- #include <clib/timer_protos.h>
- #include <clib/utility_protos.h>
-
- #include <dos/dos.h>
- #include <dos/notify.h>
- #include <dos/datetime.h>
- #include <dos/dostags.h>
- #include <devices/timer.h>
-
- #include <exec/types.h>
- #include <exec/memory.h>
-
- #include <graphics/gfxmacros.h>
-
- #include <intuition/intuitionbase.h>
- #include <intuition/intuition.h>
- #include <intuition/gadgetclass.h>
-
- #include <libraries/gadtools.h>
- #include <clib/gadtools_protos.h>
-
- #include <string.h>
- #include <stdlib.h>
-
- #include <workbench/workbench.h>
-
- #define PREFDIR "ENV:Sys"
- #define GAD_AB 1
- #define GAD_DELAY 2
- #define GAD_QUIT 3
- #define GAD_FOR 4
- #define GAD_BAC 5
- #define GAD_NEWL 6
- #define GAD_TIME 7
- #define GAD_HIDE 8
- #define GAD_HOUR 9
- #define GAD_MINS 10
- #define GAD_ALARM 11
- #define GAD_USE 12
- #define GAD_COM 13
- #define GAD_SCREEN 15
- #define GAD_DATE 16
- #define GAD_CHIME 17
- #define GAD_MEM 22
- #define GAD_WTYPE 23
-
- static UBYTE *VersTag = "\0$VER: TBC 39.51 (12.6.94)" ;
- static char *sc_title = "TBC v2.52 by DM Hollway 1994" ;
- struct NotifyRequest *notifyrequest = NULL ;
- struct TextFont *myfont = NULL ;
- struct TextAttr myattr ;
- struct IntuitionBase *IntuitionBase = NULL ;
- struct GfxBase *GfxBase = NULL ;
- struct Library *DiskfontBase = NULL ;
- struct Library *UtilityBase = NULL ;
- struct Library *TimerBase = NULL ;
- struct Library *GadToolsBase = NULL;
- struct Library *IconBase = NULL ;
- struct Gadget *glistprefs = NULL, *foregad=NULL, *backgad = NULL, *newgad = NULL ;
- struct Gadget *alarmgad, *mingad, *hourgad, *comgad, *warngad, *memgad ;
- struct RastPort *myrast ;
- struct Window *cwin = NULL, *ConfWin=NULL ;
- struct Screen *mysc = NULL, *tempsc ;
- struct DrawInfo *drawinfo = NULL ;
- struct ClockData *clockdata =NULL ;
- struct timerequest *tr = NULL ;
- struct timeval *tv = NULL ;
- struct MsgPort *timerport ;
- struct Message *timermsg ;
- struct IntuiMessage *msg ;
- struct Requester wreq, areq ;
- struct EasyStruct aboutreq =
- {
- sizeof(struct EasyStruct), 0, "About TBC",
- "TBC - The Title Bar Clock\nby David M Hollway in 1994\n(dmh11@tower.york.ac.uk)\n\nGIFTWARE\nAMIGA - Others follow, we lead!",
- "OK",
- } ;
- struct EasyStruct memreq =
- {
- sizeof(struct EasyStruct), 0, "TBC Warning",
- "Low Memory!",
- "OK",
- } ;
-
- struct TextAttr Topaz80 =
- {
- "topaz.font",
- 8,
- 0,
- 0,
- };
-
- extern struct Library *DOSBase ;
-
- struct Gadget *ConfigGads(struct Gadget **glistptr, void *vi, struct Screen *) ;
- void bailout(int err, char *message) ;
- int winloop(void) ;
- void ConfigWin(struct Window *, struct Screen *) ;
- void SetData(struct Window *) ;
- void time(void) ;
- LONG beginCommand(UBYTE *) ;
-
- long delay=1, backpen=1, forepen=0, blockpen=1, detailpen=0, depth, timeout=200 ;
- int termlevel=0, hour=0, min=0, sec=0, chime=0, offsetY = 0, command=0 ;
- long alarm_hour=12, alarm_min=0, alarm_state=0, lastmin=0, warn ;
- long format, date=0, winWidth, cwidth, off, delta, freemem=200 ;
- char com[66] ;
- BOOL done=FALSE, newlook=TRUE ;
- BOOL pubscreen=TRUE, secs=FALSE, s_change=FALSE, pm, memwatch=FALSE ;
- UBYTE *filename ;
- LONG signum, code ;
- ULONG signals, WA_Sc, IBase ;
- char *hourstr=" ", *minstr=" ", *secstr = " " ;
- STRPTR types[]={"6:34 pm", "6:34:00", "18:34", "18:34:00", NULL,} ;
- STRPTR dates[]={"No Date", "25.12.94", "12.25.94", NULL,} ;
- STRPTR alarms[]={"No Alarm", "Flash", "Command", "Do Both", NULL,} ;
- STRPTR warns[]={"ignore it", "flash screen", "show requester", "show alert", NULL,} ;
- STRPTR *tooltypes ;
-
- void main (int argc, char *argv[])
- {
- if (DOSBase->lib_Version < 37)
- bailout (20,"Need Kickstart v37 (2.04) or greater!") ;
-
- sprintf(com, "%s","") ;
-
- DiskfontBase = OpenLibrary("diskfont.library", 37);
- GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 37);
- IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 37);
- GadToolsBase = OpenLibrary("gadtools.library", 37) ;
- UtilityBase = OpenLibrary("utility.library", 37) ;
- if (!(DiskfontBase&&GfxBase&&IntuitionBase&&GadToolsBase&&UtilityBase))
- bailout(20, "Couldn't open v37+ of a library!") ;
-
- if (!(timerport = CreatePort(0,0)))
- bailout(20,"Can't create timer port!") ;
-
- if (!(tr = (struct timerequest *)CreateExtIO(timerport,
- sizeof(struct timerequest))))
- bailout(20,"Can't CreateExtIO") ;
-
- if (!(tv = AllocMem(sizeof(struct timeval), MEMF_CLEAR)))
- bailout(20,"Low mem!") ;
-
- if (!(clockdata = AllocMem(sizeof(struct ClockData), MEMF_CLEAR)))
- bailout(20,"Low mem!") ;
-
- if (OpenDevice("timer.device", UNIT_VBLANK, (struct IORequest *)tr, 0L) )
- bailout(20,"Can't open timer.device") ;
-
- TimerBase = (struct Library *)tr->tr_node.io_Device ;
-
- if (!(notifyrequest = AllocMem(sizeof(struct NotifyRequest), MEMF_CLEAR)))
- bailout(20,"Low memory!") ;
-
- if ((signum = AllocSignal(-1L)) == -1)
- bailout(20,"Can't alloc signal") ;
-
- filename = PREFDIR ;
- notifyrequest->nr_Name=filename ;
- notifyrequest->nr_Flags = NRF_SEND_SIGNAL ;
- notifyrequest->nr_stuff.nr_Signal.nr_Task = (struct Task *)FindTask(NULL) ;
- notifyrequest->nr_stuff.nr_Signal.nr_SignalNum = signum ;
-
- if (IconBase = OpenLibrary("icon.library",37L))
- {
- tooltypes = ArgArrayInit(argc, argv) ;
- forepen = (LONG)ArgInt(tooltypes, "FOREPEN", 0) ;
- if (forepen < 0) forepen = 0 ;
-
- backpen = (LONG)ArgInt(tooltypes, "BACKPEN", 1) ;
- if (backpen < 0) backpen = 1 ;
-
- format = (LONG)ArgInt(tooltypes, "FORMAT", 0) ;
- if ((format<0)||(format>3)) format = 0 ;
-
- timeout = 50 * (LONG)ArgInt(tooltypes, "IPREFSWAIT", 5) ;
- if (timeout < 50) timeout = 50 ;
-
- if (ArgInt(tooltypes, "NONEWLOOK",0)>0) newlook = FALSE ;
-
- delay = (LONG)ArgInt(tooltypes, "DELAY", 1) ;
- if (delay < 1) delay = 1 ;
-
- chime = (LONG)ArgInt(tooltypes, "CHIME", 0) ;
- if (chime < 0) chime = 0 ;
-
- alarm_hour = (LONG)ArgInt(tooltypes, "ALARMHOUR", 12) ;
- if ((alarm_hour < 0)||(alarm_hour > 23)) alarm_hour = 12 ;
-
- alarm_min = (LONG)ArgInt(tooltypes, "ALARMMIN", 0) ;
- if ((alarm_min < 0)||(alarm_min > 59)) alarm_min = 0 ;
-
- command=ArgInt(tooltypes, "ALARM", 0) ;
- if ((command>0)&&(command<4)) alarm_state=TRUE ;
- else command = 0 ;
-
- if (ArgInt(tooltypes, "SCREENLEAP", 0) > 0) pubscreen = FALSE ;
-
- date = (LONG)ArgInt(tooltypes, "DATE", 0) ;
- if ((date<0)||(date>2)) date = 0 ;
-
- if (ArgString(tooltypes, "ALARMRUN",NULL))
- {
- sprintf(com, "%s", ArgString(tooltypes, "ALARMRUN", NULL)) ;
- }
- freemem = (LONG)ArgInt(tooltypes, "MEMWARN", 200) ;
- if (freemem < 1) freemem = 200 ;
- warn = (LONG)ArgInt(tooltypes, "WARNTYPE", 0) ;
- if (warn < 1) warn = 0 ;
-
-
- ArgArrayDone() ;
- CloseLibrary(IconBase) ;
- }
- secs=((format==0)||(format==2))?(FALSE):(TRUE);
-
- while(termlevel < 3)
- {
- termlevel=winloop() ;
- if (termlevel==2) Delay(50) ;
- if (termlevel==1)
- {
- Delay(timeout) ;
- while (!(mysc=LockPubScreen(NULL))) {Delay(50) ;}
- UnlockPubScreen(NULL, mysc) ;
- }
- }
- bailout(0,NULL) ;
- }
-
- void clear_IO(void)
- {
- AbortIO((struct IORequest *)tr) ;
- WaitIO((struct IORequest *)tr) ;
- }
-
- void DrawBevels(struct Window *ConfWin, void *vi)
- {
- DrawBevelBox(ConfWin->RPort, 10, (ConfWin->BorderTop)+2, 220, 101,
- GT_VisualInfo, vi, GTBB_Recessed, TRUE,
- GTBB_FrameType, BBFT_RIDGE, TAG_DONE) ;
- DrawBevelBox(ConfWin->RPort, 233, (ConfWin->BorderTop)+38, 217, 65,
- GT_VisualInfo, vi, GTBB_Recessed, TRUE,
- GTBB_FrameType, BBFT_RIDGE, TAG_DONE) ;
- DrawBevelBox(ConfWin->RPort, 233, (ConfWin->BorderTop)+2, 217, 34,
- GT_VisualInfo, vi, GTBB_Recessed, TRUE,
- GTBB_FrameType, BBFT_RIDGE, TAG_DONE) ;
- DrawBevelBox(ConfWin->RPort, 10, (ConfWin->BorderTop)+105, 440, 22,
- GT_VisualInfo, vi, GTBB_Recessed, TRUE,
- GTBB_FrameType, BBFT_RIDGE, TAG_DONE) ;
- DrawBevelBox(ConfWin->RPort, 10, (ConfWin->BorderTop)+129, 440, 22,
- GT_VisualInfo, vi, GTBB_Recessed, TRUE,
- GTBB_FrameType, BBFT_RIDGE, TAG_DONE) ;
-
- }
-
- void ConfigWin(struct Window *win, struct Screen *confsc)
- {
- void *vi ;
- int aok=1 ;
- struct IntuiMessage *imsg;
- struct Gadget *gad=NULL;
- ULONG imsgClass=0, confsig ;
- UWORD imsgCode=0;
-
- termlevel=0 ;
- if (!(vi = GetVisualInfo(confsc, TAG_DONE)))
- return ;
-
- if (!(ConfigGads(&glistprefs, vi, confsc)))
- {FreeVisualInfo(vi) ;
- return ;
- }
-
- ConfWin = OpenWindowTags(NULL,
- WA_Left, (confsc->Width)-460, WA_Top, (confsc->BarHeight)+1,
- WA_Width, 460, WA_InnerHeight, 169,
- WA_ScreenTitle, sc_title,
- WA_DragBar, TRUE, WA_CloseGadget, TRUE,
- WA_SimpleRefresh, TRUE, WA_RMBTrap, TRUE,
- WA_IDCMP, REFRESHWINDOW|GADGETUP|CLOSEWINDOW|
- SLIDERIDCMP,
- WA_DepthGadget, TRUE, WA_Gadgets, glistprefs,
- WA_Sc, confsc, WA_Activate, TRUE,
- WA_SizeGadget, FALSE, WA_Title, "TBC Configuration",
- TAG_DONE) ;
-
- if (!(ConfWin))
- {
- FreeVisualInfo(vi) ;
- FreeGadgets(glistprefs) ;
- return ;
- }
-
- DrawBevels(ConfWin, vi) ;
-
- GT_RefreshWindow(ConfWin, NULL);
-
- while (aok==1)
- {
- confsig = Wait( (1L<<ConfWin->UserPort->mp_SigBit) |
- (1L<<timerport->mp_SigBit) ) ;
-
- if (confsig & (1L<<ConfWin->UserPort->mp_SigBit))
- {
- while ((aok==1) && (imsg = GT_GetIMsg(ConfWin->UserPort)))
- {
- imsgClass = imsg->Class;
- imsgCode = imsg->Code;
- gad = (struct Gadget *)imsg->IAddress;
- GT_ReplyIMsg(imsg);
- switch (imsgClass)
- {
- case CLOSEWINDOW:
- aok=0 ;
- break ;
- case GADGETUP:
- switch(gad->GadgetID)
- {
- case GAD_DELAY:
- delay=((struct StringInfo *)gad->SpecialInfo)->LongInt ;
- if (delay <= 0) delay = 1 ;
- clear_IO() ;
- time() ;
- break ;
- case GAD_AB:
- InitRequester(&areq) ;
- if (Request(&areq,ConfWin))
- {
- EasyRequest(ConfWin, &aboutreq, NULL) ;
- }
- EndRequest(&areq, ConfWin) ;
- break ;
- case GAD_HIDE:
- termlevel = 1 ;
- aok=0 ;
- break ;
- case GAD_QUIT:
- termlevel=3 ;
- aok=0 ;
- break ;
- case GAD_FOR:
- forepen=imsgCode ;
- case GAD_BAC:
- if (gad->GadgetID==GAD_BAC) backpen=imsgCode ;
- GT_SetGadgetAttrs(newgad, ConfWin, NULL,
- GTCB_Checked, FALSE, TAG_END) ;
- newlook=FALSE ;
- clear_IO() ;
- SetData(win) ;
- break ;
- case GAD_NEWL:
- newlook=(gad->Flags & SELECTED) ;
- if (newlook)
- {
- backpen=blockpen ;
- forepen=detailpen ;
- GT_SetGadgetAttrs(foregad, ConfWin, NULL,
- GTPA_Color, forepen, TAG_END) ;
- GT_SetGadgetAttrs(backgad, ConfWin, NULL,
- GTPA_Color, backpen, TAG_END) ;
- clear_IO() ;
- SetData(win) ;
- }
- break ;
- case GAD_TIME:
- format = imsgCode ;
- secs=((format==0)||(format==2))?(FALSE):(TRUE);
- case GAD_DATE:
- if (gad->GadgetID==GAD_DATE) date = imsgCode ;
- clear_IO() ;
- SetData(win) ;
- break ;
-
- case GAD_ALARM:
- command=imsgCode ;
- if (command>0) alarm_state=1 ; else alarm_state=0 ;
- GT_SetGadgetAttrs(hourgad, ConfWin, NULL,
- GA_Disabled, (alarm_state==0), TAG_END) ;
- GT_SetGadgetAttrs(mingad, ConfWin, NULL,
- GA_Disabled, (alarm_state==0), TAG_END) ;
- GT_SetGadgetAttrs(comgad, ConfWin, NULL,
- GA_Disabled, (command<2), TAG_END) ;
- break ;
- case GAD_COM:
- sprintf(com,"%s",((struct StringInfo *)gad->SpecialInfo)->Buffer) ;
- break ;
- case GAD_SCREEN:
- pubscreen=!(gad->Flags & SELECTED) ;
- if (pubscreen) s_change = TRUE ;
- break ;
- case GAD_USE:
- aok=0 ;
- break;
- case GAD_CHIME:
- chime=((struct StringInfo *)gad->SpecialInfo)->LongInt ;
- if (chime <= 0) chime = 0 ;
- lastmin=-1 ;
- break ;
- case GAD_MEM:
- freemem=((struct StringInfo *)gad->SpecialInfo)->LongInt ;
- break ;
- case GAD_WTYPE:
- warn = imsgCode ;
- break ;
- }
- break ;
-
- case MOUSEMOVE:
- switch(gad->GadgetID)
- {
- case GAD_HOUR:
- alarm_hour = imsgCode ;
- break ;
-
- case GAD_MINS:
- alarm_min = imsgCode ;
- break ;
- }
- break ;
-
- case REFRESHWINDOW:
- GT_BeginRefresh(ConfWin);
- DrawBevels(ConfWin, vi) ;
- GT_EndRefresh(ConfWin, TRUE);
- break;
- }
- }
- }
- if (confsig & (1L<<timerport->mp_SigBit))
- {
- timermsg = GetMsg(timerport);
- time() ;
- }
-
- }
- sprintf(com,"%s",((struct StringInfo *)comgad->SpecialInfo)->Buffer) ;
- freemem=((struct StringInfo *)memgad->SpecialInfo)->LongInt ;
- CloseWindow(ConfWin);
- ConfWin=NULL ;
- FreeGadgets(glistprefs) ;
- FreeVisualInfo(vi) ;
- }
-
-
- int winloop(void)
- {
- termlevel= 0 ;
- done = FALSE ;
- if ((StartNotify(notifyrequest)) != DOSTRUE)
- bailout(20,"Can't StartNotify()!") ;
-
- if (pubscreen) if (!(mysc=LockPubScreen(NULL)))
- {
- EndNotify(notifyrequest) ;
- bailout(20,"Couldn't lock public screen!") ;
- }
- if (!pubscreen)
- {IBase = LockIBase(0) ;
- mysc=IntuitionBase->ActiveScreen ;
- UnlockIBase(IBase) ;}
- cwidth = TextLength(&mysc->RastPort, ":", 1) ;
-
- drawinfo=GetScreenDrawInfo(mysc) ;
- depth=drawinfo->dri_Depth ;
-
- if ((drawinfo->dri_Version) > 1)
- {
- blockpen = drawinfo->dri_Pens[BARBLOCKPEN] ;
- detailpen = drawinfo->dri_Pens[BARDETAILPEN] ;
- }
- FreeScreenDrawInfo(mysc, drawinfo) ;
-
- if (newlook)
- {
- backpen = blockpen ;
- forepen = detailpen ;
- }
- myattr.ta_Name = mysc->Font->ta_Name ;
- myattr.ta_YSize = mysc->Font->ta_YSize ;
- myattr.ta_Style = mysc->Font->ta_Style ;
- myattr.ta_Flags = mysc->Font->ta_Flags ;
- myfont = OpenFont(&myattr) ;
- winWidth = 3+TextLength(&mysc->RastPort, "88:88:mm", 8) ;
- offsetY = (myfont->tf_Baseline)+1 ;
- WA_Sc = (pubscreen)?(WA_PubScreen):(WA_CustomScreen) ;
-
- cwin=OpenWindowTags(NULL,
- WA_Left, ((mysc->Width) - winWidth)-23, WA_Top, 0, WA_Width, winWidth,
- WA_Height, (mysc->BarHeight), WA_IDCMP, IDCMP_MOUSEBUTTONS,
- WA_DetailPen, forepen, WA_BlockPen, backpen,
- WA_ScreenTitle, sc_title,
- WA_DragBar, FALSE, WA_CloseGadget, FALSE, WA_Activate, FALSE,
- WA_SmartRefresh, TRUE, WA_DepthGadget, FALSE,
- WA_Sc, mysc, WA_RMBTrap, TRUE,
- WA_Borderless, TRUE, TAG_END) ;
-
- if (pubscreen) UnlockPubScreen(NULL, mysc) ;
- if (!(cwin)) return(3) ;
- myrast = cwin->RPort ;
- SetFont(myrast, myfont) ;
- SetData(cwin) ;
-
- while(!done)
- {
- signals = Wait( (1L<<signum) |
- (1L<<cwin->UserPort->mp_SigBit) |
- (1L<<timerport->mp_SigBit) ) ;
-
- if (signals & (1L<<cwin->UserPort->mp_SigBit))
- {
- while (msg = (struct IntuiMessage *)GetMsg(cwin->UserPort))
- {
- code = msg->Code ;
- ReplyMsg((struct Message *)msg) ;
-
- if (code == SELECTDOWN)
- if (alarm_state==2) alarm_state=0 ;
- else
- {
- InitRequester(&wreq) ;
- if (Request(&wreq,cwin))
- {
- s_change = FALSE ;
- ConfigWin(cwin, mysc) ;
- if ((s_change == TRUE)&&(termlevel==0)) termlevel=2 ;
- }
- EndRequest(&wreq, cwin) ;
- if (termlevel >0) done=TRUE ;
- }
- }
- }
-
- if (signals & (1L<<signum))
- {
- done = TRUE ;
- termlevel = 1 ;
- }
- if (signals & (1L<<timerport->mp_SigBit))
- {
- while (timermsg = GetMsg(timerport))
- {
- time() ;
- if (!pubscreen)
- {
- IBase = LockIBase(0) ;
- tempsc=IntuitionBase->ActiveScreen ;
- if ((mysc != tempsc)&&(tempsc->Width>600)&&(tempsc->Title))
- {termlevel=2 ;
- done = TRUE ;}
- UnlockIBase(IBase) ;
- }
- }
- }
- }
- clear_IO() ;
- EndNotify(notifyrequest) ;
- CloseFont(myfont) ;
- CloseWindow(cwin) ;
- return(termlevel) ;
- }
-
- void SetData(struct Window *win)
- {
- SetRast(myrast, backpen) ;
- SetBPen(myrast, backpen) ;
- if (format==2) delta=TextLength(&mysc->RastPort,"88:", 3) ;
- else delta = 2 ;
- time() ;
- }
-
- void time(void)
- {
- pm = FALSE ;
- GetSysTime(tv) ;
- Amiga2Date(tv->tv_secs, clockdata) ;
- hour = clockdata->hour ;
- min = clockdata->min ;
-
- if (warn >0)
- {
- if ((freemem*1000) > (AvailMem(MEMF_ANY)))
- {
- switch (warn)
- {
- case 1:
- DisplayBeep(NULL) ;
- break ;
- case 2:
- EasyRequest(cwin, &memreq, NULL) ;
- break;
- case 3:
- DisplayAlert(RECOVERY_ALERT, "\x00\xe0\x0e" "TBC reports low memory!" "\x00\x01" "\x00\xac\x19" "Press either mousebutton to continue" "\x00", 36) ;
- break ;
- }
- warn=0 ;
- if (ConfWin)
- {
- GT_SetGadgetAttrs(warngad, ConfWin, NULL, GTCY_Active, 0, TAG_END) ;
- }
- }
- }
-
- if (chime>0)
- if (((min%chime)==0)&&(min!=lastmin)) {lastmin=min ; DisplayBeep(NULL) ;}
-
- if (alarm_state==1)
- if ((hour==alarm_hour) && (min == alarm_min))
- {
- alarm_state = 2 ;
- if (command>1) beginCommand(com) ;
- }
-
- if (alarm_state == 2) if ((command==1)||(command==3)) DisplayBeep(NULL) ;
-
- SetAPen(myrast,forepen) ;
- sec = clockdata->sec ;
-
- if (date>0) SetRast(myrast, backpen) ;
-
- if ((sec%4==0)&&(date>0))
- {
- hour = clockdata->mday ;
- min = clockdata->month ;
- sprintf(secstr, "%ld.%ld.%ld",(date==1)?(hour):(min),(date==1)?(min):(hour),
- (clockdata->year)-1900) ;
- Move(myrast, 2, offsetY) ;
- Text(myrast, secstr, strlen(secstr)) ;
- }
- else
- {
- if (format < 2)
- {if (hour > 11) {pm=TRUE ; if (hour >12) hour = hour - 12 ;}
- if (hour < 1) hour = 12 ;}
-
- sprintf( hourstr, "%s%d ", (hour<10)?(" "):(""),hour) ;
- sprintf( minstr, "%02d ", min) ;
- switch (format)
- {
- case 0:
- sprintf( secstr, "%s ", (pm==TRUE) ? ("pm") : ("am")) ;
- break ;
- case 2:
- sprintf(secstr, " ") ;
- break ;
- case 1:
- case 3:
- sprintf( secstr, "%02d ", sec) ;
- break ;
- }
-
- off = delta + cwidth + TextLength(&mysc->RastPort, hourstr, 2) ;
-
- Move(myrast, delta, offsetY) ;
- Text(myrast, hourstr, 3) ;
-
- Move(myrast, off, offsetY) ;
- Text(myrast, minstr, 5) ;
-
- min=TextLength(&mysc->RastPort, minstr, 2) ;
- Move(myrast, off+cwidth+min, offsetY) ;
- Text(myrast, secstr, 5) ;
-
- SetAPen(myrast, (sec%2==0)?(forepen):(backpen)) ;
- Move (myrast, off-cwidth, offsetY) ;
- Text(myrast, ":", 1) ;
- Move (myrast, off + min, offsetY) ;
- if (secs) Text(myrast, ":", 1) ;
- }
-
- tr->tr_node.io_Command = TR_ADDREQUEST ;
- tr->tr_time.tv_secs = delay ;
- tr->tr_time.tv_micro = 0 ;
- SendIO((struct IORequest *)tr) ;
- }
-
- LONG beginCommand(UBYTE *comm)
- {
- UBYTE *autocon="CON:00/40/640/150/TBC Output/auto/close/wait";
- struct TagItem stags[5];
- LONG result = -2L;
- BPTR file;
-
- if(file = Open(autocon, MODE_OLDFILE))
- {
- stags[0].ti_Tag = SYS_Input;
- stags[0].ti_Data = file;
- stags[1].ti_Tag = SYS_Output;
- stags[1].ti_Data = NULL;
- stags[2].ti_Tag = SYS_Asynch;
- stags[2].ti_Data = TRUE;
- stags[3].ti_Tag = SYS_UserShell;
- stags[3].ti_Data = FALSE;
- stags[4].ti_Tag = TAG_DONE;
- result = System(comm, stags);
- if(result == -1L)
- {
- Close(file);
- }
- }
- return(result);
- }
-
-
- void bailout(int err, char *message)
- {
- if (message) printf("%s\n",message) ;
-
- if (signum)
- FreeSignal(signum) ;
-
- if (notifyrequest)
- FreeMem(notifyrequest, sizeof(struct NotifyRequest)) ;
-
- if (GadToolsBase)
- CloseLibrary(GadToolsBase) ;
-
- if (IntuitionBase)
- CloseLibrary((struct Library *)IntuitionBase) ;
-
- if (GfxBase)
- CloseLibrary((struct Library *)GfxBase) ;
-
- if (clockdata)
- FreeMem(clockdata, sizeof(struct ClockData)) ;
-
- if (tv)
- FreeMem(tv, sizeof(struct timeval)) ;
-
- if(tr)
- {
- CloseDevice((struct IORequest *)tr) ;
- DeleteExtIO((struct IORequest *)tr) ;
- DeletePort(timerport) ;
- }
-
- if (DiskfontBase)
- CloseLibrary(DiskfontBase) ;
- if (UtilityBase)
- CloseLibrary(UtilityBase) ;
-
- exit(err) ;
- }
-
- struct Gadget *ConfigGads(struct Gadget **glistptr, void *vi, struct Screen *confsc)
-
- {
- struct NewGadget ng;
- int toparea = (confsc->Font->ta_YSize)+(confsc->WBorTop)+1 ;
- struct Gadget *gad;
- gad = CreateContext(glistptr);
-
- ng.ng_TextAttr = &Topaz80;
- ng.ng_VisualInfo = vi;
- ng.ng_Flags = PLACETEXT_LEFT ;
-
- ng.ng_TopEdge = toparea+6 ;
- ng.ng_LeftEdge = 113 ;
- ng.ng_Width = 110 ;
- ng.ng_Height = 23 ;
- ng.ng_GadgetText = "Foreground:";
- ng.ng_GadgetID = GAD_FOR ;
- foregad = gad = CreateGadget(PALETTE_KIND, gad, &ng, GTPA_Depth, depth,
- GTPA_Color, forepen, GTPA_IndicatorWidth, 20, TAG_DONE) ;
-
- ng.ng_TopEdge += 24 ;
- ng.ng_GadgetText = "Background:";
- ng.ng_GadgetID = GAD_BAC ;
- backgad = gad = CreateGadget(PALETTE_KIND, gad, &ng, GTPA_Depth, depth,
- GTPA_Color, backpen, GTPA_IndicatorWidth, 20, TAG_DONE) ;
-
- ng.ng_TopEdge += 26 ;
- ng.ng_Height = 14 ;
- ng.ng_GadgetText = "Use Pens:";
- ng.ng_GadgetID = GAD_NEWL ;
- newgad = gad = CreateGadget(CHECKBOX_KIND, gad, &ng, GTCB_Checked, newlook,
- TAG_DONE) ;
-
- ng.ng_TopEdge += 14 ;
- ng.ng_GadgetText = "Time:" ;
- ng.ng_GadgetID = GAD_TIME ;
- gad = CreateGadget(CYCLE_KIND, gad, &ng, GTCY_Labels, types,
- GTCY_Active, format, TAG_DONE) ;
- ng.ng_TopEdge += 15 ;
- ng.ng_GadgetText = "Date:" ;
- ng.ng_GadgetID = GAD_DATE ;
- gad = CreateGadget(CYCLE_KIND, gad, &ng, GTCY_Labels, dates,
- GTCY_Active, date, TAG_DONE) ;
-
- ng.ng_TopEdge = toparea+6 ;
- ng.ng_LeftEdge = 384 ;
- ng.ng_Width = 40 ;
- ng.ng_GadgetText = "Update (seconds):";
- ng.ng_GadgetID = GAD_DELAY ;
- gad = CreateGadget(INTEGER_KIND, gad, &ng, GTIN_Number, delay,
- GTIN_MaxChars, 2, TAG_DONE) ;
-
- ng.ng_TopEdge += 15 ;
- ng.ng_Height = 13 ;
- ng.ng_GadgetText = "Leap (danger!):";
- ng.ng_GadgetID = GAD_SCREEN ;
- gad = CreateGadget(CHECKBOX_KIND, gad, &ng,
- GTCB_Checked, !(pubscreen), TAG_DONE) ;
-
- ng.ng_TopEdge += 21 ;
- ng.ng_LeftEdge = 336 ;
- ng.ng_Width = 82 ;
- ng.ng_GadgetText = "Alarm Hour:";
- ng.ng_GadgetID = GAD_HOUR ;
- hourgad = gad = CreateGadget(SLIDER_KIND, gad, &ng,
- GTSL_LevelFormat, "%02ld", GTSL_MaxLevelLen, 2,
- GTSL_LevelPlace, PLACETEXT_RIGHT, GTSL_Min, 0,
- GTSL_Max, 23, GA_RelVerify, TRUE, PGA_Freedom,
- LORIENT_HORIZ, GA_Disabled, (alarm_state==0),
- GTSL_Level, alarm_hour, TAG_DONE) ;
-
- ng.ng_TopEdge += 14 ;
- ng.ng_GadgetText = "Alarm Mins:";
- ng.ng_GadgetID = GAD_MINS ;
- mingad = gad = CreateGadget(SLIDER_KIND, gad, &ng,
- GTSL_LevelFormat, "%02ld", GTSL_MaxLevelLen, 2,
- GTSL_LevelPlace, PLACETEXT_RIGHT, GTSL_Min, 0,
- GTSL_Max, 59, GA_RelVerify, TRUE, PGA_Freedom,
- LORIENT_HORIZ, GA_Disabled, (alarm_state==0),
- GTSL_Level, alarm_min, TAG_DONE) ;
-
- ng.ng_TopEdge += 14 ;
- ng.ng_Width = 40 ;
- ng.ng_Height = 14 ;
- ng.ng_GadgetText = "Chime each:";
- ng.ng_GadgetID = GAD_CHIME ;
- gad = CreateGadget(INTEGER_KIND, gad, &ng, GTIN_Number, chime,
- GTIN_MaxChars, 2, TAG_DONE) ;
-
- ng.ng_TopEdge += 15 ;
- ng.ng_Width = 104 ;
- ng.ng_GadgetText = "Alarm:";
- ng.ng_GadgetID = GAD_ALARM ;
- alarmgad = gad = CreateGadget(CYCLE_KIND, gad, &ng,
- GTCY_Labels, alarms, GTCY_Active, command, TAG_DONE) ;
-
- ng.ng_TopEdge += 24 ;
- ng.ng_LeftEdge = 89 ;
- ng.ng_Width = 351 ;
- ng.ng_GadgetText = "Command:" ;
- ng.ng_GadgetID = GAD_COM ;
- comgad = gad = CreateGadget(STRING_KIND, gad, &ng, GTST_String, com,
- GTST_MaxChars, 64, GA_Disabled, (command<2),
- TAG_DONE) ;
-
- ng.ng_LeftEdge = 217 ;
- ng.ng_TopEdge += 24 ;
- ng.ng_Width = 55 ;
- ng.ng_GadgetText = "If free mem is less than" ;
- ng.ng_GadgetID = GAD_MEM ;
- memgad = gad = CreateGadget(INTEGER_KIND, gad, &ng, GTIN_Number, freemem,
- GTIN_MaxChars, 5, TAG_DONE) ;
-
- ng.ng_LeftEdge += 83 ;
- ng.ng_Width = 140 ;
- ng.ng_GadgetText = "K," ;
- ng.ng_GadgetID = GAD_WTYPE ;
- warngad = gad = CreateGadget(CYCLE_KIND, gad, &ng,
- GTCY_Labels, warns, GTCY_Active, warn, TAG_DONE) ;
-
- ng.ng_TopEdge += 20 ;
- ng.ng_LeftEdge = 10 ;
- ng.ng_Width = 109 ;
- ng.ng_GadgetText = "Use";
- ng.ng_Flags = PLACETEXT_IN ;
- ng.ng_GadgetID = GAD_USE ;
- gad = CreateGadget(BUTTON_KIND, gad, &ng, TAG_DONE) ;
-
- ng.ng_LeftEdge += 110 ;
- ng.ng_GadgetText = "Hide";
- ng.ng_GadgetID = GAD_HIDE ;
- gad = CreateGadget(BUTTON_KIND, gad, &ng, TAG_DONE) ;
-
- ng.ng_LeftEdge += 110 ;
- ng.ng_GadgetText = "About";
- ng.ng_GadgetID = GAD_AB ;
- gad = CreateGadget(BUTTON_KIND, gad, &ng, TAG_DONE) ;
-
- ng.ng_LeftEdge += 110 ;
- ng.ng_GadgetText = "Quit";
- ng.ng_GadgetID = GAD_QUIT ;
- gad = CreateGadget(BUTTON_KIND, gad, &ng, TAG_DONE) ;
-
-
- return(gad) ;
- }
-