home *** CD-ROM | disk | FTP | other *** search
- #|
- Example of a relatively complex dialog item which is actually implemented
- as a view with subviews.
-
- Very little code is written to define the class. The work is all done by
- the mixins.
-
- |#
-
- (oou-dependencies
- :ICON-di
- :frame-svm
- :droppable-svm
- :static-text-di
- :PICT-di
- )
-
-
- (open-res-file "oou:examples;examples.rsrc")
-
- (defclass hairy-view (frame-svm droppable-svm view) nil)
-
- (defmethod initialize-instance :after ((v hairy-view) &rest initargs &key &allow-other-keys)
- (add-subviews v (apply #'make-instance
- 'ICON-button-di
- :view-nick-name :icon
- :view-position (make-point (round (- (point-h (view-size v)) 32) 2) 5)
- :view-size #@(32 32)
- :dialog-item-action #'(lambda (item) (set-dialog-item-text (view-named :name (view-container item)) "YOU FOOL!"))
- :allow-other-keys t
- initargs)
- (apply #'make-instance
- 'editable-text-dialog-item
- :view-nick-name :name
- :view-position #@(10 42)
- :view-size (make-point (- (point-h (view-size v)) 20) 15)
- :view-font '("Geneva" 12)
- :allow-other-keys t
- initargs)))
-
-
- ;;now try it out
-
- (defparameter *test-w* (make-instance 'dialog
- :window-title "it slices, it dices, ..."
- :view-size #@(300 200)
- :view-subviews
- (list
-
- (make-instance
- 'hairy-view
- :drag-bounds :window
- :drag-end-action-fn #'(lambda (sv delta pt) (declare (ignore pt)) (offset-view-position sv delta))
- :drop-action-fn #'(lambda (di targ off where) (declare (ignore di targ off where)) (ed-beep))
- :ICON-name "executioner"
- :dialog-item-text "John Doe"
- :view-size #@(80 80)
- :view-position #@(10 10))
-
- (make-instance
- 'static-text-di
- :view-nick-name :msg
- :view-position #@(10 150)
- :view-size #@(150 50)
- :view-font '("Geneva" 10)
- :text-string "Enter your name & drag yourself to the guilotine. And don't click on my head!")
-
- (make-instance 'PICT-di
- :PICT-name "gill"
- :view-position #@(270 150)))))
-