----------------------------------------------------------------------- -- GtkAda - Ada95 binding for Gtk+/Gnome -- -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2006 AdaCore -- -- -- -- 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. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ----------------------------------------------------------------------- -- -- A Gtk_File_Selection is a general widget to interactively select file. -- It displays a dialog in which the user can navigate through directories, -- select a file, and even manipulate files with operations like removing, -- renaming,... -- Currently, only one file can be selected in the dialog. -- -- 2.8.17 -- Selectors -- create_file_selection.adb -- gtk-file_selection with Glib.Properties; with Gtk.Box; with Gtk.Button; with Gtk.Widget; with Gtk.Dialog; with GNAT.Strings; package Gtk.File_Selection is type Gtk_File_Selection_Record is new Gtk.Dialog.Gtk_Dialog_Record with private; type Gtk_File_Selection is access all Gtk_File_Selection_Record'Class; ------------------------------ -- Operations on the dialog -- ------------------------------ procedure Gtk_New (File_Selection : out Gtk_File_Selection; Title : UTF8_String); procedure Initialize (File_Selection : access Gtk_File_Selection_Record'Class; Title : UTF8_String); -- Creates or initializes a new file selection dialog. -- Title is the name of the dialog, as displayed in its title bar. function Get_Type return Gtk.Gtk_Type; -- Return the internal value associated with a Gtk_File_Selection. procedure Set_Filename (File_Selection : access Gtk_File_Selection_Record; Filename : UTF8_String); function Get_Filename (File_Selection : access Gtk_File_Selection_Record) return UTF8_String; -- Highlight the given file in the dialog. -- Note that this does not close the dialog. -- You can also use this procedure to select the directory to be displayed -- in the dialog. Along with Complete, this allows you to set some filters -- in the dialog. function Get_Selections (Filesel : access Gtk_File_Selection_Record) return GNAT.Strings.String_List; -- Retrieves the list of file selections the user has made in the dialog -- box. This function is intended for use when the user can select multiple -- files in the file list. -- The filenames are in the GLib file name encoding. To convert to UTF-8, -- call g_filename_to_utf8() on each string. -- The returned value must be freed by the caller procedure Complete (File_Selection : access Gtk_File_Selection_Record; Pattern : UTF8_String); -- Set the filter used to display the files. -- The pattern is displayed in the entry at the bottom of the dialog, and -- the list of files displayed in the list. procedure Show_Fileop_Buttons (File_Selection : access Gtk_File_Selection_Record); procedure Hide_Fileop_Buttons (File_Selection : access Gtk_File_Selection_Record); -- When this function is called, the dialog includes a series of buttons -- for file operations (create directory, rename a file, delete a file). procedure Set_Show_File_Op_Buttons (File_Selection : access Gtk_File_Selection_Record; Flag : Boolean); -- Choose whether to display or not the file operation buttons. -- If Flag is true, calls Show_Fileop_Buttons, otherwise calls -- Hide_Fileop_Buttons. procedure Set_Select_Multiple (Filesel : access Gtk_File_Selection_Record; Select_Multiple : Boolean); function Get_Select_Multiple (Filesel : access Gtk_File_Selection_Record) return Boolean; -- Sets whether the user is allowed to select multiple files in the file -- list. -- Use Get_selections to get the list of selected files. ------------------------ -- Getting the fields -- ------------------------ -- The following functions are provided to access the fields of the -- file selection dialog. -- This dialog is divided into two main areas, the Action_Area which is -- the top part that contains the list of files, and the button area which -- is the bottom part that contains the OK and Cancel buttons. function Get_Action_Area (File_Selection : access Gtk_File_Selection_Record) return Gtk.Box.Gtk_Box; -- Return the action area. -- This is the area that contains the list of files, the filter entry,etc. function Get_Button_Area (File_Selection : access Gtk_File_Selection_Record) return Gtk.Box.Gtk_Box; -- Return the button area. -- This is the area that contains the OK and Cancel buttons. function Get_Dir_List (File_Selection : access Gtk_File_Selection_Record) return Gtk.Widget.Gtk_Widget; -- Return the list that display the list of directories. function Get_File_List (File_Selection : access Gtk_File_Selection_Record) return Gtk.Widget.Gtk_Widget; -- Return the list that display the list of files in the selected directory function Get_Cancel_Button (File_Selection : access Gtk_File_Selection_Record) return Gtk.Button.Gtk_Button; -- Return the Cancel button. -- To remove this button from the dialog, call Hide on the return value. -- The callbacks on this button should simply close the dialog, but should -- ignore the file selected by the user. function Get_Help_Button (File_Selection : access Gtk_File_Selection_Record) return Gtk.Button.Gtk_Button; -- Return the Help button. -- To remove this button from the dialog, call Hide on the return value. -- The callbacks on this button should display a new dialog that explain -- what file the user should select. function Get_Ok_Button (File_Selection : access Gtk_File_Selection_Record) return Gtk.Button.Gtk_Button; -- Return the OK button. -- The callbacks on this button should close the dialog and do something -- with the file selected by the user. function Get_History_Pulldown (File_Selection : access Gtk_File_Selection_Record) return Gtk.Widget.Gtk_Widget; -- Return the menu that display the history of directories -- for easy access by the user. function Get_Selection_Entry (File_Selection : access Gtk_File_Selection_Record) return Gtk.Widget.Gtk_Widget; -- Return the entry used to set the filter on the list of directories. -- The simplest way to insert text in this entry is to use the -- Complete procedure above. function Get_Selection_Text (File_Selection : access Gtk_File_Selection_Record) return Gtk.Widget.Gtk_Widget; -- Return the text displayed just above the Selection_Entry. ---------------- -- Properties -- ---------------- -- -- The following properties are defined for this widget. See -- Glib.Properties for more information on properties. -- -- Name: Filename_Property -- Type: UTF8_String -- Flags: read-write -- Descr: The currently selected filename. -- See also: Set_Filename and Get_Filename -- -- Name: Show_Fileops_Property -- Type: Boolean -- Flags: read-write -- Descr: Whether buttons for creating/manipulating files should -- be displayed. -- See also: Show_Fileop_Buttons and Hide_Fileop_Buttons -- -- Name: Select_Multiple_Property -- Type: Boolean -- Descr: Whether to allow multiple files to be selected -- -- Filename_Property : constant Glib.Properties.Property_String; Show_Fileops_Property : constant Glib.Properties.Property_Boolean; Select_Multiple_Property : constant Glib.Properties.Property_Boolean; ------------- -- Signals -- ------------- -- -- The following new signals are defined for this widget: -- private type Gtk_File_Selection_Record is new Gtk.Dialog.Gtk_Dialog_Record with null record; Filename_Property : constant Glib.Properties.Property_String := Glib.Properties.Build ("filename"); Show_Fileops_Property : constant Glib.Properties.Property_Boolean := Glib.Properties.Build ("show_fileops"); Select_Multiple_Property : constant Glib.Properties.Property_Boolean := Glib.Properties.Build ("select-multiple"); pragma Import (C, Get_Type, "gtk_file_selection_get_type"); end Gtk.File_Selection;