
XCalendar is a simple interactive calendar program with a notebook
capability. It is build on the X Toolkit and the Athena Widgets.
If you are writing your first toolkit application this
program is an example of an extensive use of callbacks
and event handlers. It also takes advantage of application
specific resources and actions.

CREDITS:
        Version 1.4 beta
        Author: Roman J. Budzianowski - MIT Project Athena
        Copyright 1988 Massachusetts Institute of Technology

You can start the program as:  xcalendar [ month [year]]
If month and year are not provided they are assumed
to be current. To achieve pleasant visual effect you have
to load a resource data base to the server. The default
database is provided with this program and is also included
in this text. Consult the man page for xrdb(1). 

INTERACTIONS:

Clicking the left mouse button on a day will start a text editor.
You can edit and save a text.This text will be associated with the
day. You can later on read and edit this text when you open the editor
for the same day. The text is saved in a file in the directory
~/Calendar. The editor lets you also clear an entry associated with
a particular day. 

You can highlight all entries in a month by invoking
the function ShowEntries. By default this function is
called when the left mouse button is pressed in the
title window (where day, month and a year are displayed).
Pressing again the same button will unhighlight the entries.

MISSING FEATURES:

Currently, to view another month you have to start another process
and specify the month and year on the command line. You can run
several xcalendars at the same time. However, it would be nice
to be able to scroll or browse through the calendar.

To remove all entries in a particular month
you have to use your system's commands. The naming scheme for
the files makes it easy : the command "rm ~/Calendar/xc*sep1988 "
on UNIX(TM) will remove all entries from september 1988.
The facility to do that from the xcalendar should be provided.

One can imagine many other useful features. For example
automatic parsing of the current day entry in search for
appointments to trigger alarms (reminders) at the approriate
time. Well, maybe one day...

RESOURCES:

The resource data base lets you alter the visual appearance
of the program. You can change fonts, border widths, labels, 
and other resources used by widgets. One use of this facility is
to change names of week days and months.

Here are the names of widgets you can use to set 
various resources: 

XCalendar    - class of the application
xcalendar    - top level form
controls     - control panel
quitButton   - quit button
helpButton   - help button
date         - date label
calendar     - calendar frame
daynumbers   - day numbers frame
1-49         - day number buttons
daynames     - day names frame
MON,TUE,WED,THU,FRI,SAT,SUN - day name buttons
helpWindow   - help window
dayEditor    - editor popup
editorFrame  - editor frame
editorTitle  - editor title
editor       - editor
editorControls- control panel
doneButton   - done button
saveButton   - save button
clearEntry   - clear entry button

Application specific resources:
reverseVideoMark - if True entries are highlighted in reverse video
                   default True for black and white, and False for color
                   displays
setMarkBackground - if True and reverseVideoMark is False entries are
                    highlighted by setting background to markBackground
markBackground    - background color for highlighting entries
setMarkForeground - analogous to setMarkBackground
markForeground    - foreground color for highlighting entries

setMarkBackground and setMarkForeground can take any combination of
values.

january,february,..,december - these resources can be used for
                    changing names of months.
firstDay - an integer between 1-7,  indicating the day to start a week with,
		   default:  1 (Monday);
markOnStartup   -  if True mark the entries upon startup, 
		   default: False;
helpFile        -  full pathname of the xcalendar.hlp file,
		   default: /usr/lib/X11/xcalendar.hlp;
textBufferSize  -  maximum size of the text buffer in the day editor,
		   default: 2048;

DEFAULT RESOURCE DATA BASE:

XCalendar*Font: vtsingle
XCalendar*Background: wheat
XCalendar*BorderWidth:		2
XCalendar*calendar*borderWidth:	0
XCalendar*controls*borderWidth: 0
XCalendar*date*font:		8x13bold
XCalendar*date*borderWidth: 0
XCalendar*daynames*font:		8x13bold

XCalendar*daynames*Background: PaleGreen

XCalendar*daynames.SUN*Foreground: Red
XCalendar*daynames.SAT*Foreground: DarkGreen

XCalendar*daynumbers.7*Foreground: Red
XCalendar*daynumbers.14*Foreground: Red
XCalendar*daynumbers.21*Foreground: Red
XCalendar*daynumbers.28*Foreground: Red
XCalendar*daynumbers.35*Foreground: Red
XCalendar*daynumbers.42*Foreground: Red


XCalendar*controls*helpButton*Background: DarkGreen
XCalendar*controls*helpButton*Foreground: wheat
XCalendar*controls*quitButton*Background: DarkGreen
XCalendar*controls*quitButton*Foreground: wheat


XCalendar*daynumbers*Foreground: DarkGreen
XCalendar*editorTitle*Background: PaleGreen
XCalendar*editorTitle*Foreground: Red
XCalendar*editorControls*Background: PaleGreen
XCalendar*editorControls*doneButton*Background: Red
XCalendar*editorControls*doneButton*Foreground: wheat
XCalendar*editorControls*saveButton*Background: Red
XCalendar*editorControls*saveButton*Foreground: wheat
XCalendar*editorControls*clearEntry*Background: DarkGreen
XCalendar*editorControls*clearEntry*Foreground: wheat

XCalendar*dayEditor*geometry: 300x150
XCalendar*dayEditor*editorTitle*font: 8x13bold
XCalendar*dayEditor*editorTitle*Foreground: DarkGreen

XCalendar*helpWindow*geometry: 600x350
XCalendar*helpWindow*editorTitle*font: 8x13bold

XCalendar*doneButton*Label: done
XCalendar*editorTitle*Label: Help
XCalendar*helpButton*Label: help
XCalendar*quitButton*Label: quit
XCalendar*saveButton*Label: save

XCalendar*markBackground: PaleGreen
XCalendar*setMarkBackground: True
