class ui.PropertyGrid

class PropertyGrid {
    // methods

    void addProperty(
        ui.Property* prop,
        ui.Property* beforeProp = null
    );

    void removeProperty(ui.Property* prop);

    ui.GroupProperty* createGroupProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null
    );

    ui.GroupProperty* createGroupProperty(
        string_t name,
        string_t toolTip = null
    );

    ui.BoolProperty* createBoolProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null
    );

    ui.BoolProperty* createBoolProperty(
        string_t name,
        string_t toolTip = null
    );

    ui.IntProperty* createIntProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null
    );

    ui.IntProperty* createIntProperty(
        string_t name,
        string_t toolTip = null
    );

    ui.StringProperty* createStringProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t placeholderText = null,
        string_t toolTip = null
    );

    ui.StringProperty* createStringProperty(
        string_t name,
        string_t placeholderText = null,
        string_t toolTip = null
    );

    ui.EnumProperty* createEnumProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null,
        ui.EnumPropertyOption const* optionArray,
        size_t count
    );

    ui.EnumProperty* createEnumProperty(
        string_t name,
        string_t toolTip = null,
        ui.EnumPropertyOption const* optionArray,
        size_t count
    );

    ui.ComboProperty* createComboProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t placeholderText,
        string_t toolTip = null,
        ui.EnumPropertyOption const* optionArray = null,
        size_t count = 0
    );

    ui.ComboProperty* createComboProperty(
        string_t name,
        string_t placeholderText = null,
        string_t toolTip = null,
        ui.EnumPropertyOption const* optionArray = null,
        size_t count = 0
    );

    ui.FlagProperty* createFlagProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null,
        ui.FlagPropertyOption const* optionArray,
        size_t count
    );

    ui.FlagProperty* createFlagProperty(
        string_t name,
        string_t toolTip = null,
        ui.FlagPropertyOption const* optionArray,
        size_t count
    );

    ui.ColorProperty* createColorProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null
    );

    ui.ColorProperty* createColorProperty(
        string_t name,
        string_t toolTip = null
    );

    ui.ActionProperty* createActionProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null
    );

    ui.ActionProperty* createActionProperty(
        string_t name,
        string_t toolTip = null
    );

    ui.FileProperty* createFileProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null
    );

    ui.FileProperty* createFileProperty(
        string_t name,
        string_t toolTip = null
    );

    ui.DictionaryProperty* createDictionaryProperty(
        ui.Property* parentProp = null,
        ui.Property* beforeProp = null,
        string_t name,
        string_t toolTip = null
    );

    ui.DictionaryProperty* createDictionaryProperty(
        string_t name,
        string_t toolTip = null
    );

    void resizeNameColumnToContents();
};