'****************************************************************************************************
'      Doxygen仕様コメント挿入マクロ「もっと愛情を込メント」
'         秀丸マクロ呼び出しマクロ  for VisualStudio
'
'                                     Copyright (c) YumemiYougie-Project 2008-2010  http://yyp.jp
'****************************************************************************************************
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Imports Microsoft.VisualBasic
Imports Microsoft.VisualBasic.ControlChars


Public Module DoxyLabel
    Dim sHidemaruFilePath As String
    Dim sHidemaruMacroFile As String

    Sub OpenHide()
        sHidemaruFilePath = "C:\Progra~1\hidemaru\hidemaru.exe"  '秀丸パス
        sHidemaruMacroFile = "DoxyLabel.mac"                     'マクロ名
        Dim bWait As Boolean = False                             'マクロ実行中の待機状態 trueでマクロ処理を待つ

        Dim objWShell
        objWShell = CreateObject("WScript.Shell")
        Const vbHide = 0             'ウィンドウを非表示
        Const vbNormalFocus = 1      '通常のウィンドウ、かつ最前面のウィンドウ
        Const vbMinimizedFocus = 2   '最小化、かつ最前面のウィンドウ
        Const vbMaximizedFocus = 3   '最大化、かつ最前面のウィンドウ
        Const vbNormalNoFocus = 4    '通常のウィンドウ、ただし、最前面にはならない
        Const vbMinimizedNoFocus = 6 '最小化、ただし、最前面にはならない

        ' 編集ファイル名.
        Dim sFile As String = DTE.ActiveDocument.FullName
        Dim objSel As TextSelection = DTE.ActiveDocument.Selection
        Dim objActive As VirtualPoint = objSel.ActivePoint
        Dim sAutoOption As String = ""
        Dim sSelected As String = ""
        Dim iSx As Integer
        Dim iSy As Integer
        Dim iEx As Integer
        Dim iEy As Integer

        Dim selection As TextSelection
        selection = DTE.ActiveDocument.Selection()
        Dim Start As EditPoint = selection.TopPoint.CreateEditPoint()
        Dim Bottom As EditPoint = selection.BottomPoint.CreateEditPoint()

        ' 編集ファイルをいったん保存.
        DTE.ActiveDocument.Save()

        iSx = objActive.DisplayColumn
        iSy = objActive.Line

        ' 範囲選択されている時
        If (Start.DisplayColumn <> Bottom.DisplayColumn) Or (Start.Line <> Bottom.Line) Then
            iEx = iSx
            iEy = iSy
            If (iSx <> Start.DisplayColumn) Or (iSy <> Start.Line) Then
                iSx = Start.DisplayColumn
                iSy = Start.Line
            ElseIf (iSx <> Bottom.DisplayColumn) Or (iSy <> Bottom.Line) Then
                iSx = Bottom.DisplayColumn
                iSy = Bottom.Line
            End If
            sSelected = "-(" + Str(iEx) + "," + Str(iEy) + ")"
        End If

        sAutoOption = "/a""At(" + Str(iSx) + "," + Str(iSy) + ")" + sSelected + """"
        objWShell.Run(sHidemaruFilePath + " /x" + sHidemaruMacroFile + " " + sAutoOption + " " + sFile, vbMinimizedNoFocus, bWait)
    End Sub

End Module