見出し画像

【DaVinci Resolve API】ファイル選択ダイアログの表示方法(5/10追記)

まえがき

今回もDaVinciResolveスクリプトのお話。

ファイル選択やフォルダ選択をする際、やっぱり選択ダイアログがあった方が便利ですよね。
自作することもできなくはないのですが、結構大変でした。

そう、「大変でした」。
ファイル選択ダイアログはないものとばかり思い込んでいたので、一度それらしいものを自作したんですよ。こういうの。

自作のファイル選択ダイアログ

そしてつい先日、そんな必要はなかったことを知ってしまって大変ショックを受けました。あの数時間は一体……。

同じような人が出ないように、標準のファイル選択ダイアログの利用方法を載せておきます。

ファイル選択ダイアログの利用方法

第3引数の一覧についてはこちらを参考にしました。
全部は試していないのでご注意。
https://www.steakunderwater.com/wesuckless/viewtopic.php?t=4130

fusion:RequestFile([[C:\]], filename, {option = value})    -- ファイルを一つ選択できます
fusion:RequestDir([[C:\]], filename, {option = value})     -- フォルダを一つ選択できます
 

-- 第1引数:ダイアログ表示したときに最初に表示するフォルダの絶対パス。
--         省略するとカレントディレクトリが表示される。
-- 第2引数:ダイアログ表示したときに最初に表示するファイル名。
--         ファイル保存する場合、初期名を表示しておくと便利かも。
-- 第3引数:ダイアログのオプション。対応するキーに値を格納したテーブルを渡して設定する。
--          FReqB_Saving   : 存在しないファイル名を指定したときに保存できるようにするか
--          FReqS_Title    : ダイアログのタイトル
--          FReqS_Filter   : 表示するファイルの拡張子フィルター

-- フォーラム情報によると他にも以下のキーがあるようだが、使い方はわからず。
-- おそらく"FReq"の後が"B"ならboolean、"S"ならString型の値で設定すると思われる。
--          FReqB_Multi  : 複数ファイルを選択できるようにするか?(trueにしても変化なし)
--          FReqB_SeqGather  :
--          FReqB_Thumbnails :
--          FReqB_DirOnly : フォルダのみ表示?(RequestFileではtrueにしても変わらず、RequestDirは元からフォルダのみ表示)
--          FReqB_SortAscending : 
--          FReqB_ShowHidden
--          FReqB_ShowDot
--          FReqB_ReverseMap
--          FReqB_NoDefaultGatherExts
--          FReqB_NoGatherIfNoExt
--          FReqB_Preview
--          FReqB_Preview_Gamma
--          FReqB_Preview_SmoothResize
--          FReqB_Option_SeqGather
--          FReq_Left   : 
--          FReq_Top    : 
--          FReq_Width  : 
--          FReq_Height : 
--          FReq_PanelWidth
--          FReq_PreviewWidth
--          FReqS_SortField
--          FReqS_GatherExt
--          FReqS_NoGatherExt
--          FReqS_AllTypes :
--          FReqS_DefExtension :

-- 返却値:選択ファイル・フォルダの絶対パス。
--        キャンセルした場合は nil(Luaの場合)
-- ファイル選択ダイアログの呼び出し例
filepath = fusion:RequestFile(folderpath, 
                              filename, 
                              {FReqS_Title = "台詞マーカーデータファイル保存", 
                               FReqB_Saving = true, 
                               FReqS_Filter = "台詞マーカーデータ(*.csv) | *.csv"}
                              )
ファイル選択ダイアログの呼び出し例
第3引数でFReqB_Saving=trueにしていない場合、存在しないファイル名だと警告が出る

(5/10追記)
第3引数で表示ファイルのフィルタリングなどが可能になるようです。
なんか色々キーがありますが、とりあえず「FReqS_Title」「 FReqB_Saving」「FReqS_Filter」の3つが使えれば特に問題はないでしょう。

FReqB_Savingはファイル作成時はtrueで有効化しておいた方が便利かと思います。大抵は保存先のフォルダを選んで、保存ファイル名も一緒に設定したいはずなので。
それに対してファイル読み込み時は存在しないファイルを読み込まないよう、省略するかfalse指定で無効化しておく方が良いでしょう。

ちなみにRequestDirの場合はそもそもフォルダしか表示されないのでFReqS_Filterは要りませんし、ダイアログの中でフォルダ作成できるのでFReqB_Savingも不要でしょう。
タイトルも指定しないのであれば第3引数自体を省略してしまって良いかも。

FReqB_Multiはファイルの複数選択に関するキーだと思うのですが、trueにしても特に複数ファイルを選択できるということにはなりませんでした。
そのため、RequestFileもRequestDirも一度に選択できるのは1つだけ、ということになりそうです。

この情報がお役に立てば幸いです。


サポートしていただけるとその分の価値を提供できてるんだなって励みになります。