一時的にだけ使いたいアクションを登録するアクション

久方ぶり

この前に書いたエントリが8月5日ですんで、2週間弱ぶりってとこですか。
この間「◯◯◯◯年◯◯月◯◯日のツイート」すら1週間ブランクありますしね。

まぁ、盆休みキッチリ取るためにネット断ちしてたり、休み中は休み中で遊びに出かけてたりしてたからなんですけど。


休んでた間のフェンリル絡みのトピックで興味があるのは2点。
FenrirFS 2.0 RC公開Tapmarklets公開ですかね。

FenrirFS 2.0の新機能は以前にデベロッパーズブログで触れられていましたね。(ここここ)
サムネイル/プレビュー機能、ファイル表示パターン追加(ワイドスクリーン表示、縮小表示)、自動同期モードプロファイル*1あたりでしょうか。

そういえばプレビューウィンドウは最前面ボタン押しても押さなくてもどっちでも最前面なような気がするんですが。


Tapmarkletsの方に関しては同時にブックマークレット登録が簡単に出来るようになった Sleipnir Mobile for iOS 1.3.3 が出てますね。
Sleipnir Mobile for Android では現状のα2ではブックマークレットを使えないようです。次に出るβバージョンでは対応されるとか。

デベロッパーズブログではPCからはアクセスできないと書いてありますけど、UA見て振り分けてるだけなんでUAを変更できるブラウザなら見ることは出来ます。
各ブラウザのUAの変更については過去エントリを参考にどうぞ。

なお、私はSleipnirのPersonalChannelプラグインで試しました。
URLの値を"http://bookmarklets.fenrir.co.jp/"にして、UAに"Android"、"iPhone"、"iPad"、"iPod"あたりが入っていると行けるみたいです。
PCでも使い出がありそうなものが幾つかあったのでいただきましたw

なお、ブックマークレットの募集を行っているので、Tapmarkletsも公開されたし*2フェンリル君ステッカー欲しいし、ネタもいくつか思いついているので今週〜来週くらいには送ろうと考えています。

やっと本題

今日も前置きが長くなったなw


一時的にだけ特定のアクションを多用したい場合ってのがあったりします。

例えば、普段私は横になりながらブラウジングしたりしてます。
モニターからの距離にして1.5〜2mってところでしょうか。
当然、文字や画像が小さかったりするので「Zoom(200):200%にズーム」などを使ってページを拡大して見るわけです。
ちなみにズーム関係でマウスジェスチャに登録してあるのは「Zoom(200)」、「Zoom(100):100%にズーム」、「ZoomIn:+10%ズーム」、「ZoomOut:-10%ズーム」です。
基本的には「Zoom(200)」のあとに「ZoomIn」、「ZoomOut」で微調整って感じですね。

で、そんなときに困るのはちょうど良いズーム率が"150%"とか"250%オーバー"とかのページです。
数ページなら構わないんですが、10数ページとかになってくると、調整が10%刻みなためジェスチャ実行がめんどくさくなってきます。
そういう時は「サジタリウス」の入力ボックスに「Zoom(150)」とか入れてクリックするとか、ステータスバーのズームペーンから切り替えたりとかやってました。
いよいよそれも面倒になったのでアクションを一時的に登録して実行可能にするアクションを書いてみました。


TemporaryAction.js

(function(){
	var pnir = sleipnir.api;
	var fso = sleipnir.CreateObject("Scripting.FileSystemObject");
	if(!fso.FolderExists(sleipnir.UserFolder + "\\UserResource")) {
		fso.CreateFolder(sleipnir.UserFolder + "\\UserResource");
	}
	if(!fso.FolderExists(sleipnir.UserFolder + "\\UserResource\\TemporaryAction")) {
		fso.CreateFolder(sleipnir.UserFolder + "\\UserResource\\TemporaryAction");
	}
	
	if(pnir.CtrlDown) {
		var tmp = prompt("一時的に使うアクションを入力してください","");
		tmp = tmp == null ? "" : tmp;
		
		var stream = fso.CreateTextFile(sleipnir.UserFolder + "\\UserResource\\TemporaryAction\\tmp.cfg", true, false);
		try {
			stream.Write(tmp + "\r\n");
		}finally {
			stream.Close();
		}
	}else {
		if(!fso.FileExists(sleipnir.UserFolder + "\\UserResource\\TemporaryAction\\tmp.cfg")){
			alert("[Ctrl]キーを押しながら本アクションを実行し、使いたいアクションを登録してください");
		}else {
			var stream = fso.OpenTextFile(sleipnir.UserFolder + "\\UserResource\\TemporaryAction\\tmp.cfg", 1, false, -2);
			var text = stream.ReadLine();
			stream.Close();
			
			if(text) {
				pnir.ExecuteAction(text);
			}else {
				sleipnir.Status = "アクション名が空白ですよん♪";
			}
		}
	}
})();

登録方法などは割愛。

※サジタリウスの入力ボタンの文字列を取得してアクションとして実行とかも考えたり。

使い方

0.TemporaryActionアクション*3をジェスチャなりホットキーなりに登録しておく。
1.最初にCtrlキーを押しながらアクション実行すると、プロンプトが出るので使いたいアクション名を入力する。*4
2.今度はCtrlを押さずに普通にアクションを実行すると先ほど指定したアクションが実行される。
3.用が済んだら再びCtrlキーを押しながらアクション実行し、プロンプトに何も入力せずに「OK」を押すか「キャンセル」を押す。
4.アクションを実行しても何も起きなくなる。(正確には、アクションが空な旨がステータスバーに表示されるけど)
以下ループ

*1:勘違いしそうだけど複数PC間での同期じゃないです。特定のフォルダのファイルの変更に同期してFenrirFS側のプロファイルが変わるよって話

*2:募集開始後すぐに送っても良かったけどフェンリル謹製と被る可能性があったのでスルーしてた

*3:アクション名は保存したファイル名なので、別名付けた方は適宜読み替えてください

*4:"\UserResource\TemporaryAction\tmp.cfg"というファイルが作られる