Natural スタジオプラグインの構造および Natural スタジオとの対話を理解するには、完全に機能する最小プラグインを作成し詳しく調べると役立ちます。 後でこのプラグインは拡張できます。 次のトピックの手順を実行してください。
プラグインを開発するための基盤として、サンプルライブラリ SYSEXPLG
が必要です。 このライブラリには、プラグインサンプルといくつかの主要な定義、およびすべてのプラグインに共通のモジュールが含まれています。
プラグインは常に Natural パラメータファイル NATPARM
を使用して実行されます。 プラグインの開発では、プラグインの編集、カタログ、デバッグ、および実行中に同じ Natural 環境を必要とします。
前提条件を確認するには
ライブラリ SYSEXPLG
がインストールされていることを確認します。 Natural スタジオのインストール時にこのライブラリをインストールしなかった場合は、ここでインストールします。
コンフィグレーションユーティリティを起動し、ライブラリ SYSEXPLG
および SYSEXT
が Natural パラメータファイル NATPARM
に steplib として定義されていることを確認します。
Natural スタジオが、Natural パラメータファイル NATPARM
を使用して、または Natural パラメータファイル NATPARM
と同じシステムファイル割り当てを持つ Natural パラメータファイルを使用して起動されることを確認します。 標準の Natural インストールでは、これはデフォルトです。
プラグインは、プラグインマネージャを使用して作成します。
プラグインを作成するには
プラグインの起動が有効になっていることを確認してください。 『Natural スタジオの使用』ドキュメントの「ワークスペースオプション」を参照してください。
『Natural スタジオの使用』ドキュメントの「プラグインマネージャの呼び出し」の説明に従ってプラグインマネージャを呼び出します。
プラグインマネージャで任意のプラグインを選択します。
コンテキストメニューを表示し、
を選択します。次のダイアログボックスが表示されます。
さまざまなテキストボックスに表示されるエントリには、ユーザー ID が含まれています。
次の情報をすべて指定します。
プラグインが生成される Natural ライブラリを入力します。 プラグインプロジェクトごとに新しいライブラリを使用するのが理想的です。 ライブラリが空でない場合は、警告が表示されます。 それでもプラグインを生成した場合は、それ以上の警告は表示されず、既存のモジュールが置き換えられます。
プラグインは基本的に Natural クラスで構成されます。 8 文字のクラスモジュール名を選択し、ここに入力します。
この名前は DEFINE CLASS
ステートメントでクラス名として使用されます。 32 文字のクラス名を選択し、ここに入力します。 このクラス名は、プラグインのインストール時にバージョン番号と結合されてシステムレジストリで ProgID として使用されます。 このため、マシンにインストールされているすべての
ActiveX コンポーネント間で一意の名前を使用する必要があります。 会社の略称を名前の先頭に付けるのは有効で一般的な方法です。 例えば、Natural スタジオで提供されるプラグインのクラス名はすべて "CSAGNAT" で始まります。
この名前は、プラグインマネージャでプラグインを表示するために使用されます。
ここで指定したバージョン番号は、上で指定されたクラス名と結合されてプラグインの ProgID を形成します(例:"CSAGNATUSERNATURALPLUGIN.3")。 クラス名が同じでバージョン番号が異なる複数のプラグインは、1 つのインストールで共存できます。
このチェックボックスをオンにすると、新しいプラグインは他のすべてのプラグインとは異なる独自の Natural サーバープロセスで実行されます。 これが必要になるのは、プラグインが汎用ドキュメントウィンドウを使用する場合のみです。
このチェックボックスをオフにすると、プラグインはプラグインマネージャと同じサーバープロセスで実行されます。 これにより、プラグインの実行で余分な Natural サーバープロセスを使用せずにすみます。 ただし、汎用ドキュメントウィンドウを使用できません。
ボタンを選択して、指定したライブラリにプラグインを生成します。 これで最小プラグインが完成しました。ここから独自のコードでプラグインを拡張できます(このセクションで後述)。
生成処理中にエラーが発生した場合は、生成ログを確認してください。 エラーの一般的な理由として、サンプルライブラリ SYSEXPLG
が使用可能でない、steplib として設定されていない、手動で修正されているなどが挙げられます。 そのような場合は、サンプルライブラリを再インストールし、steplib 割り当てを確認してください。
前述のように作成した最小プラグインを、インストールできます。 インストール後、プラグインを有効にできます。
プラグインを有効にする利点は、プラグインに追加した独自のコードが意図どおりに動作するかどうかを直ちにテストできる点です。
プラグインをインストールするには
プラグインの作成時に指定したライブラリに作成されたプログラム INSTALL
を実行します。
新しいプラグインをプラグインマネージャで表示可能にするために、Natural スタジオを再起動します。
注意:
プログラム INSTALL
を再度実行すると、プラグインはアンインストールされます。
プラグインを有効にするには
プラグインマネージャを呼び出します。
『Natural スタジオの使用』ドキュメントの「プラグインの有効化と無効化」の説明に従って新しいプラグインを有効にします。
注意:
このプラグインの自動アクティベーションモードを定義しておくと、Natural スタジオを起動するたびにプラグインが有効化されます。 『Natural スタジオの使用』ドキュメントの「プラグインの自動または手動アクティベーションモードの定義」を参照してください。
プラグインが生成されたライブラリにログオンし、クラスビルダで生成されたクラスを開いてください。 プラグインは 2 つの特定のインターフェイス INaturalStudioPlugIn
および INaturalStudioPlugInTree
を実装する Natural クラスであることがわかります。 これらのインターフェイスは、インターフェイスモジュール(コピーコード)NSTPLG-I
および NSTPLT-I
で指定されます。これらのモジュールは、サンプルライブラリ SYSEXPLG
に含まれており、すべてのプラグインに共有されます。
最小プラグインではこれらのインターフェイスのメソッドのほとんどは空のままです。 実際に 2 つのメソッド(インターフェイス INaturalStudioPlugIn
の OnActivate
および OnDeactivate
)しか実装していません。 これらのメソッドの機能は限定的で、ユーザーがプラグインマネージャで コマンドを選択すると、Natural スタジオでメソッド OnActivate
が呼び出されます。 ユーザーがプラグインマネージャで コマンドを選択すると、OnDeactivate
が呼び出されます。
クラスビルダで OnActivate
と OnDeactivate
のメソッド本体を開くと、最小プラグインがメッセージボックスを開ことによってプラグインの有効化と無効化を示す以外に何もしないことがわかります。 実際のプラグインはこれらのメソッドを使用して、操作のために準備し、状態を初期化および初期化解除します。
以下のセクションで、これが何を意味するかを説明します。
以下では次のトピックについて説明します。
ユーザーと対話するために、プラグインはコマンドを定義し、それらをメニューまたはツールバーでユーザーに提供する必要があります。 通常これはメソッド OnActivate
で行われます。 Natural スタジオは、Natural スタジオインターフェイス INatAutoStudio
へのハンドルをプラグインに渡します。 プラグインはこのハンドルを保存し、他のメソッド呼び出し中にそれを使用して Natural スタジオにアクセスします。
コマンドを追加するには
例として、太字で示されているコードをメソッド OnActivate
に追加します。
define data parameter using nstact-a object using nsttmp-o local 1 #controlbars handle of object 1 #commands handle of object 1 #command handle of object 1 #toolbars handle of object 1 #toolbar handle of object end-define * * Keep the Natural Studio Automation interface in mind. #studio := nstact-a.iNatAutoStudio * Show that we are coming up. send "MessageBox" to #studio with "Activating plug-in!" "Natural Studio Plug-in" * * Add a command. #controlbars := #studio.ControlBars #commands := #controlbars.Commands send "Add" to #commands with 100 "My Command" 1 return #command * * Select a toolbar. #toolbars := #controlbars.Toolbars send "Item" to #toolbars with "Tools" return #toolbar * * Insert the command. send "InsertCommand" to #toolbar with #command * end
このコードシーケンスは、内部 ID が "100" のコマンドを作成し、それを[Tools]ツールバーに挿入します。 ユーザーが新規ツールバーボタンをクリックすると、Natural スタジオはインターフェイス INaturalStudioPlugIn
のメソッド OnCommand
にコマンド ID "100" を送信します。
初期設定では、Natural スタジオには無効にされた新規コマンドが表示されます。 コマンドをユーザーが使用できるようにするために、プラグインはコマンドステータスハンドラを実装する必要があります。 コマンドステータスハンドラでは、プラグインはコマンドを有効にするために必要なあらゆる条件をチェックできます。
特に、Natural スタジオで操作を実行するために、インターフェイス INatAutoStudio
を利用できます。 最も単純なケースでは、プラグインは条件なしでコマンドを有効にします。
コマンドを有効にするには
例として、太字で示されているコードをプラグインのメソッド OnCommandStatus
に追加します。
define data parameter using nstcst-a object using nsttmp-o end-define * decide on first nstcst-a.Command value 100 nstcst-a.Enabled := True none ignore end-decide * end
コマンドに対応するために、プラグインはコマンドハンドラを実装する必要があります。 コマンドハンドラでは、プラグインはコマンドの実装に必要な操作をすべて実行できます。 特に、Natural スタジオで操作を実行するために、インターフェイス INatAutoStudio
を利用できます。
コマンドを処理するには
例として、太字で示されているコードをプラグインのメソッド OnCommand
に追加します。
define data parameter using nstcmd-a object using nsttmp-o local 1 #objects handle of object 1 #progs handle of object end-define * decide on first nstcmd-a.Command value 100 #objects := #studio.Objects #progs := #objects.Programs send "Add" to #progs with 1009 none ignore end-decide * end
これで、ユーザーが新規ツールバーボタンをクリックすると、プラグインはプログラムエディタで無題のプログラムを開きます。
作業する必要がなくなった最小プラグインは、無効にできます。 プラグインマネージャから最小プラグインを削除するには、最小プラグインをアンインストールする必要があります。
プラグインを無効にするには
プラグインマネージャを呼び出します。
『Natural スタジオの使用』ドキュメントの「プラグインの有効化と無効化」の説明に従って最小プラグインを無効にします。
注意:
このプラグインの自動アクティベーションモードが定義されている場合は、Natural スタジオを次回起動したときにプラグインは再度有効になります。 『Natural スタジオの使用』ドキュメントの「プラグインの自動または手動アクティベーションモードの定義」を参照してください。
プラグインをアンインストールにするには
プラグインの作成時に指定したライブラリに作成されたプログラム INSTALL
を実行します。
プラグインマネージャからプラグインを削除するために Natural スタジオを再起動します。
注意:
プログラム INSTALL
を再度実行すると、プラグインは再度インストールされます。