2015年9月30日水曜日

PDFtkでPDFを結合

PDFtkでは

pdftk.exe 1.pdf 2.pdf cat output output.pdf

でPDFファイルを結合できる。これをPPx 上で行えるようにする。

以下をScriptフォルダに保存。これは、マークファイルの名前を空白区切りで連結して返すスクリプト。マークファイルが二つ以上無ければ終了する。

concatname.js
//!*script

// マークファイルの名前を空白区切りで連結して返すスクリプト
// %*script(%0\Script\concatname.js)のようにして使う
var str = "";
var EntryObj = PPx.Entry;

// 二つ以上マークファイルが無ければ終了
if (PPx.EntryMarkCount < 2) {
  PPx.SetPopLineMessage("2つ以上のマークファイルがありません。");
  PPx.Quit(-1);
}
// マークファイルの名前を空白区切りで連結
EntryObj.FirstMark;
while(true){
  str += " " + EntryObj.Name;
  if(EntryObj.NextMark != 1) break;
}
// 値を返す
PPx.Result = str; 

結合したいPDFファイルを順番にマークし、

%Ob "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" %*script(%0\Script\concatname.js) cat output %{%|output%|.pdf%}

を実行すると、ファイル名を入力するウィンドウが出る。


適当な名前を入力してOKを押せば、その名前でPDFファイルを結合する。

追記


よく考えたら、一々スクリプト使わなくても%#Cでいけるじゃん orz

 %Ob "C:\Program Files (x86)\PDFtk\bin\pdftk.exe" %#C cat output %{%|output%|.pdf%}

2015年9月10日木曜日

*RotateCustomizeで壁紙ローテート

Paper Plane xUI Text Module を導入すると、*RotateCustomize というコマンドが使えるようになる。これで、壁紙をローテート表示させてみる。

*RotateCustomize custid,customize1,customize2[,...]

    設定のトグル・ローテート処理を行います。具体的には実行する度に
    *customize custid=customize1
    *customize custid=customize2
      :
    *customize custid=customize1
      :
    と、実行するので、設定のトグルやローテートができます。
    設定中に「%」を含む場合は %% と指定してください。
    設定中に「"」を含む場合は "" と指定し、全体を「"」で括ってください。
    custidは「XC_stat」のように指定もできますし、「KC_main:A」のような
    指定もできます。

以下のようなコマンドを適当なキーに登録すればいい。
*RotateCustomize X_bg:Path,D:\Work\gazou1.jpg,D:\Work\gazou2.jpg,D:\Work\gazou3.jpg

もちろん、事前に壁紙を表示する設定にしておこう。

2015年9月9日水曜日

*ifmatchでパスによる判別実行



僕は、D:\Data\Musicの下にアルバム単位でフォルダを作り、そこに音楽ファイルを保存している。


画像ファイルは、D:\Work\画像フォルダの下に、カテゴリーごとにフォルダ分けして保存している。



音楽ファイルが入っているフォルダは音楽プレイヤーに投げ、画像ファイルが入っているフォルダは画像ビューアに投げる、ということを一つのキーでしたい。これを、*ifmatchを使ったパス判別によって実現する。

以下を編集して取込。

KC_main = { ; PPcメイン窓
\ENTER ,%ME_scr
}
E_scr = { ; \[Enter]用判別
:DIR ,*ifmatch "/D:\\Data\\Music/",%1 %: %Ob D:\bin\AIMP3\AIMP3.exe  %FCD %: *stop
 *ifmatch "/D:\\Work\\画像フォルダ/",%1 %: %Ob D:\bin\Hamana\Hamana.exe  %FCD %: *stop
 %K"@\ENTER"
}

ディレクトリにカーソルをあわせ、Shift+Enterを押した時、

  • パスにD:\Data\Musicが含まれている……Aimp3にそのディレクトリを投げる
  • パスにD:\Work\画像フォルダが含まれている……Hamanaにそのディレクトリを投げる
  • それ以外……通常のShift+Enter(容量の計算)

となる。
ちなみに、Shift+Enter用判別をShift+Enterに登録しているのは、こうしないと:DIRを設定しても反映しないから。Paper Plane xUI Part.5 585-596 を参照。

参考


以前はスクリプトを使って、パスによる判別実行をしていた。

2015年9月8日火曜日

サムネイルの余白の色を調整


サムネイル表示のとき、画像の余白部分の色が、背景色と異なることがあるのが気になっていた。


これを解消できないかと調べたことのまとめ。

画像キャッシュ


XC_ocigを設定することで、取得したサムネイル画像をキャッシュできるようになる。これにより、大量に画像があるフォルダでも、次回より高速にサムネイルを表示させることが可能になる。

XC_ocig = 1,2,0,1 ; 表示書式画像(n)の動作 (1),(2),(3),(4)
; (1)アイコン表示  0:なし 1:あり 2:画像無のみ
; (2)Explorer互換画像取得  0:しない 1:優先してする 2:Susie優先
; (3)書庫内画像を取得  0:しない 1:取得
; (4)取得画像を :thumbnail.jpg にキャッシュ 0:しない 1:する

この時、余白の色も同時に保存しているらしい。だから、背景色を変更した時、不一致が生じるわけだ。なので、一度キャッシュを削除し、作り直せばいい。

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

deletethumbnail.js
//!*script

for (var i = 0; i < PPx.EntryAllCount; i++) {
  if (PPx.Entry(i).Size != 0){
    PPx.Execute('*delete "'+PPx.Entry(i).Name+':thumbnail.jpg"');
  }
}

このScriptを実行すれば、カレントフォルダのキャッシュが削除される。後は自動でサムネイルを作り直すはず。


エクスプローラー取得ディレクトリサムネイル



ディレクトリの余白の白い箇所を消せないか調べたが、ワンキーでこの背景色を調整するのは無理そう。
なので、大人しく、エクスプローラーの機能を用いた画像取得を停止させる。

XC_ocig = 1,0,0,1 ; 表示書式画像(n)の動作 (1),(2),(3),(4)
; (1)アイコン表示  0:なし 1:あり 2:画像無のみ
; (2)Explorer互換画像取得  0:しない 1:優先してする 2:Susie優先
; (3)書庫内画像を取得  0:しない 1:取得
; (4)取得画像を :thumbnail.jpg にキャッシュ 0:しない 1:する


ちなみに、ディレクトリアイコンはX_dicnで変更可。

X_dicn    =     ; ディレクトリ用のアイコンのパス 空欄:自動

2015年8月31日月曜日

マーク状態をハイライトで保存




このようにマークしていたとして、マーク状態を一時的にハイライトにして保存。新たにマークができるようにする。



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

mark-highlight-toggle.js

//!*script

for (var i = 0; i < PPx.EntryAllCount; i++) {
  if (PPx.Entry(i).Mark == 1) {
    PPx.Entry(i).Highlight = 1;
    PPx.Entry(i).Mark = 0;
  } else if (PPx.Entry(i).Highlight == 1) {
    PPx.Entry(i).Highlight = 0;
    PPx.Entry(i).Mark = 1;
    }
}

以下を編集して取込。

KC_main = { ; PPcメイン窓
^M ,*script %0\Script\mark-highlight-toggle.js
}
KV_main = { ; PPvメイン窓
^M ,*execute C,*script %0\Script\mark-highlight-toggle.js
}

やり方


Ctrl+Mを押すと、マークファイルがハイライト1に。ハイライト1がマークファイルになる。

こんなのが



こう。



ファイル整理の時に使えると思っている。二種類のマークを使い分けるような操作が、可能になるわけだ。PPvからも同様に操作可能。

ちなみに、ハイライト1の色は、カスタマイザーの「色タブ- PPcエントリ背景/状態」で設定できる。




PPxを3ペインの画像ビューアとして使う



こんなふうに、PPxを3ペインの画像ビューアっぽく使ってみる。いつものPPv中心の連動ビューではなく、デフォルトの連動ビューを利用。

準備


以下のスクリプトをScriptフォルダに保存。
PPv中心の連動ビューをしていると、デフォルトの連動ビュー時に支障が出る。これは、それを避けるためのスクリプト。PPv上でのカーソルキー動作を、連動ビュー有効時に停止させている。
PPv中心の連動ビューをしていない場合は、このスクリプトは不要。

mysyncview.js

//!*script

var useppv = 'R'; // 使用PPv ID
if ( PPx.CodeType == 0 ){ // MultiByte版かそうでないかで分岐
  var ppvname = 'ppv';
}else{
  var ppvname = 'ppvw';
}
if ( PPx.GetComboItemCount == 0 ){ // 独立窓か一体化窓かで分岐
  var usewindow = '%N'
}else{
  var usewindow = '%*findwindowclass("PaperPlaneCombo")';
}

PPx.Execute('%Oi '+ppvname+' -r -bootid:'+useppv);
PPx.Execute('*fitwindow '+usewindow+',%NV'+useppv+',3');
if ( PPx.SyncView == 0 ){
  PPx.Execute('*ppvoption sync '+useppv);
  PPx.Execute('*setcust KV_main:-|UP=');
  PPx.Execute('*setcust KV_main:-|DOWN=');
  PPx.Execute('*setcust KV_main:-|LEFT=');
  PPx.Execute('*setcust KV_main:-|RIGHT=');
  PPx.Execute('*setcust KV_main:-|SPACE=');
  PPx.Execute('*setcust KV_main:-|\\SPACE=');
}else{
  PPx.Execute('*ppvoption sync off');
  PPx.Execute('*setcust KV_main:UP,%%KC "@UP @N"');
  PPx.Execute('*setcust KV_main:DOWN,%%KC "@DOWN @N"');
  PPx.Execute('*setcust KV_main:LEFT,*execute C,*cursor 6, -1 %%: %%KC"@N"');
  PPx.Execute('*setcust KV_main:RIGHT,*execute C,*cursor 6, 1 %%: %%KC"@N"');
  PPx.Execute('*setcust KV_main:SPACE,%%KC "@SPACE @N"');
  PPx.Execute('*setcust KV_main:\\SPACE,%%KC "@\\SPACE @N"');
}

以下を編集して取込。

KC_main = { ; PPvメイン窓
^Y ,*RotateExecute view,"*tree on %%: *setmaskentry o:d,a:d-","*tree off %%: *setmaskentry"
\Y ,*script %0\Script\mysyncview.js
}

一体化窓で、PPv中心の連動ビューをしてない場合は、以下を編集して取込。

KC_main = { ; PPcメイン窓
^Y ,*RotateExecute view,"*tree on %%: *setmaskentry o:d,a:d-","*tree off %%: *setmaskentry"
\Y ,%Oi ppvw -r -bootid:r %: *fitwindow %*findwindowclass("PaperPlaneCombo"),%NVR,3 %: *ppvoption sync
}
_others = { ; その他設定
SyncViewID = R
}

独立窓で、PPv中心の連動ビューをしてない場合は、以下を編集して取込。

KC_main = { ; PPcメイン窓
^Y ,*RotateExecute view,"*tree on %%: *setmaskentry o:d,a:d-","*tree off %%: *setmaskentry"
\Y ,%Oi ppvw -r -bootid:r %: *fitwindow %N,%NVR,3 %: *ppvoption sync
}
_others = { ; その他設定
SyncViewID = R
}

使い方


  • Ctrl+Y ツリー表示&フォルダマスク
  • Shift+Y 連動ビュー。PPv[R]をPPcのすぐ上に表示

画像フォルダに行って、Ctrl+Y。



すると、ツリーを表示し、エントリ表示のフォルダが非表示になる。


Shift+Yで連動ビューに。PPcのカーソル位置のファイルが、常にPPvで表示される。もう一度Shift+Yを押すとPPvは閉じ、連動ビューも無効になる。


追記 2015/08/31


スクリプトのコードを修正。連動ビューに使うIDを指定できるようにした。また、Multibyte版でも独立窓でも使えるようにした。

2015年8月24日月曜日

ppxmemoというサイト

これまで、ほえほえ日記で書いてきた、PPxカスタマイズ記事の内容をまとめたサイトを作りました。ppxmemoです。

https://sites.google.com/site/ppxmemo/



すっごい適当に名前を付けたので、そのうち変えるかもしれない。

あと、Memo on the Electronのサイトも一年ぶりくらいに大幅に手直ししたので良ければ見てください。

なんかすっごい久々に日記っぽい記事を書いた気がする