|
h-tom です。
>たしかにグループとタブとの直線性を考えると、グループの順番になっていたほ
>うがいいかもしれません。
>グループごとに色を分けて欲しいという要望もあります。
>ネタとして参考にしたいと思います。
タブグループ対応(?)ウィンドウ一覧を作ってみました。
田楽DLLが必要です。秀丸本体と同じ所に置いてください。
ちなみにファイル名をダブルクリックしても開きません。
「OK」ボタンか、リターンキーを押してください。
タブモードでない場合は普通のウィンドウ一覧を開きます。
//ここから
//ダイアログ表示時にグループを展開する場合は1、しない場合は0
#node_open = 1;
if(tabmode == 1){
loaddll hidemarudir + "\\dengakudll.dll";
if(!result){
message "dllのロード失敗";
endmacro;
}
call DengakuSet;
if(##return != -1){
setactivehidemaru(##return);
}
}else{
windowlist;
}
endmacro;
DengakuSet:
//主ダイアログ作成
if (dllfunc("NEWDIALOG","ウィドウ一覧", 60, "") == 0 ||
dllfunc("NEWCONTROL","tree","wlist","") == 0 ||
dllfunc("SETCTRLHEIGHT","wlist",15) == 0 ||
dllfunc("SETCTRLSORT","wlist","yes") == 0 ||
dllfunc("NEWCONTROL","okcancel","","") == 0) {
message "ダイアログ作成エラー!";
freedll;
endmacro;
}
//起動時の秀丸ハンドル
##main = hidemaruhandle(0);
//リスト作成
##cnt = 0;
$$nodes = "";
##max = hidemarucount;
##sel_max = 0;
while(##cnt < ##max){
$$name = filename2[##cnt];
if($$name == "") $$name = filetype[##cnt];
##node = tabgroup[##cnt];
$$tab_index = "[" + rightstr("00000" + str(taborder[##cnt]), strlen
(str(tabtotal[##cnt]))) + "]";
##node_chk = strstr($$nodes, ";" + str(##node) + ";");
//tabグループの追加
if(##node_chk == -1){
##node_top[##sel_max] = ##cnt;
##sel_max = ##sel_max + 1;
$$nodes = $$nodes + ";" + str(##node) + ";";
if(!dllfunc("SETCTRLITEM","wlist","node" + str(##node) + ",タブ
グループ" + str(##node),"root")){
freedll;
message "ノード作成エラー!";
endmacro;
}
}
//ファイルの追加
if(!dllfunc("SETCTRLITEM","wlist", str(##cnt) + "," + $$tab_index +
$$name ,"node" + str(##node))){
freedll;
message "ノード(ファイル)作成エラー!";
endmacro;
}
if(##main == hidemaruhandle(##cnt)) ##main_sel = ##cnt;
##cnt = ##cnt + 1;
}
//ダイアログ表示
if (!dllfunc("SHOWDIALOG",hidemaruhandle(0),1)){
message "ダイアログ作成エラー!";
freedll;
endmacro;
}
//すべてのタブグループを展開
if(#node_open == 1){
##sel_max = ##sel_max - 1;
while(0<##sel_max){
if(!dllfunc("SETCTRLSTATE","wlist", str(##node_top[##sel_max]))){
message "ノード展開エラー!";
freedll;
endmacro;
}
##sel_max = ##sel_max - 1;
}
}
//起動した文書を選択
if(!dllfunc("SETCTRLSTATE","wlist", str(##main_sel))){
message "ファイル選択エラー!";
freedll;
endmacro;
}
//操作待ち受けループ
while (1) {
$$ret_code = "";
while (strlen($$ret_code) == 0) $$ret_code = dllfuncstr("WAITCTRLNOT
IFY",10);
$$select_file = dllfuncstr("GETCTRLSTATE","wlist");
if ($$ret_code == "1"){
if(strstr($$select_file, "node") != -1){
##n = dllfunc("SHOWMESSAGE","999","ファイルを選択して下さい。
");
continue;
}
break;
}else if ($$ret_code == "0"){
$$select_file = "";
break;
}else{
}
}
##ret = dllfunc("ENDDIALOG");
if($$select_file == ""){
##func = -1;
}else{
##func = val($$select_file);
}
return ##func;
//ここまで
|
|