2014年8月30日土曜日

PPxで画像管理ソフト的な動きをする(同階層のフォルダを閲覧)


あいさつ



画像ファイルやメモファイルを閲覧しているとき、隣り合ったフォルダを順番に移動したい、という場合がある。

画像フォルダ
├─gununu
├─てさ部
├─ひだまりスケッチ
└─輪るピングドラム

こんな風に画像ファイルをフォルダ分けして保存しているとして、ひだまりフォルダを閲覧してるけど隣のピングドラムフォルダを閲覧したい、あるいは何か気に入ったファイルがないか、画像フォルダ内のフォルダを順番に閲覧したい、という場合です。

これを、 2画面PPxで、左右の窓で役割を分担することで行う。

やり方



以下を編集して取込

E_preview = { ** comment **
:DIR ,*execute ~,*jumppath %FCD
}

E_preview2 = { ** comment **
:DIR ,*execute C,*jumppath %FCD %: %KC "@N"
}

KC_main = { ; PPcメイン窓
^UP ,%K "@UP" %: %ME_preview
^DOWN ,%K "@DOWN" %: %ME_preview
}

KV_main = { ; PPcメイン窓
^UP ,%K~ "@UP" %: *execute ~,%%ME_preview2
^DOWN ,%K~ "@DOWN" %: *execute ~,%%ME_preview2
}

左窓(反対窓にカーソル下のフォルダの内容を表示)



左窓で、内容を順次表示させたいフォルダがあるフォルダを開きます。以下は、画像フォルダにあるフォルダの内容を順次確認したい、という場合。



左窓でCtrl+カーソルキー下を押す。すると、左窓カーソル下のフォルダの内容が、右窓に表示される。





このように、隣り合っているフォルダの内容を簡単に閲覧することができる。



ビューア(PPvからフォルダ切り替え)


先のやり方で気になったファイルをgununuフォルダに見つけ、右窓に行って画像ファイルをPPvで閲覧しているとする(参考:PPvをPPcと連動(ID一対一対応をやめる))。その時に、「ぐぬぬ画像はもういいや、同じ階層の別フォルダの画像ファイルを見たい」と思ったら、PPv上でCtrl+カーソル下を押す。

すると左窓のカーソルが下がり、左窓カーソル下のフォルダの内容が右窓に表示される。かつPPvの表示ファイルも切り替わる。







さっき左窓でやってたことをPPv上からやってるだけですね。


テキストファイルの場合


画像管理の他には、テキストファイルで書いたメモの閲覧にも使えそう。フォルダ分けしてあるメモを、順次見ていくことができる。





1画面と2画面


今回やったのは、2画面という特性がないとできないことだった。他には、「左右窓で同ファイルが無いか調べてマーク」というのも2画面で無いと不可能ですね。

ファイル移動やコピーが直感的にできて楽、という以外にも、2画面ということ自体を生かしたカスタマイズが他にもあるかもしれない。意識的に追求してみてもいいかも、と思った。

ちなみに、1画面でこれを実現しようとするなら、次のようなスクリプトを使う。

//!*script

fs = PPx.CreateObject("Scripting.FileSystemObject");
fn = PPx.Extract("%1");
currentDir = fs.GetFolder(fn);

// 同階層のフォルダリストを取得
e = new Enumerator(currentDir.ParentFolder.SubFolders); 
flds = new Array(); 
for( ; !e.atEnd(); e.moveNext()) {
  fuga = fs.GetFolder(fs.BuildPath(currentDir.ParentFolder.Path, e.item().Name));
  if (fuga.Attributes <= 17) flds.push(e.item().Name);
} 

// アルファベット順にソート
flds.sort(function(a, b){return a.toLowerCase()>b.toLowerCase()?1:-1;}); 

// カレントフォルダがリストの何番目かを計算
for(i=0; i < flds.length; i++) {
  if( flds[i] == currentDir.Name ) break;
} 

// 次のフォルダのフォルダ名をリストから取得
nextDir = flds[Math.min(i+1, flds.length-1)];

// カレントフォルダがリスト最後なら最初にループ
if (nextDir == currentDir.Name)nextDir = flds[0];
hoge = fs.GetParentFolderName( fn );

// パスを変更
PPx.Execute("*jumppath \"" + fs.BuildPath(hoge, nextDir) + "\"");

2chにあったやつほぼそのままです(Paper Plane xUI Part.4の219)。サブフォルダの一覧を取得し、同階層の次のフォルダを表示するスクリプト。ただ、PPcのソート状態を反映させることなどは無理で、少し使い勝手が悪い。

0 件のコメント:

コメントを投稿