テキストファイル中に画像ファイルのパスを書いておけば、それを別IDのPPVで閲覧できるようにする。これで、テキストファイルのメモでも画像や図を扱いたい!という我々の永遠の課題を解決できるかもしれない?
準備
以下をScriptフォルダに保存。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//!*script | |
// 特定の拡張子が書かれた行の文字列を取得 | |
// 例: %I%*script(%0Script\getimagepath.js,1) | |
// 第一引数(省略可能):獲得する行の上限 | |
const num = (PPx.Arguments.length) ? PPx.Arguments(0) : -1; // 獲得する行の上限 | |
const filepath = PPx.Extract("%FCD"); | |
const separator = ","; // 区切り文字 | |
const allowExtensions = /\.(jpg|jpeg|png|gif)$/i; // 拡張子の指定 | |
const fso = PPx.CreateObject('Scripting.FileSystemObject'); | |
const f = fso.OpenTextFile(filepath, 1); | |
let str = ""; | |
let i = 0; | |
while(! f.AtEndOfStream){ | |
const line=f.ReadLine(); | |
if (line.match(allowExtensions)) { | |
str += line+separator; | |
i += 1; | |
} | |
if (i == num){ | |
break; | |
} | |
} | |
f.close(); | |
PPx.result=str.slice(0, -1); // 末尾の区切り文字を削除 |
以下を編集して取り込み。
_Command = { ; ユーザコマンド・関数
openhalfppv = *windowsize %N,%*windowrect(,w),%*calc("%*windowrect(,h)/2")
*ppv -bootid:X -k %%J"%*arg(1)" %%: *fitwindow %N,%%N,4 %%: *windowsize %%N,%*windowrect(,w),%*windowrect(,h) %%: *selectppx %n
previewimagepath = *openhalfppv %*script(%0Script\getimagepath.js,1)
*mapkey use,K_halfppv
*linecust imgpreview,KV_main:LOADEVENT,*ifmatch %%n,%n %(%: *RotateCustomize _User:imgpath,%*script(%0Script\getimagepath.js) %: *ifmatch !0,0%*getcust(_User:imgpath) %: *execute VX,%%J"%*getcust(_User:imgpath)"%)
*linecust quitimgview,KV_main:CLOSEEVENT,*ifmatch %%n,%n %%: *linecust imgpreview,KV_main:LOADEVENT, %%: *linecust quitimgview,KV_main:CLOSEEVENT,
}
K_halfppv = {
Q ,*ifmatch !0,0%NVX %: %Oi *windowsize %N,%*windowrect(,w),%*calc("%*windowrect(,h)*2")
*closeppx "%n,VX"
^N ,*RotateCustomize _User:imgpath,%*script(%0Script\getimagepath.js) %: *execute VX,%%J%*getcust(_User:imgpath)
ENTER ,*ifmatch !0,0%NVX %: %Oi *windowsize %N,%*windowrect(,w),%*calc("%*windowrect(,h)*2") %: *closeppx VX %: *stop
*openhalfppv %*script(%0Script\getimagepath.js,1)
}
やり方
画像ファイルパスを書き込んだテキストファイルを用意し、PPVで表示する。
PPV上で以下のコマンドを実行。
*previewimagepath
PPVの大きさが半分になり、空いたスペースにPPV[X]が起動。画像ファイルを表示する。
PPvの表示ファイルが切り替わると、表示画像も切り替わる。以下はPPv中心の連動ビュー(参考:一対一対応 | PPxMemo)と組み合わせたもの。
その他キーバインド
- [ENTER] 画像表示非表示トグル
- [Q] 半分になったPPVの大きさをもとに戻してから終了
- ^[N] テキストファイル内の次の画像ファイルパスを表示
追記 2024-10-14
表示している画像ファイルパスをハイライトする設定は以下。
_Command = { ; ユーザコマンド・関数
openhalfppv = *windowsize %N,%*windowrect(,w),%*calc("%*windowrect(,h)/2")
*ppv -bootid:X -k %%J"%*arg(1)" %%: *fitwindow %N,%%N,4 %%: *windowsize %%N,%*windowrect(,w),%*windowrect(,h) %%: *selectppx %n
previewimagepath = *openhalfppv %*script(%0Script\getimagepath.js,1)
*mapkey use,K_halfppv
*highlight %*script(%0Script\getimagepath.js,1)
*linecust imgpreview,KV_main:LOADEVENT,*ifmatch %%n,%n %(%: *RotateCustomize _User:imgpath,%*script(%0Script\getimagepath.js) %: *ifmatch !0,0%*getcust(_User:imgpath) %: *execute VX,%%J"%*getcust(_User:imgpath)" %: *highlight %*getcust(_User:imgpath)%)
*linecust quitimgview,KV_main:CLOSEEVENT,*ifmatch %%n,%n %%: *linecust imgpreview,KV_main:LOADEVENT, %%: *linecust quitimgview,KV_main:CLOSEEVENT,
}
K_halfppv = {
Q ,*ifmatch !0,0%NVX %: %Oi *windowsize %N,%*windowrect(,w),%*calc("%*windowrect(,h)*2")
*closeppx "%n,VX"
^N ,*RotateCustomize _User:imgpath,%*script(%0Script\getimagepath.js) %: *execute VX,%%J%*getcust(_User:imgpath) %: *highlight %*getcust(_User:imgpath)
ENTER ,*ifmatch !0,0%NVX %: %Oi *windowsize %N,%*windowrect(,w),%*calc("%*windowrect(,h)*2") %: *closeppx VX %: *stop
*openhalfppv %*script(%0Script\getimagepath.js,1)
}
0 件のコメント:
コメントを投稿