2014年6月28日土曜日

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


1画面ファイラか2画面ファイラか



ファイル操作は、2つに分けることができる。2つのフォルダを使う操作と、使わない操作だ。

2つのフォルダを使う操作とは、

  • ファイル移動
  • コピー
  • 書庫の解凍

などですね。2画面ファイラは、この操作には都合がいい。直感的に、左のものを右へ。右のものを左へ移動する、というのはわかりやすい。

だが、それ以外の一つのフォルダ内で済む操作である、

  • リネーム
  • 編集
  • 閲覧
  • 実行

等においては、2画面ファイラであることはマイナスに働く。この作業の際には、ひとつの画面に意識をずっと集中させていたい。この時、反対窓は、無駄に面積を占めて現在の作業とは無関係なものを表示するだけの、できれば消えていて欲しいものになる。
また、1つのフォルダを使う操作に移るたびに、その作業を左右どちらの窓ですればいいのか、という判断を一々しなければならないという点でも2画面はマイナスに働く。

1画面ファイラはちょうどこの逆になる。 2つのフォルダを使う操作は直感的なものではなくなるが、一つのフォルダで済む操作では1画面がプラスに働く。

1画面と2画面、それぞれメリットとデメリットがある。どちらを選ぶかは趣味の範囲で、もっと言えばそこまで気にするようなことでも無い。僕は、1画面ファイラのデメリットは工夫でどうにかできるだろう、と考えてPPxを使い出した。そしてそれ以来、ずっと独立窓1画面で使用している。

  • 反対窓でマークしたものを現在窓に移動(コピー)するスクリプト
  • fenrirを利用したファイル移動(コピー)
  • nストロークキー

などが、その方面で行ってきた工夫。


1画面と2画面を併用できないか




最近、ふと気づいたことがある。

基本1画面で使って、必要なときだけ2画面にすれば両方のいいとこ取りができるのではないか

通常の2画面ファイラだと、これはできない(センターをずらせば一応できるのか?)。そこに引きずられて、1画面か2画面、どちらか選ばなければならないとずっと思いこんでたけれど、PPxなら一体化すれば余裕でできるじゃないか。それができれば、僕がこれまでしてきた工夫とか別に無くていいものになるじゃないか。なんで今までこれに気づかなかったんだ!って感じですね。HAHAHA


やりたいこと




というわけで、しばらくはこっち方面を追求してみようと思う。一体化窓で使い、基本1画面。このとき、

  • スクロールバーは横
  • 一覧表示(複数行表示)

となるように。



必要なときには、Tabを押して2画面にする。

このとき、

  • スクロールバーは縦
  • 詳細表示(窓幅一杯一列表示)

となるように。


そして、処理を終えたらQを押してまた1画面に戻す。

また、カーソル左右の挙動もそれぞれ微妙に変更させたい。


やり方



TabとQで、この切り替えを実現するようにする。


以下の2つのスクリプトをScriptフォルダに保存。

2winTab.js
//!*script 

var ppcid = PPx.Extract('%n'); // 現在窓のPPcID
var nextppcid = "C"+String.fromCharCode(ppcid.slice(1).charCodeAt(0) + 1); // 次の窓のPPcID

if (PPx.GetComboItemCount <= 1){ // 窓が一つ以下の場合
  if (PPx.Extract("%*getcust\(X_win:"+ppcid+"\)").slice(6,7) == 0){ // 現在窓のスクロールバーの位置を取得
    PPx.Execute("%M?layoutmenu,!p");
  }
  if (PPx.Extract("%*getcust\(X_win:"+nextppcid+"\)").slice(6,7) == 0){ // 次の窓のスクロールバーの位置を取得
    PPx.Execute("*setcust X_win:"+nextppcid+"=B000001000");
  }
  PPx.Execute("*ppc -k *execute "+ppcid+",*viewstyle 詳細1\(&D\)");
  PPx.Execute("*customize XC_mvLR=4,1,6,B0100,6,B100"); // カーソル移動方法の変更
} else {
  PPx.Execute("*pane focus ~");
}



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("*execute "+ppcid+",*viewstyle 一覧1\(&L\)"); // 左窓の表示形式を変更
  PPx.Execute("*customize XC_mvLR = 4,1,4,B0000,6,B001 ; [←][→] "); // カーソル移動方法の変更
  if (PPx.Extract("%*getcust\(X_win:"+ppcid+"\)").slice(6,7) == 1){ // 左窓のスクロールバーの位置を取得
    PPx.Execute("*execute "+ppcid+",%M?layoutmenu,!p");
  }
}


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

Qを押して窓を閉じた時には、必ずPPC[A]が残るようにしてます。

スクロールバーの向きは、%M?layoutmenu,!pとX_winで切り替えている。X_winは、XC_pageで設定した基本のスクロールバーの向きを基準にしてるので、そこを変更している場合は動作が変になるかもしれない(僕の設定だとXC_page=0)。


次やりたいこととか



一体化窓を複数起動して、ということをすれば、もっとやれることが増えるかもしれないと思ってる。
そこまで含めて一緒に考えるとややこしくなりそうなので、そのあたりはまた今度

2014年6月19日木曜日

フォルダにコメントを付ける


挨拶


MoEで新しくフォルダを作る際、考えるのが面倒なので、最近はフォルダ名を日時から自動でつけている(参考:仮のディレクトリ名を日時から自動で決める)。

だが、識別のために、後々フォルダ名を付け直したくなる場合がある。普通にリネームしてももちろんいいのだが、他のフォルダと名前がかぶったりというのを一々気にしたくないので、コメントで処理できるようにする。

やり方


以下を編集して取込

KC_main = { ; PPcメイン窓
^R ,*comment "%ee%"コメントの編集"%{%*comment%|%}"
}

XC_cwrt = 2 ; コメントファイル作成は 0:手動 1:確認有 2:自動

これで、Ctrl+Rでコメントを付けることができる。もちろんフォルダ以外でも可能。
また、コメントを自動保存するように設定している。


MakeComment.jsの修正



今までのMakeComment.jsだと、フォルダにつけたコメントが消えてしまうので、そこだけ対処しておく。


MakeComment.js

//!*script
//カレントディレクトリに一行目とファイルパスを対応させたコメントファイル(00_INDEX.txt)を作成

var strLine = "\n";
var currentDir = PPx.Extract('%1');
var objFileSys = PPx.CreateObject("Scripting.FileSystemObject");

for (var i = 0; i < PPx.EntryAllCount; i++) {
  // サイズが0のファイルとディレクトリは読み込まない
  if (PPx.Entry(i).Size == 0) {
    if (PPx.Entry(i).Comment != ""){
      str = PPx.Entry(i).Name + "\t" + PPx.Entry(i).Comment + "\n";
      strLine =  strLine + str;
    }
  }
  // 拡張子がtxtとhowmのファイルを読み込む
  else if (PPx.Entry(i).Name.match(/.howm$/i)) {
    var entryName = PPx.Entry(i).Name;
    var objItem = currentDir + "\\" + entryName;
    // ファイルの内容を取得
    objInFile = objFileSys.OpenTextFile(objItem, 1);
    // ファイル名+Tab+一行目の最初二文字~100字を切り取ったもの+改行をstrに代入
    str = entryName + "\t" + objInFile.ReadLine().slice( 2,100 ) + "\n";
    strLine =  strLine + str;
    objInFile.Close();
  }
}

// カレントディレクトリに00_INDEX.txtを作成
strCreateFile = objFileSys.BuildPath(currentDir,"00_INDEX.txt");
objFileSys.CreateTextFile(strCreateFile);

// 00_INDEX.txtに書き込み
objOutFile = objFileSys.OpenTextFile(strCreateFile, 2);
objOutFile.Write(strLine);
objOutFile.Close();
// F5で更新
PPx.Execute("%K\"@[F5]\"")

2014年6月18日水曜日

CatMemoNoteでログ

挨拶


ソフトウェアをいじっているときの思いつきメモ等に、最近はCatMemoNoteを利用している。

  • 頭に浮かんだことを書き出し続けることで整理する
  • ネット上で調べて出てきた関係ありそうなのをとりあえずコピペ

という用途。

情報をただただ吸収するだとか、ひたすら空で考えるだとかよりは、あとで利用するかどうかに関係なく、無意味でも何かのアウトプットをしながらというのが疲れなくて済むのかもしれない。授業中教科書に落書きするみたいなやつですね。

準備


必要になるのは

  • 日付
  • メモ同士の区切り

の2つ。日付はCtrl+Dで入力できるので、切り取り線だけを適当なキーボードショートカットに登録した。
メモ一覧とタブ一覧とを消した状態で使用。メモを切り替えたいときはCtrl+カーソルキーで。



一段落したあと、メモとして残しておきたいものだけhowm形式で保存し直す、というようにしている。

思ったこととか


日誌的なものだとか、過去にやったことある気がするカスタマイズを見返したいとかであれば、検索が容易である分こっちのが適しているのかもしれない。

2014年6月7日土曜日

一時的にキーにコマンドを登録


あいさつ


スクリプトを作っている時や、新しいコマンドを試している時に、一時的に特定のコマンドをキーに登録したい場合がある。

通常は、HやXを押してコマンドを打ち込み、実行というのを一々繰り返したり、カスタマイザで通常は使用しないキーにコマンドを登録したり、ということをするのだが、この過程を省略したい。そこで、

  • 一時的にコマンドを記憶
  • 特定のキーでそれを実行

ができるようにする。

例によって2ストロークキーを利用(参考:nストロークキー入力でフォルダジャンプ)。

やり方


以下を編集して取込

-|K_launcher =

KC_main = { ; PPcメイン窓
^Z ,*setnextkey K_launcher
}

K_launcher = { ** comment **
Z ,*alias temp_cmd = %"一時コマンド"%{%'temp_cmd'%}
^Z ,*execute ,%'temp_cmd'
}


一時的にコマンドを記憶させたい場合はC-z z(Ctrl+Zを押したあとZを押す)として、記憶させたいコマンドを打ち込む。



実行したいときは、C-z C-z(Ctrl+Zを二回押し)。

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



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

反対窓表示とウィンドウ全体表示のトグル

二画面でPPvを表示するとき、大きさを反対窓表示と全体表示のトグルで切り替えることができればいいかもと思った。



半分だと文字が見えにくいけれども、全画面表示はさすがに大きいよなというときに



PPvの大きさをウィンドウ全体に拡大。もっかい同じキーを押すと戻ります。

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")');
}
KV_main = { ; PPvメイン窓
\ENTER ,*script %0\Script\ChangePPvSize.js
}

Shift+Enterに登録してます。

実行元の窓の大きさと、一体化窓の大きさとを取得。それがイコールなら反対窓と同じ大きさに。そうでないなら一体化窓と同じ大きさになるようにしている。

2014年5月29日木曜日

2画面PPxで壁紙変更メニュー

あいさつ


つかさです。
今回は壁紙変更メニュー。

あふでは、ビューア上で"_"を押すと




このようなメニューが出て、壁紙を左右に分けて変更することができる。




同じことをPPxでもやってみる。


やり方





以下を編集して取込。

-|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
}