Ligtroom プラグインで「書き出し」の機能を実装しています。

「書き出し…」を選択すると表示されるダイアログに、セクションを追加することはできました。「書き出し」ボタンで書き出しを実行すると呼び出されるコードまでは準備できました。

今回は「書き出し」を実行した際に、ダイアログセクションで入力した内容を参照するコードを実装してみました。

ダイアログセクションにテキストボックスを追加する方法

過去記事で説明します。


Lightroomプラグイン開発「書き出し..」ダイアログにテキストボックスを実装する。 | IT-Gate
関連記事をご覧ください。


ここでのポイントは exportPresetFields に「fieldName」という名前のフィールドを追加したということです。

  exportPresetFields = {
    { key = 'fieldName', default = 'default value' },
  },

このコードの部分です。

「書き出し」実行で呼び出される関数を準備する。

こちらも過去記事で説明します。


Ligntroomプラグイン開発「書き出し」ボタンのアクションを実装する。 | IT-Gate
関連記事をご覧ください。


ここで掲載した以下の部分に「実行」した時に動くコードを書いていきます。

function SampleRenderTask.processRenderedPhotos( functionContext, exportContext )
  LrDialogs.message( "ここに書き出し処理を実装します。", nil )
end

ダイアログセクションで入力した内容を参照するコードもここに実装します。

exportPresetFieldsに格納した値を参照する

processRenderedPhotosメソッドに渡される exportContextという引数にexportPresetFieldsの内容が設定されています。

exportContextからexportPresetFields を取得するには exportContext.propertyTable と書きます。

exportPresetFields に定義された「fieldName」を参照するのはpropertyTable.fieldNameと書きます。

次の様なコードになります。

function SampleRenderTask.processRenderedPhotos( functionContext, exportContext )
  local exportParams = exportContext.propertyTable
  local rootPath = exportParams.siteRootPath
end

テキストボックスの入力内容が取得できた。

これで、テキストボックスに入力した内容を取得することができます。

もし、うまく取得できない場合は関連記事を読み返してみてください。おそらくテキストボックスとexportPresetFieldsを紐付ける LrView.bind の実装が誤っているのだと思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です