changeLog.txt -- Recent changes for the Unix update

February 2, 1998
	Lex.c
	Change the EOL to 10

	*.alt
	Get all the names capitalized correctly.

	unixGraph.c
	Hide rectangle inside to make Rectangle portable.
	Many minor revisions to get compatibility with
	Windoz.

	Windows.font[name]
	Return the FID for a system font.
	This should be modified to include the name, size &
	style as small integers. We then use a table to 
	build the X font name.
	
	Directory
	.open[path]
	.read[fileNameBuffer]
		RETURN 0 if at eof
		RETURN 1 if name is a file
		RETURN 2 if name is a directory
	.path[result, name]	! Return total path to name
		RETURN 0 if name doesn't exist
		RETURN 1 if it is a file
		RETURN 2 if it is a directory
	.eof  	! When no more names
	.close

	Image.c
	Get rid of data parameter in gwImageCreate.

	Window.c
	unixGraph.c
	newImage.alt
	graphics.alt
	Use integer indexes for color components.

February 7, 1998
	unixGraph.c
	Filter redundant grow & select events.
	Deal with WM_DESTROY from window manager. (Thanks Paul)
	Change default font to courier.
	Add Paul's polygons

February 8, 1988 
	unixGraph.c
	Add focusIn,focusOut events to manage selection of
	keyboard events.
	Add support for public color values.
	Add portable font specs.
	
	newImage.alt
	Use the public color map values.
	
	unixDirectory.c
	Use the stat call to classify the file.
	
	GetFileDialog.alt
	Sort the directory and file entries.

	graphics.alt
	Modify to use new font specifications.

	Windows.alt
	Modify to depricate fontSize & fontStyle methods.
	
	Socket.c
	unixSocket.c
	Revise for unix and asynch operation.
	See 'socketTest.alt' and 'socketNotes.txt'

February 9, 1998
	unixSocket.c
	Socket.c
	Extensive revisions to get asynch operation working
	properly. See socketNotes.txt and socketTest.alt for
	more details.

February 10, 1998
	Add support for system.beep using gwBeep() in
	unixSystem.c 
	Most systems implement beep by sending the bell
	character to the stdout.
	
	unixSocket.c
	Socket.c
	More changes to handle errors and blocking.
 
	unixGraph.c
	Implement gwSetPenSize.

February 17, 1998
	Add class Font to the kernel.
	This change is needed to support arbitrary fonts.
	A change is made in graphics.alt to use the new
	font spec.

February 26, 1998
	Make Binary and String files try to open first
	for read/write and then just read to allow access
	to protected files.

	Add support to create stand-alone applications.
	The heap.c module was changed: heapBase has
	new parameters and the hmemRestoreHeap function
	was added.

	To make a stand along application: 
	1) Make a copy of the alltalk executable: (e.g. MyApp)
	2) Run alltalk (not the new copy) and build your
	application. 
	3) Execute the message:
		system.saveIn[pathToNewExecutable]
	This puts a copy of the heap in the executable image
	such that it will load on startup.
	The message #start is sent to the system object after
	restoring the image so your code can do special startup
	processing. Additional startup files launched by drag-drop
	or command line are passed to the system object using:
		openWith[pathName]


	The xxxStartup module was changes so the zero
	parameter is the file name.

	The System.c module was changed to pass this
	module name to appValid and appRestore.

	In windows, we have to get the module file name
	and add it to the startup file array to make the
	new System.c work. Changes will be needed to
	mswStartup.c and mswApplication.c

	To get everything working with 8 bit color, a test 
	for TrueColor is made in the unixGraph.c module.

	To simplify the modes, some view classes are modified
	to explicity handle drawing their inactive state:
	Button.alt -- remove drawState 
	OvalButton -- use penAct in drawOutline, remove drawState
	BoxButton  -- use penAct in drawOutline, remove drawState
	TextButton -- use penAct in drawOutline, remove drawState
	NameButton -- use penAct in drawOutline, remove drawState
	CheckButton -- use penAct in drawOutline, remove drawState

March 4, 1998
	Remove rsize parameter from Socket.
	Make all Socket i/o non-blocking using an index.
	This syntax lets you bang on the same message until all
	the data is read or written:

		index := soc.read[buffer, count, index]

	When index = count, all the data is read. Similarly:
	
		index := soc.write[buffer, count, index]

	The index should be set to zero when a new buffer
	is passed. Both count and index are optional.
	Count defaults to 1 (byte).
	Index defaults to zero.

	Add #host & #net methods to SmallArray, IntegerArray,
	and RealArray to support networking. (Add #host & #net
	to ByteArray as a copy operation.)
	Usage:

	myArray.net	! Convert myArray to network byte order
	myArray.host	! Convert myArray to host (local) byte order.

	myArray.net[source]	! Copy source to myArray and convert
	myArray.host[source]	! ditto.

	myArray.net[source, count]	! Copy & convert only count values
	etc.

	Add a check for the X system so Alltalk can startup without
	X windows.

March 17, 1998
	Based on work done to run on the Silicon Graphics, several
	minor changes were made:
	1) Makefile now uses old-style rules.
	2) Association.c & Method.c did not end with proper EOLs.
	3) System.c, cvtNumber.c, heap.c had several c++ comments.
	4) Listener.c had several type errors where UNS should have been used.
	5) Class.c & Dictionary.c had illegal Unix C dynamic initializers.
	

August 17, 1998
	Change unixGraph to use the XFontStruct pointer instead of
	the XID of the font. Use LoadQueryFont to obtain the fonts.
	This eliminates a memory leak and reduces the number of calls
	to the server.

January 27, 1999
	Change the color model (again) to use 8 bit integers instead
	of 32 bit integers for the public pixel values. This is 
	easier to work with and fits the public Image model better.

	Revise binary and string files for internal nil pointer to
	agree with MSW version.

	Delay the event loop to run only in 1/60 sec intervals.
	This could be sped up a bit...

I have forgotten why the Window module uses those ID's instead of
the window pointer itself. "Those who cannot rememeber history..."

The idea is that the Alltalk Window can exist when the actual
GUI window does not, such as when the system is being restored.

The graph.c module delivers messages to the shellWindow, I think...
check this out in MSW...

Ok, here's the poop: Both Linux and Windows directly connect
gw to the Window.c class. The gw module in Windows DOES use
winDefine to associate its windows with the shell events.

In Unix, the shell is inside the gw module, so this is
not necessary.

There are three winDefines used in the MSW version: for the
alltalkWindow, the gwWindows and the text editor.

******************
Idea: Use gw for the listenser in MSW.
To do this, we put the shell inside mswGraph.c

We then attach mswGraph to shellWindow to take care of all our
window types AND we implement the listener using gw. Now we
don't need to have mswWinFile, we can just make it a plain
WinFile!

The shellWindow can be made generic so we don't need
mswShellWindow, etc.

We can also make it possible to redirect stdio to and from
an object. This makes it possible to build a better Listener.


In Unix, we already have the shell inside unixGraph, but we
don't have a shellWindow module. 

We use the generic shellWindow to create all our windows and
to dispatch the events back to Window. Now we can even create
another Listener in an X window if we prefer.

The main reason for doing this right now is that we need a
unique Alltalk window in Linux to own the clipboard.

Another, easier, way to try this out is to create an
AlltalkWindow inside unixGraph.c, This is not so good
because it would tie us alltalk. We could call it the
'clipWindow'. This would make it generic!

So why does gw have an ID? We do this so we can have
an arbirary object get the gw messages from the shell loop.

Why does Window have a window number? Because we need
an ID number for callbacks that is not the address of
the Window, it can move in memory!

