Software Message Board
記事リスト新着記事ワード検索過去ログ管理用

タイトル Re^2: PPcのタブをエディタで整理したいのですが
投稿日: 2025/03/08(Sat) 21:52
投稿者TORO

とりあえず、タブ一覧をテキストで変更できるスクリプトを
作ってみました。現在窓の現在タブグループ内に限り並び替えと
パスの変更が可能です。
別グループや別ペインへの移動、タブの追加や削除には対応していません。

EditTabList.js:
//!*script
	"use strict";
	PPx.WindowIDName = "1";

	var tabs = PPx.Pane.Tab;
	var items = [];
	for ( ; !tabs.atEnd() ; tabs.moveNext() ){
		items.push({"path":tabs.Extract("%1"), "id":tabs.IDName});
	}

	if ( 0 ) { // sort
		items.sort(function(a,b){
			if (a.path < b.path) return -1;
			if (a.path > b.path) return 1;
			return 0;
		});
	}

	var text = "";
	for ( i = 0; i < items.length ; i++ ){
		// JSON にするには、items[i].path.replace(/\\/g,"\\\\") にする
		text += "{\"path\":\"" + items[i].path + "\", \"id\":\"" + items[i].id + "\"},\r\n";
	}
	PPx.setIValue("tablist", text);
	text = PPx.Extract("*maxlength 100000000 %: %OC%*input(-multi -select:t -title:\"行の入れ替えか path の編集が可能\" \"%si\"tablist\"\")");
	if ( text != "" ){
		var newitems = eval("[" + text.replace(/\\/g,"\\\\") + "{}]");
		// PPx.Echo(JSON.stringify(newitems));

		text = "";
		for ( i = 0; i < (newitems.length - 1) ; i++ ){
			for ( tabs.Reset(); !tabs.atEnd() ; tabs.moveNext() ){
				if ( newitems[i].id == tabs.IDName ){
					// PPx.Echo(newitems[i].id, i, tabs.Index);
					if ( newitems[i].path != tabs.Extract("%1") ){
						tabs.Execute("*jumppath \"" + newitems[i].path + "\"");
					}
					if ( i != tabs.Index ){
						PPx.Execute("*pane tabshift " + newitems[i].id + "," + (i - tabs.Index));
					}
					break;
				}
			}
		}
	}


- 関連一覧ツリー (▼ をクリックするとツリー全体を一括表示します)