css_enhanced_waf/devtools/macros/Valve.VB
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

270 lines
20 KiB
VB.net
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Imports EnvDTE
Imports System.Diagnostics
Imports System.IO
Public Module Valve
Sub CloseToolWindows()
DTE.ExecuteCommand("View.CommandWindow")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Close()
DTE.Windows.Item("{73F6DD5A-437E-11D3-B88E-00C04F79F802}").Close()
DTE.ExecuteCommand("View.Output")
DTE.Windows.Item(Constants.vsWindowKindOutput).Close()
DTE.ExecuteCommand("View.TaskList")
DTE.Windows.Item(Constants.vsWindowKindTaskList).Close()
DTE.ExecuteCommand("View.FindResults1")
DTE.Windows.Item(Constants.vsWindowKindFindResults1).Close()
DTE.ExecuteCommand("View.FindResults2")
DTE.Windows.Item(Constants.vsWindowKindFindResults2).Close()
End Sub
Sub ModuleHeader()
'DESCRIPTION: This macro adds the standard copyright information to the top of a module.
ActiveDocument.Selection.StartOfDocument()
' Create the standard file prologue
Dim Header As String
Header = "//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======" + vbCrLf
Header = Header + "//" + vbCrLf
Header = Header + "// Purpose: " + vbCrLf
Header = Header + "//" + vbCrLf
Header = Header + "//=============================================================================" + vbCrLf + vbCrLf
' Add the single inclusion macros for header files
Dim DotHPos As String
DotHPos = InStr(ActiveDocument.Name, ".h")
Dim InclusionKey As String
If DotHPos > 0 Then
InclusionKey = Left(ActiveDocument.Name, DotHPos - 1)
InclusionKey = UCase(InclusionKey) + "_H"
Header = Header + "#ifndef " + InclusionKey + vbCrLf
Header = Header + "#define " + InclusionKey + vbCrLf
Header = Header + "#ifdef _WIN32" + vbCrLf
Header = Header + "#pragma once" + vbCrLf
Header = Header + "#endif" + vbCrLf + vbCrLf
End If
ActiveDocument.Selection.Text = Header
' Add the "#endif" for header files
If DotHPos > 0 Then
ActiveDocument.Selection.EndOfDocument()
Header = vbCrLf + "#endif // " + InclusionKey + vbCrLf
ActiveDocument.Selection.Text = Header
End If
ActiveDocument.Selection.StartOfDocument()
End Sub
Sub TypeHeader()
'DESCRIPTION: This macro adds a description block above a type declaration
' Select the text on the current line and store it for parsing
ActiveDocument.Selection.SelectLine()
Dim TypeDec As String
TypeDec = ActiveDocument.Selection.Text
ActiveDocument.Selection.StartOfLine()
' Check to make sure that this line is a type delcaration
If InStr(TypeDec, "class") = 0 And InStr(TypeDec, "struct") = 0 And InStr(TypeDec, "interface") = 0 And InStr(TypeDec, "enum") = 0 Then
MsgBox("This line does not contain a class, struct, interface, or enum declaration.")
Else
' Construct the type header
Dim Header As String
Header = "//-----------------------------------------------------------------------------" + vbCrLf
Header = Header + "// Purpose: " + vbCrLf
Header = Header + "//-----------------------------------------------------------------------------" + vbCrLf
' Write the header
ActiveDocument.Selection.Text = Header
End If
End Sub
Sub FunctionHeader()
'DESCRIPTION: This macro creates a function header for C functions or C++ member functions
' Select the text on the current line and store it for parsing
ActiveDocument.Selection.SelectLine()
Dim FunctionImp = ActiveDocument.Selection.Text
ActiveDocument.Selection.StartOfLine()
Dim LineNum = ActiveDocument.Selection.CurrentLine
Dim FunctionName = Left(FunctionImp, InStr(FunctionImp, "("))
' Check to make sure that this line is a class delcaration
If Len(FunctionName) = 0 Then
MsgBox("This line does not contain a function implementation.")
Else
Dim FuncArray = Split(FunctionName)
Dim ReturnType = ""
' Get the return type and function name
Dim Element
For Each Element In FuncArray
If InStr(Element, "(") = 0 Then
ReturnType = ReturnType + Element + " "
Else
FunctionName = Left(Element, Len(Element) - 1)
End If
Next
ReturnType = Trim(ReturnType)
If ReturnType = "BOOL" Then
ReturnType = "Returns TRUE on success, FALSE on failure."
ElseIf ReturnType = "bool" Then
ReturnType = "Returns true on success, false on failure."
End If
' Place the function parameters in its own string
Dim Params = Right(FunctionImp, Len(FunctionImp) - InStr(FunctionImp, "("))
Do While InStr(Params, ")") = 0
ActiveDocument.Selection.LineDown()
ActiveDocument.Selection.SelectLine()
Params = Left(Params, InStr(Params, vbCrLf) - 1)
Params = Params + Trim(ActiveDocument.Selection.Text)
Loop
ActiveDocument.Selection.GotoLine(LineNum - 1)
Params = Left(Params, InStr(Params, ")") - 1)
Params = Trim(Params)
' Remove any /* */ comments from Params
Dim Pos = InStr(Params, "/*")
Do While Pos
Dim EndComment = InStr(Params, "*/")
If EndComment Then
Dim StartString = Left(Params, InStr(Params, "/*") - 1)
Dim Pos2 = Len(Params) - InStr(Params, "*/") + 3
Dim EndString = Mid(Params, InStr(Params, "*/") + 2, Pos2)
StartString = Trim(StartString)
EndString = Trim(EndString)
Params = StartString + EndString
Pos = InStr(Params, "/*")
Else
Pos = 0
End If
Loop
' Create an array of individual parameters
Dim ParamsArray = Split(Params, ",")
' Construct the parameters section
Dim ParamSection = ""
Dim AddNewLine = 0
For Each Element In ParamsArray
Element = Trim(Element)
Element = Right(Element, Len(Element) - InStrRev(Element, " "))
If AddNewLine = 1 Then
ParamSection = ParamSection + vbCrLf + "// "
End If
ParamSection = ParamSection + Element + " - "
AddNewLine = 1
Next
' Construct the rest of the header
Dim Header = "//-----------------------------------------------------------------------------" + vbCrLf
Header = Header + "// Purpose: " + vbCrLf
If ParamSection <> "void - " And ParamSection <> "" Then
Header = Header + "// Input : " + ParamSection + vbCrLf
End If
If ReturnType <> "void" And ReturnType <> "" Then
Header = Header + "// Output : " + ReturnType + vbCrLf
End If
Header = Header + "//-----------------------------------------------------------------------------" + vbCrLf
' Write the header
ActiveDocument.Selection.Text = Header
End If
End Sub
'DESCRIPTION: Comments in or out a line of code, then moves to the next line.
Sub ToggleComment()
ActiveDocument.Selection.SelectLine()
Dim LineText As String = ActiveDocument.Selection.Text
Dim FirstTwoChars = Left(LineText, 2)
If Len(FirstTwoChars) < 2 Then
ActiveDocument.Selection.Text = ""
ElseIf FirstTwoChars = "//" Then
ActiveDocument.Selection.Text = Right(LineText, Len(LineText) - 2)
Else
ActiveDocument.Selection.Text = "//" + LineText
End If
End Sub
Sub JumpToHeader()
'////////////////////////////////////////////
'DESCRIPTION: Switch Between Header and cpp
'////////////////////////////////////////////
Dim myDocument
Dim a
Dim b
Dim c
Dim Flag
Dim Flag1
Flag1 = 0
Flag = 1
a = ActiveDocument.FullName
Dim tmp = InStr(a, ".cpp")
If tmp Then
b = Left(a, Len(a) - 3) + "h"
c = Left(a, Len(a) - 3) + "h"
Flag1 = 1
Else
tmp = InStr(a, ".c")
If tmp Then
b = Left(a, Len(a) - 1) + "h"
c = Left(a, Len(a) - 1) + "h"
Flag1 = 1
Else
tmp = InStr(a, ".h")
If tmp Then
b = Left(a, Len(a) - 1) + "c"
c = Left(a, Len(a) - 1) + "cpp"
Flag1 = 1
End If
End If
End If
For Each myDocument In Application.Documents
If myDocument.FullName = b Then
myDocument.Active = True
Flag = 0
Exit For
End If
If myDocument.FullName = c Then
myDocument.Active = True
Flag = 0
b = c
Exit For
End If
Next
If Flag And Flag1 Then
DTE.Documents.Open(b, "Text")
End If
End Sub
End Module