2016年12月17日土曜日

コピー/移動/解凍先フォルダ選択を別窓で

Paper Plane xUI まとめサイトにある


を、一行編集を開かずにできるようにする。

例えば、移動させたいファイルをマークした後、Shift+Mを押せばPPC[Z]が起動。



PPC[Z]で移動先フォルダを表示した後、Shift+Enterを押せば、そこにマークファイルが移動し、PPC[Z]を閉じる。


準備


以下を編集して取込。解凍に使っているwrap_7zG.jsについては



を参照。

KC_main    = {
ESC    ,*ifmatch /C[A-Y]/,%n %:%K"@ESC"%:*stop
        *ifmatch CZ,%n %:%K"@Q"
\M    ,*ifmatch /C[A-Y]/,%n %: *alias ppcz_cmd = *file !move ,%%*extract(%n"%%%%@*8FCDN"),%%1 %: *ppc -bootid:z -single
\C    ,*ifmatch /C[A-Y]/,%n %: *alias ppcz_cmd = *file !copy ,%%*extract(%n"%%%%@*8FCDN"),%%1 %: *ppc -bootid:z -single
\U    ,*ifmatch /C[A-Y]/,%n %: *alias ppcz_cmd = *script %0Script\wrap_7zG.js,%%*extract(%n"%%%%a8FDC"),%%1 %: *ppc -bootid:z -single
\ENTER    ,*ifmatch CZ,%n %: *execute ,%'ppcz_cmd' %: %K"@Q" %: *stop
    %K"@\ENTER"
}


やり方


処理元のファイルをマークする。ファイルが一つのみの場合はカーソルをあわせるだけでもいい。



  • 移動:Shift+M
  • コピー:Shift+C
  • 解凍:Shift+U

を押すと、PPC[Z]が開く。




この窓で処理先のフォルダを表示したのち、Shift+Enterを押す。すると、カレントフォルダにマークファイルが移動/コピー/解凍したのち、PPC[Z]が閉じる。

2016年12月5日月曜日

複数の設定をメニューで切り替え

僕は今、PPxを1画面タブ型メインで使っているが、たまに2画面型や独立窓型も使いたくなったりする。
そこで、それぞれの設定ごとにCFGファイルを用意しておき、簡単に切り替えられるようにする。


準備


PPxフォルダにCFGFILEフォルダを作り、そこに使い分けしたいCFGファイルを移動する。



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

CFGmenu.cfg

//!*script
// CFGファイル取込用メニュー

fs = PPx.CreateObject("Scripting.FileSystemObject");
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var fn = PPx.Extract('%0')+"CFGFILE";

// フォルダの有無をチェック
if (objFileSys.FolderExists(fn) == false) {
    PPx.Echo(fn+"は存在しません");
    PPx.Quit(-1);
}

// メニューの削除
PPx.Execute("*setcust -|M_hoehoe =");

// フォルダリストを取得し動的メニューの登録
objFolder = objFileSys.GetFolder(fn);
e = new Enumerator(objFolder.Files); 
for( ; !e.atEnd(); e.moveNext()) {
  var basename = objFileSys.GetBaseName(e.item().Name);
  var filepath = fn+"\\"+e.item().Name;
  PPx.Execute('*setcust M_hoehoe:'+basename+'=%Ob *PPCUST CS '+filepath);
}

// メニューを開く
PPx.Execute("%M_hoehoe");

以下を編集して取込。

-|M_Omake =
-|M_BgType =
-|M_cust =

M_cust    = { ** comment **
カスタマイザ(&C) = %K"@CUSTOMIZE"
編集して取込(&E) = %Ob *PPCUST /edit
-- = 
取り込み(&1) = %Q"%FCを取り込みます"%:%Ob *PPCUST CS "%FCD"
追加(&2) = %Q"追加取込します"%:*customize @%FCD
-- = 
CFGFILEに書き出し(&3) = %Ob *PPCUST CD %0\CFGFILE\%${%*getcust(_User:SAVEDATA)%}.CFG %: *setcust _User:SAVEDATA=%${%*getcust(_User:SAVEDATA)%}
CFGFILEから読み込み(&4) = *script %0\Script\CFGMenu.js
指定書き出し(&5) = %"指定ファイルに書き出します"%Ob *PPCUST CD %{%1\PPX-%*nowdatetime(y-N-D)%|.CFG%}
-- = 
初期化(&I) =  %Q"初期化します"%:%Ob *PPCUST CINIT
-- = 
壁紙の設定(&W) = %M_Omake
窓オプション(&O) = %K"@C_WIND"
-- = 
再起動(&R) =  *closeppx %: *ppc
アップデート(&U) = %Ob *checkupdate p
バージョン情報(&V) = %K"@ABOUT"
}

M_Omake    = {    ** comment **
壁紙を表示する位置(&T) = %M_BgType
壁紙を明るさ(&B) = *customize X_bg:Bright=%"明るさ(Bright)"%{%*getcust(X_bg:Bright)%}
壁紙を透明度(&O) = *customize X_bg:Opaque=%"透明度(Opaque)"%{%*getcust(X_bg:Opaque)%}
}

M_BgType    = {    ** comment **
しない = *customize X_bg:Type=0
左上 = *customize X_bg:Type=1
右上 = *customize X_bg:Type=3
デスクトップと同じ = *customize X_bg:Type=10
一体化窓内でつながるように調整 = *customize X_bg:Type=20
}

KC_main = { ; PPcメイン窓
F12 ,%M_cust,C
}
KV_main = { ; PPcメイン窓
F12 ,%M_cust,C
}

やり方


F12を押すと、カスタマイズ用メニューが表示される。



「CFGFILEから読み込み」を選択すると、CFGFILEフォルダ内のファイルがメニュー表示される。選択すると、その設定を取り込む。





「CFGFILEに書き出し」を選択すると、一行編集ダイアログが表示されるので、適当な名前を入力する。これで、現在の設定をCFGFILEフォルダに保存する。入力した名前は_User:SAVEDATAに保存され、次回「CFGFILEに書き出し」選択時のデフォルト名になる。




2016年9月26日月曜日

ImageMagickで画像処理(改)

以前にもImageMagickで画像処理で記事にしたのだが、それ以降の更新によって使えなくなっていたので書き直し。

  • convert.exeがmagick.exeに
  • コマンドラインの順序が微妙に変わる

という変更があったようである(多分)。


やり方



以下を編集して取込。これで、拡張子がJPG、PNG、JPEG、BMPのファイル上でShift+Enterを押せば、画像処理メニューが出る。

-|M_Picture =

A_exec = { ; エイリアス
imagemagic    = "C:\Program Files\ImageMagick-7.0.2-Q16\magick.exe"
azpainter    = D:\bin\azpt\AzPainter2.exe
}

M_Picture = { ** comment **
&Azpainter = %Ob %'azpainter' %FCD
ペイント(&P) = mspaint %FCD
-- = 
左に90度回転(&L) = %Ob %'imagemagic'  %FCD -rotate 270 %FCD
右に90度回転(&R) = %Ob %'imagemagic' %FCD -rotate 90 %FCD
拡大縮小 = %Ob %'imagemagic' %FCD -geometry %"数値を入力してください"%{30%}%% %"ファイル名を入力してください"%{%|%X%|.%T%}
拡張子を変換 = %Ob %'imagemagic' %FCD %X.%"拡張子を入力してください"%{%|%T%|%}
マークファイルを横に連結 = %Ob %'imagemagic' %#FCD +append %"ファイル名を入力してください"%{%|%*nowdatetime(Y-N-D-HMS)%|.png%}
非透過に = %Ob %'imagemagic' %FCD -background white -alpha remove %FCD
-- = 
壁紙にする(&W) = *customize X_bg:Path=%FDC %: *customize X_bg:Type=10
}

E_scr = { ; \[Enter]用判別
JPG ,%M_Picture,A
PNG ,%M_Picture,A
JPEG ,%M_Picture,A
BMP ,%M_Picture,A
}

リンク


コマンドライン一覧

追記 2017/07/29


エラーが出てうまく動かないなと思いながら放置してたが、Visual C++ 2013 Redistributable Packageをインスコして再起動するといいらしい。

2016年9月24日土曜日

マウスジェスチャーのカスタマイズ

XC_GestとXV_dragを設定することでマウスジェスチャーが可能になる。例えばこんな感じだ。

XC_Gest = 1 ; 右ボタンでジェスチャーを 0:しない 1:する 2:する+D&D可
XV_drag = 0,1,3,2 ; ドラッグ開始ボタン スクロール,選択,窓移動,ジェスチャ(右のみ)
  ; 0:使用しない 1:左 2:右 3:中/ホイール 4:左右同時 5:第4 6:第5

今回は、このマウスジェスチャーをカスタマイズする方法について。

カスタマイザーでの設定方法


マウス割当てタブを開き、種類からMC_clic(PPcの場合。PPvの場合はMV_clic)を。右上の項目から新規を選択。①のドロップダウンリストから、「RG 右ジェスチャ」を選択する。ドロップダウンリストの最初にあるが、一度ドロップダウンリストを開き、選択をし直す必要がある。



すると、アクション欄に「RG_」と記入される。



割当てたいマウスジェスチャーを設定する。矢印ボタンをクリックすれば、アクション欄に矢印に応じた文字が入力されていく。


次に登録内容詳細を記述する。直接入力してもいいし、コマンド一覧から選択しても、②のドロップダウンリストから選択してもいい。
それが終わったら、設定を押せば、この割当てが登録される。
設定が全て終わったら、下部のOKボタンか適用を押せば、設定が反映される。


CFGで編集


CFGのMC_clic(PPcの場合。PPvの場合はMV_clic)を編集することでも、マウスジェスチャーをカスタマイズすることができる。  書式は次のようになっている。
MC_click = { ; PPc メイン窓
RG_DR ,*pane closetab
RG_DU ,%K"@BS"
RG_L ,*pane select h-1
RG_LR ,*pane newtab
RG_R ,*pane select h+1
RG_U ,%K"@BS"
RG_UL = @'\'
RG_UR ,*cursor 8,1,13,0,13,0
}

左側が

RG_(ジェスチャー)

となっており、右側が実行内容だ。ジェスチャーは


L:左
R:右
U:上
D:下


である。

マウスクリック割当てのカスタマイズ



マウスクリック割当てのカスタマイズは
  1. ボタンの種類
  2. 対象領域
  3. コマンド

の三つを設定することになる。

カスタマイザーでもCFGでも設定することができるが、まずはカスタマイザーを用いる方法から。

カスタマイザーでの設定方法



マウス割当てタブを開き、種類からMC_clic(PPcの場合。PPvの場合はMV_clic)を。右上の項目から新規を選択。①のドロップダウンリストから、割り当てたいボタン種を選択する。



試しに、左クリックを選択してみよう。



すると、アクション欄に「L_」と記入され、①の下に②のドロップダウンリストが新たに現れる。




②のドロップダウンリストから対象領域を選択する。ここでは空欄を選択してみる。


次に登録内容詳細を記述する。直接入力してもいいし、コマンド一覧から選択しても、③のドロップダウンリストから選択してもいい。
それが終わったら、設定を押せば、この割当てが登録される。
設定が全て終わったら、下部のOKボタンか適用を押せば、設定が反映される。




CFGで編集


CFGのMC_clic(PPcの場合。PPvの場合はMV_clic)を編集することでも、マウスクリックの割当てをカスタマイズすることができる。

書式は次のようになっている。

MC_click = { ; PPc メイン窓
&LD_ENT = @&ENTER
&LD_ICON = @&ENTER
LD_ENT = @ENTER
LD_FRAM = @&F6
M_ENT = @N
RG_L = @^LEFT
RG_R = @^RIGHT
R_ENT = @^ENTER
W_ENT = @N
X_ENT = @^LEFT
^LD_ENT = @^\A
}

左側は

(シフトキー)(ボタン種)_(領域名)

となっており、右側が実行内容だ。

LD_ENTであれば「エントリ(ENT)を左ダブルクリック(LD)した時」の意味であり、L_FRAMであれば「フレーム(FRAM)を左クリック(L)した時」の意味。
&や^は修飾キーで、&LD_ENTであれば「エントリ(ENT)をAltキー(&)を押しながら左ダブルクリック(LD)した時」になるわけだ。
慣れたら、カスタマイザーを使うよりはCFGを編集する方が、早くて楽かもしれない。


ボタン種


L  左
LD  左ダブル
LH  左長押し
M  中
MD  中ダブル
MH  中長押し
R  右
RD  右ダブル
RH  右長押し
W  左右同時
WH  左右同時長押し
X  第4ボタン
XD  第4ボタンダブル
XH  第4ボタン長押し
Y  第5ボタン
YD  第5ボタンダブル
YH  第5ボタン長押し
H  左チルト
I  右チルト

領域名,PPc,PPv


FRAM  窓枠
SYSM  窓枠アイコン
TITL  タイトルバー
MINI  最小化ボタン
ZOOM  最大化ボタン
CLOS  [閉じる]ボタン
SCRL  スクロールバー
MENU  メニュー
LINE  ステータス行 PPc,PPvの最上位の1行
HMNU  Hidden Menu PPcの情報行,PPvのステータス行に表示されるメニュー
SPC  空欄(PPcの空欄エントリ,PPvの表示領域)

(PPc)
PATH  パス表示行 一体化時のみ表示される現在ディレクトリ名
INFO  情報行 2行分のエントリの詳細を表示する
ICON  アイコン表示 情報行の左端に表示されるアイコン
MARK  マーク エントリ表示行の左端約2文字分のマークチェック用
ENT  エントリ カーソル移動可能な行
TABB  タブボタン
TABS  タブボタン一覧の空欄部分
HEAD  カラムヘッダ(R_HEADのみ指定可能、%si"HeaderSortU"でクリックしたカラムの昇順、%si"HeaderSortD"で降順の値を取得でき、*sortentry 等で使用できます。)

(PPtray)
ICON  タスクトレイアイコン


2016年9月23日金曜日

隠しメニューのカスタマイズ


PPc下部にある情報行に注目しよう。



情報行にマウスカーソルをあわせると



このように隠し項目が表示される。これが隠しメニューだ。現れた各項目をクリックすると、何らかのコマンドを実行する。

同様の隠しメニューは、PPvにも存在する。



今回は、この隠しメニューをカスタマイズする方法について。

カスタマイズのポイント


  • HM_ppcを編集することにより、PPcの隠しメニューを。HM_ppvを編集することにより、PPvの隠しメニューをカスタマイズすることができる。ツールバーメニューのように、新規に作って登録する、ということはできないようだ。
  • PPcだと隠しメニューは二段表示になる。前半にある項目が上段、後半にある項目が下段になる。
  • 表示する文字には、4文字のアルファベットの他にも、2文字の漢字を利用することもできる。視認性を高めるには、漢字にしてみてもいいかも?

カスタマイザーを使う場合


ボタンタブを開き、種類からHM_ppcを選択すればいい。PPvの場合はHM_ppvだ。



①が表示名で、②が実行するコマンド。①の右にある「文字色」と「背景色」で、色を変更する。項目の設定が終わったら、忘れずに「設定」を押そう。
新しい項目を追加したい場合は、右上から新規を選択。不要な項目は「削除」で削除する。

CFGを直接編集する場合


デフォルトは以下。カスタマイザーよりは、CFGを直接編集する方がやりやすいかも。
HM_ppc = { ; PPc(前半が上段、後半が下段
Root , _CYA,_AUTO = @'\'
allM , _AUTO,_AUTO = @HOME
Driv , _AUTO,_AUTO = @\L
Copy , _AUTO,_AUTO = @C
Edit , _AUTO,_AUTO = E
Pack , _AUTO,_AUTO = P
Ren  , _AUTO,_AUTO = @R
Sort , _AUTO,_AUTO = @S
MkDr , _AUTO,_AUTO = @K
Tree , _AUTO,_AUTO = @\T
Exec , _AUTO,_AUTO = @X
Shel , _AUTO,_AUTO = @H
Up   , _CYA,_AUTO = @BS
revM , _AUTO,_AUTO = @\HOME
Pjmp , _AUTO,_AUTO = @0
Move , _AUTO,_AUTO = @M
View , _AUTO,_AUTO = @N
Unpk , _AUTO,_AUTO = @U
Del  , _AUTO,_AUTO = @D
Writ , _AUTO,_AUTO = @W
Wid  , _AUTO,_AUTO = @';'
Attr , _AUTO,_AUTO = @A
Find , _AUTO,_AUTO = @F
}
HM_ppv = { ; PPv
disp , _AUTO,_AUTO = @':'
code , _AUTO,_AUTO = @'@'
Find , _AUTO,_DBLU = @F
F ^  , _AUTO,_DBLU = @'['
F v  , _AUTO,_DBLU = @']'
}

2016年9月21日水曜日

最近のコピー(移動/解凍)先フォルダをメニュー表示

最近、ファイルのコピー(移動/解凍)先にしたパスをメニュー表示。それを選択すればコピー(移動/解凍)できるようにする。


 

準備


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

stackalias.js

//!*script
// 第一引数 : エイリアスのベースネーム
// 第二引数 : 登録内容

// 「第一引数+連番」のエイリアスに、第二引数を登録する
// 第一引数がhogehogeであれば、最初はhogehoge0、次はhogehoge1という具合
// 第二引数が既に登録済みであれば、それがhogehoge0になるよう順番を入れ替える

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

MAX_CMD = 5; // 連番の最大値

var cmd = PPx.Arguments.Item(0);
var macro = PPx.Arguments.Item(1);

// 既に登録されているかチェック。登録されていれば末尾の数値を取得
for (var i = 0; i <= MAX_CMD; i++) {
  if (PPx.Extract("%'"+cmd + i + "'") == PPx.Extract(macro)){
    var i2 = i;
    break;
  }
}

// パスを登録する。パスが登録済みかどうかで分岐
if (i2==null) { // パスが未登録なら登録
  for (var i = MAX_CMD; i > 0; i--) {
    PPx.Execute("*alias "+cmd+i+" = %'"+cmd+(i-1)+"'");
  }
  PPx.Execute("*alias "+cmd+0+" = "+macro);
} else if (i2!=0) { // パスが登録済みかつ末尾が0以外の時は、登録内容の順番を入れ替える
  for (var i = i2; i > 0; i--) {
    PPx.Execute("*alias "+cmd+i+" = %'"+cmd+(i-1)+"'");
  }
  PPx.Execute("*alias "+cmd+0+" = "+macro);
}

以下を編集して取込。解凍に使っているwrap_7zG.jsについては、


を参照。

-|M_CopyDestDir =
-|M_MoveDestDir =
-|M_UnpackDestDir =

KC_main = { ; PPcメイン窓
C ,*ppcfile copy /compcmd *script %0\Script\stackalias.js,copy_dest,%%hd0
M ,*ppcfile move /compcmd *script %0\Script\stackalias.js,move_dest,%%hd0
U ,*set hoge=%"解凍先"%eRd%!2 %: *script %0\Script\wrap_7zG.js,"%a8FDC",%'hoge' %: *script %0\Script\stackalias.js,unpack_dest,%'hoge'
}
M_CopyDestDir = { ** comment **
&A %'copy_dest0' = *ppcfile !copy /dest:%*name(DC,%'copy_dest0')
&B %'copy_dest1' = *ppcfile !copy /dest:%*name(DC,%'copy_dest1') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest1'
&C %'copy_dest2' = *ppcfile !copy /dest:%*name(DC,%'copy_dest2') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest2'
&D %'copy_dest3' = *ppcfile !copy /dest:%*name(DC,%'copy_dest3') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest3'
&E %'copy_dest4' = *ppcfile !copy /dest:%*name(DC,%'copy_dest4') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest4'
}

M_MoveDestDir = { ** comment **
&A %'move_dest0' = *ppcfile !move /dest:%*name(DC,%'move_dest0')
&B %'move_dest1' = *ppcfile !move /dest:%*name(DC,%'move_dest1') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest1'
&C %'move_dest2' = *ppcfile !move /dest:%*name(DC,%'move_dest2') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest2'
&D %'move_dest3' = *ppcfile !move /dest:%*name(DC,%'move_dest3') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest3'
&E %'move_dest4' = *ppcfile !move /dest:%*name(DC,%'move_dest4') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest4'
}
M_UnpackDestDir = { ** comment **
&A %'unpack_dest0' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest0'
&B %'unpack_dest1' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest1' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest1'
&C %'unpack_dest2' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest2' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest2'
&D %'unpack_dest3' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest3' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest3'
&E %'unpack_dest4' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest4' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest4'
}

やり方


Cを押してファイルをコピー。



すると、コピー先のパスがエイリアスcopy_dest0に保存される。



次にファイルをコピーすると、そのコピー先パスはcopy_dest1に登録される。さらにその次のコピー先パスはcopy_dest2に……。

移動(M)のときは

move_dest0
move_dest1
move_dest2
move_dest3


解凍(U)のときは

unpack_dest0
unpack_dest1
unpack_dest2
unpack_dest3

の順番で処理先のパスが登録される。

パスは5つまで登録でき、新しく実行したものは自動でメニューの上の方に来るようにする。ちなみに、記憶数を変えたいときはstackalias.jsのMAX_CMD = 5;の数値をいじる。

蓄積したメニューは


%M_CopyDestDir
%M_MoveDestDir
%M_UnpackDestDir

を実行すれば表示される。適当なキー等に登録しよう。僕は右クリックメニューに登録している。



追記 2016/09/25


ファイル名に空白があると書庫の展開がうまくいかない場合があったので、一部修正。"%a8FCDN"を"%a8FDC"にした。