このドキュメントでは、次のトピックについて説明します。
これはプラグインが必ず提供する主要なインターフェイスです。 Natural スタジオではこのインターフェイスを使用して、プラグインの有効化/無効化と、コマンドおよび通知の送信を行います。
インターフェイスを提供するために、Natural で作成されたプラグインのクラス定義には、サンプルライブラリ SYSEXPLG
のインターフェイスモジュール(コピーコード)NSTPLG-I
が含まれています。 他の言語で作成されたプラグインは、タイプライブラリ naturalstudioplugin.tlb
を使用します。 このタイプライブラリは、サンプルライブラリ SYSEXPLG
にも含まれています。
次のメソッドを使用できます。
Natural スタジオは、プラグインを有効にするときにこのメソッドを呼び出します。 プラグインは、ここでそのコマンドを定義し、Natural スタジオユーザーインターフェイスでそれらを表示可能にします。 また、今後の使用のために Natural
スタジオオートメーションルートインターフェイス(INatAutoStudio
)へのハンドルを保存します。
一部のリソースまたは前提条件が不足しているためにプラグインが有効にならない場合は、プラグインは制御を戻すときに *ERROR-NR
を 9002 に設定します。 これにより、プラグインフレームワークがメソッド OnDeactivate
を呼び出して必要なクリーンアップを実行し、プラグインが無効ステータスのままになります。 ユーザーに適切な方法で警告するのはプラグイン自体が行います。
名前 | Natural データフォーマット | 変形タイプ | 注釈 |
---|---|---|---|
NaturalStudio | HANDLE OF OBJECT | VT_DISPATCH(INatAutoStudio) |
Natural スタジオオートメーションのルートインターフェイスのハンドルが含まれています。
Natural スタジオは、プラグインを無効にするときにこのメソッドを呼び出します。 プラグインは、ここでウィンドウ、ファイル、ネットワーク接続などを閉じ、他に使用されたリソースをクリーンアップする必要があります。 メソッド OnActivate
で作成されたコマンド、メニュー項目、およびツールバー項目は削除する必要はありません。 これは Natural スタジオによって自動的に行われます。
名前 | Natural データフォーマット | 変形タイプ | 注釈 |
---|---|---|---|
NaturalStudio | HANDLE OF OBJECT | VT_DISPATCH(INatAutoStudio) |
Natural スタジオオートメーションのルートインターフェイスのハンドルが含まれています。
プラグインによって定義されたコマンドをユーザーが選択すると、Natural スタジオはこのメソッドを呼び出します。 通常、このプラグインは現在選択されている一連のオブジェクトにこのコマンドを適用します。 インターフェイス INatAutoSelectedObjects
を使用してこのセットを取得します。
名前 | Natural データフォーマット | 変形タイプ | 注釈 |
---|---|---|---|
CommandID | I4 | VT_I4 |
インターフェイス INatAutoCommands
のメソッド Add
を使用してプラグインがコマンドを定義したときに選択したコマンド ID が含まれています。
プラグインによって定義されたコマンドがユーザーインターフェイスで表示可能になると(例えば、これらのコマンドのいずれかを含むポップアップメニューをユーザーが開くと)、Natural スタジオはこのメソッドを呼び出します。 プラグインは、コマンドを有効にするかどうか、およびそれにチェックマークを付けるかどうかを決定します。
デフォルトでは、すべてのプラグイン定義コマンドは無効で、チェックマークが付いていません。 通常、プラグインは現在選択されている一連のオブジェクトを基準にコマンドステータスを決定します。 インターフェイス INatAutoSelectedObjects
を使用してこのセットを取得します。
名前 | Natural データフォーマット | 変形タイプ | 注釈 |
---|---|---|---|
CommandID | I4 | VT_I4 | |
Enabled | L | VT_BOOL | 参照 |
Checked | L | VT_BOOL | 参照 |
インターフェイス INatAutoCommands
のメソッド Add
を使用してプラグインがコマンドを定義したときに選択したコマンド ID が含まれています。
コマンドを有効にする場合は、プラグインはこのパラメータで TRUE を返します。
コマンドにチェックマークが付く場合は、プラグインはこのパラメータで TRUE を返します。
Natural スタジオでの特定のイベントがプラグインに関連する可能性がある場合、Natural スタジオはこのメソッドを呼び出してプラグインに通知します。 ただし、プラグインはこれらの通知のいずれも使用する必要はありません。
名前 | Natural データフォーマット | 変形タイプ | 注釈 |
---|---|---|---|
戻り値 | I4 | VT_I4 | |
Notification | I4 | VT_I4 | |
LongParam | I4 | VT_I4 | 参照 |
ObjectParam | HANDLE OF OBJECT | VT_DISPATCH | 参照 |
StringParam | A | VT_BSTR | 参照 |
これらのパラメータの使用法および意味は、特定の通知に依存します。 以下の各通知の指定を参照してください。
通知を識別する番号。 各通知は以下で指定されます。 通知番号に使用できる定数の定義は、サンプルライブラリ SYSEXPLG
のローカルデータエリア NSTPLG-L
にあります。
以下の通知が有効です。
Natural スタジオは、この通知を、ツリービューのドキュメントウィンドウ、リストビューのドキュメントウィンドウ、または一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、それらのウィンドウのアクティベーションステータスについてプラグインに通知するために送信されます。
未使用。
0 | ウィンドウが非アクティブな場合。 |
1 | ウィンドウがアクティブな場合。 |
2 | ウィンドウがすでにアクティブで、ユーザーがウィンドウ内でクリックした場合。 |
ドキュメントウィンドウのハンドルです。
ドキュメントウィンドウのタイプ INatAutoObjectTree
、INatAutoObjectList
、または INatAutoGenericDocument
を識別する文字列です。
Natural スタジオは、この通知を、汎用ドキュメントウィンドウを作成したプラグインに送信します。 Natural スタジオのユーザーがこれらのウィンドウのいずれかを閉じようとしていること、つまり Close
メソッドが呼び出されたことをプラグインに通知するために送信されます。 これに該当しない場合は、コミットされていない変更がドキュメントにあるかどうかをチェックして適切に対処するために、プラグインはこの通知を使用します。
プラグインは次の値を返します。
0 | ウィンドウが閉じられることを受け入れる場合。 |
1 | ウィンドウを閉じることを防ぐ場合。 |
未使用。
ドキュメントウィンドウのハンドルです。
ドキュメントウィンドウのタイプを識別する文字列(INatAutoGenericDocument
)。
Natural スタジオは、この通知を、ツリービューのドキュメントウィンドウ、リストビューのドキュメントウィンドウ、または汎用ドキュメントウィンドウを作成したプラグインに送信します。 Natural スタジオのユーザーがこれらのウィンドウのいずれかを閉じようとしていること、つまり
Close
メソッドが呼び出されたことをプラグインに通知するために送信されます。
未使用。
未使用。
ドキュメントウィンドウのハンドルです。
ドキュメントウィンドウのタイプ INatAutoObjectTree
、INatAutoObjectList
、または INatAutoGenericDocument
を識別する文字列です。
Natural スタジオは、この通知を、プログラムエディタで汎用テキストオブジェクトを開いたプラグインに送信します。 これは、Save コマンドがユーザーによってトリガされたことをプラグインに通知するために送信されます。 これにより、編集されたテキストをプラグインで検索して保存できるようになります。
プラグインは次の値を返します。
1 | テキストが正常に保存された場合。 |
0 | それ以外の場合。 |
未使用。
ドキュメントウィンドウのハンドルです。
ドキュメントウィンドウのタイプを識別する文字列(INatAutoGenericText
)。
Natural スタジオは、この通知を、ツリービュードキュメントウィンドウを作成したプラグインに送信します。 これは、そのウィンドウで Expand All が開始されたか終了したことをプラグインに通知するために送信されます。 これにより、Expand All の実行中に、後で Natural スタジオがプラグインを繰り返し呼び出すときに、プラグインは可能な最適化を適用できます。
注意:
ツリービューノードが選択されている状態でユーザーが数値キーパッドの乗算キーを押すと、Expand All が発行されます。 これにより、ツリービューノードは再帰的に展開されます。
未使用。
1 | Expand All が開始された場合。 |
0 | Expand All が終了した場合。 |
ドキュメントウィンドウのハンドルです。
ドキュメントウィンドウのタイプを識別する文字列(INatAutoObjectTree
)。
Natural スタジオは、この通知を、一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、アクティブな汎用ドキュメントウィンドウで現在選択されているオブジェクトを取得するために送信されます。
未使用。
未使用。
未使用。
プラグインは、XML ドキュメントとしてフォーマットされた一連の選択されたオブジェクトを返します。 ドキュメントは、インターフェイス INatAutoSelectedObjects
のプロパティ SelectedObjects
に指定された DTD に従う必要があります。
Natural スタジオは、この通知を、汎用ドキュメントウィンドウを作成したプラグインに送信します。 これは、アクティブな汎用ドキュメントウィンドウで現在フォーカスがあるオブジェクトを取得するために送信されます。
未使用。
未使用。
未使用。
プラグインは、XML ドキュメントとしてフォーマットされたフォーカスオブジェクトを返します。 ドキュメントは、インターフェイス INatAutoSelectedObjects
のプロパティ SelectedObjects
に指定された DTD に従う必要があります。
Natural スタジオは、この通知を、一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、ユーザーが右クリックするかコンテキストメニューキーを押すことによってそのウィンドウでコンテキストメニューを開こうとしていることをプラグインに通知するために送信されます。 これにより、プラグインは、マウス位置に依存して異なるコンテキストメニューを表示したり、ウィンドウ全体のデフォルトコンテキストメニューを表示したりすることができます。
プラグインは次の値を返します。
1 | コンテキストメニューが表示される場合。 |
0 | それ以外の場合。 |
x * (2**16) + y の形式での現在のマウス位置。
例えば、マウス位置が(50,100)の場合は、LongParam の値は 50 * (2**16) + 100 = 3276900 になります。 -1 の値は、デフォルトの(位置に依存しない)コンテキストメニューが要求されたことを示します。
プラグインは、プラグインが以前に作成または取得したコンテキストメニューに INatAutoContextMenu
インターフェイスを返します。
未使用。
Natural スタジオは、この通知を、ツリービューのドキュメントウィンドウ、リストビューのドキュメントウィンドウ、または一般的なドキュメントウィンドウを作成したプラグインに送信します。 これは、それらのウィンドウのいずれかをリフレッシュする必要があることをプラグインに通知するために送信されます。
この通知の処理中は、プラグインはインターフェイス INatAutoRefreshObject
にアクセスできます。 このインターフェイスとそのプロパティにより、現在リフレッシュ中のオブジェクトに関する詳細を取得できます。
プラグインは次の値を返します。
1 | ウィンドウがリフレッシュされる場合。 |
0 | リフレッシュされない場合。 |
On Input | 値 0 は、リフレッシュが実行されるかどうかを Natural スタジオがクエリすることを示します。 Natural スタジオは、通知がツリービュードキュメントウィンドウまたはリストビュードキュメントウィンドウに関して送信される場合にこの値を渡します。
この場合は、Natural スタジオがそれ自体のリフレッシュを実行できます。 プラグインは、ビューのリフレッシュが必要かどうかを決定する必要があります。
値 1 は、Natural スタジオがプラグインにウィンドウをリフレッシュするよう指示することを示します。 Natural スタジオは、通知が汎用ドキュメントウィンドウに関して送信される場合にこの値を渡します。 この場合は、プラグインがリフレッシュを実行します。 |
On Return | 値 0 は、このリフレッシュが特定リフレッシュとして実行されるのをプラグインが必要としていることを示します。 これは、現在のリフレッシュオブジェクト(INatAutoRefreshObject )の視覚化のみがリフレッシュされることを意味します。
値 1 は、このリフレッシュが不特定リフレッシュとして実行されるのをプラグインが必要としていることを示します。 これは、ウィンドウ全体がリフレッシュされることを意味しています。 注意: |
ドキュメントウィンドウのハンドルです。
ドキュメントウィンドウのタイプ INatAutoObjectTree
、INatAutoObjectList
、または INatAutoGenericDocument
を識別する文字列です。
Natural スタジオは、この通知を、ツリービュードキュメントウィンドウまたはリストビュードキュメントウィンドウを作成したプラグインに送信します。 これは、それらのウィンドウのいずれかがアクティブな場合にユーザーが F1 キーを押した(ヘルプを要求した)ことをプラグインに通知するために送信されます。 この通知の処理中は、プラグインはインターフェイス INatAutoSelectedObjects
にアクセスできます。 このインターフェイスとそのプロパティにより、現在選択されているオブジェクトとフォーカスオブジェクトに関する詳細を取得して、コンテキスト固有のヘルプを表示することができます。 特定のヘルプトピックを表示するために、プラグインはメソッド
INatAutoStudio::ShowHelp
を使用します。
プラグインは次の値を返します。
1 | ヘルプ要求が処理されてヘルプトピックが表示された場合。 |
0 | それ以外の場合。 |
未使用。
ドキュメントウィンドウのハンドルです。
ドキュメントウィンドウのタイプを識別する文字列(INatAutoObjectTree
または INatAutoObjectList
)。
Natural スタジオは、この通知を、オプションを指定したプラグインに送信します。 これは、ユーザーがオプション値を変更しようとしていることをプラグインに通知するために送信され、プラグインでの新しい値の検証を許可します。 通知は、ユーザーが[オプション]ダイアログボックスで または を選択したとき、またはユーザーがプラグインオプションを変更した後に別のプロパティページに切り替えたときに送信されます。
注意:
プラグインは、メソッド INatAutoPlugIn::DefineOptions
を使用してオプションを指定できます。 また、プロパティ INatAutoPlugIn::OptionValues
を使用してオプション値を取得および設定できます。 ユーザーは、Natural スタジオの[オプション]ダイアログボックスで、オプションの値を対話形式で変更できます。
プラグインは次の値を返します。
1 | 変更されたオプション値が有効な場合。 |
0 | それらが無効な場合。 |
さらに、それは、ユーザーを警戒させる必要のある何か(例えばメッセージボックスの表示)をします。
未使用。
未使用。
オプションの値の DTD に従って、変更されたオプション設定が XML ドキュメントとして含まれています。 この DTD は INatAutoPlugIn::OptionValues
で定義されています。
Natural スタジオは、この通知を、オプションを指定したプラグインに送信します。 これは、ユーザーがオプション値を正常に変更したことをプラグインに通知するために送信され、プラグインに変更への適切な対処を許可します。
注意:
プラグインは、メソッド INatAutoPlugIn::DefineOptions
を使用してオプションを指定できます。 また、プロパティ INatAutoPlugIn::OptionValues
を使用してオプション値を取得および設定できます。 ユーザーは、Natural スタジオの[オプション]ダイアログボックスで、オプションの値を対話形式で変更できます。
未使用。
未使用。
未使用。
オプションの値の DTD に従って、変更されたオプション設定が XML ドキュメントとして含まれています。 この DTD は INatAutoPlugIn::OptionValues
で定義されています。