2014年5月30日金曜日

PPxをさらにあふっぽくする


あいさつ


PPxをあふっぽくする以来、2画面PPxに関連した記事をいくつか書いてきた。やりたかったことは大方できた気がするので、今回はそのまとめ。

自分で常用できるレベルまで、PPxをあふっぽくしてみようと思う。



事前の準備


  • Paper Plane xUI Message Module 
  • Paper Plane xUI Window Module
  • Paper Plane xUI Text Module
  • Paper Plane xUI Script Module

の4つをTORO's Libraryからダウンロードし、それぞれに入っている


  • PPXMES.DLL(64bit版ならばPPXMES64.DLL)
  • PPXWIN.DLL(64bit版ならばPPXWIN64.DLL)
  • PPXTEXT.DLL(64bit版ならばPPXTEXT64.DLL)
  • PPXSCR.DLL(64bit版ならばPPXSCR64.DLL)

をPPxフォルダに保存する。

また、PPxフォルダにScriptという名前で新しいフォルダを作成する。



2画面にする


X_win = { ; 表示形式全般 *layout
CA = B000001001
CB = B000001001
}
X_combo = 1 ; 複数 PPc を一体化 0:しない 1:する
X_combos = B0000000000001000010000000001001,B000 ; 一体化時の表示形式
CC_log = _WHI,_BLA ; 共用ログ、アドレスバー(文字,背景)_AUTO可
XC_mvLR = 4,1,6,B0100,6,B100 ; [←][→]
XC_mvUD = 0,1,4,B0000,5,B010 ; [↑][↓] 
X_dock = { ; バー割当て(要IE4以降)*layout,*dock
CBA_B = XC_inf,100,388
}
XC_celD = _AUTO,_AUTO,1,7 ; エントリ表示 文字,背景,カーソル,マーク
C_eInfo = _AUTO,_DRED,_AUTO,_DBLA,_DBLU,_DCYA,_DBLA,_BRO,_GRE,_WHI,_AUTO,HC00000,_AUTO, _SBLU,_BRO,_CYA,_GRE
XC_stat = _AUTO,_AUTO,0,0,I"Mark:" mn i"/" ms8 S1 L I"Entry:" e0 i"/" E0 L Df8 i"(" Dt8 i")"
X_dlf = B1000100,B0,B10000000 ; ドライブのリスト :,メニュー \[L],ジャンプ [1]
X_inag = 0 ; 現在窓以外はグレー調に 0:しない 1:する
;エントリ状態の選択色を青色、ハイライト表示を緑色に
C_eInfo = _AUTO,_DRED,_AUTO,_DBLA,_DBLU,_DCYA,_DBLA,_BRO,_GRE,_WHI,_AUTO,H804000,_AUTO,H404000,_BRO,_CYA,_GRE 

PPxのカスタマイズの方法はいろいろあるが、一番手っ取り早いのが「編集して取込」。

上記をクリップボードにコピーしたあと、メニューバーからツール - カスタマイズを選択、あるいはPPCUSTW.EXEを実行することにより、カスタマイザーを起動する。



ファイルタブの「編集して取込」をクリック。すると、クリップボードの文字列が貼り付けられた状態で「編集して取込」ダイアログが出る。



試験ボタンを押して、エラーが出ないことを確認してからOKボタンを押す。すると、コピペした設定がPPxに反映される。

誰かが作った設定を使うだけなら、PPxは他のどのファイラよりも楽なのだ。ちなみに慣れてきたら、個々の設定ごとにテキストファイルを作って管理すると便利(PPxの設定ファイルを管理する)。

たいていの設定はすぐに反映されるが、一体化設定については再起動しないと反映されない。なので、再起動しよう。


これにより、

  • 窓の一体化
  • スクロールバーの位置変更
  • ログの表示
  • ログの背景色と文字色の変更
  • 情報行を下部に
  • ステータス行を少し短くする
  • 現在窓以外をグレー調にしない
  • 親ディレクトリに戻る動作でドライブリストを表示しない
  • 左右逆カーソルで親ディレクトリに移動
  • 移動方向が隣接窓側なら窓移動
  • ファイル窓の最上下位置でカーソルループ
  • カーソルの形状は文字/背景色の反転
  • 検索時の背景色を緑色に


となる。

ついで、";"を押して表示形式メニューを出し、詳細1(&D)(英語のままなら&Details1)を選択。これで、窓幅一杯の一列表示になる。



キーバインドの設定


ファイラ側(PPCW.EXE)のキーバインドです。

Scriptフォルダに、
  • MarkCursor.js
  • MarkCursorR.js
  • afx_o.js
  • afx_shift_o.js
  • go_mark.js
  • go_markR.js

を保存してから、以下を編集して取込(スクリプトはこの記事の一番最後にあります)。

KC_main = { ; PPcメイン窓
Q = @&F4
F = @\J
\F ,*sortentry 17, 0, 1,B11000,
\T ,*sortentry 11, 0,-1,B11000,
L = @\L
HOME = @\HOME
^' ' ,*script %0\Script\MarkCursor.js
^\SPACE ,*script %0\Script\MarkCursorR.js
O ,*script %0\Script\afx_o.js
\O ,*script %0\Script\afx_shift_o.js
^V_HBA ,*script %0\Script\go_mark.js
^\V_HBA ,*script %0\Script\go_markR.js
}

これで

  • Q でPPxを終了(両方の窓を消す)
  • F で検索
  • Shift+F でファイル名ソート
  • Shift+T で時間逆順ソート
  • L でドライブ変更
  • Home でマークファイル反転
  • Ctrl+Space で直上のマークからカーソル位置までマーク
  • Ctrl+Shift+Space で 直下のマークからカーソル位置までマーク
  • O で現在窓を反対窓と同パスに
  • Shift+O で反対窓を現在窓と同パスに
  • Ctrl+: でマークファイルにカーソルをあわせる
  • Ctrl+Shift+: でマークファイルにカーソルをあわせる(逆順)

というキーバインドになる。

関連リンク



ビューアの設定とキーバインド




ビューア側(PPVW.EXE)の設定とキーバインドです。

Scriptフォルダに

  • picture_view.js
  • text_view.js
  • ChangePPvSize.js

を保存してから、以下を編集して取込(スクリプトはこの記事の一番最後にあります)。

X_vzs = 0 ; 選択する範囲を選択方向に応じて変更 0:しない 1:する 
XV_drag = 2,1,3 ; ドラッグ開始ボタン スクロール,選択,窓移動
XV_imgD = { ; 拡大縮小設定([=],*zoom,*reducemode) PPvID = 倍率、縮小方法
;倍率: -1:窓枠に合わせる -2:窓より小→等倍、大→縮小 0:100% 1-10000:%倍率
;縮小方法: 1:白地に黒文字 2:黒地に白文字 3:カラー高速 4:混合
VA = -2,4
VB = -2,4
}

KV_main = { ; PPvメイン窓
LEFT ,*execute C%*regexp(%n,"/.(.)/$1/"),*cursor 6, -1 %: %KC%*regexp(%n,"/.(.)/$1/")"@N"
RIGHT ,*execute C%*regexp(%n,"/.(.)/$1/"),*cursor 6, 1 %: %KC%*regexp(%n,"/.(.)/$1/")"@N"
UP ,%KC%*regexp(%n,"/.(.)/$1/") "@UP @N"
DOWN ,%KC%*regexp(%n,"/.(.)/$1/") "@DOWN @N"
SPACE ,%KC%*regexp(%n,"/.(.)/$1/") "@SPACE@N"
\SPACE ,%KC%*regexp(%n,"/.(.)/$1/") "@\SPACE@N"
ENTER ,%K"@Q" %: *focus #%*findwindowclass("PaperPlaneCombo")
Q ,%K"@Q" %: *focus #%*findwindowclass("PaperPlaneCombo")
\ENTER ,*script %0\Script\ChangePPvSize.js
&ENTER ,*togglewinsize
}

E_cr = { ; [Enter]用判別
:JPEG ,
:BMP ,
:XJS ,
:XVBS ,
PNG ,*script %0\Script\picture_view.js
JPG ,*script %0\Script\picture_view.js
JPEG ,*script %0\Script\picture_view.js
BMP ,*script %0\Script\picture_view.js
GIF ,*script %0\Script\picture_view.js
TXT ,*script %0\Script\text_view.js
CPP ,*script %0\Script\text_view.js
H ,*script %0\Script\text_view.js
C ,*script %0\Script\text_view.js
L ,*script %0\Script\text_view.js
SCM ,*script %0\Script\text_view.js
INI ,*script %0\Script\text_view.js
VBS ,*script %0\Script\text_view.js
JS ,*script %0\Script\text_view.js
PY ,*script %0\Script\text_view.js
HOWM ,*script %0\Script\text_view.js
CFG ,*script %0\Script\text_view.js
}


PPcから、画像ファイルやテキストファイル上でEnterを押した時に、


  • 左窓で画像ファイルを開いたら右窓に表示
  • 右窓で画像ファイルを開いたらウィンドウ全体表示
  • テキストファイルならどちらの窓で開いてもウィンドウ全体表示

するように。

また、ビューア上での挙動が

  • 左クリックで文字列を選択
  • ビューアを閉じた時にフォーカスがPPcに移るように


ビューア上でのキーバインドが

  • Enterでビューアを閉じてPPcにフォーカスを移す
  • Qでビューアを閉じてPPcにフォーカスを移す
  • カーソルキーで別ファイルを表示
  • Spaceでマーク
  • Shift+Spaceで逆順マーク
  • Shift+Enterで反対窓表示とウィンドウ全体表示トグル
  • Alt+Enterで最大化トグル


するようにしてます。


関連リンク




その他




僕があふの時に使ってたほぼ覚えらんない人のパクりの色を参考にしてみた。

C_ext = { ; 拡張子色
EXE = _RED
LNK = H0080FF
BMP = _MAG
JPG = _MAG
JPEG = _MAG
GIF = _MAG
TIF = _MAG
ICO = _MAG
PNG = _MAG
MPG = H8000FF
MPEG = H8000FF
MP4 = H8000FF
AVI = H8000FF
TS = H8000FF
MP3 = H80FF80
WAV = H80FF80
WMA = H80FF80
FLAC = H80FF80
OGG = H80FF80
M3U = H808040
ASF = H808040
ASX = H808040
TXT = _CYA
HLP = _CYA
CSV = _CYA
MAC = _CYA
CHM = _CYA
DOC = H40FF00
XLS = H40FF00
HTM = H40FF00
HTML = H40FF00
URL = H40FF00
INI = H40FF00
CFG = H40FF00
DAT = H40FF00
DEF = H40FF00
KEY = H40FF00
DLL = _DMAG
SYS = _DMAG
REG = _DMAG
INF = _DMAG
BAK = H004080
OLD = H004080
TMP = H004080
IMG = H8080FF
ISO = H8080FF
LZH = HFFFF80
ZIP = HFFFF80
CAB = HFFFF80
TAR = HFFFF80
RAR = HFFFF80
GZ = HFFFF80
TGZ = HFFFF80
7Z = HFFFF80
}


サムネイル表示のトグル





Shift+"."を押すことで、サムネイル表示と詳細表示をトグルするようにする。以下を編集して取込。

KC_main = { ; PPcメイン窓
'>' ,*RotateExecute id,"*customize XC_mvLR=4,1,4,B0000,0,B001 %%: *viewstyle サムネイル1(&T) %%: %%M?layoutmenu,!P","*customize XC_mvLR=4,1,6,B0100,6,B100 %%: *viewstyle 詳細1(&D) %%: %%M?layoutmenu,!P"
}


表示形式メニューが英語のままなら、以下でたぶんおk

KC_main = { ; PPcメイン窓
'>' ,*RotateExecute id,"*customize XC_mvLR=4,1,4,B0000,0,B001 %%: *viewstyle &Thumbnails1 %%: %%M?layoutmenu,!P","*customize XC_mvLR=4,1,6,B0100,6,B100 %%: *viewstyle &Details1 %%: %%M?layoutmenu,!P"
}


壁紙変更メニュー



画像閲覧中に"_"を押すことで、壁紙変更メニューが出るようにする。



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

M_WallPaper = { ** comment **
PPC全体の壁紙にする(&1) = *customize X_bg:P_ca=%FDC %: *customize X_bg:P_cb=%FDC %: *customize X_bg:T_ca=20 %: *customize X_bg:T_cb=20
PPC[&A]の壁紙にする = *customize X_bg:P_ca=%FDC %: *customize X_bg:T_ca=1
PPC[&B]の壁紙にする = *customize X_bg:P_cb=%FDC %: *customize X_bg:T_cb=1
-- = 
PPC全体の壁紙をナシにする = *customize X_bg:-|P_ca= %: *customize X_bg:-|P_cb=
PPC[A]の壁紙をナシにする = *customize X_bg:-|P_ca=
PPC[B]の壁紙をナシにする = *customize X_bg:-|P_cb=
-- = 
壁紙の明るさを調整する = *customize X_bg:Bright=%"明るさ(Bright)"%{%*getcust(X_bg:Bright)%}
}

KV_img = { ; PPcメイン窓
'\' ,%M_WallPaper,1
}



外部ソフトからパスを変更


fenrirからPPxにパスを渡す方法。

Ctrl+カーソル左で左窓に。Ctrl+カーソル右で右窓にパスを渡したい時は次のようにする。

2left.txt

[.***;
PPx左窓|D:\bin\ppx\PPCW.EXE -r /k *execute C#L,*jumppath "%P" /entry %: *focus C#L
]


2right.txt

[.***;
PPx右窓|D:\bin\ppx\PPCW.EXE -r /k *execute C#R,*jumppath "%P" /entry %: *focus C#R
]


スクリプト



PPcキーバインド関連



MarkCursor.js
//!*script
// 直上のマークからカーソル位置まで全てマーク

var lastEntry,firstEntry;
lastEntry = PPx.EntryIndex;  // カーソル位置

// 直上のマーク位置を取得
for (var i = lastEntry; i > 0; i--) {
  if (PPx.Entry(i).Mark == 1) {
    firstEntry = i;
    break;
  }
}

// 直上にマークが無ければ終了
if (!firstEntry) PPx.Quit();

// カーソル位置までマーク
for (var i = firstEntry; i < lastEntry + 1; i++) {
  PPx.Entry(i).Mark = 1;
}

MarkCursorR.js
//!*script
// 直下のマークからカーソル位置まで全てマーク

var firstEntry,lastEntry;
firstEntry = PPx.EntryIndex;  // カーソル位置

// 直下のマーク位置を取得
for (var i = firstEntry; i < PPx.EntryAllCount; i++) {
  if (PPx.Entry(i).Mark == 1) {
    lastEntry = i;
    break;
  }
}

// 直下にマークが無ければ終了
if (!lastEntry) PPx.Quit();

// カーソル位置までマーク
for (var i = firstEntry; i < lastEntry; i++) {
  PPx.Entry(i).Mark = 1;
}

afx_o.js
//!*script

if (PPx.Extract('%1') == PPx.Extract('%2')){
  PPx.Execute("%J %~FCD");
} else {
  PPx.Execute("%j %2");
}

afx_shift_o.js
//!*script

if (PPx.Extract('%1') == PPx.Extract('%2')){
  PPx.Execute("%K\"@\'=\'\"");
} else {
  PPx.Execute("*execute ~,*jumppath %1");
}

go_mark.js
//!*script

var imark ,imark2;  // カーソル位置

// 直下のマーク位置を取得
for (var i = PPx.EntryIndex + 1; i < PPx.EntryAllCount; i++) {
  if (PPx.Entry(i).Mark == 1) {
    imark = i;
    break;
  }
}

// 最初のマーク位置を取得
for (var i = 0; i < PPx.EntryIndex; i++) {
  if (PPx.Entry(i).Mark == 1) {
    imark2 = i;
    break;
  }
}

// カーソル移動
if (imark != null){
  PPx.EntryIndex = imark;
} else if (imark2 != null) {
  PPx.EntryIndex = imark2;
} else PPx.Quit();

go_markR.js
//!*script

var imark ,imark2;  // カーソル位置

// 直上のマーク位置を取得
for (var i = PPx.EntryIndex - 1; i >= 0; i--) {
  if (PPx.Entry(i).Mark == 1) {
    imark = i;
    break;
  }
}

// 最後のマーク位置を取得
for (var i = PPx.EntryAllCount - 1; i > PPx.EntryIndex; i--) {
  if (PPx.Entry(i).Mark == 1) {
    imark2 = i;
    break;
  }
}

// カーソル移動
if (imark != null){
  PPx.EntryIndex = imark;
} else if (imark2 != null) {
  PPx.EntryIndex = imark2;
} else PPx.Quit();

PPv関連



picture_view.js
//!*script 

var ppcid = PPx.Extract('%n').slice(1); // PPc ID

if (PPx.GetComboItemCount <= 1){
  PPx.Execute('*setcust X_win:V= B000100000');
  PPx.Execute('*launch %Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' %*name(CD,"%R","%1")');
  PPx.Quit();
}

if (PPx.WindowDirection == 1){
  PPx.Execute('*setcust X_win:V= B000100100');
  PPx.Execute('*launch %Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' %*name(CD,"%R","%1")');
  PPx.Execute('*fitwindow %N~,%NV' +ppcid);
} else {
  PPx.Execute('*setcust X_win:V= B000100000');
  PPx.Execute('*launch %Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' %*name(CD,"%R","%1")');
  PPx.Execute('*fitwindow %*findwindowclass("PaperPlaneCombo"),%NV' +ppcid);
}


text_view.js
//!*script 

var ppcid = PPx.Extract('%n').slice(1); // PPc ID

if (PPx.GetComboItemCount == 0){
  PPx.Execute('*setcust X_win:V= B000100000');
  PPx.Execute('%Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' %*name(CD,"%R","%1")');
} else {
  PPx.Execute('*setcust X_win:V= B000100000');
  PPx.Execute('*launch %Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' %*name(CD,"%R","%1")');
  PPx.Execute('*fitwindow %*findwindowclass("PaperPlaneCombo"),%NV' +ppcid);
}

ChangePPvSize.js
//!*script

ppvwidth = PPx.Extract("%*windowrect(,w)");
ppcwidth = PPx.Extract("%*windowrect(" + PPx.Extract('%*findwindowclass("PaperPlaneCombo")') +",w)");

if (ppvwidth == ppcwidth){
  PPx.Execute('*fitwindow %N~');
} else {
  PPx.Execute('*fitwindow %*findwindowclass("PaperPlaneCombo")');
}

追記 2014/05/31



picture_view.jsとtext_view.jsを書庫内でも機能するようにした

追記 2014/06/01



サムネイル表示トグルの箇所を修正

0 件のコメント:

コメントを投稿