プロパティエディタが対応している型
組み込みのプロパティエディターは、以下の値の型に対応しています。オブジェクト用のエディターは対応する派生型にも適用されます。拡張機能の Register<TValue, TContext> と RegisterValue<TValue, TEdit> は、値の型が TValue と完全に一致するプロパティに適用されます。
System.ByteSystem.SByteSystem.Int16System.UInt16System.Int32System.UInt32System.Int64System.UInt64System.SingleSystem.DoubleSystem.DecimalBeutl.RationalSystem.BooleanSystem.StringSystem.EnumBeutl.Media.AlignmentXBeutl.Media.AlignmentYBeutl.Media.TextAlignmentBeutl.Media.FontFamilySystem.IO.FileInfoBeutl.IO.IFileSourceBeutl.Media.ColorBeutl.Media.GradingColorBeutl.Graphics.PointBeutl.Graphics.SizeBeutl.Graphics.RectBeutl.Graphics.RelativePointBeutl.Graphics.RelativeRectBeutl.Graphics.ThicknessBeutl.Media.CornerRadiusBeutl.Graphics.VectorBeutl.Media.PixelPointBeutl.Media.PixelSizeBeutl.Media.PixelRectSystem.Numerics.Vector2System.Numerics.Vector3System.Numerics.Vector4Beutl.MediaTimeBeutl.Animation.Easings.EasingBeutl.Media.Source.ImageSourceBeutl.Media.Source.VideoSourceBeutl.Media.Source.SoundSourceBeutl.Graphics3D.Textures.TextureSourceBeutl.Graphics3D.Models.ModelSourceBeutl.Media.Source.CubeSourceBeutl.Media.BrushBeutl.Media.PenBeutl.ProjectSystem.SceneBeutl.Graphics.Effects.FilterEffectBeutl.Media.GeometryBeutl.Audio.Effects.AudioEffectBeutl.Graphics.Transformation.TransformBeutl.Graphics.CurveMapBeutl.Collections.ICoreList<Beutl.Media.GradientStop>Beutl.Graphics.Effects.DisplacementMapTransformSystem.Collections.IListBeutl.NodeGraph.GraphModelBeutl.CoreObject
IFileSource のエディターは、公開の引数なしコンストラクターを持つ、未指定の型パラメーターを含まない非抽象クラスを対象とします。リストのエディターは項目の型を取得するために、IList とともに IList<T> の実装を必要とします。CoreObject 型に対して Property.CreateReference<T>() で宣言した参照プロパティには、参照先を選ぶエディターが使われます。要素の編集を参照してください。
タイムラインの時刻には MediaTime を使用してください。エディターには読みやすい時間文字列として表示されます。以前の TimeSpan エディターと汎用の IParsable<T> フォールバックは削除されています。別の型に対応するエディターを追加するには、PropertyEditorExtension.RegisterEditors(PropertyEditorRegistry) を実装します。エディターとの連携を参照してください。
ファイル選択
FileInfo またはファイルソースのプロパティに、Beutl.Core の Beutl.FileFilterAttribute を付けると、ファイル選択のフィルターを指定できます。複数の属性で複数のファイル種別を提示でき、組み込みのソースエディターでは既定のフィルターを置き換えます。ファイル名のパターンはエディターへのドロップ可否にも使われるため、独自の形式にはパターンを指定してください。MimeTypes と AppleUniformTypeIdentifiers はプラットフォーム別のファイル選択用メタデータです。
using System.IO;
using Beutl;
using Beutl.Engine;
public partial class SubtitleFileOptions : EngineObject
{
public SubtitleFileOptions()
{
ScanProperties<SubtitleFileOptions>();
}
[FileFilter("Subtitles", "*.srt", "*.vtt")]
[FileFilter("Text files", "*.txt", MimeTypes = new[] { "text/plain" },
AppleUniformTypeIdentifiers = new[] { "public.plain-text" })]
public IExpressionProperty<FileInfo?> SubtitleFile { get; }
= Property.CreateExpression<FileInfo?>();
}
汎用のファイルソースエディターは新しいソースを作成し、選択したファイルの絶対 URI を ReadFrom(Uri) に渡します。パスを消去すると値は null になり、生成または読み取りに失敗すると以前の値を維持します。汎用プロパティに属性がなければファイル選択を絞り込みません。フィルターはファイルの内容を検証しないため、読み込む内容は拡張機能側で検証してください。