content: // Generated by dart-wayland-scanner
  // https://github.com/your-repo/dart-wayland-scanner
  // XML file : https://gitlab.freedesktop.org/wayland/wayland-protocols/-/raw/main/staging/xdg-dialog/xdg-dialog-v1.xml
  //
  // xdg_dialog_v1 Protocol Copyright: 
  /// 
  /// Copyright © 2023 Carlos Garnacho
  /// 
  /// Permission is hereby granted, free of charge, to any person obtaining a
  /// copy of this software and associated documentation files (the "Software"),
  /// to deal in the Software without restriction, including without limitation
  /// the rights to use, copy, modify, merge, publish, distribute, sublicense,
  /// and/or sell copies of the Software, and to permit persons to whom the
  /// Software is furnished to do so, subject to the following conditions:
  /// 
  /// The above copyright notice and this permission notice (including the next
  /// paragraph) shall be included in all copies or substantial portions of the
  /// Software.
  /// 
  /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  /// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  /// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  /// DEALINGS IN THE SOFTWARE.
  /// 
  
  library client;
  
  import 'package:wayland/wayland.dart';
  import 'package:wayland/protocols/wayland.dart';
  import 'package:wayland/protocols/stable/xdg-shell/xdg_shell.dart';
  import 'dart:async';
  import 'dart:convert';
  import 'dart:typed_data';
  import 'package:result_dart/result_dart.dart';
  
  
  /// create dialogs related to other toplevels
  /// 
  /// The xdg_wm_dialog_v1 interface is exposed as a global object allowing
  /// to register surfaces with a xdg_toplevel role as "dialogs" relative to
  /// another toplevel.
  /// 
  /// The compositor may let this relation influence how the surface is
  /// placed, displayed or interacted with.
  /// 
  /// Warning! The protocol described in this file is currently in the testing
  /// phase. Backward compatible changes may be added together with the
  /// corresponding interface version bump. Backward incompatible changes can
  /// only be done by creating a new major version of the extension.
  /// 
  class XdgWmDialogV1 extends Proxy{
    final Context innerContext;
    final version = 1;
  
    XdgWmDialogV1(this.innerContext) : super(innerContext.allocateClientId()){
      innerContext.register(this);
    }
  
  
  @override
  toString(){
  return "XdgWmDialogV1 {name: 'xdg_wm_dialog_v1', id: '$objectId', version: '1',}";
  }
  
  /// destroy the dialog manager object
  /// 
  /// Destroys the xdg_wm_dialog_v1 object. This does not affect
  /// the xdg_dialog_v1 objects generated through it.
  /// 
    Result<void,Object> destroy() {
  innerContext.unRegister(this);
      logLn("XdgWmDialogV1::destroy ");
  var arguments = [];var argTypes = <WaylandType>[];
  var calclulatedSize  = calculateSize(argTypes, arguments);
  final bytesBuilder = BytesBuilder();
  bytesBuilder.add(Uint32List.fromList([objectId, (calclulatedSize << 16) | 0]).buffer.asUint8List());
      try{
      innerContext.sendMessage(bytesBuilder.toBytes(), );
      }catch (e) {
        logLn("Exception in XdgWmDialogV1::destroy: $e");
     return Failure(e);
      }
      return Success(Object());
    }
  
  /// create a dialog object
  /// 
  /// Creates a xdg_dialog_v1 object for the given toplevel. See the interface
  /// description for more details.
  /// 
  /// Compositors must raise an already_used error if clients attempt to
  /// create multiple xdg_dialog_v1 objects for the same xdg_toplevel.
  /// 
  /// [id]:
  /// [toplevel]:
    Result<XdgDialogV1,Object> getXdgDialog(XdgToplevel toplevel) {
    var id =  XdgDialogV1(innerContext);
      logLn("XdgWmDialogV1::getXdgDialog  id: $id toplevel: $toplevel");
  var arguments = [id, toplevel];var argTypes = <WaylandType>[WaylandType.newId, WaylandType.object];
  var calclulatedSize  = calculateSize(argTypes, arguments);
  final bytesBuilder = BytesBuilder();
  bytesBuilder.add(Uint32List.fromList([objectId, (calclulatedSize << 16) | 1]).buffer.asUint8List());
      bytesBuilder.add(Uint32List.fromList([id.objectId]).buffer.asUint8List());
      bytesBuilder.add(Uint32List.fromList([toplevel.objectId]).buffer.asUint8List());
      try{
      innerContext.sendMessage(bytesBuilder.toBytes(), );
      }catch (e) {
        logLn("Exception in XdgWmDialogV1::getXdgDialog: $e");
     return Failure(e);
      }
      return Success(id);
    }
  
  }
  
  /// 
  /// 
  
  enum XdgWmDialogV1Error {
  /// the xdg_toplevel object has already been used to create a xdg_dialog_v1
    alreadyUsed("already_used", 0);
  const XdgWmDialogV1Error(this.enumName, this.enumValue);
  final int enumValue;
  final String enumName;
  @override
  toString(){
  return "XdgWmDialogV1Error {name: $enumName, value: $enumValue}";
  }
  }
  
  
  
  /// dialog object
  /// 
  /// A xdg_dialog_v1 object is an ancillary object tied to a xdg_toplevel. Its
  /// purpose is hinting the compositor that the toplevel is a "dialog" (e.g. a
  /// temporary window) relative to another toplevel (see
  /// xdg_toplevel.set_parent). If the xdg_toplevel is destroyed, the xdg_dialog_v1
  /// becomes inert.
  /// 
  /// Through this object, the client may provide additional hints about
  /// the purpose of the secondary toplevel. This interface has no effect
  /// on toplevels that are not attached to a parent toplevel.
  /// 
  class XdgDialogV1 extends Proxy{
    final Context innerContext;
    final version = 1;
  
    XdgDialogV1(this.innerContext) : super(innerContext.allocateClientId()){
      innerContext.register(this);
    }
  
  
  @override
  toString(){
  return "XdgDialogV1 {name: 'xdg_dialog_v1', id: '$objectId', version: '1',}";
  }
  
  /// destroy the dialog object
  /// 
  /// Destroys the xdg_dialog_v1 object. If this object is destroyed
  /// before the related xdg_toplevel, the compositor should unapply its
  /// effects.
  /// 
    Result<void,Object> destroy() {
  innerContext.unRegister(this);
      logLn("XdgDialogV1::destroy ");
  var arguments = [];var argTypes = <WaylandType>[];
  var calclulatedSize  = calculateSize(argTypes, arguments);
  final bytesBuilder = BytesBuilder();
  bytesBuilder.add(Uint32List.fromList([objectId, (calclulatedSize << 16) | 0]).buffer.asUint8List());
      try{
      innerContext.sendMessage(bytesBuilder.toBytes(), );
      }catch (e) {
        logLn("Exception in XdgDialogV1::destroy: $e");
     return Failure(e);
      }
      return Success(Object());
    }
  
  /// mark dialog as modal
  /// 
  /// Hints that the dialog has "modal" behavior. Modal dialogs typically
  /// require to be fully addressed by the user (i.e. closed) before resuming
  /// interaction with the parent toplevel, and may require a distinct
  /// presentation.
  /// 
  /// Clients must implement the logic to filter events in the parent
  /// toplevel on their own.
  /// 
  /// Compositors may choose any policy in event delivery to the parent
  /// toplevel, from delivering all events unfiltered to using them for
  /// internal consumption.
  /// 
    Result<void,Object> setModal() {
      logLn("XdgDialogV1::setModal ");
  var arguments = [];var argTypes = <WaylandType>[];
  var calclulatedSize  = calculateSize(argTypes, arguments);
  final bytesBuilder = BytesBuilder();
  bytesBuilder.add(Uint32List.fromList([objectId, (calclulatedSize << 16) | 1]).buffer.asUint8List());
      try{
      innerContext.sendMessage(bytesBuilder.toBytes(), );
      }catch (e) {
        logLn("Exception in XdgDialogV1::setModal: $e");
     return Failure(e);
      }
      return Success(Object());
    }
  
  /// mark dialog as not modal
  /// 
  /// Drops the hint that this dialog has "modal" behavior. See
  /// xdg_dialog_v1.set_modal for more details.
  /// 
    Result<void,Object> unsetModal() {
      logLn("XdgDialogV1::unsetModal ");
  var arguments = [];var argTypes = <WaylandType>[];
  var calclulatedSize  = calculateSize(argTypes, arguments);
  final bytesBuilder = BytesBuilder();
  bytesBuilder.add(Uint32List.fromList([objectId, (calclulatedSize << 16) | 2]).buffer.asUint8List());
      try{
      innerContext.sendMessage(bytesBuilder.toBytes(), );
      }catch (e) {
        logLn("Exception in XdgDialogV1::unsetModal: $e");
     return Failure(e);
      }
      return Success(Object());
    }
  
  }
  
  