implement static method

NSOpenSavePanelDelegate implement({
  1. bool panel_shouldEnableURL_(
    1. ObjCObjectBase,
    2. NSURL
    )?,
  2. bool panel_validateURL_error_(
    1. ObjCObjectBase,
    2. NSURL,
    3. Pointer<Pointer<ObjCObject>>
    )?,
  3. void panel_didChangeToDirectoryURL_(
    1. ObjCObjectBase,
    2. NSURL?
    )?,
  4. NSString? panel_userEnteredFilename_confirmed_(
    1. ObjCObjectBase,
    2. NSString,
    3. bool
    )?,
  5. void panel_willExpand_(
    1. ObjCObjectBase,
    2. bool
    )?,
  6. void panelSelectionDidChange_(
    1. ObjCObjectBase?
    )?,
  7. NSString? panel_displayNameForType_(
    1. ObjCObjectBase,
    2. UTType
    )?,
  8. void panel_didSelectType_(
    1. ObjCObjectBase,
    2. UTType?
    )?,
  9. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSOpenSavePanelDelegate protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly.

If $keepIsolateAlive is true, this protocol will keep this isolate alive until it is garbage collected by both Dart and ObjC.

Implementation

static NSOpenSavePanelDelegate implement({
  bool Function(objc.ObjCObjectBase, objc.NSURL)? panel_shouldEnableURL_,
  bool Function(
    objc.ObjCObjectBase,
    objc.NSURL,
    ffi.Pointer<ffi.Pointer<objc.ObjCObject>>,
  )?
  panel_validateURL_error_,
  void Function(objc.ObjCObjectBase, objc.NSURL?)?
  panel_didChangeToDirectoryURL_,
  objc.NSString? Function(objc.ObjCObjectBase, objc.NSString, bool)?
  panel_userEnteredFilename_confirmed_,
  void Function(objc.ObjCObjectBase, bool)? panel_willExpand_,
  void Function(objc.ObjCObjectBase?)? panelSelectionDidChange_,
  objc.NSString? Function(objc.ObjCObjectBase, UTType)?
  panel_displayNameForType_,
  void Function(objc.ObjCObjectBase, UTType?)? panel_didSelectType_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSOpenSavePanelDelegate',
  );
  NSOpenSavePanelDelegate.panel_shouldEnableURL_.implement(
    builder,
    panel_shouldEnableURL_,
  );
  NSOpenSavePanelDelegate.panel_validateURL_error_.implement(
    builder,
    panel_validateURL_error_,
  );
  NSOpenSavePanelDelegate.panel_didChangeToDirectoryURL_.implement(
    builder,
    panel_didChangeToDirectoryURL_,
  );
  NSOpenSavePanelDelegate.panel_userEnteredFilename_confirmed_.implement(
    builder,
    panel_userEnteredFilename_confirmed_,
  );
  NSOpenSavePanelDelegate.panel_willExpand_.implement(
    builder,
    panel_willExpand_,
  );
  NSOpenSavePanelDelegate.panelSelectionDidChange_.implement(
    builder,
    panelSelectionDidChange_,
  );
  NSOpenSavePanelDelegate.panel_displayNameForType_.implement(
    builder,
    panel_displayNameForType_,
  );
  NSOpenSavePanelDelegate.panel_didSelectType_.implement(
    builder,
    panel_didSelectType_,
  );
  builder.addProtocol($protocol);
  return NSOpenSavePanelDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}