libgimpbase: add support for GParamParam in GPParamDef too

to describe param specs that describe param specs, yay.
This commit is contained in:
Michael Natterer 2019-08-05 14:12:19 +02:00
parent a6516e5097
commit 7764f8b34b
2 changed files with 35 additions and 9 deletions

View file

@ -1136,6 +1136,13 @@ _gp_param_def_read (GIOChannel *channel,
user_data))
return FALSE;
break;
case GP_PARAM_DEF_TYPE_PARAM_DEF:
if (! _gimp_wire_read_string (channel,
&param_def->meta.m_param_def.type_name, 1,
user_data))
return FALSE;
break;
}
return TRUE;
@ -1171,6 +1178,10 @@ _gp_param_def_destroy (GPParamDef *param_def)
case GP_PARAM_DEF_TYPE_COLOR:
case GP_PARAM_DEF_TYPE_ID:
break;
case GP_PARAM_DEF_TYPE_PARAM_DEF:
g_free (param_def->meta.m_param_def.type_name);
break;
}
}
@ -1403,6 +1414,13 @@ _gp_param_def_write (GIOChannel *channel,
user_data))
return FALSE;
break;
case GP_PARAM_DEF_TYPE_PARAM_DEF:
if (! _gimp_wire_write_string (channel,
&param_def->meta.m_param_def.type_name, 1,
user_data))
return FALSE;
break;
}
return TRUE;

View file

@ -56,7 +56,8 @@ typedef enum
GP_PARAM_DEF_TYPE_FLOAT,
GP_PARAM_DEF_TYPE_STRING,
GP_PARAM_DEF_TYPE_COLOR,
GP_PARAM_DEF_TYPE_ID
GP_PARAM_DEF_TYPE_ID,
GP_PARAM_DEF_TYPE_PARAM_DEF
} GPParamDefType;
typedef enum
@ -85,6 +86,7 @@ typedef struct _GPParamDefFloat GPParamDefFloat;
typedef struct _GPParamDefString GPParamDefString;
typedef struct _GPParamDefColor GPParamDefColor;
typedef struct _GPParamDefID GPParamDefID;
typedef struct _GPParamDefParamDef GPParamDefParamDef;
typedef struct _GPParam GPParam;
typedef struct _GPParamArray GPParamArray;
typedef struct _GPParamStringArray GPParamStringArray;
@ -190,6 +192,11 @@ struct _GPParamDefID
gint32 none_ok;
};
struct _GPParamDefParamDef
{
gchar *type_name;
};
struct _GPParamDef
{
GPParamDefType param_def_type;
@ -200,14 +207,15 @@ struct _GPParamDef
union
{
GPParamDefInt m_int;
GPParamDefUnit m_unit;
GPParamDefEnum m_enum;
GPParamDefBoolean m_boolean;
GPParamDefFloat m_float;
GPParamDefString m_string;
GPParamDefColor m_color;
GPParamDefID m_id;
GPParamDefInt m_int;
GPParamDefUnit m_unit;
GPParamDefEnum m_enum;
GPParamDefBoolean m_boolean;
GPParamDefFloat m_float;
GPParamDefString m_string;
GPParamDefColor m_color;
GPParamDefID m_id;
GPParamDefParamDef m_param_def;
} meta;
};