2015年1月16日金曜日

1画面なら自窓に、2画面なら反対窓に書庫を展開

一体型PPxで、1画面なら自窓に。2画面なら反対窓に書庫を展開するようにする。

書庫を展開した時は、たいていその後展開したフォルダに潜って作業することになる。だから、この2パターンだけにしてもいいのではないかと思うのだ。

以下をScriptフォルダに保存

my_unpack.js
//!*script
// 一体型1画面なら自窓に展開
// 一体型2画面なら反対窓に展開
// それ以外なら通常動作

if (PPx.GetComboItemCount == 1){
  PPx.Execute("*unpack");
} else if (PPx.GetComboItemCount == 2){
  PPx.Execute("*unpack %2");
} else {
  PPx.Execute("%K\"@U\"");
}

以下を編集して取込
X_arcdr = 2 ; 書庫全展開は書庫名ディレクトリ内に 0:しない 1:する 2:自動
KC_main = { ; PPcメイン窓
U ,*script %0\Script\my_unpack.js
}

2015年1月9日金曜日

2画面時の比率を50:50に

僕は一体化型PPxを基本1画面、必要な時だけ2画面にして使ってる。
2画面にするときに、左右の窓の比率がずれることがあったので、必ず50:50になるようにする。


やり方


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

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


2winTab.js
//!*script 

if (PPx.GetComboItemCount <= 1){ // 窓が一つ以下の場合
  PPx.Execute("%Ob %0\\PPCW.EXE -bootid:~ -k *pairrate 50");
  PPx.Execute("*customize XC_mvLR=4,1,6,B0100,6,B100"); // カーソル移動方法の変更
} else {
  PPx.Execute("%K\"@F6\"");
}

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("*customize XC_mvLR = 4,1,4,B0000,6,B001 ; [←][→] "); // カーソル移動方法の変更
}

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

2015年1月8日木曜日

最大化表示/通常表示時に1画面に


僕はPPxを一体化で使い、基本的には1画面。コピー他をしたいときには2画面にしている。2画面にする必要があるときは、必ず最大化してから2画面にする。通常表示で2画面だと小さすぎるからだ。

だから、「最大化表示+2画面」から通常表示に戻すときには、かならず1画面にしていた。この処理を省略したい。

やり方


以下をScriptフォルダに保存

togglewinsize2.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("*togglewinsize %*findwindowclass\(\"PaperPlaneCombo\"\)"); // 最大化表示/通常表示トグル
} else {
  PPx.Execute('*closeppx ' + ppcid2); // 右窓を閉じる
  PPx.Execute("*customize XC_mvLR = 4,1,4,B0000,6,B001 ; [←][→] "); // カーソル移動方法の変更
  PPx.Execute("*togglewinsize %*findwindowclass\(\"PaperPlaneCombo\"\)"); // 最大化表示/通常表示トグル
}

以下を編集して取込
MC_click = { ; PPc メイン窓
LD_TITL ,*script %0\Script\togglewinsize2.js
}

これで、タイトルバーをダブルクリックして最大化表示/通常表示にするとき、必ず1画面になる。

2015年1月7日水曜日

現在窓の位置を複数記憶

あいさつ


つかさです。
今回は現在窓の位置の記憶です。デフォルトだと、

  • &\[HOME] 現在の窓の位置を記憶する
  • &[HOME] &\[HOME]で記憶した位置に窓を移動する

と一つだけ記憶できますが、これを複数記憶できるようにします。

準備


必要なのは
  • setalias.js
  • resetalias.js
  • RotateExecute3.js
  • SetDimensions.js

の4つ。これらをScriptフォルダに保存します。上の3つを持ってない場合は、


に置いてあるので、どちらかに行って保存しましょう。

今回新しく作ったのは、SetDimensions.jsです。

SetDimensions.js

//!*script 
// 窓の位置と大きさを変更する
// 第一引数:"x,y,width,height"
// PPXMES.DLLとPPXWIN.DLLが必要

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

var hoge = PPx.Arguments.Item(0).split( "," );

// 実行元が一体型PPcかそれ以外かで分岐
if (PPx.GetComboItemCount != 0&&PPx.Extract('%n').substr(0,1)=="C"){
  PPx.Execute("*windowposition %*findwindowclass\(\"PaperPlaneCombo\"\)"+","+hoge[0]+","+hoge[1]); // 位置の変更
  PPx.Execute("*windowsize %*findwindowclass\(\"PaperPlaneCombo\"\)"+","+hoge[2]+","+hoge[3]); // 大きさの変更
} else {
  PPx.Execute("*windowposition %N"+","+hoge[0]+","+hoge[1]); // 位置の変更
  PPx.Execute("*windowsize %N"+","+hoge[2]+","+hoge[3]); // 大きさの変更
}

引数として、4つの数字をカンマで区切って引用符でくくったもの"x,y,width,height"を受け取り、現在窓の位置と大きさを、それにあわせて変更するスクリプトです。例えば
*script %0\Script\SetDimensions.js,"200,300,400,500"

とすると、位置が(200,300)で幅が400、高さ500になります。

ついで以下を編集して取込。
-|K_SetPPcDimentions =
-|K_SetPPvDimentions =

KC_main = { ; PPcメイン窓
^W ,*setnextkey K_SetPPcDimentions
}
KV_main = { ; PPvメイン窓
^W ,*setnextkey K_SetPPvDimentions
}

K_SetPPcDimentions = { ** comment **
W , *script %0\Script\setalias.js,ppcpos,"%*windowrect(,l),%*windowrect(,t),%*windowrect(,w),%*windowrect(,h)"
R , *script %0\Script\resetalias.js,ppcpos
^W ,*script %0\Script\SetDimensions.js,"%*script("%0\Script\rotateExecute3.js","cposi","ppcpos")"
}
K_SetPPvDimentions = { ** comment **
W , *script %0\Script\setalias.js,ppvpos,"%*windowrect(,l),%*windowrect(,t),%*windowrect(,w),%*windowrect(,h)"
R , *script %0\Script\resetalias.js,ppvpos
^W ,*script %0\Script\SetDimensions.js,"%*script("%0\Script\rotateExecute3.js","vposi","ppvpos")"
}

使い方

  • C_w wで記憶
  • C_w C_wで記憶した順に復元
  • C_w rでリセット