/* ****************************************************************************
*
* Copyright (c) Microsoft Corporation.
*
* This source code is subject to terms and conditions of the Apache License, Version 2.0. A
* copy of the license can be found in the License.html file at the root of this distribution. If
* you cannot locate the Apache License, Version 2.0, please send an email to
* vspython@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
* by the terms of the Apache License, Version 2.0.
*
* You must not remove this notice, or any other, from this software.
*
* ***************************************************************************/
using System;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Shell.Interop;
namespace Microsoft.VisualStudio.Project
{
#region structures
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct _DROPFILES
{
public Int32 pFiles;
public Int32 X;
public Int32 Y;
public Int32 fNC;
public Int32 fWide;
}
#endregion
#region enums
///
/// Defines the currect state of a property page.
///
[Flags]
public enum PropPageStatus
{
Dirty = 0x1,
Validate = 0x2,
Clean = 0x4
}
///
/// Defines the status of the command being queried
///
[Flags]
[SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames")]
[SuppressMessage("Microsoft.Design", "CA1008:EnumsShouldHaveZeroValue")]
public enum QueryStatusResult
{
///
/// The command is not supported.
///
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "NOTSUPPORTED")]
NOTSUPPORTED = 0,
///
/// The command is supported
///
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SUPPORTED")]
SUPPORTED = 1,
///
/// The command is enabled
///
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "ENABLED")]
ENABLED = 2,
///
/// The command is toggled on
///
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "LATCHED")]
LATCHED = 4,
///
/// The command is toggled off (the opposite of LATCHED).
///
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "NINCHED")]
NINCHED = 8,
///
/// The command is invisible.
///
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "INVISIBLE")]
INVISIBLE = 16
}
///
/// Defines the type of item to be added to the hierarchy.
///
public enum HierarchyAddType
{
AddNewItem,
AddExistingItem
}
///
/// Defines the component from which a command was issued.
///
public enum CommandOrigin
{
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Ui")]
UiHierarchy,
OleCommandTarget
}
///
/// Defines the current status of the build process.
///
public enum MSBuildResult
{
///
/// The build is currently suspended.
///
Suspended,
///
/// The build has been restarted.
///
Resumed,
///
/// The build failed.
///
Failed,
///
/// The build was successful.
///
Successful,
}
///
/// Defines the type of action to be taken in showing the window frame.
///
public enum WindowFrameShowAction
{
DoNotShow,
Show,
ShowNoActivate,
Hide,
}
///
/// Defines drop types
///
public enum DropDataType
{
None,
Shell,
VsStg,
VsRef
}
///
/// Used by the hierarchy node to decide which element to redraw.
///
[Flags]
[SuppressMessage("Microsoft.Naming", "CA1714:FlagsEnumsShouldHavePluralNames")]
public enum UIHierarchyElement
{
None = 0,
///
/// This will be translated to VSHPROPID_IconIndex
///
Icon = 1,
///
/// This will be translated to VSHPROPID_StateIconIndex
///
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
SccState = 2,
///
/// This will be translated to VSHPROPID_Caption
///
Caption = 4,
///
/// This will be translated to VSHPROPID_OverlayIconIndex
///
OverlayIcon = 8
}
///
/// Defines the global propeties used by the msbuild project.
///
public enum GlobalProperty
{
///
/// Property specifying that we are building inside VS.
///
BuildingInsideVisualStudio,
///
/// The VS installation directory. This is the same as the $(DevEnvDir) macro.
///
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Env")]
DevEnvDir,
///
/// The name of the solution the project is created. This is the same as the $(SolutionName) macro.
///
SolutionName,
///
/// The file name of the solution. This is the same as $(SolutionFileName) macro.
///
SolutionFileName,
///
/// The full path of the solution. This is the same as the $(SolutionPath) macro.
///
SolutionPath,
///
/// The directory of the solution. This is the same as the $(SolutionDir) macro.
///
SolutionDir,
///
/// The extension of teh directory. This is the same as the $(SolutionExt) macro.
///
SolutionExt,
///
/// The fxcop installation directory.
///
FxCopDir,
///
/// The ResolvedNonMSBuildProjectOutputs msbuild property
///
[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "VSIDE")]
VSIDEResolvedNonMSBuildProjectOutputs,
///
/// The Configuartion property.
///
Configuration,
///
/// The platform property.
///
Platform,
///
/// The RunCodeAnalysisOnce property
///
RunCodeAnalysisOnce,
///
/// The VisualStudioStyleErrors property
///
VisualStudioStyleErrors,
}
#endregion
public class AfterProjectFileOpenedEventArgs : EventArgs
{
}
public class BeforeProjectFileClosedEventArgs : EventArgs
{
#region fields
private bool _removed;
private IVsHierarchy _hierarchy;
#endregion
#region properties
///
/// true if the project was removed from the solution before the solution was closed. false if the project was removed from the solution while the solution was being closed.
///
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
public bool Removed
{
get { return _removed; }
}
public IVsHierarchy Hierarchy
{
get
{
return _hierarchy;
}
}
#endregion
#region ctor
public BeforeProjectFileClosedEventArgs(IVsHierarchy hierarchy, bool removed)
{
this._removed = removed;
_hierarchy = hierarchy;
}
#endregion
}
///
/// Argument of the event raised when a project property is changed.
///
[SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")]
public class ProjectPropertyChangedArgs : EventArgs
{
private string propertyName;
private string oldValue;
private string newValue;
public ProjectPropertyChangedArgs(string propertyName, string oldValue, string newValue)
{
this.propertyName = propertyName;
this.oldValue = oldValue;
this.newValue = newValue;
}
public string NewValue
{
get { return newValue; }
}
public string OldValue
{
get { return oldValue; }
}
public string PropertyName
{
get { return propertyName; }
}
}
///
/// This class is used for the events raised by a HierarchyNode object.
///
public class HierarchyNodeEventArgs : EventArgs
{
private HierarchyNode child;
public HierarchyNodeEventArgs(HierarchyNode child)
{
this.child = child;
}
public HierarchyNode Child
{
get { return this.child; }
}
}
///
/// Event args class for triggering file change event arguments.
///
public class FileChangedOnDiskEventArgs : EventArgs
{
#region Private fields
///
/// File name that was changed on disk.
///
private string fileName;
///
/// The item ide of the file that has changed.
///
private uint itemID;
///
/// The reason the file has changed on disk.
///
private _VSFILECHANGEFLAGS fileChangeFlag;
#endregion
///
/// Constructs a new event args.
///
/// File name that was changed on disk.
/// The item id of the file that was changed on disk.
public FileChangedOnDiskEventArgs(string fileName, uint id, _VSFILECHANGEFLAGS flag)
{
this.fileName = fileName;
this.itemID = id;
this.fileChangeFlag = flag;
}
///
/// Gets the file name that was changed on disk.
///
/// The file that was changed on disk.
public string FileName
{
get
{
return this.fileName;
}
}
///
/// Gets item id of the file that has changed
///
/// The file that was changed on disk.
public uint ItemID
{
get
{
return this.itemID;
}
}
///
/// The reason while the file has chnaged on disk.
///
/// The reason while the file has chnaged on disk.
public _VSFILECHANGEFLAGS FileChangeFlag
{
get
{
return this.fileChangeFlag;
}
}
}
}