2014年11月26日水曜日

ブックマークをリストファイルにして保存

あいさつ


これまで、PPcでのフォルダブックマークと、PPvでのファイルブックマークの方法を考察してきた。


今回はその応用編。ブックマークをファイルに保存して、再利用できるようにする。

準備(両者共通)


  • file2alias.js
  • alias2file.js

の二つをScriptフォルダに保存する。

file2alias.jsはリストファイルを読みとり、エイリアスに登録するスクリプトで、alias2file.jsはエイリアスをリストファイルにして保存するスクリプト。

ちなみにリストファイルというのは
;ListFile
D:\Work\画像フォルダ\ひだまりスケッチ\kulSc26Vu4BA6C577.jpg
D:\Work\画像フォルダ\ひだまりスケッチ\0dd01f46.jpg
D:\Work\画像フォルダ\輪るピングドラム\2dffa763.jpg
D:\Work\画像フォルダ\輪るピングドラム\3b0de06d.jpg
D:\Work\画像フォルダ\輪るピングドラム\4d45aa4d.jpg

こんな書式のテキストファイルで、仮想ディレクトリとして扱うためのもの。


普通にテキストファイルにするよりもこうしておいたほうが、後々何か使い道ありそうかも、と思ってこのようにしている(一行目に;ListFileって付けるだけだし)。

file2alias.js

//!*script
// リストファイルの内容をエイリアスにセットする
// 第一引数:リストファイルのパス
// 第二引数:エイリアス

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

var s = new ActiveXObject('ADODB.Stream');
var i = 0;
var fn = PPx.Arguments.Item(0);
var cmd = PPx.Arguments.Item(1);

// エイリアスをリセット
for (var i2 = 0; i2 < 30; i2++) {
  PPx.Execute("*alias "+cmd + i2 + " = ");
}

// ファイルを読み取り
s.type = 2;
s.charset = 'utf-16';
s.open();
s.loadFromFile(fn);

// エイリアスを順次セット
while(!s.EOS){
  hoge = s.readText(-2);
  if (hoge != "" && hoge != ";ListFile") {
    PPx.Execute("*alias "+cmd + i + " = " +hoge);
    i++;
  }
}
s.close();

alias2file.js

//!*script
// エイリアスをリストファイルに保存する
// 第一引数:リストファイルのパス
// 第二引数:エイリアス

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

var strLine = ";ListFile";
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var fn = PPx.Arguments.Item(0);
var cmd = PPx.Arguments.Item(1);

// エイリアスを展開し一つにまとめる
for (var i = 0; i < 30; i++) {
  if (PPx.Extract("%'"+ cmd + i + "'")){
    strLine = strLine + "\r\n" +PPx.Extract("%'" +cmd + i + "'");
  } else {
    break;
  }
}

// ファイルに書き込み
objFileSys.CreateTextFile(fn);
var sw = new ActiveXObject("ADODB.Stream");
sw.Type = 2;
sw.charset = "utf-16";
sw.Open();
sw.WriteText(strLine,1);
sw.SaveToFile( fn, 2 );
sw.Close();

フォルダブックマークの場合


ここからは個別の話に。それぞれで、メニューを作成、表示するためのスクリプトを作成して、ブックマークをファイルに保存、再利用を実現する。

まず、PPxフォルダにbookmarkフォルダを作成。

次に、以下をScriptフォルダに保存する。

bookmarkmenu.js

//!*script
// フォルダのブックマーク用メニュー

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

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

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

// 静的メニューの登録
PPx.Execute('*setcust M_hoehoe:ブックマークをファイルに保存=*script %%0\Script\\alias2file.js,'+fn+'\\%%"ブックマークをファイルに保存"%%{%%|.txt%%},bookmark');
PPx.Execute('*setcust M_hoehoe:ブックマークフォルダへ移動=%%j '+ fn);
PPx.Execute('*setcust M_hoehoe:--  =');

// フォルダリストを取得し動的メニューの登録
objFolder = objFileSys.GetFolder(fn);
e = new Enumerator(objFolder.Files); 
for( ; !e.atEnd(); e.moveNext()) {
  PPx.Execute('*setcust M_hoehoe:'+e.item().Name+'=*script %%0\\Script\\file2alias.js,'+fn+"\\"+e.item().Name+",bookmark");
}

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

以下を編集して取り込み。

K_bookmark = { ** comment **
',' , *script %0\Script\bookmarkmenu.js
}

使い方


PPc上でC_s ,(Ctrl+Sを押してからカンマを押す)。メニューが表示される。



「ブックマークをファイルに保存」を選択すると、一行編集が出るので、保存したい名前を入力してEnter。


保存したブックマークを使いたいときは、メニュー下部のファイルから適当なものを選択。すると、エイリアスがそのファイルの内容に置き換わる。

ファイルブックマークの場合


まずは、PPxフォルダにClipフォルダを作成。

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

clipmenu.js

//!*script
// PPv用ブックマークメニュー

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

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

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

// 静的メニューの登録
PPx.Execute('*setcust M_hoehoe:ブックマークをファイルに保存=*script %%0\Script\\alias2file.js,'+fn+'\\%%"ブックマークをファイルに保存"%%{%%|.txt%%},clip');
PPx.Execute('*setcust M_hoehoe:クリップフォルダへ移動=*execute C,*jumppath '+ fn);
PPx.Execute('*setcust M_hoehoe:--  =');

// フォルダリストを取得し動的メニューの登録
objFolder = objFileSys.GetFolder(fn);
e = new Enumerator(objFolder.Files); 
for( ; !e.atEnd(); e.moveNext()) {
  PPx.Execute('*setcust M_hoehoe:'+e.item().Name+'=*script %%0\\Script\\file2alias.js,'+fn+"\\"+e.item().Name+",clip");
}

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

以下を編集して取込
K_clip = { ** comment **
',' , *script %0\Script\clipmenu.js
}

使い方


PPv上でC_s ,(Ctrl+Sを押してからカンマを押す)。メニューが表示される。


「ブックマークをファイルに保存」を選択すると、一行編集が出るので、保存したい名前を入力してEnter。

保存したブックマークを使いたいときは、メニュー下部のファイルから適当なものを選択。すると、エイリアスがそのファイルの内容に置き換わる。

想定している使い方とか

 
フォルダであれば、個々の作業ごとに必要なフォルダを登録して再利用するだとか、各所にある画像フォルダをまとめておくとかだろうか。

ファイルであれば、個々の作業で閲覧することになるファイルをまとめておく、とかが考えられる。

他には、リストファイルを作成されるのを利用する方法もありそう。画像なりメモファイルなりを探してる途中、気になるものがあればブックマーク。あとでそれをリストファイル化し、仮想ディレクトリ内でゆっくり選別するとか。

0 件のコメント:

コメントを投稿