#import System
import ctypes  # An included library with Python install.
import datetime
import Visure

# Element status
#def Visure_beforeDeleteElement(bl, lID):
#    return True

#def Visure_afterDeleteElement(bl, lID):
#    return True

#def Visure_beforeUndeleteElement(bl, lID):
#    return True

#def Visure_afterUndeleteElement(bl, lID, lVerID, ElType, lPartition, strPartition, strCode, strName, dtCD, lOrderID, lUserID):
#    return True

#def Visure_beforeDestroyElement(bl, lID):
#    return True

#def Visure_afterDestroyElement(bl, lID):
#    return True

#def Visure_beforeCheckOutElement(bl, lID):
#    return True

#def Visure_afterCheckOutElement(bl, lID, dtCHK, lNewVersionID, lSubElementID, lUserID):
#    return True

#def Visure_beforeCheckInElement(bl, lID, bUpdateLMD):
#    return True

#def Visure_afterCheckInElement(bl, lID, bUpdateLMD):
#    return True

#def Visure_beforeUndoCheckOutElement(bl, lID):
#    return True

#def Visure_afterUndoCheckOutElement(bl, lID, lOldVersionID, bHasChanges):
#    return True


# Element creation
#def Visure_beforeCreateElement(bl, ElType, lPartition, strPartition, strCode, strName, lOrderID):
#    return True

#def Visure_afterCreateElement(bl, lID, lVerID, ElType, lPartition, strPartition, strCode, strName, strEleUUID, strVerUUID, dtCD, lOrderID, lUserID):
#    return True

#def Visure_beforeCreateBlock(bl, strName, ElsType, bContainsAllElements):
#    return True

#def Visure_afterCreateBlock(bl, lID, strName, ElsType, bContainsAllElements, lBlkID):
#    return True

#def Visure_beforeCreateMotive(bl, strName):
#    return True

#def Visure_afterCreateMotive(bl, lID, strName):
#    return True

#def Visure_beforeCreateWorkflow(bl, strName, lAttribute):
#    return True

#def Visure_afterCreateWorkflow(bl, lID, strName, lAttribute):
#    return True


# Types
#def Visure_beforeCreateTypeENUMERATED(bl, strName):
#    return True

#def Visure_afterCreateTypeENUMERATED(bl, lID, strName, lTypID):
#    return True

#def Visure_beforeCreateTypeINTEGER(bl, strName, bFromLimit, FromLimit, bToLimit, ToLimit):
#    return True

#def Visure_afterCreateTypeINTEGER(bl, lID, strName, lTypID, bFromLimit, FromLimit, bToLimit, ToLimit):
#    return True

#def Visure_beforeCreateTypeFLOAT(bl, strName, bFromLimit, FromLimit, bToLimit, ToLimit):
#    return True

#def Visure_afterCreateTypeFLOAT(bl, lID, strName, lTypID, bFromLimit, FromLimit, bToLimit, ToLimit):
#    return True

#def Visure_beforeCreateTypeDATE(bl, strName, bFromLimit, FromLimit, bToLimit, ToLimit):
#    return True

#def Visure_afterCreateTypeDATE(bl, lID, strName, lTypID, bFromLimit, FromLimit, bToLimit, ToLimit):
#    return True

#def Visure_beforeCreateTypeTEXT(bl, strName):
#    return True

#def Visure_afterCreateTypeTEXT(bl, lID, strName, lTypID):
#    return True

#def Visure_beforeCreateTypeBOOLEAN(bl, strName):
#    return True

#def Visure_afterCreateTypeBOOLEAN(bl, lID, strName, lTypID):
#    return True


# Attributes
#def Visure_beforeCreateUD_Attribute(bl, strName, lType, bMultivalued):
#    return True

#def Visure_afterCreateUD_Attribute(bl, lID, strName, lType, lAttrID, bMultivalued):
#    return True


# Element properties
#def Visure_beforeChangeElementCreationDate(bl, lID, dtCD):
#    return True

#def Visure_afterChangeElementCreationDate(bl, lID, dtCD):
#    return True

#def Visure_beforeChangeVersionCreationDate(bl, lID, dtVCD):
#    return True

#def Visure_afterChangeVersionCreationDate(bl, lID, dtVCD):
#    return True

#def Visure_beforeChangeVersionLastModificationDate(bl, lID, dtLMD):
#    return True

#def Visure_afterChangeVersionLastModificationDate(bl, lID, dtLMD):
#    return True

#def Visure_beforeChangeElementOrderID(bl, lID, lNewOrderID):
#    return True

#def Visure_afterChangeElementOrderID(bl, lID, lNewOrderID):
#    return True

#def Visure_beforeChangeAccessPartition(bl, lID, lPartitionCode):
#    return True

#def Visure_afterChangeAccessPartition(bl, lID, lPartitionCode):
#    return True

#def Visure_beforeChangeCode(bl, lID, strCode):
#    return True

#def Visure_afterChangeCode(bl, lID, strCode):
#    return True

#def Visure_beforeChangeName(bl, lID, strName):
#    return True

#def Visure_afterChangeName(bl, lID, strName):
#    return True

#def Visure_beforeChangeDescription(bl, lID, lCRC32):
#    return True

#def Visure_afterChangeDescription(bl, lID, lCRC32):
#    return True

#def Visure_beforeChangeElementParent(bl, lID, lParentID):
#    return True

#def Visure_afterChangeElementParent(bl, lID, lParentID):
#    return True


# Attribute properties
#def Visure_beforeSetAttributeAsMultivalued(bl, lID, bMultivalued):
#    return True

#def Visure_afterSetAttributeAsMultivalued(bl, lID, bMultivalued):
#    return True

#def Visure_beforeSetAttributeAsMandatory(bl, lID, bMandatory):
#    return True

#def Visure_afterSetAttributeAsMandatory(bl, lID, bMandatory):
#    return True

#def Visure_beforeSetAttributeScope(bl, lID, Scope, ScopeEx):
#    return True

#def Visure_afterSetAttributeScope(bl, lID, Scope, ScopeEx):
#    return True

#def Visure_beforeChangeAttributeType(bl, lID, lTypeID):
#    return True

#def Visure_afterChangeAttributeType(bl, lID, lTypeID):
#    return True


# Default values
#def Visure_beforeSetDefaultEnumValue(bl, lID, lEnumValueID):
#    return True

#def Visure_afterSetDefaultEnumValue(bl, lID, lDfltID, lEnumValueID):
#    return True

#def Visure_beforeSetDefaultValue_TXT(bl, lID, Value):
#    return True

#def Visure_afterSetDefaultValue_TXT(bl, lID, lDfltID, Value):
#    return True

#def Visure_beforeSetDefaultValue_INT(bl, lID, Value):
#    return True

#def Visure_afterSetDefaultValue_INT(bl, lID, lDfltID, Value):
#    return True

#def Visure_beforeSetDefaultValue_FLT(bl, lID, Value):
#    return True

#def Visure_afterSetDefaultValue_FLT(bl, lID, lDfltID, Value):
#    return True

#def Visure_beforeSetDefaultValue_DAT(bl, lID, Value):
#    return True

#def Visure_afterSetDefaultValue_DAT(bl, lID, lDfltID, Value):
#    return True

#def Visure_beforeSetDefaultValue_BLN(bl, lID, Value):
#    return True

#def Visure_afterSetDefaultValue_BLN(bl, lID, lDfltID, Value):
#    return True


#def Visure_beforeAddDefaultEnumValue(bl, lID, lEnumValueID, lOrder):
#    return True

#def Visure_afterAddDefaultEnumValue(bl, lID, lDfltID, lEnumValueID, lOrder):
#    return True

#def Visure_beforeAddDefaultValue_TXT(bl, lID, strValue, lOrder):
#    return True

#def Visure_afterAddDefaultValue_TXT(bl, lID, lDfltID, strValue, lOrder):
#    return True

#def Visure_beforeAddDefaultValue_INT(bl, lID, lValue, lOrder):
#    return True

#def Visure_afterAddDefaultValue_INT(bl, lID, lDfltID, lValue, lOrder):
#    return True

#def Visure_beforeAddDefaultValue_FLT(bl, lID, dValue, lOrder):
#    return True

#def Visure_afterAddDefaultValue_FLT(bl, lID, lDfltID, dValue, lOrder):
#    return True

#def Visure_beforeAddDefaultValue_DAT(bl, lID, dtValue, lOrder):
#    return True

#def Visure_afterAddDefaultValue_DAT(bl, lID, lDfltID, dtValue, lOrder):
#    return True

#def Visure_beforeDeleteDefaultValue(bl, lID, lIDValue):
#    return True

#def Visure_afterDeleteDefaultValue(bl, lID, lIDValue):
#    return True


# Type properties
#def Visure_beforeChangeBaseType(bl, lID, baseType):
#    return True

#def Visure_afterChangeBaseType(bl, lID, baseType):
#    return True

#def Visure_beforeUnsetFromLimit(bl, lID):
#    return True

#def Visure_afterUnsetFromLimit(bl, lID):
#    return True

#def Visure_beforeSetFromLimit_INT(bl, lID, Value):
#    return True

#def Visure_afterSetFromLimit_INT(bl, lID, Value):
#    return True

#def Visure_beforeSetFromLimit_FLT(bl, lID, Value):
#    return True

#def Visure_afterSetFromLimit_FLT(bl, lID, Value):
#    return True

#def Visure_beforeSetFromLimit_DAT(bl, lID, Value):
#    return True

#def Visure_afterSetFromLimit_DAT(bl, lID, Value):
#    return True

#def Visure_beforeUnsetToLimit(bl, lID):
#    return True

#def Visure_afterUnsetToLimit(bl, lID):
#    return True

#def Visure_beforeSetToLimit_INT(bl, lID, Value):
#    return True

#def Visure_afterSetToLimit_INT(bl, lID, Value):
#    return True

#def Visure_beforeSetToLimit_FLT(bl, lID, Value):
#    return True

#def Visure_afterSetToLimit_FLT(bl, lID, Value):
#    return True

#def Visure_beforeSetToLimit_DAT(bl, lID, Value):
#    return True

#def Visure_afterSetToLimit_DAT(bl, lID, Value):
#    return True


# Enumerated values
#def Visure_beforeAddEnumValueToType(bl, lType, strValue, lValue, rgb, lOrder):
#    return True

#def Visure_afterAddEnumValueToType(bl, lType, lEnumValueID, strValue, lValue, rgb, lOrder):
#    return True

#def Visure_beforeDeleteEnumValue(bl, lType, lEnumValueID):
#    return True

#def Visure_afterDeleteEnumValue(bl, lType, lEnumValueID):
#    return True

#def Visure_beforeModifyEnumValueToType(bl, lType, lEnumValueID, strNewValue, lValue, rgb, lOrder):
#    return True

#def Visure_afterModifyEnumValueToType(bl, lType, lEnumValueID, strNewValue, lValue, rgb, lOrder):
#    return True


# Values
#def Visure_beforeSetEnumValue(bl, lIDElement, lIDAttr, lIDEnumValue):
#    return True

#def Visure_afterSetEnumValue(bl, lIDElement, lIDAttr, lNewValueID, lIDEnumValue):
#    return True

#def Visure_beforeSetValue_TXT(bl, lIDElement, lIDAttr, Value):
#    return True

#def Visure_afterSetValue_TXT(bl, lIDElement, lIDAttr, lNewValueID, Value):
#    return True

#def Visure_beforeSetValue_INT(bl, lIDElement, lIDAttr, Value):
#    return True

#def Visure_afterSetValue_INT(bl, lIDElement, lIDAttr, lNewValueID, Value):
#    return True

#def Visure_beforeSetValue_FLT(bl, lIDElement, lIDAttr, Value):
#    return True

#def Visure_afterSetValue_FLT(bl, lIDElement, lIDAttr, lNewValueID, Value):
#    return True

#def Visure_beforeSetValue_DAT(bl, lIDElement, lIDAttr, Value):
#    return True

#def Visure_afterSetValue_DAT(bl, lIDElement, lIDAttr, lNewValueID, Value):
#    return True

#def Visure_beforeSetValue_BLN(bl, lIDElement, lIDAttr, Value):
#    return True

#def Visure_afterSetValue_BLN(bl, lIDElement, lIDAttr, lNewValueID, Value):
#    return True


#def Visure_beforeAddEnumValue(bl, lIDElement, lIDAttr, lIDEnumValue, lOrder):
#    return True

#def Visure_afterAddEnumValue(bl, lIDElement, lIDAttr, lNewValueID, lIDEnumValue, lOrder):
#    return True

#def Visure_beforeAddValue_TXT(bl, lIDElement, lIDAttr, Value, lOrder):
#    return True

#def Visure_afterAddValue_TXT(bl, lIDElement, lIDAttr, lNewValueID, Value, lOrder):
#    return True

#def Visure_beforeAddValue_INT(bl, lIDElement, lIDAttr, Value, lOrder):
#    return True

#def Visure_afterAddValue_INT(bl, lIDElement, lIDAttr, lNewValueID, Value, lOrder):
#    return True

#def Visure_beforeAddValue_FLT(bl, lIDElement, lIDAttr, Value, lOrder):
#    return True

#def Visure_afterAddValue_FLT(bl, lIDElement, lIDAttr, lNewValueID, Value, lOrder):
#    return True

#def Visure_beforeAddValue_DAT(bl, lIDElement, lIDAttr, Value, lOrder):
#    return True

#def Visure_afterAddValue_DAT(bl, lIDElement, lIDAttr, lNewValueID, Value, lOrder):
#    return True


#def Visure_beforeModifyEnumValue(bl, lIDElement, lIDAttr, lValueID, lIDEnumValue, lOrder):
#    return True

#def Visure_afterModifyEnumValue(bl, lIDElement, lIDAttr, lValueID, lIDEnumValue, lOrder):
#    return True

#def Visure_beforeModifyValue_TXT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_afterModifyValue_TXT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_beforeModifyValue_INT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_afterModifyValue_INT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_beforeModifyValue_FLT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_afterModifyValue_FLT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_beforeModifyValue_DAT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_afterModifyValue_DAT(bl, lIDElement, lIDAttr, lValueID, Value, lOrder):
#    return True

#def Visure_beforeModifyValue_BLN(bl, lIDElement, lIDAttr, lValueID, Value):
#    return True

#def Visure_afterModifyValue_BLN(bl, lIDElement, lIDAttr, lValueID, Value):
#    return True


#def Visure_beforeDeleteValue(bl, lIDElement, lIDAttr, lIDValue):
#    return True

#def Visure_afterDeleteValue(bl, lIDElement, lIDAttr, lIDValue):
#    return True

#def Visure_beforeResetToDefault(bl, lIDElement, lIDAttr):
#    return True

#def Visure_afterResetToDefault(bl, lIDElement, lIDAttr):
#    return True


# Specifications
#def Visure_beforeChangeBlockPictureAndFormat(bl, lID, ePictureFormat):
#    return True

#def Visure_afterChangeBlockPictureAndFormat(bl, lID, ePictureFormat):
#    return True

#def Visure_beforeChangeBlockAutoAssign(bl, lID, eBlockAutoAssignValue):
#    return True

#def Visure_afterChangeBlockAutoAssign(bl, lID, eBlockAutoAssignValue):
#    return True

#def Visure_beforeChangeBlockShowHeadingNumber(bl, lID, bShowHeadingNumber):
#    return True

#def Visure_afterChangeBlockShowHeadingNumber(bl, lID, bShowHeadingNumber):
#    return True

#def Visure_beforeChangeBlockPrefix(bl, lID, strPrefix):
#    return True

#def Visure_afterChangeBlockPrefix(bl, lID, strPrefix):
#    return True

#def Visure_beforeIncludeElementInBlock(bl, lIDBlock, lIDElement):
#    return True

#def Visure_afterIncludeElementInBlock(bl, lIDBlock, lIDElement):
#    return True

#def Visure_beforeExcludeElementFromBlock(bl, lIDBlock, lIDElement):
#    return True

#def Visure_afterExcludeElementFromBlock(bl, lIDBlock, lIDElement):
#    return True

#def Visure_beforeRelateAttributeToBlock(bl, lIDAttribute, lIDBlock):
#    return True

#def Visure_afterRelateAttributeToBlock(bl, lIDAttribute, lIDBlock):
#    return True

#def Visure_beforeUnrelateAttributeFromBlock(bl, lIDAttribute, lIDBlock):
#    return True

#def Visure_afterUnrelateAttributeFromBlock(bl, lIDAttribute, lIDBlock):
#    return True

#def Visure_beforeSetBlockToContainAllElements(bl, lID, bContainAllElements):
#    return True

#def Visure_afterSetBlockToContainAllElements(bl, lID, bContainAllElements):
#    return True

#def Visure_beforeSetBlockParent(bl, lIDBlock, lIDParent, lIDMotive):
#    return True

#def Visure_afterSetBlockParent(bl, lIDBlock, lIDParent, lIDMotive):
#    return True

#def Visure_beforeUnsetBlockParent(bl, lIDBlock):
#    return True

#def Visure_afterUnsetBlockParent(bl, lIDBlock):
#    return True


# Access partitions
#def Visure_beforeCreatePartition(bl, strName, bIsByDefault, element_Types, element_TypesEx):
#    return True

#def Visure_afterCreatePartitionPrj(bl, lProjID, lID, strName, dtCD, bIsByDefault, element_Types, element_TypesEx, lUserID):
#    return True

#def Visure_afterCreatePartition(bl, lID, strName, dtCD, bIsByDefault, element_Types, element_TypesEx, lUserID):
#    return True

#def Visure_beforeChangePartitionName(bl, lID, strName):
#    return True

#def Visure_afterChangePartitionName(bl, lID, strName):
#    return True

#def Visure_beforeDeletePartition(bl, lID):
#    return True

#def Visure_afterDeletePartition(bl, lID):
#    return True


# Workflows
#def Visure_beforeChangeWorkflowGraphic(bl, lID):
#    return True

#def Visure_afterChangeWorkflowGraphic(bl, lID):
#    return True


# Links
#def Visure_beforeCreateAssociationLink(bl, lSourceElementID, lTargetElementID, lMotiveID, bSuspect):
#    return True

#def Visure_afterCreateAssociationLink(bl, lID, lSourceElementID, lTargetElementID, lMotiveID, bSuspect):
#    return True

#def Visure_beforeChangeAssociationLinkID(bl, lOldID, lNewID):
#    return True

#def Visure_afterChangeAssociationLinkID(bl, lOldID, lNewID):
#    return True

#def Visure_beforeChangeAssociationLinkMotive(bl, lID, lMotiveID):
#    return True

#def Visure_afterChangeAssociationLinkMotive(bl, lID, lMotiveID):
#    return True

#def Visure_beforeChangeAssociationLinkDirection(bl, lID):
#    return True

#def Visure_afterChangeAssociationLinkDirection(bl, lID):
#    return True

#def Visure_beforeSetRelationshipSuspect(bl, lID, strReason):
#    return True

#def Visure_afterSetRelationshipSuspect(bl, lID, strReason):
#    return True

#def Visure_beforeUnsetRelationshipSuspect(bl, lID):
#    return True

#def Visure_afterUnsetRelationshipSuspect(bl, lID):
#    return True

#def Visure_beforeDeleteAssociationLink(bl, lID):
#    return True

#def Visure_afterDeleteAssociationLink(bl, lID, lSourceElementID, lTargetElementID):
#    return True


# Projects
#def Visure_beforeCreateProject(bl, lID, strName):
#    return True

#def Visure_afterCreateProject(bl, lID, strName):
#    return True

#def Visure_beforeRestoreProject(bl, lID, strName):
#    return True

#def Visure_afterRestoreProject(bl, lID, strName):
#    return True

#def Visure_beforeDeleteProject(bl, lID):
#    return True

#def Visure_afterDeleteProject(bl, lID):
#    return True


# Users 
#def Visure_beforeCreateUser(bl, lID, strLogin):
#    return True

#def Visure_afterCreateUser(bl, lID, strLogin):
#    return True

#def Visure_beforeDeleteUser(bl, lID):
#    return True

#def Visure_afterDeleteUser(bl, lID):
#    return True

#def Visure_beforeChangeUserLogin(bl, lID, strLogin):
#    return True

#def Visure_afterChangeUserLogin(bl, lID, strLogin):
#    return True

#def Visure_beforeChangeUserPassword(bl, lID, strPassword):
#    return True

#def Visure_afterChangeUserPassword(bl, lID, strPassword):
#    return True

#def Visure_beforeUndeleteUser(bl, lID, strLogin):
#    return True

#def Visure_afterUndeleteUser(bl, lID, strLogin):
#    return True

#def Visure_beforeDestroyUser(bl, lID, lUserToAssignElements):
#    return True

#def Visure_afterDestroyUser(bl, lID, lUserToAssignElements):
#    return True


# Components
#def Visure_beforePublishComponent(bl, lComponentID, lProjectID, lBaselineID):
#    return True

#def Visure_afterPublishComponent(bl, lComponentID, lProjectID, lBaselineID):
#    return True

#def Visure_beforeUnpublishComponent(bl, lComponentID, lProjectID):
#    return True

#def Visure_afterUnpublishComponent(bl, lComponentID, lProjectID):
#    return True


#def Visure_beforeSetReuseSuspect(bl, lID):
#    return True

#def Visure_afterSetReuseSuspect(bl, lID):
#    return True

#def Visure_afterSetReuseSuspectPrj(bl, lEleID, lProjectID):
#    return True

#def Visure_beforeUnsetReuseSuspect(bl, lID):
#    return True

#def Visure_afterUnsetReuseSuspect(bl, lID):
#    return True


#Baselines
#def Visure_beforeCreateBaseline(bl, lBaselineID):
#    return True

#def Visure_afterCreateBaseline(bl, lBaselineID):
#    return True


# Bulk notification
#def Visure_startBulkNotification(bl):
#    return True

#def Visure_endBulkNotification(bl):
#    return True
