現在窓の位置を複数記憶し、再現できるようにする。
以前の記事では同じことをエイリアスを使用して行ったが、今回はユーザーデータを使用する。
Script
以前のSetDimensions.jsとほぼ同じだが、区切り文字を「,」から「;」に変更している。
SetDimensions2.js
//!*script
// 窓の位置と大きさを変更する
// 第一引数:"x;y;width;height"
// PPXMES.DLLとPPXWIN.DLLが必要
// 引数がなければ終了
if (PPx.Arguments.Length < 1){
PPx.SetPopLineMessage("引数が正しくありません。");
PPx.Quit(-1);
}
var hoge = PPx.Arguments.Item(0).split( ";" );
// 実行元が一体型PPcかそれ以外かで分岐
if (PPx.GetComboItemCount != 0&&PPx.Extract('%n').substr(0,1)=="C"){
PPx.Execute("*windowposition %*findwindowclass\(\"PaperPlaneCombo\"\)"+","+hoge[0]+","+hoge[1]); // 位置の変更
PPx.Execute("*windowsize %*findwindowclass\(\"PaperPlaneCombo\"\)"+","+hoge[2]+","+hoge[3]); // 大きさの変更
} else {
PPx.Execute("*windowposition %N"+","+hoge[0]+","+hoge[1]); // 位置の変更
PPx.Execute("*windowsize %N"+","+hoge[2]+","+hoge[3]); // 大きさの変更
}
窓の位置を登録
*script %0\Script\setSeqUserData.js,ppvpos,%*windowrect(,l);%*windowrect(,t);%*windowrect(,w);%*windowrect(,h)
これを実行するたび、ppvpos0 ppvpos1 ppopos2…に現在窓の位置と大きさ(x;y;width;height)を登録する。
窓の位置を変更
*script %0\Script\SetDimensions2.js,%*script(%0\Script\getSeqUserData.js,ppvpos)
getSeqUserData.jsを実行するたび、順次ppvpos0 ppvpos1 ppopos2…の中身を返すので、その値を使いSetDimentions2.jsで窓の位置と大きさを変更する。
登録例
僕はPPVに2ストロークキーで登録。
- C_s,s 登録
- C_s,C_s 実行
- C_s,e エディタで編集
-|K_SetPPvDimensions =
KV_main = { ; PPvメイン窓
^S ,*setnextkey K_SetPPvDimensions
}
K_SetPPvDimensions = { ** comment **
S , *script %0\Script\setSeqUserData.js,ppvpos,%*windowrect(,l);%*windowrect(,t);%*windowrect(,w);%*windowrect(,h)
^S ,*script %0\Script\SetDimensions2.js,%*script(%0\Script\getSeqUserData.js,ppvpos)
E , *ppb -c *string o,name=%%*script(%%0\Script\SeqUserData2file.js,ppvpos) %%: %%Obsq xyzzy %%so"name" %%: *script %%0\Script\file2SeqUserData.js,ppvpos,%%so"name"
}