from enum import Enum


class ElType(Enum):
	"""Enumeration of the element types in Archicad."""

	WALL = "Wall"
	COLUMN = "Column"
	BEAM = "Beam"
	WINDOW = "Window"
	DOOR = "Door"
	OBJECT = "Object"
	LAMP = "Lamp"
	SLAB = "Slab"
	ROOF = "Roof"
	MESH = "Mesh"
	DIMENSION = "Dimension"
	RADIALDIMENSION = "RadialDimension"
	LEVELDIMENSION = "LevelDimension"
	ANGLEDIMENSION = "AngleDimension"
	TEXT = "Text"
	LABEL = "Label"
	ZONE = "Zone"
	HATCH = "Hatch"
	LINE = "Line"
	POLYLINE = "PolyLine"
	ARC = "Arc"
	CIRCLE = "Circle"
	SPLINE = "Spline"
	HOTSPOT = "Hotspot"
	CUTPLANE = "CutPlane"
	CAMERA = "Camera"
	CAMSET = "CamSet"
	GROUP = "Group"
	SECTELEM = "SectElem"
	DRAWING = "Drawing"
	PICTURE = "Picture"
	DETAIL = "Detail"
	ELEVATION = "Elevation"
	INTERIORELEVATION = "InteriorElevation"
	WORKSHEET = "Worksheet"
	HOTLINK = "Hotlink"
	CURTAINWALL = "CurtainWall"
	CURTAINWALLSEGMENT = "CurtainWallSegment"
	CURTAINWALLFRAME = "CurtainWallFrame"
	CURTAINWALLPANEL = "CurtainWallPanel"
	CURTAINWALLJUNCTION = "CurtainWallJunction"
	CURTAINWALLACCESSORY = "CurtainWallAccessory"
	SHELL = "Shell"
	SKYLIGHT = "Skylight"
	MORPH = "Morph"
	CHANGEMARKER = "ChangeMarker"
	STAIR = "Stair"
	RISER = "Riser"
	TREAD = "Tread"
	STAIRSTRUCTURE = "StairStructure"
	RAILING = "Railing"
	RAILINGTOPRAIL = "RailingToprail"
	RAILINGHANDRAIL = "RailingHandrail"
	RAILINGRAIL = "RailingRail"
	RAILINGPOST = "RailingPost"
	RAILINGINNERPOST = "RailingInnerPost"
	RAILINGBALUSTER = "RailingBaluster"
	RAILINGPANEL = "RailingPanel"
	RAILINGSEGMENT = "RailingSegment"
	RAILINGNODE = "RailingNode"
	RAILINGBALUSTERSET = "RailingBalusterSet"
	RAILINGPATTERN = "RailingPattern"
	RAILINGTOPRAILEND = "RailingToprailEnd"
	RAILINGHANDRAILEND = "RailingHandrailEnd"
	RAILINGRAILEND = "RailingRailEnd"
	RAILINGTOPRAILCONNECTION = "RailingToprailConnection"
	RAILINGHANDRAILCONNECTION = "RailingHandrailConnection"
	RAILINGRAILCONNECTION = "RailingRailConnection"
	RAILINGENDFINISH = "RailingEndFinish"
	BEAMSEGMENT = "BeamSegment"
	COLUMNSEGMENT = "ColumnSegment"
	OPENING = "Opening"
	UNKNOWN = "Unknown"


class AttrType(Enum):
	"""Enumeration of the attribute types in Archicad."""

	LAYER = "Layer"
	LINE = "Line"
	FILL = "Fill"
	COMPOSITE = "Composite"
	SURFACE = "Surface"
	LAYERCOMBINATION = "LayerCombination"
	ZONECATEGORY = "ZoneCategory"
	PROFILE = "Profile"
	PENTABLE = "PenTable"
	MEPSYSTEM = "MEPSystem"
	OPERATIONPROFILE = "OperationProfile"
	BUILDINGMATERIAL = "BuildingMaterial"


class PropertyDataType(Enum):
	"""Enumeration of the Property Definition Data Types."""

	NUMBER = 0
	INTEGER = 1
	STRING = 2
	BOOLEAN = 3
	LENGTH = 4
	AREA = 5
	VOLUME = 6
	ANGLE = 7
	NUMBERLIST = 8
	INTEGERLIST = 9
	STRINGLIST = 10
	BOOLEANLIST = 11
	LENGTHLIST = 12
	AREALIST = 13
	VOLUMELIST = 14
	ANGLELIST = 15
	SINGLEENUM = 16
	MULTIENUM = 17


class ProjectInfo(Enum):
	PROJECTNAME = "PROJECTNAME"
	PROJECT_DESCRIPTION = "PROJECT_DESCRIPTION"
	PROJECT_ID = "PROJECT_ID"
	PROJECT_CODE = "PROJECT_CODE"
	PROJECTNUMBER = "PROJECTNUMBER"
	PROJECTSTATUS = "PROJECTSTATUS"
	KEYWORDS = "KEYWORDS"
	NOTES = "NOTES"
	SITE_NAME = "SITE_NAME"
	SITE_DESCRIPTION = "SITE_DESCRIPTION"
	SITE_ID = "SITE_ID"
	SITEFULLADDRESS = "SITEFULLADDRESS"
	SITEADDRESS1 = "SITEADDRESS1"
	SITEADDRESS2 = "SITEADDRESS2"
	SITEADDRESS3 = "SITEADDRESS3"
	SITEPOSTBOX = "SITEPOSTBOX"
	SITECITY = "SITECITY"
	SITESTATE = "SITESTATE"
	SITEPOSTCODE = "SITEPOSTCODE"
	SITECOUNTRY = "SITECOUNTRY"
	SITEGROSSPERIMETER = "SITEGROSSPERIMETER"
	SITEGROSSAREA = "SITEGROSSAREA"
	BUILDING_NAME = "BUILDING_NAME"
	BUILDING_DESCRIPTION = "BUILDING_DESCRIPTION"
	BUILDING_ID = "BUILDING_ID"
	CONTACT_FULLNAME = "CONTACT_FULLNAME"
	CONTACT_PREFIXTITLE = "CONTACT_PREFIXTITLE"
	CONTACT_GIVENNAME = "CONTACT_GIVENNAME"
	CONTACT_MIDDLENAME = "CONTACT_MIDDLENAME"
	CONTACT_FAMILYNAME = "CONTACT_FAMILYNAME"
	CONTACT_SUFFIXTITLE = "CONTACT_SUFFIXTITLE"
	CONTACT_NAMEORDER = "CONTACT_NAMEORDER"
	CONTACT_ID = "CONTACT_ID"
	CONTACT_ROLE = "CONTACT_ROLE"
	CONTACT_DEPARTMENT = "CONTACT_DEPARTMENT"
	CAD_TECHNICIAN_FULLNAME = "CAD_TECHNICIAN_FULLNAME"
	CAD_TECHNICIAN_PREFIXTITLE = "CAD_TECHNICIAN_PREFIXTITLE"
	CAD_TECHNICIAN_GIVENNAME = "CAD_TECHNICIAN_GIVENNAME"
	CAD_TECHNICIAN_MIDDLENAME = "CAD_TECHNICIAN_MIDDLENAME"
	CAD_TECHNICIAN_FAMILYNAME = "CAD_TECHNICIAN_FAMILYNAME"
	CAD_TECHNICIAN_SUFFIXTITLE = "CAD_TECHNICIAN_SUFFIXTITLE"
	CAD_TECHNICIAN_NAMEORDER = "CAD_TECHNICIAN_NAMEORDER"
	CONTACTCOMPANY = "CONTACTCOMPANY"
	CONTACT_COMPANYCODE = "CONTACT_COMPANYCODE"
	CONTACTFULLADDRESS = "CONTACTFULLADDRESS"
	CONTACTADDRESS1 = "CONTACTADDRESS1"
	CONTACTADDRESS2 = "CONTACTADDRESS2"
	CONTACTADDRESS3 = "CONTACTADDRESS3"
	CONTACTPOSTBOX = "CONTACTPOSTBOX"
	CONTACTCITY = "CONTACTCITY"
	CONTACTSTATE = "CONTACTSTATE"
	CONTACTPOSTCODE = "CONTACTPOSTCODE"
	CONTACTCOUNTRY = "CONTACTCOUNTRY"
	CONTACTEMAIL = "CONTACTEMAIL"
	CONTACTPHONE = "CONTACTPHONE"
	CONTACTFAX = "CONTACTFAX"
	CONTACTWEB = "CONTACTWEB"
	CLIENT_FULLNAME = "CLIENT_FULLNAME"
	CLIENT_PREFIXTITLE = "CLIENT_PREFIXTITLE"
	CLIENT_GIVENNAME = "CLIENT_GIVENNAME"
	CLIENT_MIDDLENAME = "CLIENT_MIDDLENAME"
	CLIENT_FAMILYNAME = "CLIENT_FAMILYNAME"
	CLIENT_SUFFIXTITLE = "CLIENT_SUFFIXTITLE"
	CLIENT_NAMEORDER = "CLIENT_NAMEORDER"
	CLIENTCOMPANY = "CLIENTCOMPANY"
	CLIENTFULLADDRESS = "CLIENTFULLADDRESS"
	CLIENTADDRESS1 = "CLIENTADDRESS1"
	CLIENTADDRESS2 = "CLIENTADDRESS2"
	CLIENTADDRESS3 = "CLIENTADDRESS3"
	CLIENTPOSTBOX = "CLIENTPOSTBOX"
	CLIENTCITY = "CLIENTCITY"
	CLIENTSTATE = "CLIENTSTATE"
	CLIENTPOSTCODE = "CLIENTPOSTCODE"
	CLIENTCOUNTRY = "CLIENTCOUNTRY"
	CLIENTEMAIL = "CLIENTEMAIL"
	CLIENTPHONE = "CLIENTPHONE"
	CLIENTFAX = "CLIENTFAX"


class Filter(Enum):
	"""Enumeration of supported filter fields."""

	# built-ins
	ID = "ID"
	PARENT_ID = "parent_ID"
	HOTLINK_ID = "HOTLINK_ID"
	HLE_ID = "HLE_ID"
	LAYER = "layer"
	GUID = "GUID"
	ELEMENT_TYPE = "element_type"

	PROPERTY = "property"

	# geometry
	LENGTH = "length"
	HEIGHT = "height"
