Solved FILENAME attribute extension filter


I have a resource file containing a FILENAME attribute.
I want it to be able to select only files of a specific extension.
Usually I configure custom GUI attributes in GetDDescription, but I don't find anything in customgui_filename.h to set the extension.

Is it possible? How?


a FILENAME parameter has no options to set a suffix.

If you want to only select files of a specific type you could implement SetDParameter() to check if the given Filename is acceptable.

best wishes,

@s_bach Hi Sebastian,

How exactly can I reject the file selected by the user?
This is what I tried, I can see the message dialog when the user selects an unexpected file, but the value is always set, independent if I return true, false, or unset the flags.

Bool AnimationModifier::SetDParameter( GeListNode* node, const DescID& id, const GeData& t_data, DESCFLAGS_SET& flags )
	auto paramId = id[0].id;
	if ( paramId == anm_FilePathAttribute )
		auto suffix = t_data.GetFilename().GetSuffix().ToLower();
		if ( suffix != "abc"_s )
			MessageDialog( "Select an Alembic file with extension .abc"_s );
			//return true;
			return false;
	return SUPER::SetDParameter( node, id, t_data, flags );


you could try to write an empty value into the BaseContainer when the suffix is wrong. Something like this:

  const maxon::String suffix = t_data.GetFilename().GetSuffix().ToLower();

  if (suffix != "abc"_s)
    BaseContainer& bc = static_cast<BaseList2D*>(node)->GetDataInstanceRef();
    bc.SetFilename(EXAMPLE_FILENAME_PARAM, Filename());
    return true;

Please notice there is no "official" solution to this; just use what works for you.

Best wishes,

@s_bach Ok, I can revert the values to the base container. That solves my issue, thanks!