-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2003 ACT-Europe --
-- --
-- This library is free software; you can redistribute it and/or --
-- modify it under the terms of the GNU General Public --
-- License as published by the Free Software Foundation; either --
-- version 2 of the License, or (at your option) any later version. --
-- --
-- This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --
-- General Public License for more details. --
-- --
-- You should have received a copy of the GNU General Public --
-- License along with this library; if not, write to the --
-- Free Software Foundation, Inc., 59 Temple Place - Suite 330, --
-- Boston, MA 02111-1307, USA. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-----------------------------------------------------------------------
--
-- Dialog boxes are a convenient way to prompt the user for a small amount of
-- input, eg. to display a message, ask a question, or anything else that does
-- not require extensive effort on the user's part.
--
-- Gtkada treats a dialog as a window split horizontally. The top section is a
-- Gtk_Vbox, and is where widgets such as a Gtk_Label or a Gtk_Entry should be
-- packed. The second area is known as the action_area. This is generally used
-- for packing buttons into the dialog which may perform functions such as
-- cancel, ok, or apply. The two areas are separated by a Gtk_Hseparator.
--
-- If 'dialog' is a newly created dialog, the two primary areas of the window
-- can be accessed using Get_Vbox and Get_Action_Area as can be seen from the
-- example, below.
--
-- A 'modal' dialog (that is, one which freezes the rest of the application
-- from user input), can be created by calling Set_Modal on the dialog.
--
-- @pxref{Package_Gtkada.Dialogs} for a higher level dialog interface.
--
-- 1.3.11
with Glib.Properties;
with Gtk.Box;
with Gtk.Widget;
with Gtk.Window;
package Gtk.Dialog is
type Gtk_Dialog_Record is new Gtk.Window.Gtk_Window_Record with private;
type Gtk_Dialog is access all Gtk_Dialog_Record'Class;
-----------------------
-- Enumeration types --
-----------------------
type Gtk_Dialog_Flags is mod 3;
pragma Convention (C, Gtk_Dialog_Flags);
Modal : constant Gtk_Dialog_Flags := 0;
Destroy_With_Parent : constant Gtk_Dialog_Flags := 1;
No_Separator : constant Gtk_Dialog_Flags := 2;
-- Various flags that can be set for the dialog, with the following
-- implications:
-- - Modal : the dialog is modal, see Gtk.Window.Set_Modal
-- - Destroy_With_Parent: The dialog is destroyed if its parent is
-- destroyed. See Gtk.Window.Set_Destroy_With_Parent
-- - No_Separator: No separator bar above the buttons.
type Gtk_Response_Type is new Gint;
-- Type used for Response_Id's.
-- Positive values are totally user-interpreted.
-- GtkAda will sometimes return Gtk_Response_None if no Response_Id is
-- available.
--
-- Typical usage is:
-- if Gtk.Dialog.Run (Dialog) = Gtk_Response_Accept then
-- blah;
-- end if;
Gtk_Response_None : constant Gtk_Response_Type := -1;
-- GtkAda returns this if a response widget has no Response_Id,
-- or if the dialog gets programmatically hidden or destroyed.
Gtk_Response_Reject : constant Gtk_Response_Type := -2;
Gtk_Response_Accept : constant Gtk_Response_Type := -3;
-- GtkAda won't return these unless you pass them in
-- as the response for an action widget. They are
-- for your convenience.
Gtk_Response_Delete_Event : constant Gtk_Response_Type := -4;
-- If the dialog is deleted through the button in the titlebar
Gtk_Response_OK : constant Gtk_Response_Type := -5;
Gtk_Response_Cancel : constant Gtk_Response_Type := -6;
Gtk_Response_Close : constant Gtk_Response_Type := -7;
Gtk_Response_Yes : constant Gtk_Response_Type := -8;
Gtk_Response_No : constant Gtk_Response_Type := -9;
Gtk_Response_Apply : constant Gtk_Response_Type := -10;
Gtk_Response_Help : constant Gtk_Response_Type := -11;
-- These are returned from dialogs, and you can also use them
-- yourself if you like.
-----------------
-- Subprograms --
-----------------
procedure Gtk_New (Dialog : out Gtk_Dialog);
-- Create a new dialog.
-- Widgets should not be packed into this widget directly, but into the
-- vbox and action_area, as described above.
procedure Gtk_New
(Dialog : out Gtk_Dialog;
Title : UTF8_String;
Parent : Gtk.Window.Gtk_Window;
Flags : Gtk_Dialog_Flags);
-- Create a new dialog with a specific title, and specific attributes.
-- Parent is the transient parent for the dialog (ie the one that is
-- used for reference for the flag Destroy_With_Parent, or to compute the
-- initial position of the dialog).
procedure Initialize (Dialog : access Gtk_Dialog_Record'Class);
-- Internal initialization function.
-- See the section "Creating your own widgets" in the documentation.
procedure Initialize
(Dialog : access Gtk_Dialog_Record'Class;
Title : UTF8_String;
Parent : Gtk.Window.Gtk_Window;
Flags : Gtk_Dialog_Flags);
-- Internal initialization function.
-- See the section "Creating your own widgets" in the documentation.
function Get_Type return Gtk.Gtk_Type;
-- Return the internal value associated with a Gtk_Dialog.
function Get_Action_Area
(Dialog : access Gtk_Dialog_Record) return Gtk.Box.Gtk_Box;
-- Return the action area box associated with a Dialog.
function Get_Vbox
(Dialog : access Gtk_Dialog_Record) return Gtk.Box.Gtk_Box;
-- Return the vertical box associated with a Dialog.
procedure Add_Action_Widget
(Dialog : access Gtk_Dialog_Record;
Child : access Gtk.Widget.Gtk_Widget_Record'Class;
Response_Id : Gtk_Response_Type);
-- Add an activatable widget to the action area of Dialog.
-- When the widget is activated (ie emits the "activate" signal), Dialog
-- will emit the "response" signal with Response_Id.
function Add_Button
(Dialog : access Gtk_Dialog_Record;
Text : UTF8_String;
Response_Id : Gtk_Response_Type) return Gtk.Widget.Gtk_Widget;
-- Add a button with the given text to the dialog. Note that you can also
-- pass one of the constants defined in Gtk.Stock for the predefined
-- buttons.
-- When the button is clicked, Dialog will emit the "response" signal.
-- The button widget is returned.
procedure Set_Response_Sensitive
(Dialog : access Gtk_Dialog_Record;
Response_Id : Gtk_Response_Type;
Setting : Boolean);
-- Call Gtk.Widget.Set_Sensitive for all the buttons in the dialog
-- associated with Response_Id.
procedure Set_Default_Response
(Dialog : access Gtk_Dialog_Record; Response_Id : Gtk_Response_Type);
-- Set the last widget in the dialog's action area with the given
-- Response_Id as the default widget for Dialog.
-- Pressing Enter will activate this default widget.
procedure Set_Has_Separator
(Dialog : access Gtk_Dialog_Record; Setting : Boolean);
-- Set whether the dialog has a separator above the buttons.
function Get_Has_Separator (Dialog : access Gtk_Dialog_Record)
return Boolean;
-- Return True if the dialog has a separator above the buttons.
function Run (Dialog : access Gtk_Dialog_Record) return Gtk_Response_Type;
-- Block in a recursive main loop until Dialog emits the "response"
-- signal, or is destroyed. If the dialog is destroyed, Gtk_Response_None
-- is returned. Otherwise, the response_id from the "response" signal is
-- returned.
-- Run will call Show on the dialog automatically. However, it is your
-- responsability to call Show for any child you have inserted in the
-- dialog.
-- The dialog is automatically set to modal when this function is
-- called. You can exit at any time from this function by emitting the
-- "response" signal directly.
-- When Run returns, you are responsible for hiding or destroying the
-- dialog if necessary.
----------------
-- Properties --
----------------
--
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on properties.
--
-- - Name: Has_Separator_Property
-- Type: Boolean
-- Flags: read-write
-- Descr: The dialog has a separator bar above its buttons
-- See also:
--
--
Has_Separator_Property : constant Glib.Properties.Property_Boolean;
-------------
-- Signals --
-------------
--
-- The following new signals are defined for this widget:
--
-- - "response"
-- procedure Handler
-- (Dialog : access Gtk_Fialog_Record'Class;
-- Response_Id : Gint);
--
-- - "close"
-- procedure Handler (Dialog : access Gtk_Fialog_Record'Class);
--
-- Emit this signal to force a closing of the dialog.
--
procedure Response
(Dialog : access Gtk_Dialog_Record; Response_Id : Gtk_Response_Type);
-- Emit the "response" signal
private
type Gtk_Dialog_Record is new Gtk.Window.Gtk_Window_Record with null record;
Has_Separator_Property : constant Glib.Properties.Property_Boolean :=
Glib.Properties.Build ("has_separator");
pragma Import (C, Get_Type, "gtk_dialog_get_type");
end Gtk.Dialog;
-- missing:
-- procedure add_buttons
-- (GtkDialog *dialog,
-- const gchar *first_button_text,
-- ...);