Guiserver.lsp

提供:GizmoLabs - だいたい CAD LISP なサイト

guiserver.lsp は newLISP で GUI 生成する guiserver.jar にインターフェス接続するためのモジュール。 ようするに newLISP で GUI アプリ作る場合はこれを使うので、使い方を覚えましょうという個人的なメモ。

newLISP GUI アプリケーションのアーキテクチャ

newLISPのGUIアプリケーションは4つの部分から構成されている。

  • 初期化 - newLISP-GS guiserver.jar との通信を初期化するのに1回のファンクションコールが必要。
  • ウィジェットの構築 - このステップでは、ウインドウ、ボタン、テキストフィールド、その他、全ての GUIの視覚外観が記述されること。newLISP newLISP-GSは、広範囲にわたる異なるコントロールウィジェットを提供する。
  • イベント・アクションの定義 - このステップでは、ボタン・プッシュ、キーストローク、マウス-移動、その他の結果としてGUIから返されるイベントに反応するためにの機能を定める.. 情報をユーザー、ポップアップ対話その他と交換するために、これらのイベント・アクションは、多くの命令をGUIに送り返す。
  • イベントのリスニング - newLISPプログラムが、定義されたイベントのアクションをループしながら待っている。このステップは1回のファンクションコールのみ必要。

例 :

     #!/usr/bin/newlisp
     ; button-demo.lsp - demonstrate the button control
      
     ; initialization(初期化)
     (load (append (env "NEWLISPDIR") "/guiserver.lsp")) 

     (gs:init) 
      
     ; describe the GUI(wigetの構築)
     (gs:frame 'ButtonDemo 100 100 400 300 "Button demo")
     (gs:set-resizable 'ButtonDemo nil)
     (gs:panel 'ColorPanel 360 200)
     (gs:set-color 'ColorPanel (random) (random) (random))
     (gs:button 'aButton 'abutton-action "color")
     (gs:set-flow-layout 'ButtonDemo "center" 2 15)
     (gs:add-to 'ButtonDemo 'ColorPanel 'aButton)
     (gs:set-visible 'ButtonDemo true)
      
     ; define actions(アクションの定義)
     (define (abutton-action id)
         (gs:set-color 'ColorPanel (random) (random) (random)))
      
     ; listen for incoming action requests and dispatch(リスニング開始)
     (gs:listen)
      
     ; eof 

GUIとグラフィックスのための関数