# زبان های اسکریپتی > دیگر زبان های اسکریپتی > آموزش: استفاده از واسط کاربری در Lisp

## Omid Salehi

به صورت معمول زبان لسپ هیچ اینترفیس گرافیکی در اختیار کاربر نمی گذارد و اکثرا تمام تست ها در محیط کامند اجرا می شود.
ولی اگر از نرم افزار NewLisp استفاده کنید شما قادر خواهید بود برنامه خود را همانند دیگر برنامه های دسکتاپ نوشته و اجرا کنید.
من در اینجا قصد آموزش لیسپ را ندارم و فقط قصدم نمایش یک مثال برای کار کردن با لیسپ در محیط گرافیکی است.

1 - برنامه NewLisp را نصب کنید.
2-یک تب جدید باز کنید و کدهای زیر را در آن کپی کنید.

#!/usr/local/bin/newlisp
;;;; initialization
(set-locale "C")
(load (append (env "NEWLISPDIR") "/guiserver.lsp")) 

(gs:init) 

;;;; describe the GUI
(gs:frame 'WidgetsDemo 200 40 640 640 "Widgets Demo")
(gs:set-grid-layout 'WidgetsDemo 5 1 10 1)

;; the monitor area
(gs:text-area 'MonitorArea 'action-handler)
(gs:set-editable 'MonitorArea nil)
(gs:set-background 'MonitorArea 0.5 0.5 0.5)
(gs:set-font 'MonitorArea "Monospaced" 12 "plain")
(gs:set-foreground 'MonitorArea 1 1 0.0)

;; the button panel
(gs:panel 'ButtonPanel)
(gs:set-flow-layout 'ButtonPanel "left" 10 10)
(gs:set-titled-border 'ButtonPanel "input")
(gs:button 'TheButton 'button-handler "button")
(gs:text-field 'TheTextField 'textfield-handler 10)
(gs:add-to 'ButtonPanel 'TheButton 'TheTextField)

(gs:panel 'output)
(gs:set-flow-layout 'output "left" 10 10)
(gs:set-titled-border 'output "output")
(gs:text-area 'TheTextArea 'textarea-handler 160 80)
(gs:set-editable 'TheTextArea nil)
(gs:add-to 'output 'TheTextArea)


;; add all panels to the grid laount in the main frame
(gs:add-to 'WidgetsDemo 'MonitorArea 'ButtonPanel 'output)

(gs:set-visible 'WidgetsDemo true)

(define (button-handler)
 (gs:get-text 'TheTextField 'gettextcallback-handler)
)

(define (gettextcallback-handler id text)
    (if text
        (begin
            (set 'msg (my-func (base64-dec text)))
            (gs:append-text 'TheTextArea msg)
            (gs:append-text 'TheTextArea "\n"))
    )
)

(define (my-func arr)
  (set 'ee (string "(+ " arr ")"))
    (set 'dq (eval-string ee))
    (string dq)
)
;;;; listen for incoming action requests and dispatch
(gs:listen)

;; eof


lisp2.png

3-برنامه را اجرا کنید.
lisp.png
تبریک می گویم شما اولین برنامه خود را در زبان NewLisp نوشتید.
درقسمت ورودی به تعداد دلخواه عددهای خود را وارد کنید.(با اسپیس از هم جدا شوند)
در قسمت خروجی حاصل جمع آنها را مشاهده خواهید کرد.

4-برنامه را در محل دلخواه با نام mylisp ذخیره کنید.
اکنون برای اجرای دوباره آن فقط کافیست در محیط کامند به محل ذخیره خود رفته و دستور زیر را وارد کنید:

newlisp mylisp.lsp

----------


## hooooman

سلام آقای صالحی
میشه لینک دانلود NewLisp رو قرار بدین؟سپاسگزارم

----------


## hooooman

ببخشین تو سایت newLisp.org متوجه نمیشم خود محیط گرافیکی نرم افزار که شما ازش اسکرین قرار دادین کدومه

----------

