; About Handling Image Buttons (assign action depending on the clicked portion of an image)
; 1. Create Dialog with image that looks like this:
; A B C
; D E F
; G H I
; 2. When Double clicking on the image, depending on the portion - return the according value
; Grrr
; WORKS
; This dialog demonstrates the simple usage of image_button
; Assign/display the actual image on the image_button/image
; and assign action to the image_button
(defun C:test
( / PutImgVal
*error* dcl des dch dcf imgL jL
)
(setq PutImgVal
; image that visually can be splitted on 9 quadrants by the user '
(lambda (BG TL TC TR ML MC MR BL BC BR
/ ) (list ; BG = 250 ; Empty = -15 ; Filled = 023 BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG TL TL TL TL TL TL TL TL TL TL TL TL TL BG BG TC TC TC TC TC TC TC TC TC TC TC TC TC TC BG BG TR TR TR TR TR TR TR TR TR TR TR TR TR BG BG
BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG ML ML ML ML ML ML ML ML ML ML ML ML ML BG BG MC MC MC MC MC MC MC MC MC MC MC MC MC MC BG BG MR MR MR MR MR MR MR MR MR MR MR MR MR BG BG
BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BL BL BL BL BL BL BL BL BL BL BL BL BL BG BG BC BC BC BC BC BC BC BC BC BC BC BC BC BC BG BG BR BR BR BR BR BR BR BR BR BR BR BR BR BG BG
BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG BG
); list
); lambda
); setq PutImgVal
); defun *error*
(
'("imgtest : dialog"
"{ label = \"Image Test\";"
" : column"
" { : image_button { key = \"img\"; fixed_width = true; fixed_height = true; width = 6.25; aspect_ratio = 1.0; alignment = centered; } " ; 48x48 image
" : edit_box { key = \"eb\"; label = \"info\"; alignment = centered; edit_width = 12; fixed_width = true; is_enabled = false; value = \"\"; }" ; info
" }"
" spacer; ok_cancel; : text { key = \"error\"; }"
"}"
)
); mapcar
); and
); not
(princ "\nUnable to write or load the DCL file.") )
(
(setq jL '
(("TL" .
-15) ("TC" .
-15) ("TR" .
-15) ("ML" .
-15) ("MC" .
-15) ("MR" .
-15) ("BL" .
-15) ("BC" .
-15) ("BR" .
-15))) (LM:DisplayBitmap "img" imgL)
'( ; PickImg
(lambda ( key val rsn x y
/ qdr itm j
) (setq qdr
; Remember that the Origin is at the upper left ( ; Determine the quadrant
(lambda (x y w h
/ wdiv hdiv
) (setq wdiv
(/ w
3.
)) (setq hdiv
(/ h
3.
)) ; divide the image on 3x3 quadrants ( (< (* hdiv 0.) y (* hdiv 1.)) 1 )
( (< (* hdiv 1.) y (* hdiv 2.)) 2 )
( (< (* hdiv 2.) y (* hdiv 3.)) 3 )
); cond
( (< (* wdiv 0.) x (* wdiv 1.)) 1 )
( (< (* wdiv 1.) x (* wdiv 2.)) 2 )
( (< (* wdiv 2.) x (* wdiv 3.)) 3 )
); cond
); list
); lambda
)
); setq qdr
(assoc qdr
; does (assoc) work on complex associations? - yes, atleast on list associations '(
((1 3) "TL") ((1 2) "TC") ((1 1) "TR")
((2 3) "ML") ((2 2) "MC") ((2 1) "MR")
((3 3) "BL") ((3 2) "BC") ((3 1) "BR")
)
); assoc
); setq itm
(cond ; fill with different color the picked range, depending on the type of click ( (= 1 rsn) ; User clicked once
); (= 1 rsn) ; User clicked once
( (= 4 rsn) ; User Double-Clicked
); (= 4 rsn) ; User Double-Clicked
); cond
); and
); lambda
$key $value $reason $X $Y
); PickImg
); vl-prin1-to-string
); action_tile "img"
); progn
(princ "\nUser cancelled the dialog.") )
(T nil)
); cond
); defun
;;--------------------=={ Display Bitmap }==------------------;;
;; ;;
;; Renders the supplied ACI colour list representation of a ;;
;; Bitmap image on the DCL image tile or image_button tile ;;
;; with the given key. ;;
;;------------------------------------------------------------;;
;; Author: Lee Mac, Copyright © 2012 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;; Arguments: ;;
;; key - key of DCL image tile or image_button tile ;;
;; lst - ACI colour list ;;
;;------------------------------------------------------------;;
;; Returns: nil ;;
;;------------------------------------------------------------;;
(defun LM:DisplayBitmap
( key lst
/ i j s x y
) )
)
)
)