「
すべて閉じる
」を編集中
2019年4月25日 (木) 18:34時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(「統合版」を追加。ZIP を更新)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
いっぺんに複数のタブを閉じます。 *途中で「保存の確認」ダイアログを表示するタイプと表示しないタイプがあります。 ※「保存の確認」ダイアログで「キャンセル」ボタンを押した場合、そのタブは閉じず、他のタブにたいしては「すべて閉じる」の処理を継続します。 <div style="float:right">__TOC__</div> = ダウンロード = ;[[ファイル:すべて閉じるマクロ集.zip]] (sukemaru 2019/04/25②)<br> マクロ×7本、アイコン入り *[[#「すべて閉じる」の統合版(モード選択)|統合版]] を追加 *アイコンのデザインをちょっと変更 <br clear=all> = すべて閉じる = ウインドウを閉じるさいに、保存していないタブにたいして「 **** への変更を保存しますか?」の確認ダイアログを表示させずに終了できます。<br> ※基本的に、「未保存*」の名前つきタブがあるときは、保存の確認ダイアログを表示します。 *「未保存*」以外のタブ(変更マーク「*」がないタブ)をすべて閉じるなら、別ページに「[[変更なしのタブをすべて閉じる]]」マクロがあります。 *「無題」をふくめたすべての「未保存*」のタブについて保存処理や確認ダイアログが必要であれば、[[ヘルプ:ファイル#すべて保存して閉じる|ファイルメニュー]]の「すべて保存して閉じる」や「すべて閉じる」を使用してください。 ファイルメニューの「'''すべて閉じる''' (Shift+Alt+X)」の [[マクロリファレンス:Window インターフェイス#Close メソッド|マクロコード]] <source lang="javascript"> window.Close(); </source> ファイルメニューの「'''すべて保存して閉じる''' (Shift+Ctrl+E)」の [[マクロリファレンス:Editor インターフェイス#SaveCloseAll メソッド|マクロコード]] <source lang="javascript"> editor.SaveCloseAll(); </source> == 保存の確認をせずに閉じる == すべての「未保存*」タブについて、いっさい保存の確認をせずに閉じます。 <br> ※<b style="color:#c00;">問答無用</b>でエディタウインドウが閉じるので、ご利用は自己責任で。 <source lang="javascript"> #title = "すべて閉じる(保存の確認なし)" #tooltip = "未保存のタブがあっても保存の確認をせずに終了する" // #icon = "close_all[2].ico" for ( var i = 0; i < editor.Documents.Count; i ++ ) { editor.Documents.Item( i ).Saved = true; } window.Close(); </source> == 保存の確認ダイログを出す == 名前のある(実体ファイルのある)「未保存*」のタブにたいしては、保存の確認ダイログを表示します。<br> ※「無題」のタブにたいしては、保存の確認をしません。 <source lang="javascript"> #title = "すべて閉じる(無題は保存の確認しない)" #tooltip = "無題のタブは保存の確認をせずに終了する" // #icon = "close_all[1].ico" for ( var i = 0; i < editor.Documents.Count; i ++ ) { if ( ! editor.Documents.Item( i ).Name ) { editor.Documents.Item( i ).Saved = true; } } window.Close(); </source> = 他のタブを閉じる = アクティブなタブ以外を閉じます。 ※「無題」のタブでも名前つきのタブでも、「未保存*」のタブについては保存の確認ダイアログを表示します。 == 左側のタブを閉じる == <source lang="javascript"> #title = "左側のタブをすべて閉じる" #tooltip = "左側のタブをすべて閉じる" // #icon = "close_left.ico" var d = document; var dCount = editor.Documents.Count; var dd, docu; for ( var i = 0; i < dCount; i ++ ) { docu = editor.Documents.Item( i ); if ( docu == d ) { dd = i; break; } } // 左側のタブをすべて閉じる for ( var i = dd - 1; i >= 0; i -- ) { docu = editor.Documents.Item( i ); if ( docu != d ) { docu.Close(); } } </source> == 右側のタブをすべて閉じる == <source lang="javascript"> #title = "右側のタブをすべて閉じる" #tooltip = "右側のタブをすべて閉じる" // #icon = "close_right.ico" var d = document; var dCount = editor.Documents.Count; var dd, docu; for ( var i = 0; i < dCount; i ++ ) { docu = editor.Documents.Item( i ); if ( docu == d ) { dd = i; break; } } // 右側のタブをすべて閉じる for ( var i = dCount - 1; i > dd; i -- ) { docu = editor.Documents.Item( i ); if ( docu != d ) { docu.Close(); } } </source> == 他のタブをすべて閉じる == <source lang="javascript"> #title = "他のタブをすべて閉じる" #tooltip = "他のタブをすべて閉じる" // #icon = "close_other.ico" var d = document; var dCount = editor.Documents.Count; var docu; // 他のタブをすべて閉じる for ( var i = dCount - 1; i >= 0; i -- ) { docu = editor.Documents.Item( i ); if ( docu != d ) { docu.Close(); } } </source> = 他のタブをすべて閉じる(オプションつき) = ※「未保存*」のタブにたいして 保存の確認ダイログを表示するか/しないか のオプションを設定します。 ※設定項目で動作モードを変更して別名 .JS ファイルに保存すれば、「右側/左側のタブをすべて閉じる」マクロになります。 <source lang="javascript"> #title = "他のタブをすべて閉じる" #tooltip = "他のタブをすべて閉じる" // #icon = "close_other.ico" // ---------- ▼ 設定項目 ▼ ---------- var closeMode = 0; // 0: 他のタブをすべて閉じる // 1: 右側のタブをすべて閉じる // 2: 左側のタブをすべて閉じる var ignoreUnNamed = false; // true: 「無題」ドキュメントにたいしては保存の確認ダイアログを表示しない // false: 「無題」ドキュメントにたいしても保存の確認ダイアログを表示する // ---------- ▲ 設定項目 ▲ ---------- var d = document; var dCount = editor.Documents.Count; var dd, docu; for ( var i = 0; i < dCount; i ++ ) { docu = editor.Documents.Item( i ); if ( docu == d ) { dd = i; break; } } // 他のタブをすべて閉じる var start = ( closeMode == 2 ) ? dd - 1 : dCount - 1; var end = ( closeMode == 1 ) ? dd + 1 : 0; for ( var i = start; i + 1 > end; i -- ) { docu = editor.Documents.Item( i ); if ( docu != d ) { if ( ignoreUnNamed && docu.Name == "" ) { docu.Saved = true; } docu.Close(); } } </source> = 「すべて閉じる」の統合版(モード選択) = [[ファイル:Mery_すべて閉じる(入力).png|link=|border|right|入力ダイアログ]] [[ファイル:Mery_すべて閉じる(メニュー).png|link=|border|right|ポップアップメニュー]] <br> 「すべて閉じる」と「他のタブを閉じる」の機能 '''全部入り''' です。<br><br> ※入力ダイアログかポップアップメニューで動作モードを指定します(ソースコード内の設定項目で「デフォルト値」を指定しておくと Enter または Space キーだけで処理を開始できます)。<br><br> ※ Mode = 4, ignoreUnNamed = false で、ファイルメニューの「すべて閉じる」とおなじ動作になります。 <br clear=all> <source lang="javascript" style="height:60em; overflow:auto;"> #title = "すべて閉じる(モード選択)" #tooltip = "すべて閉じる(入力ダイアログ)" #icon = "close_all[4].ico" // または #tooltip = "すべて閉じる(ポップアップメニュー)" // ---------- ▼ 設定項目 ▼ ---------- // ■起動モード var userModeInput = true; // true: 入力ダイアログ // false: ポップアップメニュー // ■デフォルト値( 1 ~ 6 ) var defaultMode = ""; // デフォルト: 入力ダイアログでは Enter キーで確定 // ポップアップメニューでは Space キーで確定 // "": 表示しない // 1: 他のタブをすべて閉じる // 2: 左側のタブをすべて閉じる // 3: 右側のタブをすべて閉じる // 4: 変更なしのタブをすべて閉じる(「未保存*」のタブは閉じない) // 5: すべてのタブを閉じる // 6: 問答無用ですべて閉じる(すべてのタブの「未保存*」を無視) // ※ 4 ですべてのタブが保存済み、かつタブの閉じるボタンを表示している場合は、 // さいごに新規「無題」タブが残る(閉じるボタン無しならウインドウが閉じる) // ※ 4, 6 以外は、「未保存*」の名前つきドキュメントで保存の確認ダイアログ // ※ 5, 6 で閉じた場合、「ワークスペース」の復元可(Mery ver. 2.6.15 以降) // ■未保存* の「無題」ドキュメント var ignoreUnNamed = false; // true: 保存の確認ダイアログを表示しない // false: 保存の確認ダイアログを表示する // ※ mode = 6 では無効(表示しない) // ---------- ▲ 設定項目 ▲ ---------- var mode; // 入力ダイアログ if ( userModeInput ) { // (全角 0-9 のみ)半角変換した数字を文字列で返す var ToHalfWidthNum = function( strVal ){ return strVal.replace( /[0-9]/g, function( tmp ) { return String.fromCharCode( tmp.charCodeAt(0) - 0xFEE0 ) } ) }; // 1 ~ 6 以外の無効な文字列はすべて無視 mode = + ToHalfWidthNum( Prompt( "1: 他のタブ. 2: 左側. 3: 右側. 4: 変更なし. 5: すべて. 6: 強制終了.", defaultMode ) ).replace( /[^1-6]/g , "" ); } // ポップアップメニュー else { var menu = CreatePopupMenu(); menu.Add( "&1:\t他のタブをすべて閉じる", 1 ); menu.Add( "&2:\t左側のタブをすべて閉じる", 2 ); menu.Add( "&3:\t右側のタブをすべて閉じる", 3 ); menu.Add( "&4:\t変更なしのタブをすべて閉じる", 4 ); menu.Add( "&5:\tすべてのタブを閉じる", 5 ); menu.Add( "&6:\t未保存* を無視してすべて閉じる", 6 ); if ( /^[0-6]$/.test( defaultMode.toString() ) ) { menu.Add( "", 0, meMenuSeparator ); menu.Add( defaultMode + ":\tデフォルトモードを実行 ( Space& キー )", + defaultMode ); } menu.Add( "", 0, meMenuSeparator ); menu.Add( "&0:\tキャンセル", 0 ); mode = menu.Track( mePosMouse ); } var d = document; var dCount = editor.Documents.Count; var dd, docu; switch ( mode ) { // 他のタブをすべて閉じる case 1: case 2: case 3: loop: for ( var i = 0; i < dCount; i ++ ) { docu = editor.Documents.Item( i ); if ( docu == d ) { dd = i; break loop; } } var start = ( mode == 2 ) ? dd - 1 : dCount - 1; var end = ( mode == 3 ) ? dd + 1 : 0; for ( var i = start; i + 1 > end; i -- ) { docu = editor.Documents.Item( i ); if ( docu != d ) { if ( ignoreUnNamed && ! docu.Name ) { docu.Saved = true; } docu.Close(); } } d.Activate(); break; // すべて閉じる case 4: case 5: case 6: for ( var i = dCount- 1; i + 1 > 0; i -- ) { docu = editor.Documents.Item( i ); if ( mode == 4 && docu.Saved ) { docu.Close(); } else if ( mode == 6 || ( mode == 5 && ignoreUnNamed && ! docu.Name ) ) { docu.Saved = true; } } if ( mode != 4 ) { window.Close(); } break; default: break; } </source> ---- いつもポップアップメニューのマクロばかりなので、少しだけヒネってみました。
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク