前のバージョンからのアップグレード

概要

バージョン 7.0 以前の Curl IDE をバージョン 8.0 にアップグレードする場合は、この章にある内容からバージョン 8.0 でアプレットが動作するために必要な項目を特定してください。新機能に関する情報は、「バージョン 8.0 の新機能」を参照してください。バージョン 8.0 の新機能と新しい APIの概要がまとめられています。

バージョン 7.0 の新機能

バージョン 7.0 の Curl RTE(実行環境) は、数々の特徴を含んでいます。それらの特徴を以下に簡潔に記述しており、リンクからそれぞれの完全なドキュメントを参照できます。

バージョン 6.0 の新機能

バージョン 6.0 の Curl RTE(実行環境) は、数々の特徴を含んでいます。それらの特徴を以下に簡潔に記述しており、リンクからそれぞれの完全なドキュメントを参照できます。

Apple Mac OS X プラットフォームのサポート

Mac OS X のユーザーは、このバージョンの Curl RTE から利用することができるようになりました。
Mac プラットフォームをサポートするために、いくつかの Curl API が新たに追加されました。全てのプラットフォームで動くアプリケーションの作成についての詳細は、「クロス プラットフォーム アプレットの作成」 を参照してください。

スタイル化された シート と スタイル化された コントロール

バージョン 6.0 GUI ツールキット は スタイル化されたシート と "スキン" が適用できるコントロール に対して低レベルのサポートを行うための機能追加が Curl API に対して行われています。この機能を利用するためには、Curl の Webサイトを訪れ、「スタイル化されたコントロールのライブラリ」をダウンロードしてください。
このライブラリを使い、コントロールの "スキン" として機能するイメージを提供することができるようになり、色や他の属性を用いてコントロールの見た目を指定することができるようになります。これにより、ボタン、タブ、そして他の GUI コントロール の外観をよりリッチに作成することができるようになります。バージョン 6.0 で行われたレンダリング機能の改善は、コントロールの外観をよりよく見せる為のサポートを行います。ライブラリには、スタイル化できるコントロール、新しい既定の外観、それに Curl スタイル シート の実装が含まれています。

Curl RTE の新しい特徴

以下のような、新しい機能が バージョン 6.0 に追加されています。

GUI ツールキット の変更点

GUI ツールキットは、以下の機能拡張を含んでいます。

言語の変更点

バージョン6.0はCurl言語に対する以下の変更点も含んでいます:

IDE の変更点

Curl IDE には、多数の新しい機能が追加されました。

バージョン 5.0 の新機能

バージョン 5.0 では、Curl統合開発環境 (IDE) およびビジュアル レイアウト エディタ (VLE : Visual Layout Editor) の機能が拡張されました。 また、GUI Toolkit の新しいコントロールそして新しいデータアクセス API が追加されました。

Curl RTE は Mercury 社提供の QuickTest Professional を使用する自動テストをサポートします。

Curl RTEは重要な更新がないかを定期的にチェックする自動アップデート機能が追加されました。 この機能はオプション機能であり、コントロールパネルにて有効化することができます。

自動テスト

Curl 言語のアプレットでは、Mercury QuickTest Professional バージョン 9 (別個購入) により自動テストを実行することができます。 テスト スクリプトを記録し実行することにより、機能テストおよび回帰テストを自動化することができます。 GUI Toolkit の API は、テスト可能なアプレットを簡単に作成するため拡張されました。 GUI Toolkit の標準コントロールは、スクリプトのオブジェクト モデルをサポートするため機能強化されました。
Curl RTE には、重要な更新を定期的に確認してインストールする自動更新機能が追加されました。この機能はオプションで、Curl コントロール パネルから有効にすることができます。

Curl 言語 API

このセクションでは、バージョン 5.0 で変更された API の概要を説明します。

GUI Toolkit

データ アクセス

統合開発環境

バージョン 4.0 の新機能

ここでは、リリース 4.0 の Curl® 実行環境 (RTE)、Curl言語と API、および Curl 統合開発環境 (IDE) の新しい機能を説明します。

実行環境

Curl 言語 API

コンパイラ

GUI Toolkit

その他の機能

API の追加機能

次の機能が、バージョン 4.0 の Curl™ API に追加されました。詳細ドキュメントを参照するには、リンクをクリックしてください。
次に示すパッケージは、全く新しいパッケージです。
    CURL.CRYPTO.CIPHER
    CURL.GUI.CHARTS
    CURL.GUI.SHAPES
    CURL.IDE.DOCUMENTATION
    CURL.IDE.PERFORMANCE
    CURL.IO.SERIALIZE
    CURL.LANGUAGE.DLL-INTERFACE
    CURL.LANGUAGE.DLL-INTERFACE-LOW
RecordGrid と関連クラス
次に示す API が RecordGrid と関連クラスに追加され、より柔軟性が高まりました。
RecordGrid の行や列のダブルクリック、または Enter キーの操作に応じて、RecordGrid からアクション イベントを起動できるようになりました。この動作は ListBox や TreeControl の動作に似ています。
    RecordGrid.default
    RecordGrid.display-filler-column?
    RecordGrid.header-options
    RecordGrid.note-row-options-changed
    RecordGrid.select-column-range
    RecordGrid.select-current-record?

RecordGridCell.can-update? RecordGridCell.get-data RecordGridCell.get-formatted-data RecordGridCell.get-parsed-value RecordGridCell.update-data

RecordGridOptions.format-spec RecordGridOptions.parse-spec

RecordGridRowOptions

RecordSetDisplay.key-spec RecordSetDisplay.key-proc

control-actuator-color
CURL.DATA-ACCESS.BASE の拡張機能
次の機能が CURL.DATA-ACCESS.BASE に追加されました。
    RecordModified.index
    RecordAdded.index
    RecordRemoved.index
    Domain.convert
    RecordView.find
    RecordSet.select-one
参照用 API
次の機能は、独立型アプレットをサポートするために追加されました。これらの機能は、あらゆる種類のアプレットでインポートして使用可能なライブラリを作成する場合にも役立ちます。
    browse-url
    default-browse-url
Dequeue-of クラス
新しくパラメータ化された両端キュー クラス Dequeue-of が、CURL.LANGUAGE.CONTAINERS パッケージに追加されました。
Dequeue-of
HttpInputStreamInfo
HTTP "charset" パラメータにアクセスできるようになりました。
HttpInputStreamInfo.charset-character-encoding
線のスタイル
さまざまなスタイルで線を描画するためのサポートが追加されました。
    LineStyle
    Renderer2d.line-style
    Renderer2d.render-path
    Renderer2d.render-rectangular-path
    Renderer2d.render-line
    Renderer2d.render-elliptic-path
    Renderer3d.wide-lines-supported?
    Renderer3d.line-stipple
    Renderer3d.line-stipple-supported?
    Renderer3d.render-line
    Renderer3d.render-elliptic-path
    ArrowShape.border-line-style
    EllipseShape.border-line-style
    RectangleShape.border-line-style
    RegionShape.border-line-style
    RoundedRectangleShape.border-line-style
    line-style
    BorderStyle
    Graphic.border-style
    cell-border-style
印刷
印刷制御を強化する API が追加されました。
    PrintRootFrame.orientation
    PrintRootFrame.range-type
    PrintRootFrame.from-page
    PrintRootFrame.to-page
    PrintRootFrame.default
    print-graphic
コントロールのラベル
ニーモニックを使用したボタン ラベルをサポートする新しいクラスが追加されました。複数の標準ボタンが導入されました。ボタンの外観を制御する新しいオプションが追加されました。
    Label
    mark-mnemonic

ensure-min-size

ok-button cancel-button yes-button no-button apply-button done-button

CommandButton.label-inset CommandButton.show-focus?

RadioButton.label-inset RadioButton.show-focus?

CheckButton.label-inset CheckButton.show-focus?

disabled-text-sunken? disabled-color
GUI Toolkit のその他の追加機能
段落を処理するための次のメソッドが、StringDataModelMovableRange に追加されました。
    StringDataModelMovableRange.move-point-to-previous-paragraph-start
    StringDataModelMovableRange.move-point-to-next-paragraph-start
    StringDataModelMovableRange.widen-to-paragraph
StandardRichTextAreaUI のサブクラスを作成して、RichTextArea のレイアウトをカスタマイズできるようになりました。 これを可能にするために、次の新しいメソッドが追加されました。
    StandardRichTextAreaUI.create-main-panel
    StandardRichTextAreaUI.create-formatting-panel
    StandardRichTextAreaUI.create-formatting-panel-elements
Tooltip API にいくつかの機能が追加されました。
    TooltipStyle
    tooltips-when-inactive?
    Tooltip.default (duration 引数を取ります。)
    Tooltip.hide
    Tooltip.from-proc
View API に次の機能が追加されました。
    View.default (title および visibility 引数が追加されました。)
    View.title
    View.visibility (View.get-visibility は非奨励となります。)
次のイベント プロパティがパブリックになりました。
    GuiWindowEvent.event-time
    CompositionChangeEvent.string
    CompositionChangeEvent.reading-string
    CompositionChangeEvent.caret-index
    CompositionChangeEvent.clauses
    PointerEnvelopeEvent.contents
    PointerScroll.axis
    PointerScroll.amount

統合開発環境

Curl API バージョン 4.0 からバージョン 5.0 へのアップグレード

新機能はすべて追加機能であり、既存のクラスはほとんど変更されていないため、4.0 アプレットを 5.0 にアップグレードするのは簡単です。ただし、次に説明する 2 つの例外があります。
TabContainer クラス階層が新しい TabAccordion および MultiTabAccordion コントロールをサポートするよう変更されました。新しいクラス BaseTabControl と、そのサブクラス SingleTabControl および MultiTabControl が追加されました。TabContainer.ensure-button-visible メソッドは SingleTabControl である TabContainer にのみ存在しますが、TabPane.tab-containerTabContainer ではなく BaseTabControl を返すようになりました。そのため、結果を TabPane.tab-container から TabContainer にキャストしなければならない場合があります。
RecordGrid および関連クラスの実装が大幅に変更されました。IDE で提供される「オープン ソース コード」の RecordGrid または関連クラスの変更バージョンを作成した場合は、まず新しいソース コードから、変更を再実装しなければならない場合があります。

Curl API バージョン 3.0 からバージョン 4.0 へのアップグレード

バージョン 3.0 のアプレットを バージョン 4.0 にアップグレードする場合は、次のセクションをよく読み、必要な変更内容について確認してください。
プロジェクトを新しい API バージョンに簡単にアップグレードできるように、IDE の [プロジェクト] メニューに [API バージョンの変更...]コマンドが追加されました。このコマンドを使用すると、検索と置換がグローバルに実行されるため、現在のプロジェクトを構成するソース ファイル内の API バージョンの文字列を簡単に更新できます。プロジェクト ファイル自体も更新されます。

Exception 階層

Exception 階層が変更されました。ThrowableException の異名になり、Exception.messageException.value に置き換わります。マクロ api-version-switch を使用し、3.0 と 4.0 の両バージョンの API についてコードが例外を適切に処理できます。次のコード例を参照してください。
catch e:IOException do
{api-version-switch
 case "4+" do
    {popup-message e.message}
 else
    {popup-message e.value}
} 

既定の文字エンコード

ファイルの読み書き用、および Curl IDE で編集されたファイル用の既定の文字エンコードが utf8 になりました。以前の既定の文字エンコーディング (windows-latin-1) を使用したバージョン 3.0 のソース コード ファイルには、新しい既定の文字エンコーディング (utf8) では無効な文字が含まれている可能性があるため、実行時にトランスコーディング エラーが発生します。改行しない空白文字が含まれている API ドキュメントから署名を貼り付けると、このような状況が発生します。アプリケーション コードで read-openwrite-open などの API 呼び出しを使用してテキスト ファイルの読み取りや書き込みを行う場合で、バージョン 3.0 の既定の文字エンコーディングに従う場合は、バージョン 4.0 では文字エンコーディングを明示的に指定する必要があります。
IDE を使用してバージョン 3.0 のソース コード ファイルを編集する場合は、ファイルに含まれている文字が ASCII 文字だけの場合を除き、curl-file-attributes を使用して文字エンコーディングを指定する必要があります。

より厳密なコンパイラ

バージョン 4.0 のコンパイラは、問題を引き起こす可能性のある型変換の報告について、より厳密になりました。また、バージョン 3.0 のコンパイラで使用できた一部のコンストラクションが拒否されます。バージョン 3.0 では asa が不要であった場合でも、バージョン 4.0 では必要となる場合があります。

文字列から列挙体への暗黙的な変換

バージョン 4.0 のコンパイラは、文字列から列挙体への暗黙的な変換をレポートします。
次のコードはバージョン 3.0 では使用できましたが、バージョン 4.0 では拒否されます。定義されている FontWeight に対応しない値がプロシージャに渡される可能性があるため、型エラーが発生します。値が正しいことがわかっている場合は、asa FontWeight を追加してコンパイラに通知します。
{define-proc {test x:String}:FontWeight
    {return x}
}
{test "bold"}
次の場合は、どちらのバージョンでも許可されます。コンパイラは、文字列が使用可能な値を持つことを識別できます。これは、文字列形式は短く、より簡単に読み取り/書き込みを行えるためです。
{define-proc {test2}:FontWeight
    let x:String = "bold"
    {return x}
}
{test2}

Null と非 Null の比較

Curl 4.0 言語コンパイラは、null と Null にはできない型の値とを比較するコードを検出すると、SyntaxError を生成します。
たとえば、次のコード

{let mistake:bool =
    {if-non-null {String "oops"} then true else false}
}


では、

SyntaxError: null を String と比較できません。 null と String 値の両方を受け入れる場合は #String を使用します。

が発生します。
Curl 4.0 言語コンパイラは、Null になる可能性のあるプロシージャ型が Null にはならないプロシージャ型と比較される場合にも、SyntaxError を生成します。

GUI クラスの変更

新しいクラスの実装

バージョン 3.0 以前の API で使用できた一部の GUI Toolkit クラスが改善され、バージョンが変わりました。古いバージョンは、CURL.GUI.OLD というパッケージを使用して、バージョン 4.0 API でも使用できます。古いバージョンの使用は推奨されておらず、将来のバージョンで削除される予定です。古いクラスのドキュメントは、バージョン 4.0 の IDE には含まれていません。ただし、バージョン 3.0 と 4.0 の両方の IDE がインストールされている場合は、「[ファイル] メニュー」の [新規ドキュメント ビューア] から 3.0 ドキュメント ビューアを開いて、3.0 API リファレンスを表示できます。
次のクラスが含まれます。
3.0 TabContainer と関連クラス
3.0 TreeControl と関連クラス
既存のバージョン 3.0 のアプレットがあり、それをバージョン 3.0 と 4.0 の両方の API で実行できるようにするには、次の形式のインポートをアプレットに追加します。
{api-version-switch
 case "4.0" do
    {import TreeControl, TreeNode from CURL.GUI.OLD, override? = true}
}
古いクラスをすべてインポートすることも、必要なクラスだけをインポートすることもできます。詳細については、import を参照してください。

Canvas クラスの CURL.GUI.SHAPES への移動

バージョン 3.0 では、Canvas クラスは CURL.GUI.BASE パッケージに含まれていました。バージョン 4.0 では、CURL.GUI.SHAPES パッケージに含まれています。そのため、CURL.GUI.BASE をインポートして Canvas にアクセスしていたアプリケーションは、CURL.GUI.SHAPES または CURL.GUI.STANDARD をインポートする必要があります。CURL.GUI.STANDARD はスーパーパッケージで、CURL.GUI.BASE と、CURL.GUI.SHAPES 内のよく使用されるクラスが含まれています。すべてのアプレットに暗黙的にインポートされる標準 API も含まれているため、CURL.GUI.STANDARD をインポートすることをお勧めします。CURL.IMPLICIT.APPLET を参照してください。

ドロップダウン セッター

次のセッターは 4.0 API から削除されました。これらのセッターは重複しています。これらのプロパティは、UI やヘルパー オブジェクトではなくコントロールに対して設定できます。
    setter public StandardComboBoxUI.dropdown-height
    setter public StandardDropdownListUI.dropdown-height 
    setter public abstract ComboBoxUI.dropdown-height
    setter public abstract DropdownListUI.dropdown-height 
    setter public StandardDropdownHelper.dropdown-height
    setter public StandardDropdownHelper.dropdown-width

非ローカル オプションの定義

バージョン 4.0 に define-nonlocal-option マクロが導入されました。「非ローカル オプションの宣言」を参照してください。バージョン 3.0 では、そのクラスが可視的に使用される全ての場所で、クラスで宣言された非ローカル オプションは使用できました。3.0 アプレットには、define-nonlocal-option 宣言を追加する必要があります。コードをバージョン 3.0 と 4.0 の両方で実行する必要がある場合は、この宣言を api-version-switch ステートメント内に追加します。

メニューおよびボタン ラベル

4.0 API では、メニュー項目およびボタンにラベルを表示するための Label クラスが新しく導入されました。ラベルとして指定された String は、Label に自動変換されます。ラベル文字列のアンパサンド (&) 文字は、その次の文字をラベルのニーモニックとしてマークします。ニーモニック文字は、ボタンまたはメニューで下線付きで表示されます。
メニュー項目およびコントロールの text-breakable? の既定値は、3.0 では true でしたが、リリース 4.0 では false になりました。ラベルを複数行に折り返す場合は、コントロールで text-breakable? = true を指定する必要があります。