Giraffe+ 0.5b
ダウンロード
Windows 9xでは動きません。
nkf32.dllが無いとメインメニューが出ません。
c/migemoは最新版(1.3c)のほうがいいです。(1.2でも動きます)
アップデートするには、全てのファイルを上書きして、
.giraffeの最初に@deprecatedを追加するだけでいけると思います。
たとえば、func-i-*等は廃止されましたが、
funcでそのまま動くことが多いです。
古いスクリプトが動かない場合はコードを提示してくだい。たぶん解決できます。
同梱のreadme_jp.txtに旧スクリプトの使用に際して問題の起きそうな部分を記しておきましたので、それも参照してください。
これをsiteinit.giraffeの最後に追加すると、ファイル名2文字以上のパス時にMigemoの部分一致になり、Migemoを使わない場合は従来どおりとなります。Settingsダイアログからこういう設定をできるようにするには、このスクリプトがAutoCompleteSetListに触れる最後の機会であることを保証する必要があるため、少し面倒です。あと、migemo.dllのパスの入力とか何文字以上で使用とか、そういった設定をどうやってさせるかというのが問題になります。
//パスのオートコンプリート時に入力ファイル名が2文字以上の場合にMigemoで部分一致
Migemo.open('migemo.dll' 'migemo-dict')
global.AutoCompleteSetList@ `s[
s.is_path.&&[s.path_get_name.size.>1].? [Giraffe:List:AutoComplete:MigemoPartialMatch(s).return]
].& (global.AutoCompleteSetList$)Giraffe.Reinitialize@ `[
Migemo.is_open.?[Migemo.close]
].& (Giraffe.Reinitialize$)
デフォルト設定で、Ctrl+Shift+Rを押すと正規表現による複数ファイルのリネームをできるようにしておきました。何も入力せずに実行すると、説明のバルーンが出ます。正規表現の仕様はPerl互換です。(Boost.Regexのデフォルト)
あと、もうひとつバルーンを使ったものに、STDOUT(標準出力)があります。実際はSTDOUTではなくstd::coutの出力先なんですが、デフォルト設定でこれをバルーンにしています。たとえばスクリプトで、
とすると'おえういあ'をメッセージとしたバルーンがでます。flushはstd::flushと同じで、endlも使えます。outで溜めます。
'あいうえお'.reverse.flush
これで"2/8/10/16"と出力されるはずです。std::cout(実はstd::wcout)をスクリプトオブジェクト化したCoutオブジェクトも存在していて、Cout.<< 0と、0.out(Cout)は同じで、0.endlはCout.<< 0.endlと同じになります。そして、outの引数を省略するとCoutが出力先となります。Coutの代わりにDoutを使うとデバッグアウトプットに出力されます。
0b10.out \/.out 10.out \/.out 010.out \/.out 0x10.endl
MFCの大量のクラスはまだスクリプトオブジェクト化の途中ですが、CWndは終わっており、Giraffe.MainWnd、Giraffe.Edit、Giraffe.ListBoxはそれぞれCWndの子供であるため、CWndのメンバ関数が使えます。
GDIクラスのオブジェクト化後、リージョンの操作やクライアント領域の描画等をスクリプトでできるようにする予定です。
rc: MFC_CRect.new
Giraffe.MainWnd.GetWindowRect(rc) //operator LPRECTが暗黙に発動する
'x=%d, y=%d, cx=%d, cy=%d'.format(rc.left rc.top rc.Width() rc.Height()).flush //formatの中身はboost::format
バグ報告や質問等、気軽にコメント欄へどうぞ。