DATA_TYPES = {
    "X": "BIT",
    "Y": "BIT",
    "C": "BIT",
    "T": "BIT",
    "CT": "BIT",
    "SC": "BIT",
    "DS": "INT",
    "DD": "INT2",
    "DH": "HEX",
    "DF": "FLOAT",
    "XD": "HEX",
    "YD": "HEX",
    "TD": "INT",
    "CTD": "INT2",
    "SD": "INT",
    "TXT": "TXT",
}

# This file contains the mapping of Click PLC windows to their allowed BIT types and input fields
CLICK_PLC_WINDOW_MAPPING = {
    "TfrmContactNO": {  # "Contact Normally Open"
        "TEdit1": ["X", "Y", "C", "T", "CT", "SC"],
    },
    "TfrmContactNC": {  # "Contact Normally Closed"
        "TEdit1": ["X", "Y", "C", "T", "CT", "SC"],
    },
    "TfrmEdgeContact": {  # "Edge Contact"
        "TEdit1": ["X", "Y", "C", "T", "CT", "SC"],
    },
    "TfrmContactCompare": {  # "Compare (A with B)"
        "TEdit1": ["DS", "TD", "SD", "DD", "DH", "CTD", "DF"],
        "TEdit2": ["DS", "TD", "SD", "DD", "DH", "CTD", "DF"],
    },
    "TfrmOut": {  # "Out"
        "TEdit2": ["X", "Y", "C", "T", "CT", "SC"],
        "TEdit1": ["X", "Y", "C", "T", "CT", "SC"],
    },
    "TfrmSet": {  # "Set"
        "TEdit2": ["X", "Y", "C", "T", "CT", "SC"],
        "TEdit1": ["X", "Y", "C", "T", "CT", "SC"],
    },
    "TfrmCoilReset": {  # "Reset"
        "TEdit2": ["X", "Y", "C", "T", "CT", "SC"],
        "TEdit1": ["X", "Y", "C", "T", "CT", "SC"],
    },
    "TfrmTimer": {  # "Timer"
        "TEdit3": ["T"],  # Timer BIT address
        "TEdit2": ["DS"],  # Timer value (DS)
    },
    "TfrmCounter": {  # "Counter"
        "TEdit4": ["CT"],  # Counter BIT address
        "TEdit3": ["DS", "DD"],  # Counter value (DS/DD)
    },
    "TfrmMath": {  # "Math"
        "TEdit1": ["DS", "TD", "SD", "DD", "CTD", "DF"],
        # "input_fields": ["TEdit1", "TTntRichEdit.UnicodeClass1"],
    },
    "TfrmShiftRegister": {  # "Shift"
        "TEdit2": ["C"],
        "TEdit1": ["C"],
    },
    "TfrmCopy": {  # "Copy instruction"
        "TEdit1": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
        "TEdit2": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
        "TEdit3": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
        "TEdit4": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
    },
    "TfrmSearch": {  # "Search instruction"
        "TEdit1": ["DS", "TD", "SD", "DD", "CTD", "DF", "DH", "XD", "YD", "TXT"],
    },
    "#32770": {  # "Search & Replace"
        "Edit1": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
        "Edit2": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
        "Edit3": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
    },
    "TfrmDataView": {  # Dataview
        "TEdit1": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
    },
    "TfrmTagDB": {  # Address Picker
        "Edit1": [
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "XD",
            "YD",
            "TXT",
        ],
    },
    "TfrmRD": {  # Receive
        "TEdit20": [  # Local
            "X",
            "Y",
            "C",
            "T",
            "CT",
            "SC",
            "DS",
            "TD",
            "SD",
        ],
        "TEdit6": [  # Receiving
            "C",
        ],
        "TEdit7": [  # Success
            "C",
        ],
        "TEdit5": [  # Error
            "C",
        ],
        "TEdit4": [  # Exception Code
            "DS",
            "DD",
        ],
    },
    "TfrmSD": {  # Send
        "TEdit16": [  # Local
            "Y",
            "C",
            "DS",
            "TD",
            "SD",
            "DD",
            "CTD",
            "DF",
            "DH",
            "YD",
            "TXT",
        ],
        "TEdit4": [  # Receiving
            "C",
        ],
        "TEdit3": [  # Success
            "C",
        ],
        "TEdit2": [  # Error
            "C",
        ],
        "TEdit1": [  # Exception Code
            "DS",
            "DD",
        ],
    },
}
