挨拶
僕は、ブックマークをリストファイルの形で管理しており、それをメニューで呼び出せるようにしている(参考:ブックマークをリストファイルにして保存)。
今回は、ブックマークリストの切り替えを、メニューを介さずに行う方法を考察する。ちなみに、ブックマーク自体については
を参照のこと。
準備
上に載せたリンクから、
- setalias.js
- resetalias.js
- rotateExecute3.js
- alias2file.js
- file2allias.js
- bookmarkmenu.js
をScriptフォルダに保存しておく。
今回、新しく導入するのは、次のスクリプト。これもScriptフォルダに保存する。
RotateSubFile.js
//!*script // フォルダ内のファイルパスを順番に返す // 第一引数:フォルダパス // 第二引数:識別子 // 引数がなければ終了 if (PPx.Arguments.Length < 2){ PPx.SetPopLineMessage("引数が正しくありません。"); PPx.Quit(-1); } fs = PPx.CreateObject("Scripting.FileSystemObject"); var objFileSys = new ActiveXObject("Scripting.FileSystemObject"); var fn = PPx.Arguments.Item(0); var id = PPx.Arguments.Item(1); var CurrentFile; // フォルダが存在しなければ終了 if (objFileSys.FolderExists(fn) == false) { PPx.SetPopLineMessage(fn+"は存在しません"); PPx.Quit(-1); } // 同階層のフォルダのリストを取得 objFolder = objFileSys.GetFolder(fn); e = new Enumerator(objFolder.Files); flds = new Array(); for( ; !e.atEnd(); e.moveNext()) { flds.push(e.item().Name); } // フォルダが空なら終了 if (!flds[0]) { PPx.SetPopLineMessage("ファイルは存在しません"); PPx.Quit(-1); } // 識別子が空ならリストの一番目を代入 if (!PPx.Extract("%'"+id+"'")){ CurrentFile = flds[0]; } else { CurrentFile = PPx.Extract("%'"+id+"'"); } // ファイルの位置を取得 for(i = 0; i < flds.length; i++) { if( flds[i] == CurrentFile ) break; } var nextFile = flds[Math.min(i+1, flds.length-1)]; // 次のファイルを取得 // カレントフォルダがリスト最後なら最初にループ if (nextFile == CurrentFile) { nextFile = flds[0]; } PPx.Execute("*set "+id+" = "+ nextFile); // 識別子に次のファイルをセット PPx.Result = fs.BuildPath(fn,nextFile); // 値を返す
スクリプトの説明
このスクリプトは、
- フォルダパス
- 識別子
の二つの引数を取る。与えられたフォルダパス内にあるファイルパスを、1つずつ順番に返すスクリプトだ。
%0\Script\RotateSubFile.js,%0\bookmark,blistid
とすると、PPxフォルダのBookmarkフォルダ内のファイルを、順番に返す。例えば、Bookmarikフォルダ内が以下のようだとする。
すると、このスクリプトを実行する度に、
default.txt → 基本.txt → メモ.txt → 画像フォルダ.txt → default.txt → 基本.txt ……
の順番で、フルパスを返す。
このスクリプトと、file2alias.jsを組み合わせる。file2alias.jsは、第一引数にリストファイルのパスを、第二引数に変更したいエイリアスを取るスクリプト。そこで、この第一引数として、RotateSubFile.jsを与えれば、Bookmarkフォルダにあるリストを切り替えることができるわけだ。
*script %0\Script\file2alias.js,%*script("%0\Script\RotateSubFile.js","%0\bookmark","blistid"),bookmark
こんな感じですね。
編集して取込
次に、以下を編集して取込。
-|K_bookmark = -|K_bookmarklist = KC_main = { ; PPcメイン窓 ^S ,*setnextkey K_bookmark ^X ,*setnextkey K_bookmarklist } K_bookmark = { ** comment ** S , *script %0\Script\setalias.js,bookmark,%%1 R , *script %0\Script\resetalias.js,bookmark ^S , %j %*script("%0\Script\rotateExecute3.js","homu","bookmark") ',' , *script %0\Script\bookmarkmenu.js } K_bookmarklist = { ** comment ** ^X , *set name=%*script("%0\Script\RotateSubFile.js","%0\bookmark","blistid") %: *linemessage %*name(X,%'name') %: *script %0\Script\file2alias.js,%'name',bookmark X ,*linemessage defaultに戻しました %: *script %0\Script\file2alias.js,%0\bookmark\default.txt,bookmark }
使い方
キーコマンドは以下。
- C_x C_x ブックマークリストを順次切り替え
- C_x x ブックマークリストをdefault.txtに切り替え
- C_s s フォルダをブックマークに登録
- C_s r ブックマークをリセット
- C_s C_s ブックマークしたフォルダに順次移動
- C_s "," ブックマークメニューを開く
C_x C_x で、ブックマークリストが切り替わる。今どのリストなのかは、左上にlinemessageで表示されるので、使いたいリストに行き当たるまで何度もC_x C_x 。
目的のリストに行き当たれば、次はC_s C_s 。これで、ブックマークリストに登録されているフォルダに順次切り替わる。
想定している使い方
ファイラを使って行う作業は、わりと限られていると思う。僕の場合は、
- 画像ファイル管理
- 文書の作成
- ダウンロードしたファイルの利用
あたりだ。そして、それぞれの作業で使うフォルダというのも限られている。
- 画像管理……個々の画像フォルダ
- 文書の作成……メモフォルダ、ドキュメントフォルダ
- ダウンロードしたファイルの利用……ダウンロードフォルダ、一時展開用フォルダ、ソフトウェアフォルダ
といったように。
ならば、作業ごとにブックマークリストを作っておき、それを順次切り替えれば、普段行うフォルダ移動というのは、だいたい網羅できてしまうのではないか。そう思って、今回の仕組みを考えた。
つまり、そのようなブックマークリストを作っておけば、後は
- C_x C_x ブックマークリストを順次切り替え
- C_s C_s ブックマークしたフォルダに順次移動
の二つの操作だけで、たいていは目的のフォルダに行けて、効率性が上がるのではないか、ということです。
0 件のコメント:
コメントを投稿