#title="Popup Macros",1033,"マクロのポップアップ",1041 // Popup Macros // Version 1.0 // written by Emurasoft, Inc. // You may freely use, copy, and modify this macro. // This macro requires EmEditor v17.0.0 or later. var nCustomizeID = -1; var aPath = []; var nID = 0; var fso = new ActiveXObject("Scripting.FileSystemObject"); var sRootFolder = editor.GetProfileString( eeRegEmEditorUsers, "PopupMacro", "RootFolder", "" ); if( sRootFolder.length == 0 ) { // use old registry value ... may not exist sRootFolder = editor.GetProfileString( eeRegCommon, "", "MacroFolder", "" ); } if( sRootFolder.length == 0 ) { nID = nCustomizeID; } else { nID = 1; var f = fso.GetFolder(sRootFolder); var menu = EnumerateFolder( f ); menu.Add( "", 0, eeMenuSeparator ); menu.Add( editor.LangID == 1041 ? "ルート フォルダを設定..." : "Set Root Folder...", nCustomizeID ); nID = menu.Track( eePosMouse ); } if( nID != 0 ) { if( nID == nCustomizeID ) { for( ;; ) { sNewFolder = prompt( editor.LangID == 1041 ? "マクロのルート フォルダを入力してください" : "Enter the root folder for macros" , sRootFolder ); if( sNewFolder.length == 0 ) break; if( fso.FolderExists( sNewFolder ) ) { sRootFolder = sNewFolder; editor.WriteProfileString( eeRegEmEditorUsers, "PopupMacro", "RootFolder", sRootFolder ); break; } alert( editor.LangID == 1041 ? "指定されたフォルダを存在しません。マクロ フォルダの完全パスを入力してください。" :"The specified folder does not exist. Please enter the full path for the macro folder." ); } } else { editor.ExecuteMacro( aPath[nID] ); } } function EnumerateFolder( f ) { var m = CreatePopupMenu(); var fc = new Enumerator(f.SubFolders); if( !fc.atEnd() ) { for (; !fc.atEnd(); fc.moveNext()) { sItem = String( fc.item() ); m.AddPopup( fc.item().Name, EnumerateFolder( fc.item() ) ); } m.Add( "", 0, eeMenuSeparator ); } fc = new Enumerator(f.files); for (; !fc.atEnd(); fc.moveNext()) { sItem = String( fc.item() ); iExt = sItem.lastIndexOf("."); if( iExt != -1 ) { sExt = sItem.substr( iExt ); if( sExt == ".jsee" || sExt == ".vbee" ) { m.Add( fc.item().Name, nID ); aPath[nID] = sItem; nID++; } } } return m; }