2013年12月8日日曜日

2画面PPxでいろんな仕方で画像表示

あいさつ


前回では、反対窓に画像表示を連動ビューを使って行った。今回は、これを別の方法でしてみたい。
1画面でやってた、PPcとPPvの一対一対応を2画面でも実現する。

まずは、TORO’s LibraryからPaper Plane xUI Window Moduleをダウンロード。その中にあるPPXWIN.DLL(あるいはPPXWIN64.DLL)をPPxフォルダにコピーしよう。

あふっぽく反対窓に画像表示



テキストファイルと画像ファイル上でEnterを押せば、PPvを反対窓にあわせて表示するようにする。





以下のスクリプトをhalf_view.jsという名前をつけてScriptフォルダに保存。対応するIDのPPvを起動し、反対窓にそのPPvウィンドウをあわせるスクリプトです。

half_view.js
//!*script 

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

if (PPx.GetComboItemCount <= 1){
  PPx.Execute('%Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' "%1\\%R"');
} else {
  PPx.Execute('%Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' "%1\\%R"');
  PPx.Execute('*fitwindow %N~,%NV' +ppcid);
}

次に以下を編集して取込。拡張子判別をして先のスクリプトを実行するように。

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

カーソルファイルの設定


ついで、PPv上でカーソル上下すればPPcのカーソルも連動して上下し、対応したファイルを表示するようにする。
また、あふのようにEnterを押せばビューアが閉じ、Alt+Enterで最大化し、スペースとShift+スペースでマーク付きカーソル上下をするようにもする。

以下を編集して取込。

KV_main = { ; PPvメイン窓
ENTER = @Q
UP ,%KC%*regexp(%n,"/.(.)/$1/") "@UP @N"
DOWN ,%KC%*regexp(%n,"/.(.)/$1/") "@DOWN @N"
SPACE ,%KC"@SPACE@N"
\SPACE ,%KC"@\SPACE@N"
&ENTER ,*togglewinsize
}

XV_imgD = { ; 拡大縮小設定([=],*zoom,*reducemode) PPvID = 倍率、縮小方法
;倍率: -1:窓枠に合わせる -2:窓より小→等倍、大→縮小 0:100% 1-10000:%倍率
;縮小方法: 1:白地に黒文字 2:黒地に白文字 3:カラー高速 4:混合
VA = -2,4
VB = -2,4
}

XV_imgDは、画像にあわせて窓枠の大きさが変わったりしないようにするための設定。

内骨格っぽくウィンドウ一杯に画像表示



二画面ファイラの内骨格では、ビューアはファイラウィンドウに重なるように表示される。




次はこれと同じことをPPxでやってみる。




まずは、TORO’s LibraryからPaper Plane xUI Message Moduleをダウンロード。その中にあるPPXMES.DLL(あるいはPPXMES64.DLL)をPPxフォルダにコピー。

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

all_view.js
//!*script 

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

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

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

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

もっとあふっぽくする



あふはデフォルトでは、左窓で画像を開いたら右窓に表示。右窓で画像を開いたら両ファイル窓に表示。テキストファイルならどちらの窓で開いても両ファイル窓で表示するようになっている。




これをPPxで再現してみる。







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

picture_view.js

//!*script 

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

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

if (PPx.WindowDirection == 1){
  PPx.Execute('*setcust X_win:V= B100100100');
  PPx.Execute('%Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' "%1\\%R"');
  PPx.Execute('*fitwindow %N~,%NV' +ppcid);
} else {
  PPx.Execute('*setcust X_win:V= B000100001');
  PPx.Execute('%Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' "%1\\%R"');
  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= B000000001');
  PPx.Execute('%Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' "%1\\%R"');
} else {
  PPx.Execute('*setcust X_win:V= B000000001');
  PPx.Execute('%Oi %0\\PPVW.EXE -bootid:' +ppcid+ ' "%1\\%R"');
  PPx.Execute('*fitwindow %*findwindowclass("PaperPlaneCombo"),%NV' +ppcid);
}

以下を編集して取込。

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
}

左窓で画像ファイルを開くときには、*setcust X_win:V= B100100100でタイトルバーとかを消しているわけですね。

これで


気分転換に二画面にしたいときには、前回と今回の設定を編集して取込すればそれですぐいけそう。僕の普段の1画面の設定の上にこれを追加しても特に問題無いみたい。

しかしあふっぽくなるもんですね。かなり驚き!



追記 2013/12/10


half_view.jsとpicture_view.jsを修正。反対窓が無いときにPPvを開くとエラーメッセージが出るのでそれへの対処をした。

さらに追記 2013/12/11


独立窓のときにPPvを開くと表示がおかしくなるのでそれへの対処。
あと%FDCを%1\\%Rにして、マークファイルではなくカーソル位置のファイルを表示するようにした。

さらにさらに追記 2013/12/27


独立窓のときにPPvを開くと表示がおかしくなることへの対処をpicture_view.js以外の三つにも行った。

0 件のコメント:

コメントを投稿