;;; -*- Mode:LISP; Package: COMPOSER; Readtable:CL; Base:10 -*-
;;;
;;; Window system user interface for composer system
;;;
;;;

(defflavor composer-frame ()
	   (tv:process-mixin
	    tv:select-mixin
	    tv:inferiors-not-in-select-menu-mixin
	    tv:alias-for-inferiors-mixin
	    tv:essential-mouse
	    tv:bordered-constraint-frame-with-shared-io-buffer
	    tv:top-box-label-mixin)
  (:default-init-plist
    :save-bits :delayed
    :io-buffer (tv:make-io-buffer #o512 nil 'tv:kbd-default-output-function)
    :borders 1
    :label '(:string "Music Composer" :font fonts:metsi :centered)
    :configuration 'basic
    :panes `((music-pane music-pane)
	     (interaction-pane tv:lisp-listener))
    :constraints
    `((basic
	(music-pane interaction-pane)
	((interaction-pane 10 :lines)
	 (music-pane :even))))))

(defmethod (composer-frame :after :init) (&rest ignore)
  (send self :set-selection-substitute
	(send self :get-pane 'interaction-pane)))

(defflavor music-pane () (tv:graphics-mixin tv:window))

(tv:add-system-key #\Z 'composer-frame "Music Composition Frame")
