File: gtk-file_selection.ads

package info (click to toggle)
libgtkada2 2.8.1-6lenny3
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 13,496 kB
  • ctags: 3,886
  • sloc: ada: 103,189; ansic: 45,411; perl: 5,500; sh: 2,812; makefile: 1,169; xml: 19
file content (239 lines) | stat: -rw-r--r-- 9,860 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
-----------------------------------------------------------------------
--               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.                                       --
--                                                                   --
-----------------------------------------------------------------------

--  <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.
--  </description>
--  <c_version>2.8.17</c_version>
--  <group>Selectors</group>
--  <testgtk>create_file_selection.adb</testgtk>
--  <screenshot>gtk-file_selection</screenshot>

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 --
   ----------------

   --  <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
   --
   --  </properties>

   Filename_Property        : constant Glib.Properties.Property_String;
   Show_Fileops_Property    : constant Glib.Properties.Property_Boolean;
   Select_Multiple_Property : constant Glib.Properties.Property_Boolean;

   -------------
   -- Signals --
   -------------

   --  <signals>
   --  The following new signals are defined for this widget:
   --  </signals>

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;