Thread Rating:
  • 476 Vote(s) - 2.84 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Curl Sonntagのイベントハンドリング処理について
08-12-2011, 05:58 PM, (This post was last modified: 08-12-2011, 06:04 PM by yuarai.)
#1
Curl Sonntagのイベントハンドリング処理について
こんにちは

Curl Sonntagのbind-screen-command と define-screen-commandを使って、
下記のDragOverのようなイベントやオブジェクトを引数として使用した記述は可能でしょうか?
可能であればどのように記述すればよいのでしょうか?
Code:
{VBox 
 {on e:DragOver at v:VBox do
  {e.will-accept-drop? 
    {proc {type:Type, x:Distance, y:Distance, effect:#DragEffect}:DragEffect
        }
   }
  }
}
08-15-2011, 11:12 AM, (This post was last modified: 08-15-2011, 01:42 PM by hokada.)
#2
RE: Curl Sonntagのイベントハンドリング処理について
私たちも以前からこれは感じて、Sonntagをいろいろカスタマイズして、以下のようにイベントやコントロールを取得できるようにしました。

Code:
{TextField
    {bind-screen-command => test || ここもStringじゃなくした。
        on ValueChangedEvent
    }
}

{define-screen-command test
    on event:ValueChangedEvent
    at tf:TextField
    of screen:TestScreen
do

  ||....    
}

SonntagはApache2.0ライセンスだから、カスタマイズ自由。。

参考までにSonntagの修正した部分のコードを添付します。
(他にも修正するところがあったかもしれないので、このコードだけでは動かないかもしれませんが、参考になると思います。)


Attached Files
.scurl   define-screen-command.scurl (Size: 4.95 KB / Downloads: 764)
.scurl   bind-screen-command.scurl (Size: 5.73 KB / Downloads: 721)
08-16-2011, 08:49 AM,
#3
RE: Curl Sonntagのイベントハンドリング処理について
回答ありがとうございます。


マクロってすごいですね!
08-16-2011, 09:06 AM, (This post was last modified: 08-16-2011, 09:24 AM by nasuB.)
#4
RE: Curl Sonntagのイベントハンドリング処理について
確かにマクロは、他の言語にもあまりない機能で言語が拡張できるから、非常にパワフルですよね。

ただ、ヘルプドキュメントがわかりづらくて、理解しづらいし、情報源が少なすぎる。。。。

もし、マクロマニアになれるドキュメントあったら、教えてほしいっす。。
(Excelマクロの本はいっぱいあるんですが・・。。全然違うもんか。。)

もしくは作ってほしいです。


- B
08-17-2011, 08:03 PM,
#5
RE: Curl Sonntagのイベントハンドリング処理について
Sonntagは比較的シンプルな画面やUIの標準ががっちり固まっている画面を量産するような、伝統的な(?)業務アプリケーション開発で使われることを想定したフレームワークです。(逆に少数の画面で複雑なUIを実現するようなアプリケーションの開発には向いていません。例えばGoogleカレンダーみたいなのを作るにはSonntagは全然嬉しくない)

こういったアプリケーションの開発だと、Sonntag以外にもそれ固有の標準や共通仕様を実現するためのさまざまなライブラリ(共通部品とかカスタムコントロールとか呼び方はいろいろ)を用意していくと思います。そしてそれらを使って「アプリケーションロジック」を組み立てていく。


具体的なイベントやイベントターゲットに依存するような処理は、SonntagではアプリケーションロジックではなくUIの詳細だと考えて、スクリーンコマンドで無理やり実装させることは想定していません。そういった処理はたいてい、ライブラリコード側に組み込まれる方が好ましいと思われるからです。

例えば、
・○○画面の××ボタンが押された場合・・・を行う
・△△画面の□□メニューが選択された場合・・・を行う

というような処理と、

・xxにキーフォーカスがあるときにyyキーが押された場合にxxを・・・する
・aaのオブジェクトをbbにドラッグ&ドロップした場合にbbを・・・する

のような処理では粒度がまったく異なるので、これらに同じ作り方をさせなくても問題ないでしょう。
前者はSonntagのスクリーンコマンドで実装し、後者はライブラリコード側なりで(Sonntagを使わない)それぞれに適切な作り方を選択することになると思います。

define-screen-command で Event や EventTarget に直接依存させないようになっているのは一応意図した結果です。
(それらが必要なら素直に on マクロを使う)

ただし、特定のイベント発生時にスクリーンコマンドを実行したいというケースは多々考えられます。
(例えば PasswordField で Enter キーを押したらログインボタンと同じコマンドを実行したい、など)

こういった場合は以下のような記述が可能です。

Code:
{PasswordField
    {bind-screen-command "login" on Action}
}

ちなみにこれは以下のコードと同等です。参考まで

Code:
{PasswordField
    {on Action at v:Visual do
        {if-non-null screen = v.screen then
            {screen.do-command
                "login",
                throw-exception-on-failure? = false
            }
        }
    }
}


Possibly Related Threads...
Thread Author Replies Views Last Post
  Curl execute Oracle database procedure NamDH 3 4,054 04-21-2017, 03:40 PM
Last Post: tdeng
  TLS通信下でCould not deserialize the object from Curl.発生 MIT 3 4,767 03-10-2017, 08:35 AM
Last Post: MIT
  Protecting SSL private key in a Curl script aensys 1 2,363 02-10-2017, 02:02 PM
Last Post: heavybugtracker
  curl library 7.36.0: curl_easy_perform() function call failed when used for getting a joezhao 1 3,632 10-19-2016, 09:41 AM
Last Post: dyoshida
  Curl IDE からのランチャが見つかりません umemura 1 3,771 06-30-2016, 10:12 AM
Last Post: umemura
  Curl RTE Install smtit 1 2,738 05-06-2016, 12:36 PM
Last Post: dice256
  Curl RTE Command line smtit 1 2,917 04-19-2016, 09:35 AM
Last Post: dice256
  What OS that CURL can support for deloyment? tiennv 1 4,574 08-22-2015, 02:12 AM
Last Post: tdeng
  Curl RTEのPPAPIプラグインについて でり 1 4,398 06-09-2015, 11:03 AM
Last Post: でり
  cURL Client app Michael-2015 1 3,852 04-16-2015, 12:27 PM
Last Post: dyoshida
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('208')