TIPS

起動中ダイアログを表示する(2)

時間のかかるアプレットの起動中にダイアログを表示する方法を前回紹介しました。前回は固定の(静的な)メッセージを表示するサンプルでしたが、今回は動くプログレスバーを表示する方法の紹介です。アプレット起動中にプログレスバーを動かすためにはサブ…

起動中ダイアログを表示する

アプレットの起動に時間がかかる場合は、起動中のダイアログを表示したい場合があります。 以下はデタッチドアプレットで起動中ダイアログを表示するサンプルです。 最初にダイアログを表示して、Viewが表示された後にダイアログを閉じています。 {curl 6.0 …

forで回せる自作クラス

id:giuseppe:20070408では、for文のコンテナループの使い方を紹介しました。あるルールに従うことで、自分で定義したクラスについてもfor文で回せるようになります。 例えば、FooListクラスのオブジェクトが、内部にFooItemクラスのオブジェクトを複数保持し…

コンテナループ

配列(Array-of)の要素を走査する場合には、 let arr:{Array-of int} = {{Array-of int} 1, 1, 2, 3, 5, 8, 13} let sum:int = 0 {for i:int = 0 below arr.size do set sum = sum + arr[i] }というように書いてしまうかもしれませんが、curlではコンテナル…

キャッシュと同期

curlのホームページにキャッシュと同期に関するドキュメントがアップされました。 カール‐技術資料 上記リンク先の中ほどに、「パッケージキャッシュのメリットを引き出す方法」というタイトルで当該文書へのリンクがあります。具体的には、curlのキャッシュ…

編集不可のTextFieldを作る

TextFieldを編集不可(あるいは読み取り専用)にして使いたいんですがどうすればいいですか?enabled?=falseだと文字列のコピーができなくなるので好ましくないです。 ありきたりな要求だと思うのですが、残念ながら現行のバージョン(5.0)では簡単に(例え…

マシンサイクルの計測

昨日の日記(id:giuseppe:20070310)では、処理時間の計測とゆうことでStopWatchというAPIを紹介しました。 let sw:StopWatch = {StopWatch} {sw.start} ||処理 {output {sw.elapsed}} もうひとつ、curlにはプログラムのパフォーマンスを測定するためのAPIと…

処理時間の計測

今日は、curlに関する日記をよく書かれている開発日記さんを引用して 開発日記 - 処理の高速化 curlだと let v_start:DateTime = {DateTime} 処理 {output ({DateTime} - v_start) & ":秒かかりました"} というふうに処理時間を計って原因を特定していきます…

アクセラレータキー

アクセラレータキーというのは、マウスを使わずにアプリケーションの機能を呼び出すためのいわゆるショートカットキーです。例えば、Ctrl-S(保存)やCtrl-Z(元に戻す)などのことです。curlでアクセラレータキーを実装するには、MenuBarに組み込むMenuActi…

Curlシンタックスで設定ファイル

アプリケーションに設定ファイルを用意して、ソースコードを変更せずにアプリケーションの動作を変更できるようにしたい場合があります。例えば以下のようにXMLで設定ファイルを用意する方法が考えられます。 <config> <mode>maintenance</mode> <log_level>debug</log_level> </config> アプリケーションは起動時…

type-switch

実行時の値のデータ型によって処理を分岐する場合にはisaプリミティブが使用できます。 {if x isa Foo then ||xがFoo型だった場合の処理 elseif x isa Bar then ||xがBar型だった場合の処理 }データ型によって分岐した後の処理はキャストを伴うことが多いで…

if-non-null

以下はnullチェックを行うコードの例です。 let str:#String = {get-possibly-null-string} {if str != null then {use-non-null-string {non-null str}} } このコードはif-non-nullマクロを使えば以下のように書けます。 non-nullマクロを使った非null型へ…