in FigmaSharp.Controls/FigmaSharp.Controls.Cocoa/FigmaPackage/FigmaBundleWindow.cs [44:148]
protected override void OnGetPartialDesignerClass (FigmaPartialDesignerClass partialDesignerClass, CodeRenderService codeRendererService, bool translateLabels)
{
if (FigmaNode == null)
return;
partialDesignerClass.Usings.Add (nameof (AppKit));
var options = new CodeRenderServiceOptions() { TranslateLabels = translateLabels };
codeRendererService.Options = options;
//restore this state
var builder = new System.Text.StringBuilder ();
//builder.AppendLine ("//HACK: Temporal Window Frame Size");
bool centers = false;
var windowComponent = FigmaNode.GetDialogInstanceFromParentContainer ();
if (windowComponent != null) {
if (windowComponent.Options() is IFigmaNodeContainer figmaNodeContainer)
{
var title = ((FigmaNode)figmaNodeContainer)
.FirstChild (s => s.name == "title" && s.visible) as FigmaText;
if (title != null)
{
if (translateLabels)
builder.WriteTranslatedEquality(Members.This, nameof(NSWindow.Title), title.characters, codeRendererService);
else
builder.WritePropertyEquality(Members.This, nameof(NSWindow.Title), title.characters, inQuotes: true);
}
if (figmaNodeContainer.HasChildrenVisible("resize"))
{
builder.AppendLine(string.Format("{0}.{1} |= {2};",
Members.This,
nameof(AppKit.NSWindow.StyleMask),
AppKit.NSWindowStyle.Resizable.GetFullName()
));
}
if (figmaNodeContainer.HasChildrenVisible ("close"))
{
builder.AppendLine(string.Format("{0}.{1} |= {2};",
Members.This,
nameof(AppKit.NSWindow.StyleMask),
AppKit.NSWindowStyle.Closable.GetFullName()
));
}
if (figmaNodeContainer.HasChildrenVisible("min"))
{
builder.AppendLine(string.Format("{0}.{1} |= {2};",
Members.This,
nameof(AppKit.NSWindow.StyleMask),
AppKit.NSWindowStyle.Miniaturizable.GetFullName()
));
}
if (figmaNodeContainer.HasChildrenVisible("max") == false)
{
builder.AppendLine(string.Format("{0}.{1} ({2}).{3} = {4};",
Members.This,
nameof(NSWindow.StandardWindowButton),
NSWindowButton.ZoomButton.GetFullName(),
nameof(NSControl.Enabled),
bool.FalseString.ToLower()
));
}
}
}
//Window Frame
if (FigmaNode is IAbsoluteBoundingBox box && box.absoluteBoundingBox != null) {
builder.AppendLine();
builder.WritePropertyEquality (frameEntity, null, nameof (AppKit.NSWindow.Frame), instanciate: true);
string instance = typeof (CoreGraphics.CGSize).
GetConstructor (new string[] {
box.absoluteBoundingBox.Width.ToDesignerString (),
box.absoluteBoundingBox.Height.ToDesignerString ()
});
builder.WritePropertyEquality (frameEntity, nameof (AppKit.NSWindow.Frame.Size), instance, instanciate: false);
string parameters = $"{frameEntity}, {true.ToDesignerString ()}";
builder.WriteMethod (Members.This, nameof (AppKit.NSWindow.SetFrame), parameters);
builder.WritePropertyEquality (Members.This, nameof (AppKit.NSWindow.ContentMinSize), "this.ContentView.Frame.Size");
}
codeRendererService.GetCode (builder, new CodeNode(FigmaNode, null), null, options);
partialDesignerClass.InitializeComponentContent = builder.ToString ();
if (codeRendererService is NativeViewCodeService nativeViewCodeService) {
partialDesignerClass.PrivateMembers.Clear();
partialDesignerClass.PrivateMembers.AddRange(nativeViewCodeService.PrivateMembers);
}
if (centers) {
builder.AppendLine(string.Format("{0}.{1}();",
Members.This,
nameof(AppKit.NSWindow.Center)
));
}
}