------------------------------------------------------------------------------ -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2014, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 3, 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 MERCHAN- -- -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- -- -- -- As a special exception under Section 7 of GPL version 3, you are granted -- -- additional permissions described in the GCC Runtime Library Exception, -- -- version 3.1, as published by the Free Software Foundation. -- -- -- -- You should have received a copy of the GNU General Public License and -- -- a copy of the GCC Runtime Library Exception along with this program; -- -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- -- <http://www.gnu.org/licenses/>. -- -- -- ------------------------------------------------------------------------------ -- <description> -- Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog is a dialog box suitable -- for use with "File/Open" or "File/Save as" commands. This widget works by -- putting a Gtk.File_Chooser_Widget.Gtk_File_Chooser_Widget inside a -- Gtk.Dialog.Gtk_Dialog. It exposes the Gtk.File_Chooser.Gtk_File_Chooser -- interface, so you can use all of the Gtk.File_Chooser.Gtk_File_Chooser -- functions on the file chooser dialog as well as those for -- Gtk.Dialog.Gtk_Dialog. -- -- Note that Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog does not have -- any methods of its own. Instead, you should use the functions that work on -- a Gtk.File_Chooser.Gtk_File_Chooser. -- -- <example id="gtkfilechooser-typical-usage"> -- == Typical usage == -- -- In the simplest of cases, you can the following code to use -- Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog to select a file for -- opening: -- -- GtkWidget *dialog; -- dialog = gtk_file_chooser_dialog_new ("Open File", -- parent_window, -- GTK_FILE_CHOOSER_ACTION_OPEN, -- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, -- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, -- NULL); -- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) -- { -- char *filename; -- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); -- open_file (filename); -- g_free (filename); -- } -- gtk_widget_destroy (dialog); -- -- To use a dialog for saving, you can use this: -- -- GtkWidget *dialog; -- dialog = gtk_file_chooser_dialog_new ("Save File", -- parent_window, -- GTK_FILE_CHOOSER_ACTION_SAVE, -- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, -- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, -- NULL); -- gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); -- if (user_edited_a_new_document) -- gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "Untitled document"); -- else -- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), filename_for_existing_document); -- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) -- { -- char *filename; -- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); -- save_to_file (filename); -- g_free (filename); -- } -- gtk_widget_destroy (dialog); -- -- <section id="gtkfilechooserdialog-setting-up"> -- == Setting up a file chooser dialog == -- -- There are various cases in which you may need to use a -- Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog: -- -- * To select a file for opening, as for a -- <guimenuitem>File/Open</guimenuitem> command. Use -- GTK_FILE_CHOOSER_ACTION_OPEN. -- -- * To save a file for the first time, as for a -- <guimenuitem>File/Save</guimenuitem> command. Use -- GTK_FILE_CHOOSER_ACTION_SAVE, and suggest a name such as "Untitled" with -- Gtk.File_Chooser.Set_Current_Name. -- -- * To save a file under a different name, as for a -- <guimenuitem>File/Save As</guimenuitem> command. Use -- GTK_FILE_CHOOSER_ACTION_SAVE, and set the existing filename with -- Gtk.File_Chooser.Set_Filename. -- -- * To choose a folder instead of a file. Use -- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER. -- -- Note: -- -- Old versions of the file chooser's documentation suggested using -- Gtk.File_Chooser.Set_Current_Folder in various situations, with the -- intention of letting the application suggest a reasonable default folder. -- This is no longer considered to be a good policy, as now the file chooser -- is able to make good suggestions on its own. In general, you should only -- cause the file chooser to show a specific folder when it is appropriate to -- use Gtk.File_Chooser.Set_Filename, i.e. when you are doing a -- <guimenuitem>File/Save As</guimenuitem> command *and* you already have a -- file saved somewhere. -- -- </section> <section id="gtkfilechooserdialog-response-codes"> -- == Response Codes == -- -- Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog inherits from -- Gtk.Dialog.Gtk_Dialog, so buttons that go in its action area have response -- codes such as GTK_RESPONSE_ACCEPT and GTK_RESPONSE_CANCEL. For example, you -- could call Gtk_New as follows: -- -- GtkWidget *dialog; -- dialog = gtk_file_chooser_dialog_new ("Open File", -- parent_window, -- GTK_FILE_CHOOSER_ACTION_OPEN, -- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, -- GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, -- NULL); -- -- This will create buttons for "Cancel" and "Open" that use stock response -- identifiers from Gtk_Response_Type. For most dialog boxes you can use your -- own custom response codes rather than the ones in Gtk_Response_Type, but -- Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog assumes that its -- "accept"-type action, e.g. an "Open" or "Save" button, *will* have one of -- the following response codes: -- -- <simplelist id="gtkfilechooserdialog-responses"> -- <member>GTK_RESPONSE_ACCEPT</member> <member>GTK_RESPONSE_OK</member> -- <member>GTK_RESPONSE_YES</member> <member>GTK_RESPONSE_APPLY</member> -- </simplelist> -- This is because Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog must -- intercept responses and switch to folders if appropriate, rather than -- letting the dialog terminate — the implementation uses these known -- response codes to know which responses can be blocked if appropriate. -- -- Note: To summarize, make sure you use a <link -- linkend="gtkfilechooserdialog-responses">stock response code</link> when -- you use Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog to ensure proper -- operation. -- -- </section> -- </description> pragma Ada_2005; pragma Warnings (Off, "*is already use-visible*");
with Glib; use Glib;
with Glib.Object; use Glib.Object;
with Glib.Types; use Glib.Types;
with Gtk.Buildable; use Gtk.Buildable;
with Gtk.Dialog; use Gtk.Dialog;
with Gtk.Enums; use Gtk.Enums;
with Gtk.File_Chooser; use Gtk.File_Chooser;
with Gtk.File_Filter; use Gtk.File_Filter;
with Gtk.Widget; use Gtk.Widget;
with Gtk.Window; use Gtk.Window;
package Gtk.File_Chooser_Dialog is
type Gtk_File_Chooser_Dialog_Record is new Gtk_Dialog_Record with null record;
type Gtk_File_Chooser_Dialog is access all Gtk_File_Chooser_Dialog_Record'Class;
------------------ -- Constructors -- ------------------ procedure Gtk_New
(Dialog : out Gtk_File_Chooser_Dialog;
Title : UTF8_String := "";
Parent : access Gtk.Window.Gtk_Window_Record'Class;
Action : Gtk.File_Chooser.Gtk_File_Chooser_Action);
procedure Initialize
(Dialog : not null access Gtk_File_Chooser_Dialog_Record'Class;
Title : UTF8_String := "";
Parent : access Gtk.Window.Gtk_Window_Record'Class;
Action : Gtk.File_Chooser.Gtk_File_Chooser_Action);
-- Creates a new Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog. This -- function is analogous to gtk_dialog_new_with_buttons. -- Since: gtk+ 2.4 -- "title": Title of the dialog, or null -- "parent": Transient parent of the dialog, or null -- "action": Open or save mode for the dialog function Gtk_File_Chooser_Dialog_New
(Title : UTF8_String := "";
Parent : access Gtk.Window.Gtk_Window_Record'Class;
Action : Gtk.File_Chooser.Gtk_File_Chooser_Action)
return Gtk_File_Chooser_Dialog;
-- Creates a new Gtk.File_Chooser_Dialog.Gtk_File_Chooser_Dialog. This -- function is analogous to gtk_dialog_new_with_buttons. -- Since: gtk+ 2.4 -- "title": Title of the dialog, or null -- "parent": Transient parent of the dialog, or null -- "action": Open or save mode for the dialog function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_file_chooser_dialog_get_type");
--------------------------------------------- -- Inherited subprograms (from interfaces) -- --------------------------------------------- -- Methods inherited from the Buildable interface are not duplicated here -- since they are meant to be used by tools, mostly. If you need to call -- them, use an explicit cast through the "-" operator below. procedure Add_Filter
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Filter : not null access Gtk.File_Filter.Gtk_File_Filter_Record'Class);
function Add_Shortcut_Folder
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Folder : UTF8_String) return Boolean;
function Add_Shortcut_Folder_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
URI : UTF8_String) return Boolean;
function Get_Action
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.File_Chooser.Gtk_File_Chooser_Action;
procedure Set_Action
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Action : Gtk.File_Chooser.Gtk_File_Chooser_Action);
function Get_Create_Folders
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Boolean; procedure Set_Create_Folders
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Create_Folders : Boolean);
function Get_Current_Folder
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return UTF8_String;
function Set_Current_Folder
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Filename : UTF8_String) return Boolean;
function Get_Current_Folder_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return UTF8_String;
function Set_Current_Folder_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
URI : UTF8_String) return Boolean;
function Get_Do_Overwrite_Confirmation
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Boolean; procedure Set_Do_Overwrite_Confirmation
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Do_Overwrite_Confirmation : Boolean);
function Get_Extra_Widget
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.Widget.Gtk_Widget;
procedure Set_Extra_Widget
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Extra_Widget : not null access Gtk.Widget.Gtk_Widget_Record'Class);
function Get_Filename
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return UTF8_String;
function Set_Filename
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Filename : UTF8_String) return Boolean;
function Get_Filenames
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.Enums.String_SList.GSlist;
function Get_Filter
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.File_Filter.Gtk_File_Filter;
procedure Set_Filter
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Filter : not null access Gtk.File_Filter.Gtk_File_Filter_Record'Class);
function Get_Local_Only
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Boolean; procedure Set_Local_Only
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Local_Only : Boolean);
function Get_Preview_Filename
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return UTF8_String;
function Get_Preview_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return UTF8_String;
function Get_Preview_Widget
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.Widget.Gtk_Widget;
procedure Set_Preview_Widget
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Preview_Widget : not null access Gtk.Widget.Gtk_Widget_Record'Class);
function Get_Preview_Widget_Active
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Boolean; procedure Set_Preview_Widget_Active
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Active : Boolean);
function Get_Select_Multiple
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Boolean; procedure Set_Select_Multiple
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Select_Multiple : Boolean);
function Get_Show_Hidden
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Boolean; procedure Set_Show_Hidden
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Show_Hidden : Boolean);
function Get_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return UTF8_String;
function Set_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
URI : UTF8_String) return Boolean;
function Get_Uris
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.Enums.String_SList.GSlist;
function Get_Use_Preview_Label
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Boolean; procedure Set_Use_Preview_Label
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Use_Label : Boolean);
function List_Filters
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Glib.Object.Object_List.GSlist;
function List_Shortcut_Folder_Uris
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.Enums.String_SList.GSlist;
function List_Shortcut_Folders
(Chooser : not null access Gtk_File_Chooser_Dialog_Record)
return Gtk.Enums.String_SList.GSlist;
procedure Remove_Filter
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Filter : not null access Gtk.File_Filter.Gtk_File_Filter_Record'Class);
function Remove_Shortcut_Folder
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Folder : UTF8_String) return Boolean;
function Remove_Shortcut_Folder_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
URI : UTF8_String) return Boolean;
procedure Select_All
(Chooser : not null access Gtk_File_Chooser_Dialog_Record);
function Select_Filename
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Filename : UTF8_String) return Boolean;
function Select_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
URI : UTF8_String) return Boolean;
procedure Set_Current_Name
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Name : UTF8_String);
procedure Unselect_All
(Chooser : not null access Gtk_File_Chooser_Dialog_Record);
procedure Unselect_Filename
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
Filename : UTF8_String);
procedure Unselect_Uri
(Chooser : not null access Gtk_File_Chooser_Dialog_Record;
URI : UTF8_String);
---------------- -- Interfaces -- ---------------- -- This class implements several interfaces. See Glib.Types -- -- - "Buildable" -- -- - "FileChooser" package Implements_Gtk_Buildable is new Glib.Types.Implements
(Gtk.Buildable.Gtk_Buildable, Gtk_File_Chooser_Dialog_Record, Gtk_File_Chooser_Dialog);
function "+"
(Widget : access Gtk_File_Chooser_Dialog_Record'Class)
return Gtk.Buildable.Gtk_Buildable
renames Implements_Gtk_Buildable.To_Interface;
function "-"
(Interf : Gtk.Buildable.Gtk_Buildable)
return Gtk_File_Chooser_Dialog
renames Implements_Gtk_Buildable.To_Object;
package Implements_Gtk_File_Chooser is new Glib.Types.Implements
(Gtk.File_Chooser.Gtk_File_Chooser, Gtk_File_Chooser_Dialog_Record, Gtk_File_Chooser_Dialog);
function "+"
(Widget : access Gtk_File_Chooser_Dialog_Record'Class)
return Gtk.File_Chooser.Gtk_File_Chooser
renames Implements_Gtk_File_Chooser.To_Interface;
function "-"
(Interf : Gtk.File_Chooser.Gtk_File_Chooser)
return Gtk_File_Chooser_Dialog
renames Implements_Gtk_File_Chooser.To_Object;
end Gtk.File_Chooser_Dialog;