2024年8月12日月曜日

PPV単体で書庫内の画像を閲覧

書庫内の画像をPPvで閲覧できるようにする。漫画ビューアでよくあるやつです。 「PPcで書庫に潜ってPPvで連動ビューしたらいいだけじゃん」と言われたらたしかにそうなのだが、PPv単体でできたら便利かもしれないと思いました(小並感)。

準備

以下をgetarchivefiles.jsという名前でスクリプトフォルダに保存。

//!*script
// 書庫内のファイル名をS_xxx1 S_xxx2 S_xxx3 ... と連番で保存。「書庫のパス\S_xxx1の内容」を返す
// PPvを単体で画像ビューアのように扱うためのスクリプト
// 第一引数:書庫のパス
// 第二引数:ファイル名を保存するS_xxx
// 例: *ppv %*script(%0Script\getarchivefiles.js,%FCD,S_archivepages)
// 引数がなければ終了
if (PPx.Arguments.Length < 2){
PPx.SetPopLineMessage("引数が正しくありません。");
PPx.Quit(-1);
}
var source_file = PPx.Arguments(0);
var user_table = PPx.Arguments(1);
var filelist = PPx.Extract("%*run\(tar -tf \""+source_file+"\"\)").split("\r\n");
PPx.Execute("*deletecust \""+user_table+"\""); // S_xxxの初期化
var a = PPx.Extract("%*name\(DCN,"+source_file+"\)"); // 両端の""を取る
for(i = 0; i < filelist.length-1; i++) {
var filepath = PPx.Extract('%*name(KDC,'+a+"\\"+filelist[i]+')'); // パス区切りを「\」に統一
PPx.Execute("*setcust "+user_table+":"+i+"="+filepath);
};
PPx.Result=PPx.Extract("%*getcust\("+user_table+":0\)"); // 「書庫のパス\S_xxx1の内容」を返す

以下を編集して取込。

K_archiveview    = {
RIGHT    ,*ifmatch 0,0%si"pagenum" %: *string i,pagenum=0
    *string i,pagenum=%*calc("%si"pagenum"+1") %: *string o,name=%%*getcust(S_archivepages:%si"pagenum")
    *ifmatch !0,0%sgo"name" %: %J%sgo"name" %: *stop
    *string i,pagenum=%*calc("%si"pagenum"-1")
LEFT    ,*ifmatch 0,0%si"pagenum" %: *string i,pagenum=0 %: *stop
    *if %*calc(%si"pagenum") == 0 %: *stop
    *string i,pagenum=%*calc("%si"pagenum"-1") %: *string o,name=%%*getcust(S_archivepages:%si"pagenum") %: %J%sgo"name"
}

%si"pagenum"は現在見ているページ番号。左右カーソルで1ずつ増減する。

やり方

PPcで書庫ファイルにカーソルをあわせ、以下のコマンドを実行。

*ppv %*script(%0Script\getarchivefiles.js,%FCD,S_archivepages) -k *mapkey use,K_archiveview

最初の画像が表示される。カーソル左右で表示ファイルを切り替える。

0 件のコメント:

コメントを投稿