Added SWAT emulation, just sufficient to run Pole Zero. 20101212-Gtk
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Sun, 12 Dec 2010 23:34:18 +0000 (16:34 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Sun, 12 Dec 2010 23:34:18 +0000 (16:34 -0700)
commita8a4d8d22f496a01e595d783284c3d3d80085268
tree9c0ba496b88a47f38e851e6bc198c921cb7cec67
parent75bf11bc1d79085d704ff7e7b0085834b73112e9
Added SWAT emulation, just sufficient to run Pole Zero.

Changed scm-layout from an integer-based layout to a fixnum-based
layout called fix-layout.  Added a "fix-" prefix to everything that
should be using fixnums.  Thus there are many name changes:

    scm-layout -> fix-layout
       drawing -> fix-drawing
  rect -> fix-rect
    drawn-item -> fix-ink

I could not resist the brevity of "ink".  "Item" is rather vague.

Changes not otherwise mentioned below:

    Took care not to define-integrable when parameters are referenced
    multiple times.  Used integrate-operator instead.

    Used guarantee-TYPE procedures rather than check-TYPE converters.

    Punted :: for combining type and method names.  A hyphen will do.

    Used the new ignore declaration.

    Punted package initialization declarations in gtk.pkg.  Added
    `(initialize-package!)' forms at the ends of files as necessary.

    Followed the MAKE- convention to name procedures that create demos
    or examples.

    Signal callbacks now rely on their first parameter, the weakly
    held instance, rather than capture it in their closures.  The
    first argument used to be the toolkit object's address.

* doc/gtk/gtk.texinfo: Incremented the minor VERSION.  Moved many
implementation notes to a new Implementation Notes node.  Condensed
the chapters about each example into subsections of the Introduction.
Added a subsection about the SWAT emulation.  Added an Installation
chapter/node.  Generally, re-wrote to the luser perspective.  Used the
packaging in gtk.pkg, esp. the lists of names exported to (gtk), to
form a complete, if terse, API Reference.  Pulled some luser
documentation out of the Scheme code.

* src/Makefile.in: Added ffi to the LIARC_BOOT_BUNDLES so that gtk can
be compiled during LiarC's bootstrap.

* src/README.txt: Moved gtk to the "miscellaneous extras".

* src/Setup.sh: Added sos to lib/.

* src/configure.ac: Made $with_gtk tri-valued: yes, no, auto.  It
defaults to "auto".  Moved pkg-config check to src/microcode/
achost.ac.  Added gtk to FFIS.

* src/cref/: object.scm, redpkg.scm: Added support for declare forms
at top-level in .pkg files, and depends-on forms in package
descriptions.  Added corresponding slots to the package, package-
description, and pmodel structures.  A depends-on form lists files (by
default: .ext files) that should be generated before the package is
syntaxed.  The top-level declare(s) are applied to all files.

* src/etc/compile.scm: Worked on LiarC support, moving the ffi to the
list of boot dirs.  Added a compile-ffi procedure for the build target
of FFI Makefiles like src/gtk/Makefile-fragment.

* src/etc/functions.sh (maybe_rm): Do not skip symlinks.
src/config.sub and src/config.guess were not getting cleaned up.  Add
them to FILES so they will be removed.

* src/gtk/: .gitignore, Clean.sh, Makefile-fragment: Added the
swat-pole-zero.scm symlink.

* src/gtk/Makefile-fragment: Use the compile-ffi procedure from
src/etc/compile.scm to compile the Gtk system.  Use the host
MIT_SCHEME_EXE to generate the shim.  Added a new liarc-build target
that compiles the gtk bundle.

* src/gtk/Includes/: Many useful declarations.

* src/gtk/demo.scm: Renamed "fix-demo.scm".

* src/gtk/ed-ffi.scm: Catch up changes to file packaging.

* src/gtk/fix-demo.scm: Was "demo.scm".  Added a spinning arc-ink.

* src/gtk/fix-layout.scm: Was "scm-layout.scm".  Many drawn-items were
re-implemented as draw-inks.

* src/gtk/gobject.scm: Added gobject-live?, gobject-unref!,
gdk-window-process-updates guarantee-gdk-window.  Arrange for signal
callbacks to hold their instances weakly.  Add-gc-cleanup now returns
the weak-pair it is using, so it can be reused by g-signal-connect.
Banish ferror; error will do.

* src/gtk/gtk-ev.scm: Init a ScmWidget's requisition member; it no
longer has a size-request method to do it.  Use the new bit?
procedure to test bits in bit masks.  Punted the second trace level.
Moved initialization out of make- procedure and into an
initialize-instance method.

* src/gtk/gtk-new.pkg: A temporary copy of gtk.pkg with the new
declare and depends-on expressions.

* src/gtk/gtk-object.scm: Added many new procedures and classes:
gtk-widget-realized?, gtk-widget-get-colormap, gtk-widget-show,
gtk-widget-connect-realize, gtk-bin-child, gtk-container-remove,
gtk-label-set-width-chars, <gtk-check-button>, <gtk-frame>,
gtk-window-set-opacity.  Use the new bit? predicate.

Added a set-gtk-object-destroy-callback! procedure for the convenience
of gtk-object initialize-instance methods, for lack of "after" method
combination.

Take care when setting a style's font: copy the new
PangoFontDescription and free the old one.

Made gtk-widget-get-colormap and set-gtk-widget-bg-color! generic
procedures so that fix-layout can override them.

Noted that a gtk-container keeps its children in reverse order.
Centralized maintenance of the list.  Operate on it atomically --
without-interrupts for now.

Moved gtk-object initialization from make- procedures to
initialize-instance methods for many widget types, so they can be
subclassed.

* src/gtk/gtk-shim.h: Punted the only method and all of the method
callback ids.  The ScmWidget methods are now implemented by signal
callbacks.

* src/gtk/gtk.cdecl: Punted the widget method callbacks and added the
corresponding signal callbacks.  Added several other new C function
and callback declarations.  Moved some to a new
Includes/gtklabel.cdecl.

* src/gtk/gtk.pkg: Moved package (gtk pango) to earlier in the build.
Eliminated initialization declarations.  Added new packages (gtk
swat), (swat) and (swat pole-zero), and many new bindings.

* src/gtk/gtk.scm: Gathered new syntax and fix: definitions for
system-wide use, expecting this file to be loaded at syntax as well as
load time.  Added new bit-mask operators: bit-mask, bit-mask-indices,
and bit?.  Moved the rect- procedures to fix-layout.scm.  Replaced
check-!null with error-if-null.  Punted ferror and fwarn.  Moved Pango
hacks to pango.scm.

* src/gtk/gtk.sf: Use the new sf-package-set procedure, eliminating
60+ lines largely redundant to the info in gtk.pkg.

* src/gtk/hello.scm: Added an instance parameter to each callback.

* src/gtk/keys.scm: Use the new bit? predicate.  Moved documentation
to gtk.texinfo.

* src/gtk/main.scm: Appended call to initialize-package!.

* src/gtk/make.scm: Incremented the Gtk subsystem's minor version number.

* src/gtk/pango-cairo.scm: Punted until real Cairo support is added.

* src/gtk/pango.scm: Added more argument checking, and a
pango-layout-set-font-description procedure.  Collected other
Pango-related procedures, e.g. from gtk.scm.  Moved luser
documentation to gtk.texinfo.

* src/gtk/scm-layout.scm: Renamed "fix-layout.scm".

* src/gtk/scm-widget.scm: Use g_object_ref_sink on a new ScmWidget.
Added set-scm-widget-set-scroll-adjustments-callback!.  Punt method
callbacks.  All methods are now implemented by signal callbacks.

* src/gtk/scmwidget.c.stay: Override the realize method, which assumes
the widget has no window.  Add a set_scroll_adjustments signal.

* src/gtk/swat.scm: The new SWAT emulator.

* src/gtk/thread.scm: Just signal an error if there are no runnable
threads and no next-scheduled-timeout.

* src/microcode/achost.ac: Added the pkg-config check.  Conditionally
add prgtkio.so to MODULE_TARGETS.

* src/microcode/configure.ac: Removed redundant pkg-config check --
redundant now that it is in achost.ac.

* src/microcode/prgtkio.c: The "uxselect.h" header no longer exists.

* src/runtime/ffi.scm: Added guarantee-alien-function and
error:not-alien-function.  Fixed guarantee-alien to follow suit.
Added tracing to free-malloced-aliens.

* src/runtime/runtime.pkg: Added package (runtime thread-queue) and
guarantee-alien-function.

* src/runtime/thread-queue.scm: A queue that blocks threads.

* src/sf/: butils.scm, make.scm, sf.pkg: Added the sf-package-set
procedure, which uses CREF.
64 files changed:
doc/gtk/gtk.texinfo
src/Makefile.in
src/README.txt
src/Setup.sh
src/configure.ac
src/cref/object.scm
src/cref/redpkg.scm
src/etc/compile.scm
src/etc/functions.sh
src/gtk/.gitignore
src/gtk/Clean.sh
src/gtk/Includes/gdk.cdecl
src/gtk/Includes/gdkcairo.cdecl [new file with mode: 0644]
src/gtk/Includes/gdkdrawable.cdecl
src/gtk/Includes/gdkgc.cdecl
src/gtk/Includes/gdkrgb.cdecl
src/gtk/Includes/gdktypes.cdecl
src/gtk/Includes/gdkvisual.cdecl [new file with mode: 0644]
src/gtk/Includes/gdkwindow.cdecl
src/gtk/Includes/gtk.cdecl
src/gtk/Includes/gtkframe.cdecl [new file with mode: 0644]
src/gtk/Includes/gtkgc.cdecl [new file with mode: 0644]
src/gtk/Includes/gtkhbox.cdecl [new file with mode: 0644]
src/gtk/Includes/gtklabel.cdecl [new file with mode: 0644]
src/gtk/Includes/gtkobject.cdecl
src/gtk/Includes/gtkstyle.cdecl
src/gtk/Includes/gtkwidget.cdecl
src/gtk/Includes/gtkwindow.cdecl
src/gtk/Includes/pango-font.cdecl
src/gtk/Includes/pango-layout.cdecl
src/gtk/Makefile-fragment
src/gtk/demo.scm [deleted file]
src/gtk/ed-ffi.scm
src/gtk/fix-demo.scm [new file with mode: 0644]
src/gtk/fix-layout.scm [new file with mode: 0644]
src/gtk/gobject.scm
src/gtk/gtk-ev.scm
src/gtk/gtk-new.pkg [new file with mode: 0644]
src/gtk/gtk-object.scm
src/gtk/gtk-shim.h
src/gtk/gtk.cdecl
src/gtk/gtk.pkg
src/gtk/gtk.scm
src/gtk/gtk.sf
src/gtk/hello.scm
src/gtk/keys.scm
src/gtk/main.scm
src/gtk/make.scm
src/gtk/pango-cairo.scm [deleted file]
src/gtk/pango.scm
src/gtk/scm-layout.scm [deleted file]
src/gtk/scm-widget.scm
src/gtk/scmwidget.c.stay
src/gtk/swat.scm [new file with mode: 0644]
src/gtk/thread.scm
src/microcode/achost.ac
src/microcode/configure.ac
src/microcode/prgtkio.c
src/runtime/ffi.scm
src/runtime/runtime.pkg
src/runtime/thread-queue.scm [new file with mode: 0644]
src/sf/butils.scm
src/sf/make.scm
src/sf/sf.pkg