<!-- ##### SECTION Title ##### -->
GtkFileSelection

<!-- ##### SECTION Short_Description ##### -->
Prompt the user for a file or directory name

<!-- ##### SECTION Long_Description ##### -->
<para>
#GtkFileSelection has been superseded by the newer #GtkFileChooser family
of widgets.
</para>
<para>
#GtkFileSelection should be used to retrieve file or directory names from 
the user. It will create a new dialog window containing a directory list, 
and a file list corresponding to the current working directory. The filesystem 
can be navigated using the directory list or the drop-down history menu. 
Alternatively, the TAB key can be used to navigate using filename 
completion - common in text based editors such as emacs and jed.
</para>
<para>
File selection dialogs are created with a call to gtk_file_selection_new().
</para>
<para>
The default filename can be set using gtk_file_selection_set_filename() and the selected filename retrieved using gtk_file_selection_get_filename().
</para>
<para>
Use gtk_file_selection_complete() to display files and directories
that match a given pattern. This can be used for example, to show only
*.txt files, or only files beginning with gtk*.
</para>
<para>
Simple file operations; create directory, delete file, and rename file, are available from buttons at the top of the dialog. These can be hidden using gtk_file_selection_hide_fileop_buttons() and shown again using gtk_file_selection_show_fileop_buttons().
</para>
<para>
<example>
<title>Getting a filename from the user.</title>
<programlisting>

/* The file selection widget and the string to store the chosen filename */

void store_filename (GtkWidget *widget, gpointer user_data) {
   GtkWidget *file_selector = GTK_WIDGET (user_data);
   const gchar *selected_filename;

   selected_filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_selector));
   g_print ("Selected filename: &percnt;s\n", selected_filename);
}

void create_file_selection (void) {

   GtkWidget *file_selector;

   /* Create the selector */
   
   file_selector = gtk_file_selection_new ("Please select a file for editing.");
   
   g_signal_connect (GTK_FILE_SELECTION (file_selector)->ok_button,
                     "clicked",
                     G_CALLBACK (store_filename),
                     file_selector);
   			   
   /* Ensure that the dialog box is destroyed when the user clicks a button. */
   
   g_signal_connect_swapped (GTK_FILE_SELECTION (file_selector)->ok_button,
                             "clicked",
                             G_CALLBACK (gtk_widget_destroy), 
                             file_selector);

   g_signal_connect_swapped (GTK_FILE_SELECTION (file_selector)->cancel_button,
                             "clicked",
                             G_CALLBACK (gtk_widget_destroy),
                             file_selector); 
   
   /* Display that dialog */
   
   gtk_widget_show (file_selector);
}

</programlisting>
</example>
</para>

<!-- ##### SECTION See_Also ##### -->

<para>
<variablelist>
<varlistentry>
<term>#GtkDialog</term>
<listitem><para>Add your own widgets into the #GtkFileSelection.</para></listitem>
</varlistentry>
</variablelist>
</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### SECTION Image ##### -->


<!-- ##### STRUCT GtkFileSelection ##### -->
<para>
The #GtkFileSelection struct contains the following #GtkWidget fields:
</para>

@dir_list: 
@file_list: 
@selection_entry: 
@selection_text: 
@main_vbox: 
@ok_button: 
@cancel_button: the two main buttons that signals should be connected 
    to in order to perform an action when the user hits either OK or 
    Cancel.
@help_button: 
@history_pulldown: the #GtkOptionMenu used to create the drop-down 
    directory history.
@history_menu: 
@history_list: 
@fileop_dialog: the dialog box used to display the #GtkFileSelection. 
   It can be customized by adding/removing widgets from it using the 
   standard #GtkDialog functions.
@fileop_entry: 
@fileop_file: 
@cmpl_state: 
@fileop_c_dir: 
@fileop_del_file: 
@fileop_ren_file: the buttons that appear at the top of the file 
    selection dialog. These "operation buttons" can be hidden and 
    redisplayed with gtk_file_selection_hide_fileop_buttons() and  
    gtk_file_selection_show_fileop_buttons() respectively.
@button_area: 
@action_area: 

<!-- ##### ARG GtkFileSelection:filename ##### -->
<para>

</para>

<!-- ##### ARG GtkFileSelection:select-multiple ##### -->
<para>

</para>

<!-- ##### ARG GtkFileSelection:show-fileops ##### -->
<para>

</para>

<!-- ##### FUNCTION gtk_file_selection_new ##### -->
<para>
Creates a new file selection dialog box. By default it will contain a #GtkTreeView of the application's current working directory, and a file listing. Operation buttons that allow the user to create a directory, delete files and rename files, are also present.
</para>

@title: a message that will be placed in the file requestor's titlebar.
@Returns: the new file selection.
@Deprecated: Use gtk_file_chooser_dialog_new() instead


<!-- ##### MACRO gtk_file_selection_set_filename ##### -->
<para>
</para>



<!-- ##### MACRO gtk_file_selection_get_filename ##### -->
<para>
</para>

@Returns: 


<!-- ##### FUNCTION gtk_file_selection_complete ##### -->
<para>
Will attempt to match @pattern to a valid filenames or subdirectories in the current directory. If a match can be made, the matched filename will appear in the text entry field of the file selection dialog.
If a partial match can be made, the "Files" list will contain those
file names which have been partially matched, and the "Folders"
list those directories which have been partially matched.
</para>

@filesel: a #GtkFileSelection.
@pattern: a string of characters which may or may not match any filenames in the current directory.


<!-- ##### FUNCTION gtk_file_selection_show_fileop_buttons ##### -->
<para>
Shows the file operation buttons, if they have previously been hidden. The rest of the widgets in the dialog will be resized accordingly.
</para>

@filesel: a #GtkFileSelection.


<!-- ##### FUNCTION gtk_file_selection_hide_fileop_buttons ##### -->
<para>
Hides the file operation buttons that normally appear at the top of the dialog. Useful if you wish to create a custom file selector, based on #GtkFileSelection.
</para>

@filesel: a #GtkFileSelection.


<!-- ##### MACRO gtk_file_selection_get_selections ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION gtk_file_selection_set_select_multiple ##### -->
<para>

</para>

@filesel: 
@select_multiple: 


<!-- ##### FUNCTION gtk_file_selection_get_select_multiple ##### -->
<para>

</para>

@filesel: 
@Returns: 


