15.12. posting package to comp.sources.misc
  saved in grafix/post-15.12

added scrolling with keys : PgUp/Dn arrow-up/down to file selection box
  -> files.c

16.12 : cleanup event mask setting; default selection_mask for the window
class is only Expose and Configure, derived classes add masks by demand ->
less events, more transparency
-> window.c

17.12 - 19.12:

calc.c - name conflict for Solaris (div-> divi) resolved
files.c - extended for complete viewing of texts
         new classes :vert_scrollbar, text_window, text_viewer 
(files-demo.c) - deleted , replaced by :
file-browser.c - demo for file viewer with spawning and loading new files, 
	also with file_selection_box
files.c - file_selection box extended :
	now has scrollbars for directory and file selector with standard 
	3-button interface (button 1/3 = pgup/dn, button 2 = draw/set)
	also key-events : next,prior, arrow-keys
	button-1-press (in selector) -> select file/directory

window.h - constructor delete_button for menu_bar parent def.
lat_win.c - added z-axes ticks

23.1:
window.c - bug with WatchCursor fixed : it didn't vanish when other main
	windows were spawned. (there was only one global pointer "watch_main")
	New solution : no more restore in event loop, but explicitely
	to call ResetCursor(); after computation
	corrections : window.h, lat_man.c, one-dim, two-dim
lattice: floating point prints (ticks, gamma) %f -> %g for better
	readability

20.2.
grafix.mk : HOSTTYPE (nonportable) replaced by uname (portable)
lat_win.c : z-ticks also for small heights (ntick > 0)


27.2
Makefile : make depend introduced (File .depend) by help of Ulrich Lauther

Weird behaviour on "Close" via window manager resolved. If it was done 
for a child then the whole program crashed with :
   XIO:  fatal IO error 32 (Broken pipe) on X server ":0.0"
      after 626 requests (622 known processed) with 0 events remaining.
      The connection was probably broken by a server shutdown or KillClient

   explanation (see mwm.1)

     f.kill
          This function is used to terminate a  client.   If  the
          WM_DELETE_WINDOW protocol is set up, the client is sent
          a client message event, indicating that the client win-
          dow  should be deleted.  If the WM_SAVE_YOURSELF proto-
          col is set up and the WM_DELETE_WINDOW protocol is  not
          set  up,  the  client  is  sent a client message event,
          indicating that the client needs to prepare to be  ter-
          minated.    If   the   client   does   not   have   the
          WM_DELETE_WINDOW or WM_SAVE_YOURSELF protocol  set  up,
          this function causes a client's X connection to be ter-
          minated  (usually  resulting  in  termination  of   the
          client).   Refer  to the description of the quitTimeout
          resource and the WM_PROTOCOLS property.
solution: 
  XSetWMProtocols WM_DELETE_WINDOW for all main_windows;
  a global top_main is declared (which is always the first created main_window)
  and a event_handler main_window::ClientMsg_CB defined to handle these ev

9.6.
scrollbars (even pure_scrollbars) get a member nticks, (which is 0 by default)
and determines the number of tick lines to display on x-the axis
changes in window.h, window.c

21.6.
clock_win : in window.c/h added. A class to display a simple analogue clock
also a demo clock_demo.c written.

23.6.
main_window - constructor allows argument fix_pos = 2 : map at center of the screen

30.6.
palette.c : handler for error "no more color cells" changed; now only warning
 	so more than 2 lattice applications can run at the same time on one 
	display

12.7
animator and replay included in grafix (from dymos) 
	replay as a demo, video files are in subdirectory video

19.7
window.c,h: bug fixed : close button of window manager used to kill the appl.
	main_window class : XSetWMProtocols added, and
	event handler for ClientMessage to unmap or exit. 
	To find the top main_window the variable top_main is used. 
	For this the close button invokes exit, else only unmap
	(Does not work properly if an marginal window created as first mw) 

26.7. lattice.* : z0 - as shift value introduced, also as managed value
	
4.8.
three-dim.c (and wave.c as ex.) the prototype for any interactive integration 
	program, simplified interface : integrator class (s.below)
animator.*, replay.c : extended with new classes : 
	time_lat, play_lat, play_main, player, integrator

8.8.
lattice.* : the value display window (display_cursor) is now defined as
	a main window -> no more clipping. It now follows the pointer directly
	-> search the nearest lattice point in 3-dim !
	
lat_win.c : function "make_lattice" replaced by generalization of "make_body"
	now the value display works for all types of displays, since scp
	is always correct !

28.8.
polling mode changed : now polling_handler is a virtual function in main_window
	and polling_mode is member -> changes in window.*, clock-demo, animator.*
	simplified !

1.9. 
replay.c : synchronization from child to parent fixed (with signals)
	Now the child process can also be ended, and a new video file can
	be loaded.

28.9.
switch_button : introduced in window.h/c

2.10.
scrollbar : error fixed with move & callback mechanism, since the callback was 
	invoked with actual slider pos (in pixels) this lead to rounding errors
	now : extra methods "move" and "move_cb" are defined. On mouse positioning
	move_cb is invoked, otherwise from "change" -> move and callbck_val 

tick_scrollbar & play_scrollbar included in window.c/h

20.10
new classes in window.c/h:
==========================
scrolled_window : a window with virtual size that can be moved with
	scrollbars if it is larger than the actual window. Proper resizing !

twodim_input : a twodimensional "scrollbar" to get user input from mouse
	derived from that : 
horizontal_shifter, vertical_shifter : are needed by scrolled_window

demo for these : scrolled_demo, class_browser 

26.10. 
files : text_viewer fixed, tabs, scrolling
tree graphics
=============
class_browser: nearly completed, failures if graph contains unbalancable 
"cycles"
	eg        class1
	         /    |
	        c2    |    
	         \    |
	          class3
	and insertion sometimes failes ( /fgrab/ )
27.10.
tree.c/tree.h separated 
dir-tree.c : new simple demo for the use of tree classes, should
	serve as learning model

29.10.
one-dim/two-dim : new "run" button included to match newer apps.

30.10.
gccinc : subdirectory for gcc-lib include files that are needed for 
	regexp parsing (class-browser), 
	which are not on all systems installed (Sun)
	will be included in the tar file
window.c/h : irint and sincos for Suns replaced by simple standards
	because older SunOS seem to don't have them 

31.10.
calc.c : keyboard input of numbers and arith. operators -> new

german clean : win-demo.c, edit-demo.c, one-dim.c, two-dim.c, window.h (sigh !)
  	window.c (sigh !)

edit_window : cursor works now correct in all color modes (8bpp, 16bpp)

1.11.
window.c : destructors cleaned up, now also the entry in parents child list is
	correctly removed -> also static windows can be defined and deleted !!
	Whow !!
	
palette.c : TrueColor mode now supported for >= 16bpp !! 
	minor drawback: if the palette changes, it is not visible for
	lattice windows immediately, but only when next draw occurs


3.11.
german clean : lattice.h lat_win.c lat_man.c reg_man.c (also help page)
	-> it should be complete now !!

replay : help text (help button) included

class-browser : error fixed (undefined classes -> path == 0)

4.11.
popup buttons : new feature : on second press unmap the popup 
	(also help_button -> now a subclass of popup_button) 

error in three-dim fixed : difficult to find : in animator.c was a erroneous
	allocation with "char(200)" (wrong brackets) which resulted in subsequent 
	failures of simple "new char[8]" (but correct ones!)

