Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #title = "StrConv ▾"
- #tooltip = "StrConv テキスト変換メニュー"
- #icon = "StrConv.ico"
- // StrConv.dll でテキストを変換する
- // 非選択時には行全体を選択範囲にして変換
- // ref. http://gesource.jp/
- // ポップアップメニュー項目の定義
- var m = CreatePopupMenu();
- m.Add( "小文字に変換する (&L)", 1 );
- m.Add( "大文字に変換する (&O)", 2 );
- m.Add( "大文字で始める (&C)", 3 );
- m.Add( "", 0, meMenuSeparator );
- m.Add( "半角文字に変換する (&H)", 4 );
- m.Add( "全角文字に変換する (&F)", 5 );
- m.Add( "", 0, meMenuSeparator );
- m.Add( "ひらがなに変換する (&G)", 6 );
- m.Add( "カタカナに変換する (&K)", 7 );
- m.Add( "半角カナを全角に変換する (&N)", 8 );
- m.Add( "", 0, meMenuSeparator );
- m.Add( "HTMLエスケープ (&E)", 9 );
- m.Add( "HTMLエスケープ解除 (&E)", 10 );
- m.Add( "URL %エンコード (Shift_JIS) (&J)", 11 );
- m.Add( "URLエンコードの解除 (Shift_JIS) (&J)", 12 );
- m.Add( "URL %エンコード (UTF8) (&U)",13 );
- m.Add( "URLエンコードの解除 (UTF-8) (&U)", 14 );
- // m.Add( "", 0, meMenuSeparator );
- // m.Add( "キャンセル", 0 );
- // ポップアップメニューを表示
- // Track(0); ならキャレット位置、Track(1); ならカーソル位置にポップアップ
- var r = m.Track( mePosMouse = 1 );
- if ( r > 0 ) {
- var s = document.selection
- // スクロール位置の保存
- var sx = ScrollX, sy = ScrollY;
- // マクロ実行前の選択範囲(表示行)の各座標を取得
- var ax = s.GetTopPointX( mePosLogical );
- var ay = s.GetTopPointY( mePosLogical );
- var bx = s.GetBottomPointX( mePosLogical );
- var by = s.GetBottomPointY( mePosLogical );
- // 非選択時には論理行全体を範囲選択
- if ( s.IsEmpty ) { // ( ax == bx && ay == by ) とおなじ
- s.StartOfLine( false, mePosLogical ); // 論理行の先頭に移動
- s.EndOfLine( true, mePosLogical ); // 行末まで選択 (改行を含まない)
- }
- var sc = new ActiveXObject("StrConv.StrConv");
- var st = s.Text
- // IDごとのテキスト変換処理
- switch ( r ) {
- case 1: // 1. 小文字に変換する
- s.Text = sc.LowerCase( st );
- break;
- case 2: // 2. 大文字に変換する
- s.Text = sc.UpperCase( st );
- break;
- case 3: // 3. 大文字で始める
- s.Text = sc.Capitalize( st );
- break;
- case 4: // 4. 半角文字に変換する
- s.Text = sc.HalfWidth( st );
- break;
- case 5: // 5.全角文字に変換する
- s.Text = sc.FullWidth( st );
- break;
- case 6: // 6. ひらがなに変換する
- s.Text = sc.Hiragana( st );
- break;
- case 7: // 7. カタカナに変換する
- s.Text = sc.Katakana( st );
- break;
- case 8: // 8. 半角カナを全角に変換する
- s.Text = sc.FullKatanaka( st );
- break;
- case 9: // 9. HTMLエスケープ (HTML予約文字の < > " & を < > " & に変換する)
- s.Text = sc.EncodeHtml( st );
- break;
- case 10: // 10. HTMLエスケープ解除
- s.Text = sc.DecodeHtml( st );
- break;
- case 11: // 11. URLエンコード (Shift_JIS %エンコーディング)
- s.Text = sc.EncodeUrl( st, 932 );
- break;
- case 12: // 12. URLエンコードの解除 (Shift_JIS)
- s.Text = sc.DecodeUrl( st, 932 );
- break;
- case 13: // 13. URLエンコード (UTF8 %エンコーディング)
- s.Text = sc.EncodeUrl( st, 65001 );
- break;
- case 14: // 14. URLエンコードの解除 (UTF-8)
- s.Text = sc.DecodeUrl( st, 65001 );
- break;
- default:
- break;
- }
- sc = "";
- // StrConv の実行後は、選択範囲が解除されて変換した末尾にカーソルが残る
- // 選択範囲とスクロール位置の復帰
- if ( ax == bx && ay == by ) {
- // 選択範囲なしで変換したときは、行全体を選択範囲に
- s.StartOfLine( false, mePosLogical );
- s.EndOfLine( true, mePosLogical );
- }
- else
- // もとの選択範囲を復旧
- s.SetAnchorPoint( mePosLogical, ax, ay ); // 変換した範囲の先頭まで選択
- ScrollX = sx;
- ScrollY = sy;
- }
Advertisement
Add Comment
Please, Sign In to add comment