gtk2/docs/reference/gtk/tmpl/gtkfilechooser.sgml
Soeren Sandmann 9d2a946813 === Released 2.5.0 ===
Sun Jul 18 17:21:10 2004  Soeren Sandmann  <sandmann@daimi.au.dk>

        * === Released 2.5.0 ===

        * NEWS: updates

        * tests/testcombo.c: Fix compilation
2004-07-20 02:26:06 +00:00

924 lines
18 KiB
Plaintext

<!-- ##### SECTION Title ##### -->
GtkFileChooser
<!-- ##### SECTION Short_Description ##### -->
File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog.
<!-- ##### SECTION Long_Description ##### -->
<para>
#GtkFileChooser is an interface that can be implemented by file
selection widgets. In GTK+, the main objects that implement
this interface are #GtkFileChooserWidget and
#GtkFileChooserDialog. You do not need to write an object that
implements the #GtkFileChooser interface unless you are trying
to adapt an existing file selector to expose a standard
programming interface.
</para>
<refsect2 id="gtkfilechooser-encodings">
<title>File Names and Encodings</title>
<para>
When the user is finished selecting files in a
#GtkFileChooser, your program can get the selected names
either as filenames or as URIs. For URIs, the normal escaping
rules are applied if the URI contains non-ASCII characters.
However, filenames are <emphasis>always</emphasis> returned in
the character set specified by the
<envar>G_FILENAME_ENCODING</envar> environment variable.
Please see the Glib documentation for more details about this
variable.
</para>
<important>
<para>
This means that while you can pass the result of
gtk_file_chooser_get_filename() to
<function>open(2)</function> or
<function>fopen(3)</function>, you may not be able to
directly set it as the text of a #GtkLabel widget unless you
convert it first to UTF-8, which all GTK+ widgets expect.
You should use g_filename_to_utf8() to convert filenames
into strings that can be passed to GTK+ widgets.
</para>
</important>
</refsect2>
<refsect2 id="gtkfilechooser-preview">
<title>Adding a Preview Widget</title>
<para>
You can add a custom preview widget to a file chooser and then
get notification about when the preview needs to be updated.
To install a preview widget, use
gtk_file_chooser_set_preview_widget(). Then, connect to the
#GtkFileChooser::update-preview signal to get notified when
you need to update the contents of the preview.
</para>
<para>
Your callback should use
gtk_file_chooser_get_preview_filename() to see what needs
previewing. Once you have generated the preview for the
corresponding file, you must call
gtk_file_chooser_set_preview_widget_active() with a boolean
flag that indicates whether your callback could successfully
generate a preview.
</para>
<example id="example-gtkfilechooser-preview">
<title>Sample Usage</title>
<programlisting>
{
GtkImage *preview;
...
preview = gtk_image_new (<!-- -->);
gtk_file_chooser_set_preview_widget (my_file_chooser, preview);
g_signal_connect (my_file_chooser, "update-preview",
G_CALLBACK (update_preview_cb), preview);
}
static void
update_preview_cb (GtkFileChooser *file_chooser, gpointer data)
{
GtkWidget *preview;
char *filename;
GdkPixbuf *pixbuf;
gboolean have_preview;
preview = GTK_WIDGET (data);
filename = gtk_file_chooser_get_preview_filename (file_chooser);
pixbuf = gdk_pixbuf_new_from_file_at_size (filename, 128, 128, NULL);
have_preview = (pixbuf != NULL);
g_free (filename);
gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf);
if (pixbuf)
gdk_pixbuf_unref (pixbuf);
gtk_file_chooser_set_preview_widget_active (file_chooser, have_preview);
}
</programlisting>
</example>
</refsect2>
<refsect2 id="gtkfilechooser-extra">
<title>Adding Extra Widgets</title>
<para>
You can add extra widgets to a file chooser to provide options
that are not present in the default design. For example, you
can add a toggle button to give the user the option to open a
file in read-only mode. You can use
gtk_file_chooser_set_extra_widget() to insert additional
widgets in a file chooser.
</para>
<example id="example-gtkfilechooser-extra">
<title>Sample Usage</title>
<programlisting>
{
GtkWidget *toggle;
...
toggle = gtk_check_button_new_with_label ("Open file read-only");
gtk_widget_show (toggle);
gtk_file_chooser_set_extra_widget (my_file_chooser, toggle);
}
</programlisting>
</example>
<note>
<para>
If you want to set more than one extra widget in the file
chooser, you can a container such as a GtkVBox or a GtkTable
and include your widgets in it. Then, set the container as
the whole extra widget.
</para>
</note>
</refsect2>
<refsect2 id="gtkfilechooser-key-bindings">
<title>Key Bindings</title>
<para>
Internally, GTK+ implements a file chooser's graphical user
interface with the private
<classname>GtkFileChooserDefaultClass</classname>. This
widget has several <link linkend="gtk-Bindings">key
bindings</link> and their associated signals. This section
describes the available key binding signals.
</para>
<example id="gtkfilechooser-key-binding-example">
<title>GtkFileChooser key binding example</title>
<para>
The default keys that activate the key-binding signals in
<classname>GtkFileChooserDefaultClass</classname> are as
follows:
</para>
<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry>Signal name</entry>
<entry>Key</entry>
</row>
<row>
<entry>location-popup</entry>
<entry><keycombo><keycap>Control</keycap><keycap>L</keycap></keycombo></entry>
</row>
<row>
<entry>up-folder</entry>
<entry><keycombo><keycap>Alt</keycap><keycap>Up</keycap></keycombo></entry>
</row>
<row>
<entry>down-folder</entry>
<entry><keycombo><keycap>Alt</keycap><keycap>Down</keycap></keycombo></entry>
</row>
<row>
<entry>home-folder</entry>
<entry><keycombo><keycap>Alt</keycap><keycap>Home</keycap></keycombo></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
To change these defaults to something else, you could
include the following fragment in your
<filename>.gtkrc-2.0</filename> file:
</para>
<programlisting>
binding "my-own-gtkfilechooser-bindings" {
bind "&lt;Alt&gt;&lt;Shift&gt;l" {
"location-popup" ()
}
bind "&lt;Alt&gt;&lt;Shift&gt;Up" {
"up-folder" ()
}
bind "&lt;Alt&gt;&lt;Shift&gt;Down" {
"down-folder" ()
}
bind "&lt;Alt&gt;&lt;Shift&gt;Home" {
"home-folder-folder" ()
}
}
class "GtkFileChooserDefault" binding "my-own-gtkfilechooser-bindings"
</programlisting>
</example>
<refsect3 id="GtkFileChooserDefault-location-popup">
<title>The &quot;GtkFileChooserDefault::location-popup&quot; signal</title>
<programlisting>
void user_function (GtkFileChooserDefault *chooser,
<link linkend="gpointer">gpointer</link> user_data);
</programlisting>
<para>
This is used to make the file chooser show a "Location"
dialog which the user can use to manually type the name of
the file he wishes to select. By default this is bound to
<keycombo><keycap>Control</keycap><keycap>L</keycap></keycombo>.
</para>
<variablelist role="params">
<varlistentry>
<term><parameter>chooser</parameter>&nbsp;:</term>
<listitem>
<simpara>
the object which received the signal.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>user_data</parameter>&nbsp;:</term>
<listitem>
<simpara>
user data set when the signal handler was connected.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect3>
<refsect3 id="GtkFileChooserDefault-up-folder">
<title>The &quot;GtkFileChooserDefault::up-folder&quot; signal</title>
<programlisting>
void user_function (GtkFileChooserDefault *chooser,
<link linkend="gpointer">gpointer</link> user_data);
</programlisting>
<para>
This is used to make the file chooser go to the parent of
the current folder in the file hierarchy. By default this
is bound to
<keycombo><keycap>Alt</keycap><keycap>Up</keycap></keycombo>.
</para>
<variablelist role="params">
<varlistentry>
<term><parameter>chooser</parameter>&nbsp;:</term>
<listitem>
<simpara>
the object which received the signal.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>user_data</parameter>&nbsp;:</term>
<listitem>
<simpara>
user data set when the signal handler was connected.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect3>
<refsect3 id="GtkFileChooserDefault-down-folder">
<title>The &quot;GtkFileChooserDefault::down-folder&quot; signal</title>
<programlisting>
void user_function (GtkFileChooserDefault *chooser,
<link linkend="gpointer">gpointer</link> user_data);
</programlisting>
<para>
This is used to make the file chooser go to a child of the
current folder in the file hierarchy. The subfolder that
will be used is displayed in the path bar widget of the file
chooser. For example, if the path bar is showing
"/foo/<emphasis>bar/</emphasis>baz", then this will cause
the file chooser to switch to the "baz" subfolder. By
default this is bound to
<keycombo><keycap>Alt</keycap><keycap>Down</keycap></keycombo>.
</para>
<variablelist role="params">
<varlistentry>
<term><parameter>chooser</parameter>&nbsp;:</term>
<listitem>
<simpara>
the object which received the signal.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>user_data</parameter>&nbsp;:</term>
<listitem>
<simpara>
user data set when the signal handler was connected.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect3>
<refsect3 id="GtkFileChooserDefault-home-folder">
<title>The &quot;GtkFileChooserDefault::home-folder&quot; signal</title>
<programlisting>
void user_function (GtkFileChooserDefault *chooser,
<link linkend="gpointer">gpointer</link> user_data);
</programlisting>
<para>
This is used to make the file chooser show the user's home
folder in the file list. By default this is bound to
<keycombo><keycap>Alt</keycap><keycap>Home</keycap></keycombo>.
</para>
<variablelist role="params">
<varlistentry>
<term><parameter>chooser</parameter>&nbsp;:</term>
<listitem>
<simpara>
the object which received the signal.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>user_data</parameter>&nbsp;:</term>
<listitem>
<simpara>
user data set when the signal handler was connected.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</refsect3>
</refsect2>
<!-- ##### SECTION See_Also ##### -->
<para>
#GtkFileChooserDialog, #GtkFileChooserWidget
</para>
<!-- ##### STRUCT GtkFileChooser ##### -->
<para>
</para>
<!-- ##### SIGNAL GtkFileChooser::current-folder-changed ##### -->
<para>
</para>
@filechooser: the object which received the signal.
<!-- ##### SIGNAL GtkFileChooser::file-activated ##### -->
<para>
</para>
@filechooser: the object which received the signal.
<!-- ##### SIGNAL GtkFileChooser::selection-changed ##### -->
<para>
</para>
@filechooser: the object which received the signal.
<!-- ##### SIGNAL GtkFileChooser::update-preview ##### -->
<para>
</para>
@filechooser: the object which received the signal.
<!-- ##### ARG GtkFileChooser:action ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:extra-widget ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:file-system-backend ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:filter ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:local-only ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:preview-widget ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:preview-widget-active ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:select-multiple ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:show-hidden ##### -->
<para>
</para>
<!-- ##### ARG GtkFileChooser:use-preview-label ##### -->
<para>
</para>
<!-- ##### ENUM GtkFileChooserAction ##### -->
<para>
Describes whether a #GtkFileChooser is being used to open
existing files or to save to a possibly new file.
</para>
@GTK_FILE_CHOOSER_ACTION_OPEN: Indicates open mode. The file chooser
will only let the user pick an existing file.
@GTK_FILE_CHOOSER_ACTION_SAVE: Indicates save mode. The file chooser
will let the user pick an existing file, or type in a new
filename.
@GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER: Indicates an Open mode for
selecting folders. The file chooser will let the user pick an
existing folder.
@GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER: Indicates a mode for creating a
new folder. The file chooser will let the user name an existing or
new folder.
<!-- ##### MACRO GTK_FILE_CHOOSER_ERROR ##### -->
<para>
Used to get the #GError quark for #GtkFileChooser errors.
</para>
<!-- ##### ENUM GtkFileChooserError ##### -->
<para>
These identify the various errors that can occur while calling
#GtkFileChooser functions.
</para>
@GTK_FILE_CHOOSER_ERROR_NONEXISTENT: Indicates that a file does not exist.
@GTK_FILE_CHOOSER_ERROR_BAD_FILENAME: Indicates a malformed filename.
<!-- ##### FUNCTION gtk_file_chooser_error_quark ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_action ##### -->
<para>
</para>
@chooser:
@action:
<!-- ##### FUNCTION gtk_file_chooser_get_action ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_local_only ##### -->
<para>
</para>
@chooser:
@local_only:
<!-- # Unused Parameters # -->
@files_only:
<!-- ##### FUNCTION gtk_file_chooser_get_local_only ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_select_multiple ##### -->
<para>
</para>
@chooser:
@select_multiple:
<!-- ##### FUNCTION gtk_file_chooser_get_select_multiple ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_current_name ##### -->
<para>
</para>
@chooser:
@name:
<!-- ##### FUNCTION gtk_file_chooser_get_filename ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_filename ##### -->
<para>
</para>
@chooser:
@filename:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_select_filename ##### -->
<para>
</para>
@chooser:
@filename:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_unselect_filename ##### -->
<para>
</para>
@chooser:
@filename:
<!-- ##### FUNCTION gtk_file_chooser_select_all ##### -->
<para>
</para>
@chooser:
<!-- ##### FUNCTION gtk_file_chooser_unselect_all ##### -->
<para>
</para>
@chooser:
<!-- ##### FUNCTION gtk_file_chooser_get_filenames ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_current_folder ##### -->
<para>
</para>
@chooser:
@filename:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_get_current_folder ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_get_uri ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_uri ##### -->
<para>
</para>
@chooser:
@uri:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_select_uri ##### -->
<para>
</para>
@chooser:
@uri:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_unselect_uri ##### -->
<para>
</para>
@chooser:
@uri:
<!-- ##### FUNCTION gtk_file_chooser_get_uris ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_current_folder_uri ##### -->
<para>
</para>
@chooser:
@uri:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_get_current_folder_uri ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_preview_widget ##### -->
<para>
</para>
@chooser:
@preview_widget:
<!-- ##### FUNCTION gtk_file_chooser_get_preview_widget ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_preview_widget_active ##### -->
<para>
</para>
@chooser:
@active:
<!-- ##### FUNCTION gtk_file_chooser_get_preview_widget_active ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_use_preview_label ##### -->
<para>
</para>
@chooser:
@use_label:
<!-- ##### FUNCTION gtk_file_chooser_get_use_preview_label ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_get_preview_filename ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- # Unused Parameters # -->
@file_chooser:
<!-- ##### FUNCTION gtk_file_chooser_get_preview_uri ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- # Unused Parameters # -->
@file_chooser:
<!-- ##### FUNCTION gtk_file_chooser_set_extra_widget ##### -->
<para>
</para>
@chooser:
@extra_widget:
<!-- ##### FUNCTION gtk_file_chooser_get_extra_widget ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_add_filter ##### -->
<para>
</para>
@chooser:
@filter:
<!-- ##### FUNCTION gtk_file_chooser_remove_filter ##### -->
<para>
</para>
@chooser:
@filter:
<!-- ##### FUNCTION gtk_file_chooser_list_filters ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_set_filter ##### -->
<para>
</para>
@chooser:
@filter:
<!-- ##### FUNCTION gtk_file_chooser_get_filter ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_add_shortcut_folder ##### -->
<para>
</para>
@chooser:
@folder:
@error:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_remove_shortcut_folder ##### -->
<para>
</para>
@chooser:
@folder:
@error:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_list_shortcut_folders ##### -->
<para>
</para>
@chooser:
@Returns:
<!-- ##### FUNCTION gtk_file_chooser_add_shortcut_folder_uri ##### -->
<para>
</para>
@chooser:
@uri:
@error:
@Returns:
<!-- # Unused Parameters # -->
@folder:
<!-- ##### FUNCTION gtk_file_chooser_remove_shortcut_folder_uri ##### -->
<para>
</para>
@chooser:
@uri:
@error:
@Returns:
<!-- # Unused Parameters # -->
@folder:
<!-- ##### FUNCTION gtk_file_chooser_list_shortcut_folder_uris ##### -->
<para>
</para>
@chooser:
@Returns:
<!--
Local variables:
mode: sgml
sgml-parent-document: ("../gtk-docs.sgml" "book" "refentry")
End:
-->