-- /ivy/binding/calendar/calSupport.mesa -- Last edited by: Binding, July 21, 1984 8:47:33 am PDT DIRECTORY Buttons USING [ Button], BasicTime USING [ GMT], Calendar USING [ ZoomLevel, Date, Years, Months, Days, Weekdays], CalStorage USING [ Mode], Hickory USING [ EventList, RepetitionType], Icons USING [ IconFlavor], Menus USING [ Menu, MenuProc], Rope USING [ ROPE], ViewerClasses USING [ Viewer] ; CalSupport: CEDAR DEFINITIONS = BEGIN OPEN Hickory, Calendar; <> RowHeight: CARDINAL; CharWidth: CARDINAL = 9; -- width allocated for one char FormWidth: CARDINAL; -- ViewerSpecs.openLeftWidth FormHeight: CARDINAL; -- ViewerSpecs.openLeftTopY - ViewerSpecs.openBottomY - RowHeight; <> M2I: PROCEDURE [ m: Calendar.Months] RETURNS [ i: INTEGER] = INLINE BEGIN SELECT m FROM January => RETURN[ 0]; February => RETURN[ 1]; March => RETURN[ 2]; April => RETURN [ 3]; May => RETURN[ 4]; June => RETURN[ 5]; July => RETURN[ 6]; August => RETURN[ 7]; September => RETURN[ 8]; October => RETURN[ 9]; November => RETURN[ 10]; December => RETURN[ 11]; ENDCASE; END; -- M2I I2M: PROCEDURE [ i: INT] RETURNS [ m: Calendar.Months] = INLINE BEGIN SELECT i FROM 0 => RETURN[ January]; 1 => RETURN[ February]; 2 => RETURN[ March]; 3 => RETURN [ April]; 4 => RETURN[ May]; 5 => RETURN[ June]; 6 => RETURN[ July]; 7 => RETURN[ August]; 8 => RETURN[ September]; 9 => RETURN[ October]; 10 => RETURN[ November]; 11 => RETURN[ December]; ENDCASE; END; -- I2M I2R: PROCEDURE [ i: INT] RETURNS [ m: Hickory.RepetitionType] = INLINE BEGIN SELECT i FROM 0 => RETURN[ None]; 1 => RETURN[ Hourly]; 2 => RETURN[ Daily]; 3 => RETURN[ Weekdays]; 4 => RETURN[ Weekly]; 5 => RETURN[ Monthly]; 6 => RETURN[ Yearly]; 7 => RETURN[ Complicated]; ENDCASE; END; -- I2R R2I: PROCEDURE [ r: Hickory.RepetitionType] RETURNS [ i: INT] = INLINE BEGIN SELECT r FROM None => RETURN[ 0]; Hourly => RETURN[ 1]; Daily => RETURN[ 2]; Weekdays => RETURN[ 3]; Weekly => RETURN[ 4]; Monthly => RETURN[ 5]; Yearly => RETURN[ 6]; Complicated => RETURN[ 7]; ENDCASE; END; -- R2I GetRowCol: PRIVATE -- EXTERNAL -- PROCEDURE [ day: Calendar.Days, firstDay: Calendar.Weekdays] RETURNS [ row, col: INTEGER] = INLINE BEGIN <> <> offset: INTEGER; SELECT firstDay FROM Monday => offset _ 1; Tuesday => offset _ 2; Wednesday => offset _ 3; Thursday => offset _ 4; Friday => offset _ 5; Saturday => offset _ 6; Sunday => offset _ 0; ENDCASE; row _ ( day-1 + offset) / 7; -- Remember col, row indices start at 0... col _ ( day-1 + offset) MOD 7; RETURN[ row, col]; END; -- GetRowCol CreateButton: PRIVATE --EXTERNAL-- PROCEDURE [ title: Rope.ROPE, myParent: ViewerClasses.Viewer, hi, wi: CARDINAL, xOff, yOff: CARDINAL _ 0, proc: Menus.MenuProc, clientData: REF ANY, displayStyle: ATOM] RETURNS [ button: Buttons.Button]; ClearButton: PUBLIC --EXTERNAL-- PROCEDURE [ but: Buttons.Button]; <> SetButton: PUBLIC --EXTERNAL-- PROCEDURE [ but: Buttons.Button]; <> CreateTextViewer: PRIVATE --EXTERNAL-- PROCEDURE [ myParent: ViewerClasses.Viewer, width, height: CARDINAL, cont: Rope.ROPE _ NIL, scrolling: BOOLEAN _ FALSE, edit: BOOLEAN _ TRUE] RETURNS [ txtViewer: ViewerClasses.Viewer]; CreateCalViewer: PRIVATE --INTERNAL-- PROCEDURE; ExtractDate: PRIVATE -- EXTERNAL-- PROCEDURE [ time: BasicTime.GMT] RETURNS [ date: Calendar.Date]; MakeMenu: PRIVATE -- EXTERNAL-- PROCEDURE [ menuItems: LIST OF Rope.ROPE, menuProcs: LIST OF Menus.MenuProc, procArgs: LIST OF REF ANY] RETURNS [ menu: Menus.Menu]; <> DisplayMsg: PRIVATE -- EXTERNAL-- PROCEDURE [ msg: Rope.ROPE, blink: BOOLEAN _ TRUE]; <> PreviousDay: PRIVATE --EXTERNAL-- PROCEDURE [ date: Date] RETURNS [ newDate: Date]; NextDay: PRIVATE --EXTERNAL-- PROCEDURE [ date: Date] RETURNS [ newDate: Date]; GetMonthInfo: PRIVATE --EXTERNAL-- PROCEDURE [ mo: Months, yr: Years] RETURNS [ nbrOfDays: Days, firstDay: Weekdays]; GetMonthName: PUBLIC PROCEDURE [ mo: Months] RETURNS [ name: Rope.ROPE]; <> GetDayName: PUBLIC PROCEDURE [ date: Date] RETURNS [ name: Rope.ROPE]; <> GetTimeInterval: PRIVATE --EXTERNAL-- PROCEDURE [ date: Date, level: ZoomLevel] RETURNS [ from, to: BasicTime.GMT]; GetNbrOfEvents: PRIVATE --EXTERNAL-- PROCEDURE [ zoom: ZoomLevel, evl: EventList _ NIL] RETURNS [ nbr: INTEGER]; GetIconFlavor: PRIVATE --EXTERNAL-- PROCEDURE [ mode: CalStorage.Mode, zoom: ZoomLevel _ unspecified, day: Days _ 1] RETURNS [ icon: Icons.IconFlavor]; -- returns the appropriate Icon for the configuration of the calendar. END.