バージョン 6.3.3
 —  プラグインによる Natural スタジオの拡張  —

INaturalStudioPlugIn

このドキュメントでは、次のトピックについて説明します。


機能

これはプラグインが必ず提供する主要なインターフェイスです。 Natural スタジオではこのインターフェイスを使用して、プラグインの有効化/無効化と、コマンドおよび通知の送信を行います。

インターフェイスを提供するために、Natural で作成されたプラグインのクラス定義には、サンプルライブラリ SYSEXPLG のインターフェイスモジュール(コピーコード)NSTPLG-I が含まれています。 他の言語で作成されたプラグインは、タイプライブラリ naturalstudioplugin.tlb を使用します。 このタイプライブラリは、サンプルライブラリ SYSEXPLG にも含まれています。

Top of page

メソッド

次のメソッドを使用できます。

OnActivate

Natural スタジオは、プラグインを有効にするときにこのメソッドを呼び出します。 プラグインは、ここでそのコマンドを定義し、Natural スタジオユーザーインターフェイスでそれらを表示可能にします。 また、今後の使用のために Natural スタジオオートメーションルートインターフェイス(INatAutoStudio)へのハンドルを保存します。

一部のリソースまたは前提条件が不足しているためにプラグインが有効にならない場合は、プラグインは制御を戻すときに *ERROR-NR を 9002 に設定します。 これにより、プラグインフレームワークがメソッド OnDeactivate を呼び出して必要なクリーンアップを実行し、プラグインが無効ステータスのままになります。 ユーザーに適切な方法で警告するのはプラグイン自体が行います。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
NaturalStudio HANDLE OF OBJECT VT_DISPATCH(INatAutoStudio  
NaturalStudio

Natural スタジオオートメーションのルートインターフェイスのハンドルが含まれています。

OnDeactivate

Natural スタジオは、プラグインを無効にするときにこのメソッドを呼び出します。 プラグインは、ここでウィンドウ、ファイル、ネットワーク接続などを閉じ、他に使用されたリソースをクリーンアップする必要があります。 メソッド OnActivate で作成されたコマンド、メニュー項目、およびツールバー項目は削除する必要はありません。 これは Natural スタジオによって自動的に行われます。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
NaturalStudio HANDLE OF OBJECT VT_DISPATCH(INatAutoStudio  
NaturalStudio

Natural スタジオオートメーションのルートインターフェイスのハンドルが含まれています。

OnCommand

プラグインによって定義されたコマンドをユーザーが選択すると、Natural スタジオはこのメソッドを呼び出します。 通常、このプラグインは現在選択されている一連のオブジェクトにこのコマンドを適用します。 インターフェイス INatAutoSelectedObjects を使用してこのセットを取得します。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
CommandID I4 VT_I4  
CommandID

インターフェイス INatAutoCommands のメソッド Add を使用してプラグインがコマンドを定義したときに選択したコマンド ID が含まれています。

OnCommandStatus

プラグインによって定義されたコマンドがユーザーインターフェイスで表示可能になると(例えば、これらのコマンドのいずれかを含むポップアップメニューをユーザーが開くと)、Natural スタジオはこのメソッドを呼び出します。 プラグインは、コマンドを有効にするかどうか、およびそれにチェックマークを付けるかどうかを決定します。 デフォルトでは、すべてのプラグイン定義コマンドは無効で、チェックマークが付いていません。 通常、プラグインは現在選択されている一連のオブジェクトを基準にコマンドステータスを決定します。 インターフェイス INatAutoSelectedObjects を使用してこのセットを取得します。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
CommandID I4 VT_I4  
Enabled L VT_BOOL 参照
Checked L VT_BOOL 参照
CommandID

インターフェイス INatAutoCommands のメソッド Add を使用してプラグインがコマンドを定義したときに選択したコマンド ID が含まれています。

Enabled

コマンドを有効にする場合は、プラグインはこのパラメータで TRUE を返します。

Checked

コマンドにチェックマークが付く場合は、プラグインはこのパラメータで TRUE を返します。

OnNotify

Natural スタジオでの特定のイベントがプラグインに関連する可能性がある場合、Natural スタジオはこのメソッドを呼び出してプラグインに通知します。 ただし、プラグインはこれらの通知のいずれも使用する必要はありません。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
戻り値 I4 VT_I4  
Notification I4 VT_I4  
LongParam I4 VT_I4 参照
ObjectParam HANDLE OF OBJECT VT_DISPATCH 参照
StringParam A VT_BSTR 参照
Return value、LongParam、ObjectParam、StringParam

これらのパラメータの使用法および意味は、特定の通知に依存します。 以下の各通知の指定を参照してください。

Notification

通知を識別する番号。 各通知は以下で指定されます。 通知番号に使用できる定数の定義は、サンプルライブラリ SYSEXPLG のローカルデータエリア NSTPLG-L にあります。

Top of page

通知

以下の通知が有効です。

PLUGIN-NOTIFY-ACTIVATE

Natural スタジオは、この通知を、ツリービューのドキュメントウィンドウ、リストビューのドキュメントウィンドウ、または一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、それらのウィンドウのアクティベーションステータスについてプラグインに通知するために送信されます。

戻り値

未使用。

LongParam
0 ウィンドウが非アクティブな場合。
1 ウィンドウがアクティブな場合。
2 ウィンドウがすでにアクティブで、ユーザーがウィンドウ内でクリックした場合。
ObjectParam

ドキュメントウィンドウのハンドルです。

StringParam

ドキュメントウィンドウのタイプ INatAutoObjectTreeINatAutoObjectList、または INatAutoGenericDocument を識別する文字列です。

PLUGIN-NOTIFY-QUERYCLOSE

Natural スタジオは、この通知を、汎用ドキュメントウィンドウを作成したプラグインに送信します。 Natural スタジオのユーザーがこれらのウィンドウのいずれかを閉じようとしていること、つまり Close メソッドが呼び出されたことをプラグインに通知するために送信されます。 これに該当しない場合は、コミットされていない変更がドキュメントにあるかどうかをチェックして適切に対処するために、プラグインはこの通知を使用します。

戻り値

プラグインは次の値を返します。

0 ウィンドウが閉じられることを受け入れる場合。
1 ウィンドウを閉じることを防ぐ場合。
LongParam

未使用。

ObjectParam

ドキュメントウィンドウのハンドルです。

StringParam

ドキュメントウィンドウのタイプを識別する文字列(INatAutoGenericDocument)。

PLUGIN-NOTIFY-CLOSE

Natural スタジオは、この通知を、ツリービューのドキュメントウィンドウ、リストビューのドキュメントウィンドウ、または汎用ドキュメントウィンドウを作成したプラグインに送信します。 Natural スタジオのユーザーがこれらのウィンドウのいずれかを閉じようとしていること、つまり Close メソッドが呼び出されたことをプラグインに通知するために送信されます。

戻り値

未使用。

LongParam

未使用。

ObjectParam

ドキュメントウィンドウのハンドルです。

StringParam

ドキュメントウィンドウのタイプ INatAutoObjectTreeINatAutoObjectList、または INatAutoGenericDocument を識別する文字列です。

PLUGIN-NOTIFY-SAVE

Natural スタジオは、この通知を、プログラムエディタで汎用テキストオブジェクトを開いたプラグインに送信します。 これは、Save コマンドがユーザーによってトリガされたことをプラグインに通知するために送信されます。 これにより、編集されたテキストをプラグインで検索して保存できるようになります。

戻り値

プラグインは次の値を返します。

1 テキストが正常に保存された場合。
0 それ以外の場合。
LongParam

未使用。

ObjectParam

ドキュメントウィンドウのハンドルです。

StringParam

ドキュメントウィンドウのタイプを識別する文字列(INatAutoGenericText)。

PLUGIN-NOTIFY-EXPANDALL

Natural スタジオは、この通知を、ツリービュードキュメントウィンドウを作成したプラグインに送信します。 これは、そのウィンドウで Expand All が開始されたか終了したことをプラグインに通知するために送信されます。 これにより、Expand All の実行中に、後で Natural スタジオがプラグインを繰り返し呼び出すときに、プラグインは可能な最適化を適用できます。

注意:
ツリービューノードが選択されている状態でユーザーが数値キーパッドの乗算キーを押すと、Expand All が発行されます。 これにより、ツリービューノードは再帰的に展開されます。

戻り値

未使用。

LongParam
1 Expand All が開始された場合。
0 Expand All が終了した場合。
ObjectParam

ドキュメントウィンドウのハンドルです。

StringParam

ドキュメントウィンドウのタイプを識別する文字列(INatAutoObjectTree)。

PLUGIN-NOTIFY-SELECTEDOBJECTS

Natural スタジオは、この通知を、一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、アクティブな汎用ドキュメントウィンドウで現在選択されているオブジェクトを取得するために送信されます。

戻り値

未使用。

LongParam

未使用。

ObjectParam

未使用。

StringParam

プラグインは、XML ドキュメントとしてフォーマットされた一連の選択されたオブジェクトを返します。 ドキュメントは、インターフェイス INatAutoSelectedObjects のプロパティ SelectedObjects に指定された DTD に従う必要があります。

PLUGIN-NOTIFY-FOCUSOBJECT

Natural スタジオは、この通知を、汎用ドキュメントウィンドウを作成したプラグインに送信します。 これは、アクティブな汎用ドキュメントウィンドウで現在フォーカスがあるオブジェクトを取得するために送信されます。

戻り値

未使用。

LongParam

未使用。

ObjectParam

未使用。

StringParam

プラグインは、XML ドキュメントとしてフォーマットされたフォーカスオブジェクトを返します。 ドキュメントは、インターフェイス INatAutoSelectedObjects のプロパティ SelectedObjects に指定された DTD に従う必要があります。

PLUGIN-NOTIFY-CONTEXTMENU

Natural スタジオは、この通知を、一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、ユーザーが右クリックするかコンテキストメニューキーを押すことによってそのウィンドウでコンテキストメニューを開こうとしていることをプラグインに通知するために送信されます。 これにより、プラグインは、マウス位置に依存して異なるコンテキストメニューを表示したり、ウィンドウ全体のデフォルトコンテキストメニューを表示したりすることができます。

戻り値

プラグインは次の値を返します。

1 コンテキストメニューが表示される場合。
0 それ以外の場合。
LongParam

x * (2**16) + y の形式での現在のマウス位置。

例えば、マウス位置が(50,100)の場合は、LongParam の値は 50 * (2**16) + 100 = 3276900 になります。 -1 の値は、デフォルトの(位置に依存しない)コンテキストメニューが要求されたことを示します。

ObjectParam

プラグインは、プラグインが以前に作成または取得したコンテキストメニューに INatAutoContextMenu インターフェイスを返します。

StringParam

未使用。

PLUGIN-NOTIFY-REFRESH

Natural スタジオは、この通知を、ツリービューのドキュメントウィンドウ、リストビューのドキュメントウィンドウ、または一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、それらのウィンドウのいずれかをリフレッシュする必要があることをプラグインに通知するために送信されます。 この通知の処理中は、プラグインはインターフェイス INatAutoRefreshObject にアクセスできます。 このインターフェイスとそのプロパティにより、現在リフレッシュ中のオブジェクトに関する詳細を取得できます。

戻り値

プラグインは次の値を返します。

1 ウィンドウがリフレッシュされる場合。
0 リフレッシュされない場合。
LongParam
On Input 値 0 は、リフレッシュが実行されるかどうかを Natural スタジオがクエリすることを示します。 Natural スタジオは、通知がツリービュードキュメントウィンドウまたはリストビュードキュメントウィンドウに関して送信される場合にこの値を渡します。 この場合は、Natural スタジオがそれ自体のリフレッシュを実行できます。 プラグインは、ビューのリフレッシュが必要かどうかを決定する必要があります。

値 1 は、Natural スタジオがプラグインにウィンドウをリフレッシュするよう指示することを示します。 Natural スタジオは、通知が汎用ドキュメントウィンドウに関して送信される場合にこの値を渡します。 この場合は、プラグインがリフレッシュを実行します。

On Return 値 0 は、このリフレッシュが特定リフレッシュとして実行されるのをプラグインが必要としていることを示します。 これは、現在のリフレッシュオブジェクト(INatAutoRefreshObject)の視覚化のみがリフレッシュされることを意味します。

値 1 は、このリフレッシュが不特定リフレッシュとして実行されるのをプラグインが必要としていることを示します。 これは、ウィンドウ全体がリフレッシュされることを意味しています。

注意:
リストビュードキュメントウィンドウでは、現在のところ特定リフレッシュと不特定リフレッシュに違いはありません。 どちらの場合も、ウィンドウ全体がリフレッシュされます。

ObjectParam

ドキュメントウィンドウのハンドルです。

StringParam

ドキュメントウィンドウのタイプ INatAutoObjectTreeINatAutoObjectList、または INatAutoGenericDocument を識別する文字列です。

PLUGIN-NOTIFY-HELP

Natural スタジオは、この通知を、ツリービュードキュメントウィンドウまたはリストビュードキュメントウィンドウを作成したプラグインに送信します。 これは、それらのウィンドウのいずれかがアクティブな場合にユーザーが F1 キーを押した(ヘルプを要求した)ことをプラグインに通知するために送信されます。 この通知の処理中は、プラグインはインターフェイス INatAutoSelectedObjects にアクセスできます。 このインターフェイスとそのプロパティにより、現在選択されているオブジェクトとフォーカスオブジェクトに関する詳細を取得して、コンテキスト固有のヘルプを表示することができます。 特定のヘルプトピックを表示するために、プラグインはメソッド INatAutoStudio::ShowHelp を使用します。

戻り値

プラグインは次の値を返します。

1 ヘルプ要求が処理されてヘルプトピックが表示された場合。
0 それ以外の場合。
LongParam

未使用。

ObjectParam

ドキュメントウィンドウのハンドルです。

StringParam

ドキュメントウィンドウのタイプを識別する文字列(INatAutoObjectTree または INatAutoObjectList)。

PLUGIN-NOTIFY-VALIDATEOPTIONS

Natural スタジオは、この通知を、オプションを指定したプラグインに送信します。 これは、ユーザーがオプション値を変更しようとしていることをプラグインに通知するために送信され、プラグインでの新しい値の検証を許可します。 通知は、ユーザーが[オプション]ダイアログボックスで[OK]または[適用]を選択したとき、またはユーザーがプラグインオプションを変更した後に別のプロパティページに切り替えたときに送信されます。

注意:
プラグインは、メソッド INatAutoPlugIn::DefineOptions を使用してオプションを指定できます。 また、プロパティ INatAutoPlugIn::OptionValues を使用してオプション値を取得および設定できます。 ユーザーは、Natural スタジオの[オプション]ダイアログボックスで、オプションの値を対話形式で変更できます。

戻り値

プラグインは次の値を返します。

1 変更されたオプション値が有効な場合。
0 それらが無効な場合。

さらに、それは、ユーザーを警戒させる必要のある何か(例えばメッセージボックスの表示)をします。

LongParam

未使用。

ObjectParam

未使用。

StringParam

オプションの値の DTD に従って、変更されたオプション設定が XML ドキュメントとして含まれています。 この DTD は INatAutoPlugIn::OptionValues で定義されています。

PLUGIN-NOTIFY-OPTIONSMODIFIED

Natural スタジオは、この通知を、オプションを指定したプラグインに送信します。 これは、ユーザーがオプション値を正常に変更したことをプラグインに通知するために送信され、プラグインに変更への適切な対処を許可します。

注意:
プラグインは、メソッド INatAutoPlugIn::DefineOptions を使用してオプションを指定できます。 また、プロパティ INatAutoPlugIn::OptionValues を使用してオプション値を取得および設定できます。 ユーザーは、Natural スタジオの[オプション]ダイアログボックスで、オプションの値を対話形式で変更できます。

戻り値

未使用。

LongParam

未使用。

ObjectParam

未使用。

StringParam

オプションの値の DTD に従って、変更されたオプション設定が XML ドキュメントとして含まれています。 この DTD は INatAutoPlugIn::OptionValues で定義されています。

Top of page