public override bool PrepareSavePanel(NSSavePanel savePanel) { workbookSaveOperation = Session.CreateWorkbookSaveOperation(); if (workbookSaveOperation.SupportedOptions == WorkbookSaveOptions.None) { return(true); } var stackView = new NSStackView { Orientation = NSUserInterfaceLayoutOrientation.Vertical, Spacing = 8, EdgeInsets = new NSEdgeInsets(12, 12, 12, 12) }; Action <NSView> addRow = row => { stackView.AddView(row, NSStackViewGravity.Top); stackView.AddConstraint(NSLayoutConstraint.Create( row, NSLayoutAttribute.Width, NSLayoutRelation.Equal, stackView, NSLayoutAttribute.Width, 1, 0)); }; if (workbookSaveOperation.SupportedOptions.HasFlag(WorkbookSaveOptions.Archive)) { addRow(CreateRow( Catalog.GetString("Workbook Format:"), new [] { Catalog.GetString("Package Directory"), Catalog.GetString("Archive") }, workbookSaveOperation.Options.HasFlag(WorkbookSaveOptions.Archive) ? 1 : 0, index => { switch (index) { case 0: workbookSaveOperation.Options &= ~WorkbookSaveOptions.Archive; break; case 1: workbookSaveOperation.Options |= WorkbookSaveOptions.Archive; break; default: throw new IndexOutOfRangeException(); } })); } #if false // stubbed UI for signing is unused for now if (workbookSaveOperation.SupportedOptions.HasFlag(WorkbookSaveOptions.Sign)) { addRow(CreateRow( Catalog.GetString("Signing Key:"), new [] { Catalog.GetString("None") }, 0, index => { })); } #endif savePanel.AccessoryView = stackView; return(true); }