Author Topic: An Dailog MsgBox & EditBox  (Read 1096 times)

0 Members and 1 Guest are viewing this topic.

sena

  • Mosquito
  • Posts: 2
An Dailog MsgBox & EditBox
« on: December 22, 2021, 12:31:05 AM »
(defun MsgBox(Msg Buttons DefBt Title / FP CANCEL DEFBT1 DEFBT2 DEFBT3 DEFBTC DEFBTN DEFBTY FL FP HEIGHT I I-J ID J NO STD WIDTH YES ~CANCEL ~NO ~YES )
        (setq ~yes nil ~no nil ~cancel nil)
        (cond ((wcmatch buttons "*OK*") (setq yes "OK"  ~yes "确定"))
              ((wcmatch buttons "*Yes*") (setq yes "Yes" ~yes "是"))
        )
        (if (wcmatch  buttons "*No*") (setq no "No"  ~no "否"))
        (if (wcmatch  buttons "*Cancel*") (setq cancel "Cancel" ~cancel "取消"))
 
        (setq DefBtY "" DefBtN "" DefBtC "")
        (cond ((= DefBt "Yes") (setq DefBtY "is_default=true;"))
              ((= DefBt "No") (setq DefBtN "is_default=true;"))
              ((= DefBt "Cancel") (setq DefBtC "is_default=true;"))
        )
        (setq Msg (strcat "\n" Msg "\n\n"))
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        (setq i -1 height 0 width 0)
        (while (setq i (vl-string-search "\n" Msg (1+ (setq j i))))
                (if (> (setq i-j (- i j)) 50)  (setq height (+ height 1 (fix (/ i-j 50.0)))))
                (setq width (max width (- i j))  height (1+ height))
        )
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        (setq fp (vl-filename-mktemp "~HGCAD.dcl"))
        (if (not (setq fl (open fp "w")))(exit))
        (write-line (strcat "MsgBox:dialog{label=" title "; :column{")  fl)
        (write-line (strcat ":row{spacer_1;:text_part{key=\"msg\";width=" (itoa (min width 50)) ";height=" (itoa height) ";}}") fl)
        (write-line ":row{spacer_1;" fl)
        (if ~yes (write-line (strcat ":cancel_button{label=" ~yes ";key=\"yes\";width=10;" DefBtY "}") fl))
        (if ~no (write-line (strcat ":cancel_button{label=" ~no  ";key=\"no\";width=10;" DefBtN "}") fl))
        (if ~cancel (write-line (strcat ":cancel_button{label=" ~cancel ";key=\"cancel\";width=10;" DefBtC "}") fl) )
        (write-line "spacer_1;}}}" fl)
        (close fl)
       
        (setq std 0 id (load_dialog fp))
        (new_dialog "MsgBox" id)
        (set_tile "msg" msg) 
        (if ~yes (action_tile "yes" "(done_dialog 1)"))
        (if ~no  (action_tile "no" "(done_dialog 2)"))
        (if ~cancel (action_tile "cancel" "(done_dialog 3)"))
        (setq std (start_dialog))
        (unload_dialog id)
        (vl-file-delete fp)
 
 
        (cond ((= std 1) yes)
              ((= std 2) no)
              ((= std 3) cancel)
        )
 
)
 
; 消息,输入框默认值,标题 
(defun EditBox(Msg Edit Title /  FL FP ID RTEDIT STD )
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        (setq Msg (strcat " " Msg " "))
        (setq fp (vl-filename-mktemp "~HGCAD.dcl"))
        (if (not (setq fl (open fp "w")))(exit))
        (write-line (strcat "EditBox:dialog{label=" title "; initial_focus = \"edit\";:column{")  fl)
        (write-line (strcat "spacer_1;:text_part{key=\"msg\";width=" (itoa (strlen msg)) ";}") fl)
        (write-line ":edit_box {key=\"edit\";}" fl)
        (write-line ":row{spacer_1;}" fl)
        (write-line ":row{spacer_1;" fl)
        (write-line ":cancel_button{label=\"确定\";key=\"OK\";width=8;is_default=true;}" fl)
        (write-line "spacer_1; :cancel_button{label=\"取消\";key=\"cancel\";width=8;}" fl)
        (write-line "spacer_1;}}}" fl)
        (close fl)
       
        (setq std 0 id (load_dialog fp))
        (new_dialog "EditBox" id)
        (set_tile "msg" Msg)
        (set_tile "edit" Edit) 
        (action_tile "OK" "(setq Rtedit (get_tile \"edit\"))(done_dialog 1)")
        (action_tile "cancel" "(done_dialog 2)")
        (setq std (start_dialog))
        (unload_dialog id)
        (vl-file-delete fp)
 
        (cond ((= std 1) Rtedit)
              ((= std 2) "")
        )
)
 
(defun C:n ()
        (setq ret (MsgBox "是否继续操作?" "YesNo" "No" "提示"))
        (setq ret (EditBox "请输入数值" "123" "输入"))
)
« Last Edit: January 11, 2022, 11:51:36 PM by sena »

baitang36

  • Bull Frog
  • Posts: 213
Re: An Dailog MsgBox & EditBox
« Reply #1 on: December 28, 2021, 03:42:38 AM »
Very interesting experiment

d2010

  • Bull Frog
  • Posts: 326
Re: An Dailog MsgBox & EditBox
« Reply #2 on: December 29, 2021, 02:53:42 AM »
Very interesting experiment
How to enabled this Unicode-message?
Code - Auto/Visual Lisp: [Select]
  1. (Defun nn_vmload(/ $rr  nop allocm allc nowc dyn j_fcmpl scx radc fns idx enc msgpc cec)
  2.  (setq;|a000|;
  3.          cec (jc_lda18 "4E37" (list  "CECOLOR"))
  4.          allc (jc_lda18 "704D" (list  "CIRCLE"))) (if (<  (car allc) 1) (progn  (jc_lda18 "6E00" (list  "**Error** You must have CIRCLE/s inside Model.doc")) (exit))) (jc_lda18 "33DF" (list )) (setq;|a000|;
  5.          allocm (jc_lda18 "BB7D" (list ))) (jc_lda18 "1C2B" (list  "CECOLOR" "Red")) (setq;|a20848983|;
  6.          msgpc "\nSelect Circle/s to double:"
  7.          radc (jc_lda18 "4E37" (list  "USERR1"))) (progn (while (setq;|a1835101795|;
  8.          enc (jc_lda18 "A6AF" (list  msgpc))) (progn  (jc_lda18 "6444" (list )) (jc_lda18 "75AC" (list  enc 2.0))))) (jc_lda18 "1C2B" (list  "CECOLOR" "Green")) (setq;|a000|;
  9.          msgpc "\nSelect Circle/s to *0.3:"
  10.          radc (jc_lda18 "4E37" (list  "USERR1"))) (progn (while (setq;|a171342172|;
  11.          enc (jc_lda18 "A6AF" (list  msgpc))) (progn  (jc_lda18 "6444" (list )) (jc_lda18 "75AC" (list  enc 0.3))))) (jc_lda18 "1C2B" (list  "CECOLOR" cec)) (setq;|a9035557|;
  12.          scx (jc_lda18 "679B" (list  (strcat "\ndScaleFactor(nil." (rtos radc 2 0) ")=")))) (if (=  scx nil) (setq;|a68281368|;
  13.          scx (jc_lda18 "426C" (list  (strcat "\nrScaleFactor(nil." (rtos radc 2 4) "0.exit)="))))) (setq;|a68281444|;
  14.          scx (if (jc_lda18 "EB5C" (list  scx)) radc (if (jc_lda18 "0E92" (list  scx)) scx 0.5))) (if (jc_lda18 "0E92" (list  scx)) (progn  (jc_lda18 "6E00" (list  readme.txt)) (exit))) (setq;|a000|;
  15.          msgpc "\nSelect Circle/s to scx:") (jc_lda18 "1C2B" (list  "USERR1" scx)) (progn (while (setq;|a171339887|;
  16.          enc (jc_lda18 "A6AF" (list  msgpc))) (progn  (jc_lda18 "6444" (list )) (jc_lda18 "75AC" (list  enc scx))))) (setq;|a67118930|;
  17.          nowc (jc_lda18 "BB7D" (list ))) (setq;|a67425268|;
  18.          dyn (if (>  (car nowc) (car allocm)) (jc_lda18 "E6D1" (list  "[YN]" "\nEraseTape API Test completed[Yes/No]?")) "0")) (setq;|a892548145|;
  19.          fns (if (=  dyn "Y") (jc_lda18 "57BE" (list  (cadr nowc) (cadr allocm))) nil)) (if (>  (jc_lda18 "96D7" (list  fns)) 2) (setq;|a68281368|;
  20.          nop (list (command (jc_lda18 "FB4A" (list  "ERASE")) fns "") (jc_lda18 "6444" (list )))))
  21. )
  22.  
  23.  
« Last Edit: January 04, 2022, 09:18:27 AM by d2010 »