Revised: 20020826

To compile and install gpcalendar, you need Free Pascal from
www.freepascal.org, and the gtk libraries properly installed.

test_gpc_option does not currently work :(

If you are unsure of your code, use the test_ programs to test your
modifications.  Please feel free to submit new code and tests to
me!  However, they will all need to be under the GPL 2 License.

Once you have everything set up, use the command
fpc gpcalendar.pas
to compile.

Coding conventions:

In general, I try to follow Linus Torvals required coding conventions for
submitted source, (description available here???) with one exception.  Procedure and variable
names are complete words, seperated by underscores.  Procedures are kept to a
limit of two screens (roughly 80 lines) in length.  Procedure blocks are kept
to a maximum depth of four blocks.  Granted, I'm not very good at this.

Also, when possible, I include a test subroutine for each new feature, where
possible.  Generally, I create this test subroutine to verify bugs.  And, when
the bug is fixed.  Inclusion of new test subroutines will be expected for code
sumissions, and appreciated from debuggers and people looking for simple
coding jobs.

Naming conventions:

The one exception for coding style I make to Linus Torvald's required coding
style is with the inclusion of hungarian notation type itentifiers.  The first
characters of a variable or constant name are generally an acronym for the
variable type, followed by an underscore.  So, a temporary string will
hopefully be named s_temp .  And, temporary integers will be named i_temp and
so on.  I normally do not follow this convention in new code, but I try to add
in in later.  If submitted code will follow this and Linus's rules, I would
appreciate it (ie, your code will be seriously considered).

I make the Hungarian notation exception because it is much harder to keep
variable types understood with a minimum of typing.  In straight C you have
mabye a dozen main variable types.  In a Gui application you have hundreds of
types.  And, multiple variables are used to express one concept.  For example,
to have a single clickable label for a window title you need a string for the entry value, a
label widget for the shown string, and an event box for the clickable entry.
So, in my opinion, s_title, l_title, and eb_title are much better variable
names than title, title_label, and title_event_box.  I do not use hungarian
notation in function names.  Also instead of the ubiquitous i variable, I use
i_temp for an integer.  And, for strings s_temp.  And so on and so on...

Common GPC variable prefixes:

Generic types:
as_	=	ansistring
asa_	=	ansistring array
c_	=	character
f_	=	file or text handler
i_	=	integer
p_	=	pointer
pc_	=	pchar or pgchar
ps_	=	pointer to a string
s_	=	string
sr_	=	unit dos search record
Gtk specific types:
cl_	=	clist widget
e_	=	entry type widget
eb_	=	event box
sw_	=	scrolled window widget
b_	=	button widget
h_	=	horizontal list box
v_	=	vertical list box
mi_	=	menu item
m_	=	menu
om_	=	option menu
GPCalendar specific types:
phl_	=	pointer to a handler list
pol_	=	pointer to a option list
pcl_	=	pointer to a calendar list
pcr_	=	pointer to a calendar record
phr_	=	pointer to a handler or header record
por_	=	pointer to an option record
pct_	=	pointer to a GPC CTree
