Partial incomplete Doc for MCL graphics in ACL/PC
Code written by Stefan Bamberger and Karsten Poeck
Original MCL code written by Stefan Bamberger, Ute Gappa, Klaus Goos, Karsten Poeck and others
Comments to

------------------------------------------------------
| Karsten A. Poeck
| Lehrstuhl fuer Informatik VI
| Universitaet Wuerzburg
| Allesgrundweg 12
| 97218 Gerbrunn
| Germany
| 
| E-mail: poeck@informatik.uni-wuerzburg.de
| Tel. ++ 49 931 70561 18
| Fax  ++ 49 931 70561 20
------------------------------------------------------


Introduction: In MCL windows, dialog-items, menus and menu-items
are clos objects that can be created with calls to make-instance.
All interface stuff is done with generic methods that one
can shadow, and specialize.

This is not the case in ACL/PC. Make-instance cannot be called
directly, the interface stuff are functions, not everything can be shadowed
and menu-items are structures, some initargs cannot be specified as :default-initargs
(flames to procyon)

To allow portabel code we introduced an layer on top of ACL/PC
Common Graphics that is totally object oriented and has the interface methods
of MCL. Since we have not been able to solve the make-instance problem we introduced
five auxuliaray methods (The names are all in German)

m->a=erzeuge-dialog-item (class &rest args)
creates a dialog-item (widget in Common Graphics)

m->a=erzeuge-fenster (class &rest args)
creates a non modal window

m->a=erzeuge-modal-fenster
creates a window to be used as a modal-dialog

m->a=erzeuge-menu
creates a menu (Warning the menubar in ACL/PC is a strange thing documented very unclearly)

m->a=erzeuge-menu-item
to create an menu-item (Warning, the menu-items in ACL/PC are structures. To allow generic functions
we create dummy clos-objects and link them to the structures. The interface methods called
on the clos-objects then call the functions of the structures

On the macintosh all these methods should be defined as
defun m->a=erzeuge-menu (klasse &rest args)
  (apply #'make-instance klasse args))

(defun m->a=erzeuge-menu-item (klasse &rest args)
  (apply #'make-instance klasse args))

(defun m->a=erzeuge-fenster (klasse &rest args)
  (apply #'make-instance klasse args))

(defun m->a=erzeuge-modal-fenster (klasse &rest args)
  (apply #'make-instance klasse args))

(defun m->a=erzeuge-dialog-item (klasse &rest args)
  (apply #'make-instance klasse args))


We ported our library of windows, dialog-items, menus and menu-items so the names are subclasses
of the MCL-ones.
!Warning, all this is port on demand, we have omitted a lot of features!
Essentially we provide:

dialog-items;;;;;;;;;;;;;: in the file dos-at
mac-dialog-item-mixin understands
:view-size
:view-position
:view-font ;warning, the font format in ACL/PC is different
:view-nick-name
:view-container
:dialog-item-enabled-p


Emulated methods for dialog-items
set-view-container
;When set-view-container is called and the dialog-item does not have a size
;a default size is computed depending on the dialog-item-text

dialog-item-enable
dialog-item-enabled-p
dialog-item-disable
set-view-position
view-size
set-view-size
view-position
set-dialog-item-text
dialog-item-text
view-container
special dialog items
*B-STATIC-TEXT-DIALOG-ITEM*
:dialog-item-text

*b-zahl* (additional  widget to represent numbers)
:f-nach-taste (function-called-after-a-key-is-pressed)

*b-text* (additional  widget to represent text, aka editable-text-dialog-item )
:f-nach-taste

*b-radio-button-dialog-item*
:dialog-item-text
:radio-button-cluster
:dialog-item-action
:radio-button-pushed-p

Methods:
radio-button-push
radio-button-unpush
radio-button-pushed-p

*b-check-box-dialog-item*
:view-nick-name
:dialog-item-text
:dialog-item-action
:check-box-checked-p

Methods:
check-box-check
check-box-uncheck
check-box-checked-p

*b-button-dialog-item*
:dialog-item-text
:dialog-item-action

*b-ok-button*

*b-abbrechen-button* (A cancel button)

*bb-sequence-dialog-item*
:range the elements
:text-des-tabellenelements (A function to give the string of the elements
:f-pop-up-menu A function returning a pop-up

Methods
set-table-sequence
table-sequence

More advanced dialog-items
*b-auswahl-light*
A composed dialog-items that consists of several radio-buttons or check-buttons
aka (accept 'member or 'subset in CLIM)

:wert initial value
:f-Text
:Anordnung-Auswahlelemente  (orientation, not implemented yet)
:selektionstyp (selectiontype :multiple or :single)
:f-bei-Wertaenderung (Function called when the value is changed)

*b-bild-view* A widget for bmp-pictures with sensitive areas
*b-bild&text-dialog-item* A widget for bmp-pictures with sensitive areas and correspond texts

Shows how to create custom gadgets in ACL/PC (using widget-device)
A Problem is that the events get called on the pane and not on the widget
;;;;;
What we still can'T do
use view-draw-contens and view-click-event-handler for widgets

Windows;;;;

*b-window*
provides view-draw-contens and view-click-event-handler and most of the mac-methods
Modal-dialog and return-from-modal-dialog also

:view-size
:view-position
:view-font ;warning, the font format in ACL/PC is different
:view-nick-name ;bug
:view-container ;bug
:window-title

Methods:
add-subviews
remove-subviews
set-window-title
window-title
window-hide
window-select
window-show
window-close
view-container
set-view-container
set-view-font
view-font
set-view-position
view-size
set-view-size
view-position
subviews
modal-dialog

*b-fenster+scroller*
A window with a *bb-sequence-dialog-item* that adjust its size to the window

*b-button-window*
:buttons A window with a bottom button line

*b-graphics-window*
A window with a scrollable sub-window (aka ccl::scroller-view) and the bottom button line

*b-hierarchie-window-light* A portable class browser

*b-konfigurierungsdialog*
A configuration dialog, long doc in german, examples in beispiel.lsp, code in b-konfig


;menus and menu-items
*b-menu* (with b=pop-up-menue-aufklappen used as a pop-window)
:menu-title

Methods:
menu-update
add-menu-items
remove-menu-items
menu-installed-p
menu-deinstall
menu-install
menu-enable
menu-disable

set-menubar
menubar

*windows-menu* Shows all active windows

*b-menu-item*
:menu-item-title
:menu-item-value
:menu-item-action
:disabled
:command-key

Methods:
menu-item-update
menu-item-enable
menu-item-disable
set-menu-item-title-portable
set-menu-item-check-mark
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
The load-file for all the stuff is in bib-lade.lisp. good luck
