// included by gtk2.pas

{$IFDEF read_forward_definitions}
{$ENDIF read_forward_definitions}

//------------------------------------------------------------------------------

{$IFDEF read_interface_types}
{ Parameters for dialog construction  }
{ call gtk_window_set_modal (win, TRUE)  }
{ call gtk_window_set_destroy_with_parent ()  }
{ no separator bar above buttons  }
   PGtkDialogFlags = ^TGtkDialogFlags;
   TGtkDialogFlags = longint;


{ Convenience enum to use for response_id's.  Positive values are
   totally user-interpreted. GTK will sometimes return
   GTK_RESPONSE_NONE if no response_id is available.

    Typical usage is:
       if (gtk_dialog_run(dialog) = GTK_RESPONSE_ACCEPT) then
         DoSomethingOnSuccess;
  }
{ GTK returns this if a response widget has no response_id,
     or if the dialog gets programmatically hidden or destroyed.
    }
{ GTK won't return these unless you pass them in
     as the response for an action widget. They are
     for your convenience.
    }
{ If the dialog is deleted.  }
{ These are returned from GTK dialogs, and you can also use them
     yourself if you like.
    }

   PGtkResponseType = ^TGtkResponseType;
   TGtkResponseType = longint;


{< private > }
   PGtkDialog = ^TGtkDialog;
   TGtkDialog = record
        window : TGtkWindow;
        vbox : PGtkWidget;
        action_area : PGtkWidget;
        separator : PGtkWidget;
     end;

{ Keybinding signals  }
{ Padding for future expansion  }
   PGtkDialogClass = ^TGtkDialogClass;
   TGtkDialogClass = record
        parent_class : TGtkWindowClass;
        response : procedure (dialog:PGtkDialog; response_id:gint); cdecl;
        close : procedure (dialog:PGtkDialog); cdecl;
        _gtk_reserved1 : procedure ; cdecl;
        _gtk_reserved2 : procedure ; cdecl;
        _gtk_reserved3 : procedure ; cdecl;
        _gtk_reserved4 : procedure ; cdecl;
     end;

{$ENDIF read_interface_types}

//------------------------------------------------------------------------------

{$IFDEF read_interface_rest}
const
   GTK_DIALOG_MODAL = 1 shl 0;
   GTK_DIALOG_DESTROY_WITH_PARENT = 1 shl 1;
   GTK_DIALOG_NO_SEPARATOR = 1 shl 2;

   GTK_RESPONSE_NONE = -(1);
   GTK_RESPONSE_REJECT = -(2);
   GTK_RESPONSE_ACCEPT = -(3);
   GTK_RESPONSE_DELETE_EVENT = -(4);
   GTK_RESPONSE_OK = -(5);
   GTK_RESPONSE_CANCEL = -(6);
   GTK_RESPONSE_CLOSE = -(7);
   GTK_RESPONSE_YES = -(8);
   GTK_RESPONSE_NO = -(9);
   GTK_RESPONSE_APPLY = -(10);
   GTK_RESPONSE_HELP = -(11);


function GTK_TYPE_DIALOG : GType;
function GTK_DIALOG(obj: pointer) : PGtkDialog;
function GTK_DIALOG_CLASS(klass: pointer) : PGtkDialogClass;
function GTK_IS_DIALOG(obj: pointer) : boolean;
function GTK_IS_DIALOG_CLASS(klass: pointer) : boolean;
function GTK_DIALOG_GET_CLASS(obj: pointer) : PGtkDialogClass;


function gtk_dialog_get_type:TGtkType; cdecl; external gtklib;
function gtk_dialog_new:PGtkWidget; cdecl; external gtklib;
{$IFNDEF KYLIX}
function gtk_dialog_new_with_buttons(title:Pgchar; parent:PGtkWindow; flags:TGtkDialogFlags; first_button_text:Pgchar; args:array of const):PGtkWidget; cdecl; overload; external gtklib;
function gtk_dialog_new_with_buttons(title:Pgchar; parent:PGtkWindow; flags:TGtkDialogFlags; first_button_text:Pgchar):PGtkWidget; cdecl; overload; varargs; external gtklib;
{$ELSE}
function gtk_dialog_new_with_buttons(title:Pgchar; parent:PGtkWindow; flags:TGtkDialogFlags; first_button_text:Pgchar):PGtkWidget; varargs; cdecl; external gtklib;
{$ENDIF}
procedure gtk_dialog_add_action_widget(dialog:PGtkDialog; child:PGtkWidget; response_id:gint); cdecl; external gtklib;
function gtk_dialog_add_button(dialog:PGtkDialog; button_text:Pgchar; response_id:gint):PGtkWidget; cdecl; external gtklib;
{$IFNDEF KYLIX}
procedure gtk_dialog_add_buttons(dialog:PGtkDialog; first_button_text:Pgchar; args:array of const); overload; cdecl; external gtklib;
procedure gtk_dialog_add_buttons(dialog:PGtkDialog; first_button_text:Pgchar); cdecl; overload; varargs; external gtklib;
{$ELSE}
procedure gtk_dialog_add_buttons(dialog:PGtkDialog; first_button_text:Pgchar); varargs; cdecl; external gtklib;
{$ENDIF}
procedure gtk_dialog_set_response_sensitive(dialog:PGtkDialog; response_id:gint; setting:gboolean); cdecl; external gtklib;
procedure gtk_dialog_set_default_response(dialog:PGtkDialog; response_id:gint); cdecl; external gtklib;
procedure gtk_dialog_set_has_separator(dialog:PGtkDialog; setting:gboolean); cdecl; external gtklib;
function gtk_dialog_get_has_separator(dialog:PGtkDialog):gboolean; cdecl; external gtklib;
{ Emit response signal  }
procedure gtk_dialog_response(dialog:PGtkDialog; response_id:gint); cdecl; external gtklib;
{ Returns response_id  }
function gtk_dialog_run(dialog:PGtkDialog):gint; cdecl; external gtklib;

{$ifdef HasGTK2_6}
function gtk_alternative_dialog_button_order(screen:PGdkScreen):gboolean; cdecl; external gtklib;
procedure gtk_dialog_set_alternative_button_order(dialog:PGtkDialog; first_response_id:gint);varargs;cdecl; external gtklib;
procedure gtk_dialog_set_alternative_button_order_from_array(dialog:PGtkDialog; n_params:gint; new_order:Pgint);cdecl; external gtklib;
{$endif}
{$ENDIF read_interface_rest}

//------------------------------------------------------------------------------

{$IFDEF read_implementation}
function GTK_TYPE_DIALOG : GType;
begin
   GTK_TYPE_DIALOG:=gtk_dialog_get_type;
end;

function GTK_DIALOG(obj: pointer) : PGtkDialog;
begin
   GTK_DIALOG:=PGtkDialog(GTK_CHECK_CAST(obj,GTK_TYPE_DIALOG));
end;

function GTK_DIALOG_CLASS(klass: pointer) : PGtkDialogClass;
begin
   GTK_DIALOG_CLASS:=PGtkDialogClass(GTK_CHECK_CLASS_CAST(klass,GTK_TYPE_DIALOG));
end;

function GTK_IS_DIALOG(obj: pointer) : boolean;
begin
   GTK_IS_DIALOG:=GTK_CHECK_TYPE(obj,GTK_TYPE_DIALOG);
end;

function GTK_IS_DIALOG_CLASS(klass: pointer) : boolean;
begin
   GTK_IS_DIALOG_CLASS:=GTK_CHECK_CLASS_TYPE(klass,GTK_TYPE_DIALOG);
end;

function GTK_DIALOG_GET_CLASS(obj: pointer) : PGtkDialogClass;
begin
   GTK_DIALOG_GET_CLASS:=PGtkDialogClass(GTK_CHECK_GET_CLASS(obj,GTK_TYPE_DIALOG));
end;

{$ENDIF read_implementation}
// included by gtk2.pas

