2015年1月16日金曜日

1画面なら自窓に、2画面なら反対窓に書庫を展開

一体型PPxで、1画面なら自窓に。2画面なら反対窓に書庫を展開するようにする。

書庫を展開した時は、たいていその後展開したフォルダに潜って作業することになる。だから、この2パターンだけにしてもいいのではないかと思うのだ。

以下をScriptフォルダに保存

my_unpack.js
//!*script
// 一体型1画面なら自窓に展開
// 一体型2画面なら反対窓に展開
// それ以外なら通常動作

if (PPx.GetComboItemCount == 1){
  PPx.Execute("*unpack");
} else if (PPx.GetComboItemCount == 2){
  PPx.Execute("*unpack %2");
} else {
  PPx.Execute("%K\"@U\"");
}

以下を編集して取込
X_arcdr = 2 ; 書庫全展開は書庫名ディレクトリ内に 0:しない 1:する 2:自動
KC_main = { ; PPcメイン窓
U ,*script %0\Script\my_unpack.js
}

2015年1月9日金曜日

2画面時の比率を50:50に

僕は一体化型PPxを基本1画面、必要な時だけ2画面にして使ってる。
2画面にするときに、左右の窓の比率がずれることがあったので、必ず50:50になるようにする。


やり方


一体化PPxを1画面で使う(必要なときだけ2画面)を踏襲。

以下の2つのファイルをScriptフォルダに保存


2winTab.js
//!*script 

if (PPx.GetComboItemCount <= 1){ // 窓が一つ以下の場合
  PPx.Execute("%Ob %0\\PPCW.EXE -bootid:~ -k *pairrate 50");
  PPx.Execute("*customize XC_mvLR=4,1,6,B0100,6,B100"); // カーソル移動方法の変更
} else {
  PPx.Execute("%K\"@F6\"");
}

2winQ.js
//!*script 

var ppcid = PPx.Extract('%*extract\(C#L\"%%n\"\)'); // 左窓のPPcID
var ppcid2 = PPx.Extract('%*extract\(C#R\"%%n\"\)'); // 右窓のPPcID

if (PPx.GetComboItemCount <= 1){ // 窓が一つ以下の場合
  PPx.Execute("%K\"@Q\"");
} else {
  PPx.Execute('*closeppx ' + ppcid2); // 右窓を閉じる
  PPx.Execute("*customize XC_mvLR = 4,1,4,B0000,6,B001 ; [←][→] "); // カーソル移動方法の変更
}

以下を編集して取込
KC_main = { ; PPcメイン窓
TAB ,*script %0\Script\2winTab.js
Q ,*script %0\Script\2winQ.js
}

2015年1月8日木曜日

最大化表示/通常表示時に1画面に


僕はPPxを一体化で使い、基本的には1画面。コピー他をしたいときには2画面にしている。2画面にする必要があるときは、必ず最大化してから2画面にする。通常表示で2画面だと小さすぎるからだ。

だから、「最大化表示+2画面」から通常表示に戻すときには、かならず1画面にしていた。この処理を省略したい。

やり方


以下をScriptフォルダに保存

togglewinsize2.js
//!*script 

var ppcid = PPx.Extract('%*extract\(C#L\"%%n\"\)'); // 左窓のPPcID
var ppcid2 = PPx.Extract('%*extract\(C#R\"%%n\"\)'); // 右窓のPPcID

if (PPx.GetComboItemCount <= 1){ // 窓が一つ以下の場合
  PPx.Execute("*togglewinsize %*findwindowclass\(\"PaperPlaneCombo\"\)"); // 最大化表示/通常表示トグル
} else {
  PPx.Execute('*closeppx ' + ppcid2); // 右窓を閉じる
  PPx.Execute("*customize XC_mvLR = 4,1,4,B0000,6,B001 ; [←][→] "); // カーソル移動方法の変更
  PPx.Execute("*togglewinsize %*findwindowclass\(\"PaperPlaneCombo\"\)"); // 最大化表示/通常表示トグル
}

以下を編集して取込
MC_click = { ; PPc メイン窓
LD_TITL ,*script %0\Script\togglewinsize2.js
}

これで、タイトルバーをダブルクリックして最大化表示/通常表示にするとき、必ず1画面になる。

2015年1月7日水曜日

現在窓の位置を複数記憶

あいさつ


つかさです。
今回は現在窓の位置の記憶です。デフォルトだと、

  • &\[HOME] 現在の窓の位置を記憶する
  • &[HOME] &\[HOME]で記憶した位置に窓を移動する

と一つだけ記憶できますが、これを複数記憶できるようにします。

準備


必要なのは
  • setalias.js
  • resetalias.js
  • RotateExecute3.js
  • SetDimensions.js

の4つ。これらをScriptフォルダに保存します。上の3つを持ってない場合は、


に置いてあるので、どちらかに行って保存しましょう。

今回新しく作ったのは、SetDimensions.jsです。

SetDimensions.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]); // 大きさの変更
}

引数として、4つの数字をカンマで区切って引用符でくくったもの"x,y,width,height"を受け取り、現在窓の位置と大きさを、それにあわせて変更するスクリプトです。例えば
*script %0\Script\SetDimensions.js,"200,300,400,500"

とすると、位置が(200,300)で幅が400、高さ500になります。

ついで以下を編集して取込。
-|K_SetPPcDimentions =
-|K_SetPPvDimentions =

KC_main = { ; PPcメイン窓
^W ,*setnextkey K_SetPPcDimentions
}
KV_main = { ; PPvメイン窓
^W ,*setnextkey K_SetPPvDimentions
}

K_SetPPcDimentions = { ** comment **
W , *script %0\Script\setalias.js,ppcpos,"%*windowrect(,l),%*windowrect(,t),%*windowrect(,w),%*windowrect(,h)"
R , *script %0\Script\resetalias.js,ppcpos
^W ,*script %0\Script\SetDimensions.js,"%*script("%0\Script\rotateExecute3.js","cposi","ppcpos")"
}
K_SetPPvDimentions = { ** comment **
W , *script %0\Script\setalias.js,ppvpos,"%*windowrect(,l),%*windowrect(,t),%*windowrect(,w),%*windowrect(,h)"
R , *script %0\Script\resetalias.js,ppvpos
^W ,*script %0\Script\SetDimensions.js,"%*script("%0\Script\rotateExecute3.js","vposi","ppvpos")"
}

使い方

  • C_w wで記憶
  • C_w C_wで記憶した順に復元
  • C_w rでリセット

2014年11月26日水曜日

ブックマークをリストファイルにして保存

あいさつ


これまで、PPcでのフォルダブックマークと、PPvでのファイルブックマークの方法を考察してきた。


今回はその応用編。ブックマークをファイルに保存して、再利用できるようにする。

準備(両者共通)


  • file2alias.js
  • alias2file.js

の二つをScriptフォルダに保存する。

file2alias.jsはリストファイルを読みとり、エイリアスに登録するスクリプトで、alias2file.jsはエイリアスをリストファイルにして保存するスクリプト。

ちなみにリストファイルというのは
;ListFile
D:\Work\画像フォルダ\ひだまりスケッチ\kulSc26Vu4BA6C577.jpg
D:\Work\画像フォルダ\ひだまりスケッチ\0dd01f46.jpg
D:\Work\画像フォルダ\輪るピングドラム\2dffa763.jpg
D:\Work\画像フォルダ\輪るピングドラム\3b0de06d.jpg
D:\Work\画像フォルダ\輪るピングドラム\4d45aa4d.jpg

こんな書式のテキストファイルで、仮想ディレクトリとして扱うためのもの。


普通にテキストファイルにするよりもこうしておいたほうが、後々何か使い道ありそうかも、と思ってこのようにしている(一行目に;ListFileって付けるだけだし)。

file2alias.js

//!*script
// リストファイルの内容をエイリアスにセットする
// 第一引数:リストファイルのパス
// 第二引数:エイリアス

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var s = new ActiveXObject('ADODB.Stream');
var i = 0;
var fn = PPx.Arguments.Item(0);
var cmd = PPx.Arguments.Item(1);

// エイリアスをリセット
for (var i2 = 0; i2 < 30; i2++) {
  PPx.Execute("*alias "+cmd + i2 + " = ");
}

// ファイルを読み取り
s.type = 2;
s.charset = 'utf-16';
s.open();
s.loadFromFile(fn);

// エイリアスを順次セット
while(!s.EOS){
  hoge = s.readText(-2);
  if (hoge != "" && hoge != ";ListFile") {
    PPx.Execute("*alias "+cmd + i + " = " +hoge);
    i++;
  }
}
s.close();

alias2file.js

//!*script
// エイリアスをリストファイルに保存する
// 第一引数:リストファイルのパス
// 第二引数:エイリアス

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var strLine = ";ListFile";
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var fn = PPx.Arguments.Item(0);
var cmd = PPx.Arguments.Item(1);

// エイリアスを展開し一つにまとめる
for (var i = 0; i < 30; i++) {
  if (PPx.Extract("%'"+ cmd + i + "'")){
    strLine = strLine + "\r\n" +PPx.Extract("%'" +cmd + i + "'");
  } else {
    break;
  }
}

// ファイルに書き込み
objFileSys.CreateTextFile(fn);
var sw = new ActiveXObject("ADODB.Stream");
sw.Type = 2;
sw.charset = "utf-16";
sw.Open();
sw.WriteText(strLine,1);
sw.SaveToFile( fn, 2 );
sw.Close();

フォルダブックマークの場合


ここからは個別の話に。それぞれで、メニューを作成、表示するためのスクリプトを作成して、ブックマークをファイルに保存、再利用を実現する。

まず、PPxフォルダにbookmarkフォルダを作成。

次に、以下をScriptフォルダに保存する。

bookmarkmenu.js

//!*script
// フォルダのブックマーク用メニュー

fs = PPx.CreateObject("Scripting.FileSystemObject");
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var fn = PPx.Extract('%0')+"bookmark";

// フォルダの有無をチェック
if (objFileSys.FolderExists(fn) == false) {
    PPx.Echo(fn+"は存在しません");
    PPx.Quit(-1);
}

// メニューの削除
PPx.Execute("*setcust -|M_hoehoe =");

// 静的メニューの登録
PPx.Execute('*setcust M_hoehoe:ブックマークをファイルに保存=*script %%0\Script\\alias2file.js,'+fn+'\\%%"ブックマークをファイルに保存"%%{%%|.txt%%},bookmark');
PPx.Execute('*setcust M_hoehoe:ブックマークフォルダへ移動=%%j '+ fn);
PPx.Execute('*setcust M_hoehoe:--  =');

// フォルダリストを取得し動的メニューの登録
objFolder = objFileSys.GetFolder(fn);
e = new Enumerator(objFolder.Files); 
for( ; !e.atEnd(); e.moveNext()) {
  PPx.Execute('*setcust M_hoehoe:'+e.item().Name+'=*script %%0\\Script\\file2alias.js,'+fn+"\\"+e.item().Name+",bookmark");
}

// メニューを開く
PPx.Execute("%M_hoehoe,1");

以下を編集して取り込み。

K_bookmark = { ** comment **
',' , *script %0\Script\bookmarkmenu.js
}

使い方


PPc上でC_s ,(Ctrl+Sを押してからカンマを押す)。メニューが表示される。



「ブックマークをファイルに保存」を選択すると、一行編集が出るので、保存したい名前を入力してEnter。


保存したブックマークを使いたいときは、メニュー下部のファイルから適当なものを選択。すると、エイリアスがそのファイルの内容に置き換わる。

ファイルブックマークの場合


まずは、PPxフォルダにClipフォルダを作成。

次に、以下をScriptフォルダに保存。

clipmenu.js

//!*script
// PPv用ブックマークメニュー

fs = PPx.CreateObject("Scripting.FileSystemObject");
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var fn = PPx.Extract('%0')+"Clip";

// フォルダの有無をチェック
if (objFileSys.FolderExists(fn) == false) {
    PPx.Echo(fn+"は存在しません");
    PPx.Quit(-1);
}

// メニューの削除
PPx.Execute("*setcust -|M_hoehoe =");

// 静的メニューの登録
PPx.Execute('*setcust M_hoehoe:ブックマークをファイルに保存=*script %%0\Script\\alias2file.js,'+fn+'\\%%"ブックマークをファイルに保存"%%{%%|.txt%%},clip');
PPx.Execute('*setcust M_hoehoe:クリップフォルダへ移動=*execute C,*jumppath '+ fn);
PPx.Execute('*setcust M_hoehoe:--  =');

// フォルダリストを取得し動的メニューの登録
objFolder = objFileSys.GetFolder(fn);
e = new Enumerator(objFolder.Files); 
for( ; !e.atEnd(); e.moveNext()) {
  PPx.Execute('*setcust M_hoehoe:'+e.item().Name+'=*script %%0\\Script\\file2alias.js,'+fn+"\\"+e.item().Name+",clip");
}

// メニューを開く
PPx.Execute("%M_hoehoe,1");

以下を編集して取込
K_clip = { ** comment **
',' , *script %0\Script\clipmenu.js
}

使い方


PPv上でC_s ,(Ctrl+Sを押してからカンマを押す)。メニューが表示される。


「ブックマークをファイルに保存」を選択すると、一行編集が出るので、保存したい名前を入力してEnter。

保存したブックマークを使いたいときは、メニュー下部のファイルから適当なものを選択。すると、エイリアスがそのファイルの内容に置き換わる。

想定している使い方とか

 
フォルダであれば、個々の作業ごとに必要なフォルダを登録して再利用するだとか、各所にある画像フォルダをまとめておくとかだろうか。

ファイルであれば、個々の作業で閲覧することになるファイルをまとめておく、とかが考えられる。

他には、リストファイルを作成されるのを利用する方法もありそう。画像なりメモファイルなりを探してる途中、気になるものがあればブックマーク。あとでそれをリストファイル化し、仮想ディレクトリ内でゆっくり選別するとか。

2014年11月25日火曜日

フォルダのブックマーク(PPxで一時ブックマーク改)


あいさつ


PPxで一時ブックマークで行ったフォルダブックマークを

  • setalias.js
  • resetalias.js
  • RotateExecute3.js

の、PPvメインの連動ビューで使った3つのスクリプトで作りなおす。*setが*aliasに変わったこと以外は、やれることはほぼ同じ。
ではなぜ、わざわざ作りなおしたのかというと、次回あたりでやりたい「ブックマークをファイルにして保存」の準備に必要だから。

スクリプト


以下の3つのスクリプトをScriptフォルダに保存。PPvメインの連動ビューのものと全く同じなので流用できる。

setalias.js
//!*script
// 第一引数 : エイリアス
// 第二引数 : マクロ

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var cmd = PPx.Arguments.Item(0);
var macro = PPx.Arguments.Item(1);

// 既に登録されていたら登録しない
for (var i = 0; i < 30; i++) {
  if (PPx.Extract("%'"+cmd + i + "'") == PPx.Extract(macro)){
    PPx.SetPopLineMessage("既に登録されてます");
    PPx.Quit();
  }
}

// エイリアスに登録
for (var i = 0; i < 30; i++) {
  if (!PPx.Extract("%'"+cmd + i + "'")){
    PPx.Execute("*alias "+cmd+i+" = "+macro);
    PPx.SetPopLineMessage(cmd+i+"に登録しました");
    break;
  }
}

resetalias.js

//!*script
// 第一引数 : エイリアス

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var cmd = PPx.Arguments.Item(0);

// cmd0からcmd30までをリセット
for (var i = 0; i < 30; i++) {
  PPx.Execute("*alias "+cmd+i+" = ");
}

PPx.SetPopLineMessage(cmd +"をリセットしました");

RotateExecute3.js
//!*script
// 第一引数: 識別子
// 第二引数: エイリアス

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var id = PPx.Arguments.Item(0);
var command = PPx.Arguments.Item(1);

// command0があるかどうかをチェック
if (!PPx.Extract("%'"+command+"0'")){
  PPx.SetPopLineMessage("コマンドが空です");
  PPx.Quit(-1);
}

// 数値に1を足す
if (!PPx.Extract("%'"+id+"'")){
  PPx.Execute("*set "+id+" = 0");
}else {
  var i = parseInt(PPx.Extract("%'"+id+"'")) + 1;
  PPx.Execute("*set "+id+" = "+ i);
}
var i2 = PPx.Extract("%'"+id+"'");

// commandを実行
if (PPx.Extract("%'"+command+ i2 + "'")){
  PPx.Result = PPx.Extract("%'"+command+ i2 + "'");
}else{
  PPx.Execute("*set "+id+" = 0");
  PPx.Result = PPx.Extract("%'"+command+"0'");
}

設定


以下を編集して取込。
-|K_bookmark =

KC_main = { ; PPcメイン窓
^S ,*setnextkey K_bookmark
}

K_bookmark = { ** comment **
S , *script %0\Script\setalias.js,bookmark,%%1
R , *script %0\Script\resetalias.js,bookmark
^S , %j %*script("%0\Script\rotateExecute3.js","homu","bookmark")
}

使い方


C_s s(Ctrl+Sを押したあとSを押す)で、カレントフォルダをブックマークに登録できる。このとき、左上に登録したエイリアスが表示される。bookmark0、bookmark1、bookmark2と、1つずつ数値が増えているのがわかると思う。






C_s C_s(Ctrl+Sを二回押し)で、ブックマークしたフォルダに順次移動。登録した順に、bookmark0、bookmark1…と切り替わり、最後まで行くとまたbookmark0に戻る。





ブックマークをリセットしたいときは、C_s r(Ctrl+Sを押したあとRを押す)

2014年11月20日木曜日

PPvメインの連動ビュー(ブックマークをローテート)


あいさつ


ブックマークした画像ファイルやテキストファイルを、専用のPPvで開くようにします。

PPv[A]上でC_s C_s。PPv[Z]がフォーカス移動無しで起動、ブックマークしたファイルを開く



C_s C_sを押すたびに、PPv[Z]にブックマークファイルが表示される



という仕組みです。

PPcとPPvの対応関係についても考える必要があるので、それを含めて調整します。PPvをPPcと連動(ID一対一対応をやめる)から色々と変更してます。

スクリプト


必要なのは

  • setalias.js
  • resetalias.js
  • RotateExecute3.js
  • togglemark.js

の4つ。

setalias.js

//!*script
// 第一引数 : エイリアス
// 第二引数 : マクロ

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var cmd = PPx.Arguments.Item(0);
var macro = PPx.Arguments.Item(1);

// 既に登録されていたら登録しない
for (var i = 0; i < 30; i++) {
  if (PPx.Extract("%'"+cmd + i + "'") == PPx.Extract(macro)){
    PPx.SetPopLineMessage("既に登録されてます");
    PPx.Quit();
  }
}

// エイリアスに登録
for (var i = 0; i < 30; i++) {
  if (!PPx.Extract("%'"+cmd + i + "'")){
    PPx.Execute("*alias "+cmd+i+" = "+macro);
    PPx.SetPopLineMessage(cmd+i+"に登録しました");
    break;
  }
}

*script %0\Script\setalias.js,clip,%%FCDというように引数を2つ取る。第一引数がエイリアスで第二引数がマクロ。Clip0、Clip1、Clip2…と順番に、マクロを展開したものを登録する。

resetalias.js

//!*script
// 第一引数 : エイリアス

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var cmd = PPx.Arguments.Item(0);

// cmd0からcmd30までをリセット
for (var i = 0; i < 30; i++) {
  PPx.Execute("*alias "+cmd+i+" = ");
}

PPx.SetPopLineMessage(cmd +"をリセットしました");

*script %0\Script\resetalias.js,clipというように引数を一つ取る。引数は初期化したいエイリアス。引数をclipにすると、Clip0~Clip30までを初期化する。

RotateExecute3.js

//!*script
// 第一引数: 識別子
// 第二引数: エイリアス

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var id = PPx.Arguments.Item(0);
var command = PPx.Arguments.Item(1);

// command0があるかどうかをチェック
if (!PPx.Extract("%'"+command+"0'")){
  PPx.SetPopLineMessage("コマンドが空です");
  PPx.Quit(-1);
}

// 数値に1を足す
if (!PPx.Extract("%'"+id+"'")){
  PPx.Execute("*set "+id+" = 0");
}else {
  var i = parseInt(PPx.Extract("%'"+id+"'")) + 1;
  PPx.Execute("*set "+id+" = "+ i);
}
var i2 = PPx.Extract("%'"+id+"'");

// commandを実行
if (PPx.Extract("%'"+command+ i2 + "'")){
  PPx.Result = PPx.Extract("%'"+command+ i2 + "'");
}else{
  PPx.Execute("*set "+id+" = 0");
  PPx.Result = PPx.Extract("%'"+command+"0'");
}

%*script(rotateExecute3.js,id,command)

と引数を2つ付ける。第一引数は数値をカウントするための識別子で、第二引数はエイリアス。実行するたびに、

command0 command1 command2…

と、第二引数に数字を付け足したエイリアスを順次戻り値として返す。最後のエイリアスを実行したら、またcommand0に戻るという仕組み。


togglemark.js

//!*script

PPx.Entry.Mark = -1;

Space時のマークトグルをどう再現したらいいかわからないので新たに作った。多分もっと良いやり方がある。

設定


以下を編集して取込。

-|K_clip =

K_clip = { ** comment **
S , *script %0\Script\setalias.js,clip,%%FCD
^S , %Oa %0\PPVW.EXE -bootid:z -r %*script("%0\Script\rotateExecute3.js","hoge","clip")
R , *script %0\Script\resetalias.js,clip
}

KV_main = { ; PPvメイン窓
LEFT ,*execute C,*cursor 6,-1,4,B0000,0,B0000 %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
RIGHT ,*execute C,*cursor 6, 1,4,B0000,0,B0000 %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
UP ,*execute C,*cursor 2,-1,4,B0000,5,B0000 %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
DOWN ,*execute C,*cursor 2, 1,4,B0000,5,B0000 %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
SPACE ,*execute C,*script %0\Script\togglemark.js %: *execute C,*cursor 2, 1,4,B0000,5,B0000 %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
\SPACE ,*execute C,*script %0\Script\togglemark.js %: *execute C,*cursor 2,-1,4,B0000,5,B0000 %: *execute C,*ppv -bootid:A -r %%*name(CD,"%%R","%%1")
Q ,*closeppx VZ
ENTER ,*closeppx V*
^S ,*setnextkey K_clip
}

E_cr = { ; [Enter]用判別
:JPEG ,
:BMP ,
:XJS ,
:XVBS ,
PNG ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
JPG ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
JPEG ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
BMP ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
GIF ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
TXT ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
CPP ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
H ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
C ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
L ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
EL ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
HTML ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
HTM ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
XYZZY ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
EMACS ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
SCM ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
INI ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
VBS ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
JS ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
PY ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
PYW ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
HOWM ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
CFG ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
KIF ,*launch %0\PPVW.EXE -bootid:A -r %*name(CD,"%R","%1")
}

これで、

  • PPcで画像ファイルやテキストファイルにカーソルをあわせてEnterを押すと、PPv[A]で表示
  • PPv[A]上でカーソルを動かすと、それに連動してアクティブPPcのカーソルが動き、対応するファイルを表示する
  • PPv[A]上でC_s sで表示ファイルをブックマーク
  • C_s C_sでPPv[Z]にブックマークファイルを順次PPv[Z]に表示。PPv[Z]が無い場合はそれを起動。PPv[Z]にフォーカスは当てない
  • QでPPv[Z]を閉じる
  • EnterでPPvを全て閉じる

となる。

使い方


PPcで画像ファイルやテキストファイルにカーソルをあわせてEnterを押すと、PPv[A]が起動。PPv[A]上でカーソルを動かすとそれにあわせてPPcのカーソルが動き、それにあわせてPPv[A]に表示されるファイルも変わる



PPv[A]で閲覧中、気になるファイルを見つけたらC_s sでブックマーク




ブックマークしたファイルを閲覧したいときは、C_s C_s。PPv[Z]がフォーカス無しで起動し、ブックマークファイル(Clip0に登録されているもの)を開く



C_s C_sとするたびに、PPv[Z]にブックマークしたファイルが順次(Clip1、Clip2…)表示される。最後までいくと、またClip0に戻る。



もう十分だと思ったら、Qを押してPPv[Z]を消す



Enterを押すと、PPv[Z]とPPv[A]が共に閉じる


テキストファイルもブックマークできるし、ブックマークにテキストファイルと画像ファイルを混在させることももちろんできる。


追記 2014/11/24


スクリプトを全体的に変更、それにあわせて設定も変更。