「逆引きリファレンス」カテゴリーアーカイブ

APIの説明・サンプル(翻訳API)

Caed2.1.0より、Curl言語で提供されている翻訳関連のAPIが対応されました。

CaedeでもCurlと同じ仕組みを用いることで実現が可能です。

ソースコードイメージ

    {radio1.add-event-handler
        {on ValueChanged do
           
            ||適用すべきロケールを選択します
            let my-locale:Locale = {Locale “en”}
            {switch {String radio1.value} 
             case  “English” do
                set my-locale = {Locale “en” }
             case  “Japanese” do
                set my-locale = {Locale “ja”}
             case  “Korean” do
                set my-locale = {Locale “ko”}
            }

            ||選択されたロケールを設定します
            {set-working-locale my-locale}

            ||[Do you want to log off now?]という文字列を
            ||現在のロケールに対応する翻訳ファイルを参照して表示します

            set hlr.value = {hlmessage Do you want to log off now?}
            set result1.value = {lmessage Do you want to log off now?}
           
            ||現在のワーキングロケールを取得
            def gwl-l = {get-working-locale}  
            set gwl.value = gwl-l.name
            ||現在のホストロケールを取得
            def ghl-l = {get-host-locale}  
            set ghl.value = ghl-l.name
        }
    }

 

lmessage、lformat、localizeはワーキングロケールで動作し、
hlmessage、hlformat、host-localizeはホストロケールで動作します。

ワーキングロケールはプログラムにて変更でき、ホストロケールは各デバイス側の設定を変更することにより変更できます。

実行結果

caede21kokusai.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上部分がデバイスの設定(言語と文字入力->言語)で「日本語」を選択した場合のイメージ。

下部分がデバイスの設定(言語と文字入力->言語)で「English(United States)」を選択した場合のイメージ。

 

対応API

  1. Localeクラス
       * defaultファクトリ
       * languageフィールド
       * nameフィールド
  2. localize
  3. lmessage
  4. lformat
  5. host-localize *1
  6. hlmessage *1
  7. hlformat *1
  8. get-working-locale
  9. set-working-locale
 10. get-host-locale *1
 11. get-syntax-locale

 *1 Android:3.x以下では動作しません。

 

Curlの翻訳関連のAPIを使ったサンプルをCurlアップスギャラリにて確認することができます。

 

APIの説明・サンプル(アプリ連携)

Caed2.1.0より、外部アプリケーションと連携可能なAPI(COM.CURL.CAEDE.EXTERNAL-APPLICATION)が対応されました。

対応API

イベント
UrlSchemeEvent

プロシージャ
 get-own-url-scheme
 show-local-document
 can-launch-external-application?
 launch-external-application
 register-launched-event-from-external-application
 unregister-launched-event-from-external-application

  

ソースコードイメージ

         ||自身のURLスキーム
         {popup-message {get-own-url-scheme} }
        
         ||URLスキームがオープンできるかを確認
         {popup-message {can-launch-external-application? “tel”}}
        
        
         ||Caedeアプリケーションから外部アプリケーション(メーラー)を起動
         {try
                {launch-external-application {abs-url mailto://xxx@xxx}}
          catch e:IOException do
                {popup-message “mailto error”}
         }

         ||指定したドキュメントを開く
         {show-local-document {urlfile:///mnt/sdcard/caede.doc}}    

         ||UrlSchemeEvent:外部アプリケーションからURLスキーム経由で呼び出された場合に発生する
         ||外部アプリケーションからCaedeアプリケーションと連携する際に利用します
         ||UrlSchemeEvent用のイベントハンドラを登録

         {register-launched-event-from-external-application
             {on e:UrlSchemeEvent do
                 {popup-message “外部アプリから呼び出されました。UrlSchemeEvent!!”}
             }
         }

詳細はCaede開発者ガイドを確認してください。

 

Tips for Android

セットアップ方法

モバイル開発環境Caedeのページよりご参照してください。

アプリケーション名の変更

Caedeプロジェクトのres/values/caede.xmlを開き、caede_app_nameを変更してください。

例)
<string name=”caede_app_name”>App1234</string>

パッケージ名の変更

Androidでは、パッケージ名がアプリケーションの一意なIDとなります。
デフォルトではcom.curl.caedeですので、アプリケーションを識別する任意の名前に変更してください。
変更方法は、Caedeプロジェクトの AndroidManifest.xmlを開き、packageを変更してください。

例)
<manifest …….
package=”jp.co.xxx.app1
……
</manifest>

アイコンの変更

画像を作成し、res/drawable-hdpi, res/drawable-mdpi, res/drawable-ldpiのcaede.pngを上書きするか、
任意のファイル名で3つのディレクトリに保存した後、
AndroidManifest.xmlファイルのandroid:icon=”@drawable/caede”を変更してください。

詳細はGoogle Androidのサイトを参照ください。

スプラッシュスクリーンの変更

res/drawable/splash_screen.pngファイルを配置することでスプラッシュスクリーンを変更することができます。

【New】Caede 3.0 以降

splash_screen.png は、デバイスの中央に縮小(または拡大)表示されます。
デフォルトでは、画面の縦横で短い方の長さの 0.75倍(3/4)に、画像の
縦横で長い方がフィットするように縮小(もしくは拡大)されます。
このとき、画像の周り(背景色)は黒となります。

例えば、ディスプレイが 1280×720 ピクセルで、スプラッシュ画像が
640×480 ピクセルの場合、

720 * 0.75 = 540
540 / 640 * 480 = 405

となり、スプラッシュ画像は 540×405 に縮小されて表示されます。
この表示サイズは、デバイスを縦向き、横向きのどちらにしても変わり
ません。

ディスプレイの短い方に対する画像の長い方の縮尺比および、背景色は
AndroidManifest.xml に以下のメタデータを追加することで変更できます。
(追加位置は、”com.curl.caede.Main” の Activity タグ内)

【背景色】

アイテム名(android:name 属性値) “splash-screen-background”
設定値(android:value 属性値) Color 値(以下参照)

色は色名または #rrggbb, #aarrggbb の形式で指定することができます。
(例えば、”red”, “#ff0000” など)
このメタデータが未指定の場合、背景色は黒となります。

【縮尺比率】

アイテム名(android:name 属性値) “splash-screen-scale”
設定値(android:value 属性値) Float 値(以下参照)

スプラッシュ画像の画面に対する比率を 0.1 ~ 1.0 の間で指定します。
(例えば、”0.5″, “1.0” のように指定)
このメタデータが未指定の場合、縮尺比率は 0.75 となります。
※範囲外の値は範囲内に丸められます。

(例)背景色を白にして、縮尺比率 1.0 にする

<meta-data android:name=”splash-screen-background”
android:value=”white” />

<meta-data android:name=”splash-screen-scale”
android:value=”1.0″ />

パーミッションの設定

CaedeアプリケーションでAndroid端末のデバイスを使用する場合には、
AmdroidManifest.xmlにてパーミッションを設定する必要があります。

権限の一例

完全なインターネットアクセス <uses-permission android:name=”android.permission.INTERNET” />
ネットワーク状態の表示 <uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />
SDカードのコンテンツ
を修正/削除する
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
高精度の位置情報の取得
(GPS)
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/>

低精度の位置情報の取得
(Cell-ID/WiFi)

<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/>
カメラ <uses-permission android:name=”android.permission.CAMERA” />
通話 <uses-permission android:name=”android.permission.CALL_PHONE”/>
連絡先データの読み取り <uses-permission android:name=”android.permission.READ_CONTACTS”/>
バイブレーションの制御 <uses-permission android:name=”android.permission.VIBRATE” />

例えば、カメラを利用する場合、
<uses-permission android:name=”android.permission.CAMERA” />
を設定する必要があります。

設定例

userpermission2.png

詳細はGoogle Androidのサイトを参照ください。

ログの確認

Curlのoutputプロシージャなどで出力した場合、出力先はEclipseコンソールではなくて、Android SDKのLogcatに表示されます。
logcatの起動は、Eclipseのメニューから「 Window > Show View > Android > Logcat 」 でLogcat ビューが起動します。
もしくは、Android SDKのadbコマンドでも起動できます。

Androidのバージョン

Caedeで実装する以下のAPI・オブジェクトを利用する場合は、Android4.0以上のバージョンを利用する必要があります。

1.Canvas、Shape、Chart
2.HttpFile.http-read-openまたはhttp-async-read-open
※条件
HttpFile.http-read-openまたはhttp-async-read-openにてPOST送信し、かつ、
送信するHttpRequestDataのrequest-dataにバイナリデータが含まれている場合
3.翻訳APIの一部(詳細

これらのAPIは、Android4.0以上の端末で対応するライブラリ・オブジェクトを用いているためです。

その他

  • シミュレータを使ってデバイス・インターフェースを利用する場合、シミュレータがサポートしていない機能
    は動作しませんので、実機を使い確認してください。
  • シミュレータ上でアプリケーションを実行した際に 「 VM aborting 」 とうエラーがコンソールに表示され、
    起動できない場合があります。
    これはAndroid 2.3 シミュレータの問題のようで、他のバージョンのシミュレータか実機を使うことで
    根本的な解決ではありませんが回避できます。
  • プロジェクト作成時にはAndroid4.2以外のバージョンを選択してください。4.2のデバイスで使用したい
    場合は、4.1など他のバージョンを選択してください。

Tips for iOS

セットアップ方法

モバイル開発環境Caedeのページよりご参照してください。

アプリケーション名の変更

1. プロジェクトエディターで Targets を選択します。
2. Info タブで Bundle display name を修正して変更します。

プロジェクト名の変更

1. プロジェクトを選択します。
2. 右側のサポートビューに表示されている identity を変更します。

アイコンの変更

1. プロジェクトエディターで Targets を選択します。
2. Summary タブで App Icons に使用したい png ファイルをドラッグ&ドロップします。

スプラッシュスクリーンの変更

1. プロジェクトエディターで Targets を選択します。
2. Summary タブで Launch Images に使用したい png ファイルをドラッグ&ドロップします。

XCode画面イメージ

上記設定は赤枠にて行います。

iOSXCode.jpg

iOS では、使用するデバイスのスクリーンサイズに見合った起動画像を用意しない場合、
設定されている他の起動画像から適切と思われるものが選択されます。
利用が想定されるデバイスにあわせた起動画像をすべて設定することをお勧めします。

ログの確認

Caede の {output} で記述された(あるいは、Javascript で console.log 等で記述された)ログは、
Xcode 上に表示されません。
確認するためには、別途 Weinre などのリモートデバッギングツールを使用して対応する必要があります。

動画の再生について

iOSでは、run-media-galleryプロシージャでサイズの大きい動画ファイルを選択
すると、選択画面から戻るのに非常に時間がかかります。動画を再生した時と
同じくらいの時間がかかる場合があります。
この問題はrun-cameraプロシージャで撮影した動画ファイルを選択した場合は
発生しません。

イベント発生のタイミング

iOS の TextField / TextDisplay /PasswordField/ TextArea 上で発生する
PointerPress/PointerRelease はイベントの発生タイミングが Curlとは異なります。
共に、指をはなしたタイミング (つまりは PointerRelease が発生するタイミング)で同時に発生します。

Office2007以降で作成された文書の表示について

「.docx」「.xlsx」などのOffice 2007以降で作成された文書をダウンロードして
show-local-documentプロシージャで表示する場合、すでに同じ名前を持つファイルが
ダウンロード済みだと失敗する場合があります。この場合はファイルをダウンロード
する前にすでに存在しているファイルをdeleteプロシージャで削除してください。

既知の問題点

Caede バージョン3.0.0 – 2014年11月11日現在 –

以下は現在把握している問題点です。(機能のサポート・未サポートについては含みません。)

Caede

  • Eclips v4.2 では Caedeアプリケーションプレビューのダイアログを閉じる際に強制終了することがあります。
    回避方法:Eclipseバージョン3.7.2または4.3.2にてCaede Development Toolsを使用してください。
  • グラフィック部分のコードにエラーがある場合、エラー箇所でIDEが起動してしまいます。
  • Caede Eclipse pluginインストール時に以下のエラーが発生する場合、
    既にインストールされているプラグインのアンインストールを事前にお願いします。
    (EclipseのメニューからHelpを選択し、Installation Detailsボタンを押下し、対象のプラグインをアンインストールします。)
■ 以下のエラーの場合
CDEをアンインストール。
Your original request has been modified.
“Curl 開発環境 (日本語)” is already installed, so an update will be performed instead.
Cannot complete the install because of a conflicting dependency.
  • マニフェストを使用したパッケージ以外のリソースについて

マニフェストを使用したパッケージ以外(例えば、ディレクトリやファイルなど)のリソースは、
必ずCaedeプロジェクト配下に格納するようにしてください。
なお、Caedeで利用できるリソースは、ローカルリソースに限定されます。

[正しいリソースファイルの配置例 1]

{component file README,
location = “texts/readme.txt”
}

[正しいリソースファイルの配置例 2] (“file:///d:/Sample“にプロジェクトファイルがある場合)

{component file README,
location = “file:///d:/Sample/texts/readme.txt
}

[誤ったリソースファイルの配置例 1]

{component file README,
location = “../bad-location/readme.txt”
}

[誤ったリソースファイルの配置例 2]

{component file README,
location = “http://www.curl.com/example/readme.txt
}

また、Caedeではディプロイメント時に上記条件に従って配置されたリソースを、ディレクトリ構造を
維持したまま、assets配下にコピーします。例えば、以下のようなディレクトリ構成のイメージリソースが
ある場合、assets/android-native-web/resources ディレクトリに images/copyright.jpg ごとコピーされます。

{curl 8.0 manifest}
{component image COPYRIGHT,
location = “images/copyright.jpg”
}

ディプロイすると、以下にコピーされます:

<Caedeプロジェクトルート>/assets/android-native-web/resources/images/copyright.jpg

これにより、manifest-url マクロを使用することでリソースの情報を取得することができます。
manifest-url マクロについては Caede APIリファレンス を参照ください。

Sonntag の EventBus について

Sonntag の VEventBus について

Sonntag は設計上、画面のレイアウトを担当するGraphic、処理の内容を担当するCommand、そしてその間を取り持つScreenの3つの役割がそれぞれ分担されることによって、疎結合を実現しています。

この方式を採用することで、各業務(画面)ごとに開発が行えるだけでなく、デザインとロジックを切り分けることで、依存性を低く保ち、たとえば画面デザイナーと処理記述のプログラマーが分散して開発を進めることができるようになっています。

 

 

各業務画面(Graphic)をユーザーが操作し、発生する処理は、Commandの中に記述し、bind-screen-command や Screen.do-command などを利用して間接的に呼び出すようになっています。

また、ある画面から、別の画面の処理を呼び出したい、という場合には、「イベントバス」という概念を利用します。

このイベントバスには、インスタンス化されたすべてのScreenが関連付けられており、あるScreenがこのイベントバスにメッセージを送ると、関連付けられているすべてのScreenにそのメッセージがブロードキャストされます。

 

 

具体的には、メッセージを送るScreen の send-message メソッドを呼び出してメッセージを送信します。
そのメッセージは、各Screen の handle-message メソッドに送られるので、受け側のScreenはそのメソッドをオーバーライドすることで、メッセージを受け取ることができます。

 

 

メッセージとして送信できるのは、 any型の任意の値(またはオブジェクト)です。
他のScreenにデータを渡す必要がある場合は、そのデータをもつオブジェクトをメッセージとして送信することができます。

また、このsend-message のイベントは非同期で実行されますが、send-message-syncを利用することで、メッセージを送った後のイベントが実行し終えるまで同期して待つことが可能です。

この同期方式を利用し、受け側のScreenの処理の中で送られてきたメッセージの中にデータを格納し、処理が終了した後、同期された送り側のScreenがそのデータを参照することで、間接的に戻り値のようにしてデータを受け取ることも可能です。

 

■EventBus を利用したサンプル

イベントバスを利用するサンプルを作成しましたので参考にして下さい。
   Sonntag EventBusサンプル http://developers.curlap.com/curl/Sontag-event-bus.zip

サンプルでは、あるScreen (親画面)の中に「クリア」ボタンと、タブコンテナが含まれ、そのタブコンテナの2つのペインが、それぞれ別のScreenを含んでいます。
コンテナペインの中のScreenは、テキストフィールドをひとつずつ含んでいます。

親画面の「クリア」ボタンを押すと、各コンテナの中のテキストフィールドの値がクリアされるという処理を、イベントバスを利用して実装しています。

親画面の「クリア」ボタンを押すと、send-message メソッドが呼ばれ、”clear” というメッセージがイベントバスに送られます。
イベントバスは、タブコンテナの中のScreenにメッセージをブロードキャストして届け、そのhandle-event の中でテキストフィールドをクリアするCommandを呼び出しています。

 

非同期ホストプロセス呼び出しAPI

※v8.0からサポートされました。

非同期ホストプロセス呼び出しAPI が追加されました。
ホスト固有のコマンドまたはシェルコマンドを子プロセスで起動し、
コマンドまたはシェルの起動や終了をイベントで検出することが
できるようになります(特権アプレットのみ)。

async-spawn-host-process
プロシージャが追加されました。
指定されたホスト固有のコマンドを子プロセスで起動し、バックグラウンドプロセスにハンドルを返す既存プロシージャ spawn-host-process の非同期バージョンです。
引数は以下のように定義されています。

||子プロセスで起動される実行可能ファイル。実行可能ファイルは、ローカル ファイル システムの Url として、またはローカル ファイル名を含んでいる String として指定される可能性があります。
executable
||コマンドのパラメータが格納されます。パラメータは、StringArray に格納された 0 個以上の引数として指定されます。
args
||HostProcessEvent を受け取る EventHandler で、少なくとも一つは指定する必要があります。イベントの HostProcessCreatedEvent と HostProcessExitedEvent を参照してください。
event-handler…
||このパラメータが null でない場合、このパラメータには、コマンドの明示的なホスト環境が含まれていなければなりません。このパラメータが NULL の場合は、子プロセスが既存のホスト環境を継承します。
host-environment
||このパラメータが true に設定されている場合は、リターンされた HostProcess から子プロセスの標準入力を取得できます。
write-stdin?
||この引数が true に設定されている場合は、リターンされた HostProcess から子プロセスの標準出力を取得できます。
read-stdout?
||この引数が true に設定されている場合は、リターンされた HostProcess から子プロセスの標準エラーを取得できます。
read-stderr?
||この引数を true に設定した場合、コンソール モードが実行可能であっても生成される HostProcess はコンソール ウィンドウなしで実行されます。
suppress-console-window?

戻り値: 子プロセスとのやりとりに使用される可能性がある HostProcessを返します。

async-spawn-host-shell プロシージャが追加されました。
指定されたホスト固有のシェルコマンドを子プロセスで起動し、バックグラウンドプロセスにハンドルを返す既存プロシージャ spawn-host-shell の非同期バージョンです。
引数は以下のように定義されています。

||1つの String として引数を含む、実行対象のコマンド。
command
||HostProcessEvent を受け取る EventHandler で、少なくとも一つは指定する必要があります。
event-handler
||このパラメータが null でない場合、このパラメータには、コマンドの明示的なホスト環境が含まれていなければなりません。このパラメータが NULL の場合は、子プロセスが既存のホスト環境を継承します。
host-environment
||このパラメータが true に設定されている場合は、リターンされた HostProcess から子プロセスの標準入力を取得できます。
write-stdin?
||この引数が true に設定されている場合は、リターンされた HostProcess から子プロセスの標準出力を取得できます。
read-stdout?
||この引数が true に設定されている場合は、リターンされた HostProcess から子プロセスの標準エラーを取得できます。
read-stderr?
||この引数を true に設定した場合、コンソール モードが実行可能であっても生成される HostProcess はコンソール ウィンドウなしで実行されます。
suppress-console-window?

戻り値: 非同期ホストプロセスを制御することができる AsyncHostProcessWorker を返します。

async-spawn-host-shell, async-spawn-host-processに、以下のイベントを処理するイベントハンドラを渡し、起動や終了を検出して処理を記述することができます。

||ホストプロセスの生成に失敗すると exceptionアクセサ からnull以外の値が戻ります。
HostProcessCreatedEvent:
||終了コードをexit-statusアクセサから取得できます。
HostProcessExitedEvent:

以下は、Windowsのverコマンドを、同期プロシージャと非同期プロシージャのそれぞれで五回連続して呼び出すサンプルです。

http://developers.curlap.com/curl/v8/async-host-procsee.curl

Curl RTEの主な新機能(v8.0.0)

Curl RTEの主な新機能(v8.0.0)を紹介致します。

Decimal型サポート

SimpleDateTimeAxis のサポート

AppletDataを用いたデバッグ

Activeドキュメントコンテナ

SHA-2を用いたメッセージダイジェスト出力

マルチタッチとジェスチャーAPI

IPv6

HTTP only cookie

・印刷機能の強化

PDF 出力

システム起動時の Curl RTE スタートアップ

国際化ドメイン名

truncate/floor/ceiling/round

非同期ホストプロセス呼び出しAPI

PDF 出力

 ※v8.0からサポートされました。

print-graphic-pdf APIにより、 Graphic をPDFを出力できるようになりました。

PDF出力機能は印刷機能の拡張として実装されております。
 

{let pf:#PDFPrintRootFrame}
{let rect1:Graphic={Fill width=1in, height=1in, background=“red”}}

{CommandButton label=“export to PDF file”,
    {on Action do
        {let file-url:#Url =
            {choose-file
                style=FileDialogStyle.save-as,
                title=“Select a File, to export PDF”
            }
        }
        {if-non-null file-url then
            set pf = {print-graphic-pdf
                          rect1,     ||出力対象のグラフィック
                          file-url    ||保存先ファイルパス
                     }
        }
    }
}

print-graphic-pdf の引数は多数ありますが、最低は出力対象のgraphicとPDFファイルを保存するためのパスだけです。


請求書を出力するサンプル:http://developers.curlap.com/curl/v8/pdf/mypdf/start.curl

 

DataTimeデータを用いたチャート

※v8.0からサポートされました。

SimpleDateTimeAxis クラスが追加されています。 これは、チャートに DateTime のデータを利用する為のものです。

 

{SimpleDateTimeAxis.default
    label-group:ChartLabelGroup = {ChartLabelGroup},
    axis-group:Shape = {ShapeGroup},
    axis-line-group:Shape = {ShapeGroup},
    major-tick-group:Shape = {ShapeGroup},
    minor-tick-group:Shape = {ShapeGroup},
    …
}

新しい SimpleDateTimeAxis を作成します。
 label-group: ChartAxis.label-group の初期値。
 axis-group: ChartAxis.axis-group の初期値。
 axis-line-group: ChartAxis.axis-line-group の初期値。
 major-tick-group: ChartAxis.major-tick-group の初期値。
 minor-tick-group: ChartAxis.minor-tick-group の初期値。
 …: Shape が受け取る引数のいずれか。これらは主に、オプションの初期化を表すキーワード引数です。


http://developers.curlap.com/curl/v8/simpledate/help/help.curl

http://developers.curlap.com/curl/v8/simpledate/mychart.curl

 

 

AppletDataを用いたデバッグ

 ※v8.0からサポートされました。

デバッグ用APIが AppletData に追加されました。

 

{AppletData.default
    ag:#AppletGraphic,
    url:Url,
    grant-privilege?:bool = false,
    arguments:#Arguments = null,
     debuggable?:bool = false,
     start-in-debugger?:bool = false
}

debuggable?: サブアプレットをデバッグ可能か否かを指定します。 規定値は false です。

start-in-debugger?: デバッガを起動するときにデバッグを停止するかを指定します。

 


 

 http://developers.curlap.com/curl/v8/debug/start.curl

debuggable?にtrueを指定して実行すると、アプレットマネージャー「デバッグ可能?」にて確認できます。

debug.jpg

truncate/floor/ceiling/round

 ※v8.0からサポートされました。

truncate および floor に、符号なし整数(uint32 と uint64)を指定することが可能となりました。

 

{curl 8.0 applet}
{curl-file-attributes character-encoding = “utf8”}

{let u32:uint32 = 4294967295}
{let u64:uint64 = 18446744073709551615}

{value
    {VBox
        {truncate u32 ,2},
        {truncate u64 ,2}
    }
}

 

 http://developers.curlap.com/curl/v8/trunc_floor.curl

 

Activeドキュメントコンテナ

※v8.0からサポートされました。

Microsoft Excel® などのActiveドキュメントサーバから提供されるActiveドキュメント(.xlsファイルなど)をCurlアプレットに埋め込んで表示できるようになりました。

 

{ActiveXObject.default
    ProgId:#String = null,
    ClsId:#String = null,
    FileExtension:#String = null,
    DataFile:#String = null,
    initial-url:#Url = null,
    initial-read-only?:bool = false,
    …
}:ActiveXObject

以下の引数が追加されました。

initial-url: 起動時にロードするように COM オブジェクトに指示するローカルファイルの Url。ローカルファイルでない場合は例外が発生します。

initial-read-only?: initial-url は、読み取り専用でロードされなければなりません。


ローカルに存在するエクセルファイルをCurlオブジェクト内に描画するサンプルです。

 http://developers.curlap.com/curl/v8/excel_activex.curl

 

 

SHA-2を用いたメッセージダイジェスト出力

 ※v8.0からサポートされました。

新しい暗号化及びメッセージダイジェストのアルゴリズムとして、AESとSHA-2(SHA-224/SHA-256/SHA-384/SHA-512)が使用できるようになりました。

{curl 8.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}

{import * from CURL.CRYPTO.MSG-DIGEST}

{let dg224:SHA-224-Digester = {new SHA-224-Digester}}
{let dg256:SHA-256-Digester = {new SHA-256-Digester}}
{let dg384:SHA-384-Digester = {new SHA-384-Digester}}
{let dg512:SHA-512-Digester = {new SHA-512-Digester}}

{let vb:VBox = {VBox}}
{let txt:TextField = {TextField value = “input”} }
{let cbx:ComboBox = {ComboBox
                        value = “SHA-224-Digester”,
                        “SHA-224-Digester”,
                        “SHA-256-Digester”,
                        “SHA-384-Digester”,
                        “SHA-512-Digester”
                    }
}

{let cb:CommandButton = {CommandButton
                            label = “execute”,
                            {on Action do
                                {if cbx.value == “SHA-224-Digester” then
                                    {vb.add {dg224.digest-from-string txt.value}  }
                                 elseif cbx.value == “SHA-256-Digester” then
                                    {vb.add {dg256.digest-from-string txt.value}  }
                                 elseif cbx.value == “SHA-384-Digester” then
                                    {vb.add {dg384.digest-from-string txt.value}  }
                                 elseif cbx.value == “SHA-512-Digester” then
                                    {vb.add {dg512.digest-from-string txt.value}  }
                                 else
                                    {vb.add “miss”}
                                }
                            }
                        }
}

{value
    {vb.add cbx}
    {vb.add {HBox txt ,cb}}

    vb
}

 


SHA-2を用いたメッセージダイジェスト出力 サンプル: http://developers.curlap.com/curl/v8/digester.curl

 


 

共通鍵暗号方式 (AES)についてはこちらを参照してください。

 http://developers.curlap.com/re-reference/34-security/119-encrypt.html

 

 

マルチタッチとジェスチャーAPI

 ※v8.0からサポートされました。

マルチタッチとジェスチャー イベントを制御するAPIが追加されました。

ジェスチャーイベントの種類として、

 Windowsでは、rotate、magnify、tap

 mac環境では、rotate、magnify、swipe

があります。


マルチタッチがお手元にある方: http://developers.curlap.com/curl/v8/touch/gesture.curl

 実際にその操作をしてみると、イベント名が出力されるサンプルです。
以下は、上記サンプルを用いて撮影したものです。

rotateのサンプル:http://developers.curlap.com/curl/v8/touch/rat.avi

magnifyのサンプル:http://developers.curlap.com/curl/v8/touch/mag.avi

tapのサンプル:http://developers.curlap.com/curl/v8/touch/tap.avi

 

 

IPv6

※v8.0からサポートされました。

通信プロトコル IPv6 がサポートされました。

 ソース

{curl 8.0 applet}
{curl-file-attributes character-encoding = “utf8”}

{import * from CURL.IO.SOCKET}

{let v4:IPv4Address = {IPv4Address 0xC0A80101}} ||192.168.1.1
{let v6:IPv6Address = {IPv6Address.from-SocketIPv4Address 0xC0A80101}}
{VBox
    {v4.to-String},
    {v6.to-String}
}

 

実行結果v6.jpg

 

 

HTTPOnly Cookie のサポート

 ※v8.0からサポートされました。

Microsoft Windows® においてHttpOnly属性を持つCookieをサポートしています。 特権アプレットはHttpOnly属性を持つCookieにアクセスすることが出来ます。

 

{curl 8.0 applet}
{curl-file-attributes character-encoding = “utf8”}

{let message:VBox={VBox}}
{let cookies:{Array-of HttpCookie} =  {get-http-cookies {url “http://localhost:8888/“} , include-http-only? = true} }
{do
    {for v:HttpCookie in cookies do
        {message.add {v.to-String}}
    }
}
{value
    message
}

include-http-only?: このパラメータが true で特権アプレットの場合は、 HttpOnly Cookie を含む全ての Cookie が返されます。このパラメータが true で、非特権アプレットの場合は、セキュリティ例外がスローされます。

 

 

印刷機能の強化

※v8.0からサポートされました。

印刷用APIに新しい印刷設定のサポートが追加されました。
印刷時にプリンタに対してきめ細かな指示を発行することができます。

Printクラスには次のクラスプロシージャが追加されています。

||給紙方法(用紙トレイ)のリストをPrintMediaSource型の配列で返します。
Printer.get-media-source
||カラー印刷をサポートしているかを返します。
Printer.get-color?
||部単位での印刷をサポートしているかを返します。
Printer.get-collate?
||両面印刷をサポートしているかを返します。
Printer.get-duplex?

print-graphicプロシージャはこれらの情報を受け取ることができるように以下の引数が追加されています。

||トレイ選択ができるプリンタでは、用紙トレイを選択できます。
media-source
||カラー/モノクロを選択指定できます。
color
||部単位印刷を指定できます。
collate
||両面印刷を指定できます。
duplex

media-sourceには
get-media-sourceプロシージャが返す
PrintMediaSourceオブジェクトのいずれかを
指定することができます。

color、collateはPrintSettingBool列挙型の
以下の三つの値をとります。

||trueに設定。
PrintSettingBool.yes
||falseに設定。
PrintSettingBool.no
||未指定、もしくは規定値に設定。
PrintSettingBool.default

duplexに関してはPrintDuplex列挙型の以下の四つの値をとります。

||両面印刷を無効にします。
PrintDuplex.simplex
||短辺とじで両面印刷を行います。
PrintDuplex.short-edge
||長辺とじで両面印刷を行います。
PrintDuplex.long-edge
||プリンタの既定に合わせた両面印刷を行います。
PrintDuplex.default

PCにインストールされているプリンタでこれらの属性を選択して印刷するサンプル

http://developers.curlap.com/curl/v8/printgraphic/sample.curl

システム起動時の Curl RTE スタートアップ

 ※v8.0からサポートされました。

システム起動時に Curl RTE がスタートアップするようになりました。これはCurl コントロールパネルで切りかえることができます。

また、従来のバージョンではアプレットが実行されていない場合はRTEを自動でシャットダウンされていましたが、このオプションを利用することで手動でシャットダウンするまでRTEが実行されます。

startup2.jpg

国際化ドメイン名

 ※v8.0からサポートされました。 

国際化ドメイン名 (IDN) をサポートするプロシージャが追加されました。

 

ソース

{curl 8.0 applet}
{curl-file-attributes character-encoding = “utf8”}

{let asi:String =  “idn-hostname-to-ascii   日本語.jp          result is :” & {idn-hostname-to-ascii “日本語.jp”}}
{let uni:String =  “idn-hostname-to-unicode xn--wgv71a119e.jp result is :” & {idn-hostname-to-unicode “xn--wgv71a119e.jp”}}
{let vb:VBox = {VBox asi,uni}}
{value
    vb
}

実行結果idn.jpg

 

 


サンプル

 http://developers.curlap.com/curl/v8/idn2.curl