Description
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.
Subprograms
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);
-
-
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;
-
function Get_Selections
(Filesel : access Gtk_File_Selection_Record)
return GNAT.Strings.String_List;
-
procedure Complete
(File_Selection : access Gtk_File_Selection_Record;
Pattern : UTF8_String);
-
procedure Show_Fileop_Buttons
(File_Selection : access Gtk_File_Selection_Record);
procedure Hide_Fileop_Buttons
(File_Selection : access Gtk_File_Selection_Record);
-
procedure Set_Show_File_Op_Buttons
(File_Selection : access Gtk_File_Selection_Record;
Flag : Boolean);
-
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;
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;
-
function Get_Button_Area
(File_Selection :
access Gtk_File_Selection_Record)
return Gtk.Box.Gtk_Box;
-
-
-
function Get_Cancel_Button
(File_Selection :
access Gtk_File_Selection_Record)
return Gtk.Button.Gtk_Button;
-
function Get_Help_Button
(File_Selection :
access Gtk_File_Selection_Record)
return Gtk.Button.Gtk_Button;
-
-
function Get_History_Pulldown
(File_Selection :
access Gtk_File_Selection_Record)
return Gtk.Widget.Gtk_Widget;
-
function Get_Selection_Entry
(File_Selection :
access Gtk_File_Selection_Record)
return Gtk.Widget.Gtk_Widget;
-
function Get_Selection_Text
(File_Selection :
access Gtk_File_Selection_Record)
return Gtk.Widget.Gtk_Widget;
Testgtk source code
This code is part of testgtk, a demo application packaged with GtkAda. Testgtk demonstrates the various widgets of GtkAda
-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for the Gimp Toolkit --
-- --
-- Copyright (C) 1998-1999 --
-- Emmanuel Briot, Joel Brobecker and Arnaud Charlet --
-- --
-- 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. --
-- --
--
--
--
--
--
--
--
-----------------------------------------------------------------------
with Gtk.Box;
use Gtk.Box;
with Gtk.Button;
use Gtk.Button;
with Gtk.Enums;
use Gtk.Enums;
with Gtk.File_Selection;
use Gtk.File_Selection;
with Gtk.Handlers;
use Gtk.Handlers;
with Gtk.Widget;
use Gtk.Widget;
with Common;
use Common;
with Gtk;
use Gtk;
with Ada.Text_IO;
package body Create_File_Selection
is
type Gtk_File_Selection_Access
is access all Gtk_File_Selection;
package Destroy_Cb
is new Handlers.User_Callback
(Gtk_File_Selection_Record, Gtk_File_Selection_Access);
package Files_Cb
is new Handlers.Callback
(Gtk_File_Selection_Record);
Window :
aliased Gtk_File_Selection;
----------
-- Help --
----------
function Help
return String
is
begin
return "@bGtk_File_Selection@B
is the basic widget to ask the user"
& "
for a file name. It can also give
access to basic file
and"
& " directory manipulation, such as create, rename, delete.";
end Help;
---------------
-- Destroyed --
---------------
procedure Destroyed (Win :
access Gtk_File_Selection_Record'Class;
Ptr :
in Gtk_File_Selection_Access)
is
pragma Warnings (Off, Win);
begin
Ptr.
all :=
null;
end Destroyed;
--------
-- Ok --
--------
procedure OK (Files :
access Gtk_File_Selection_Record'Class)
is
begin
Ada.Text_IO.Put_Line ("Selected " & Get_Filename (Files));
Destroy (Files);
end OK;
------------
-- Cancel --
------------
procedure Cancel (Win :
access Gtk_Widget_Record'Class)
is
begin
Destroy (Win);
end Cancel;
-----------------
-- Show_Fileop --
-----------------
procedure Show_Fileop (Files :
access Gtk_File_Selection_Record'Class)
is
begin
Show_Fileop_Buttons (Files);
end Show_Fileop;
-----------------
-- Hide_Fileop --
-----------------
procedure Hide_Fileop (Files :
access Gtk_File_Selection_Record'Class)
is
begin
Hide_Fileop_Buttons (Files);
end Hide_Fileop;
---------
-- Run --
---------
procedure Run (Frame :
access Gtk.Frame.Gtk_Frame_Record'Class)
is
Button : Gtk_Button;
begin
Set_Label (Frame, "File Selection");
if Window =
null then
Gtk_New (Window, Title => "File Selection Dialog");
Hide_Fileop_Buttons (Window);
Set_Position (Window, Win_Pos_Mouse);
Destroy_Cb.Connect
(Window, "destroy",
Destroy_Cb.To_Marshaller (Destroyed'Access), Window'Access);
Files_Cb.Object_Connect
(Get_Ok_Button (Window), "clicked",
Files_Cb.To_Marshaller (OK'Access),
Slot_Object => Window);
Widget_Handler.Object_Connect
(Get_Cancel_Button (Window), "clicked",
Widget_Handler.To_Marshaller (Cancel'Access),
Slot_Object => Window);
Gtk_New (Button, Label => "Hide Fileops");
Files_Cb.Object_Connect
(Button, "clicked",
Files_Cb.To_Marshaller (Hide_Fileop'Access),
Slot_Object => Window);
Pack_Start (Get_Action_Area (Window), Button, False, False, 0);
Show (Button);
Gtk_New (Button, Label => "Show Fileops");
Files_Cb.Object_Connect
(Button, "clicked",
Files_Cb.To_Marshaller (Show_Fileop'Access),
Slot_Object => Window);
Pack_Start (Get_Action_Area (Window), Button, False, False, 0);
Show (Button);
Show (Window);
else
Destroy (Window);
end if;
end Run;
end Create_File_Selection;