]> Pileus Git - ~andy/gtk/commitdiff
Added sections section about generating previews and including extra
authorFederico Mena Quintero <federico@ximian.com>
Tue, 18 Nov 2003 22:50:26 +0000 (22:50 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Tue, 18 Nov 2003 22:50:26 +0000 (22:50 +0000)
2003-11-18  Federico Mena Quintero  <federico@ximian.com>

* gtk/tmpl/gtkfilechooser.sgml: Added sections section about
generating previews and including extra widgets.

* gtk/gtk-docs.sgml: Added a part about migrating old code to new
widgets.

* gtk/migrating-GtkFileChooser.sgml: New file.

* gtk/Makefile.am (content_files): Added
migrating-GtkFileChooser.sgml.

docs/reference/ChangeLog
docs/reference/gtk/Makefile.am
docs/reference/gtk/gtk-docs.sgml
docs/reference/gtk/migrating-GtkFileChooser.sgml [new file with mode: 0644]
docs/reference/gtk/tmpl/gtkfilechooser.sgml
docs/reference/gtk/tmpl/gtkfilechooserdialog.sgml

index 1c5a81b91290c34ca4837dc845328fc86a6da13c..ba1fba06c777b8ba9a68287fa549fbd56d788cc8 100644 (file)
@@ -1,3 +1,16 @@
+2003-11-18  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/tmpl/gtkfilechooser.sgml: Added sections section about
+       generating previews and including extra widgets.
+
+       * gtk/gtk-docs.sgml: Added a part about migrating old code to new
+       widgets.
+
+       * gtk/migrating-GtkFileChooser.sgml: New file.
+
+       * gtk/Makefile.am (content_files): Added
+       migrating-GtkFileChooser.sgml.
+
 Tue Nov 18 00:12:23 2003  Matthias Clasen  <maclas@gmx.de>
 
        * gdk/gdk-sections.txt: Add gdk_drawable_copy_to_image.
index 3efd254bc12f4b4fcb079b753c347efa3e2cd8d9..206f117c3fa43b06ef3b97282633e506760af7c8 100644 (file)
@@ -77,21 +77,22 @@ GTKDOC_LIBS = \
 MKDB_OPTIONS=--sgml-mode --output-format=xml
 
 # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
-content_files =                \
-       version.xml             \
-       running.sgml            \
-       building.sgml           \
-       changes-1.2.sgml        \
-       changes-2.0.sgml        \
-       compiling.sgml          \
-       framebuffer.sgml        \
-       objects_grouped.sgml    \
-       question_index.sgml     \
-       resources.sgml          \
-       text_widget.sgml        \
-       tree_widget.sgml        \
-       windows.sgml            \
-       x11.sgml                \
+content_files =                                        \
+       version.xml                             \
+       running.sgml                            \
+       building.sgml                           \
+       changes-1.2.sgml                        \
+       changes-2.0.sgml                        \
+       compiling.sgml                          \
+       framebuffer.sgml                        \
+       migrating-GtkFileChooser.sgml           \
+       objects_grouped.sgml                    \
+       question_index.sgml                     \
+       resources.sgml                          \
+       text_widget.sgml                        \
+       tree_widget.sgml                        \
+       windows.sgml                            \
+       x11.sgml                                \
        gtk-query-immodules-2.0.xml
 
 # Images to copy into HTML directory
index c32ec5a516149cfab08f4498e6aaa94ff715274f..8cba90713a94c7dfa2e4b1df866fcbaffa0ce5f5 100644 (file)
 <!ENTITY gtk-Questions SYSTEM "question_index.sgml">
 <!ENTITY gtk-Changes-1-2 SYSTEM "changes-1.2.sgml">
 <!ENTITY gtk-Changes-2-0 SYSTEM "changes-2.0.sgml">
+<!ENTITY gtk-migrating-GtkFileChooser SYSTEM "migrating-GtkFileChooser.sgml">
 <!ENTITY version SYSTEM "version.xml">
 <!ENTITY gtk-query-immodules SYSTEM "gtk-query-immodules-2.0.xml">
 ]>
@@ -533,6 +534,19 @@ that is, GUI components such as <link linkend="GtkButton">GtkButton</link> or
     </chapter>
   </part>
 
+  <part id="migrating">
+    <title>Migrating from Previous Versions of GTK+</title>
+
+    <partintro>
+      <para>
+       This part describes what you need to change in programs use
+       older versions of GTK+ so that they can use the new features.
+      </para>
+    </partintro>
+
+    &gtk-migrating-GtkFileChooser;
+  </part>
+
   <part>
     <title>GTK+ Tools</title>
 
diff --git a/docs/reference/gtk/migrating-GtkFileChooser.sgml b/docs/reference/gtk/migrating-GtkFileChooser.sgml
new file mode 100644 (file)
index 0000000..24071d1
--- /dev/null
@@ -0,0 +1,159 @@
+<chapter id="gtk-migrating-GtkFileChooser">
+  <chapterinfo>
+    <title>Migrating from GtkFileSelection to GtkFileChooser</title>
+    <author>
+      <firstname>Federico</firstname>
+      <surname>Mena-Quintero</surname>
+      <affiliation>
+       <address>
+         <email>federico@ximian.com</email>
+       </address>
+      </affiliation>
+    </author>
+  </chapterinfo>
+
+  <para>
+    #GtkFileChooser, starting with GTK+ 2.4, is the new set of APIs
+    for file selection widgets and dialogs.  Previous versions of GTK+
+    used #GtkFileSelection, which has numerous problems.
+  </para>
+
+  <para>
+    #GtkFileChooser is an abstract interface that can be implemented
+    by widgets that perform file selection tasks.  Two widgets in GTK+
+    implement this interface:  #GtkFileChooserDialog and
+    #GtkFileChooserWidget.  Most applications simply need to use
+    #GtkFileChooserDialog, which is a dialog box that allows the user
+    to select existing files for opening them, or to pick new
+    filenames for saving documents.  #GtkFileChooserWidget is for
+    special applications that need to embed a file selection widget
+    inside a larger window.  In the context of GTK+,
+    #GtkFileChooserDialog is simply a #GtkDialog box with a
+    #GtkFileChooserWidget inside.
+  </para>
+
+  <section id="gtkfilechooser-creating">
+    <title>Creating a GtkFileChooserDialog</title>
+
+    <para>
+      To create a #GtkFileChooserDialog, you simply call
+      gtk_file_chooser_dialog_new().  This function is similar to
+      gtk_dialog_new() in that it takes parameters for the title
+      of the dialog box and its transient parent, as well as its
+      buttons.  In addition, it takes in an argument that determines
+      whether the file chooser dialog will be used for opening
+      existing files or for saving to a possibly new file.
+    </para>
+
+    <para>
+      Please see <xref linkend="gtkfilechooser-typical-usage"/> for
+      how to create a simple file chooser dialog and extract the
+      selected filename from it.
+    </para>
+  </section>
+
+  <section id="gtkfilechooser-selection-modes">
+    <title>Selection Modes</title>
+
+    <para>
+      #GtkFileChooser can be used in two modes, to select a single
+      file at a time or to select a set of more than one file.  To set
+      this, use gtk_file_chooser_set_select_multiple().  In
+      single-selection mode, you can use
+      gtk_file_chooser_get_filename() to get a file name from the
+      local file system or gtk_file_chooser_get_uri() to get a
+      full-formed URI.  In multiple-selection mode, you can use
+      gtk_file_chooser_get_filenames() to get a #GSList of filename
+      strings, or gtk_file_chooser_get_uris() to get a list of URI
+      strings.
+    </para>
+
+    <para>
+      Also, you can configure #GtkFileChooser to select files or
+      folders.  Consider a backup program that needs to let the user
+      select a folder that will be backed up along with its
+      subfolders.  To configure whether #GtkFileChooser is used to
+      select files or folders, use gtk_file_chooser_set_folder_mode().
+    </para>
+  </section>
+
+  <section id="gtkfilechooser-installing-preview">
+    <title>Installing a Preview widget</title>
+
+    <para>
+      Many applications need to have a preview facility within their
+      file chooser dialogs.  Previous to GTK+ 2.4, one needed to
+      access the #GtkFileSelection widget hierarchy directly to hook
+      in a preview widget.  With #GtkFileChooser, there is a dedicated
+      API to do this.
+    </para>
+
+    <para>
+      Please see the <link linkend="gtkfilechooser-preview">section on
+      creating preview widgets</link> for more information.
+    </para>
+  </section>
+
+  <section id="gtkfilechooser-installing-extra-widgets">
+    <title>Installing Extra Widgets</title>
+
+    <para>
+      Some applications need to install extra widgets in a file
+      chooser.  For example, an application may want to provide a
+      toggle button to give the user the option of opening a file
+      read-only.
+    </para>
+
+    <para>
+      Please see the <link linkend="gtkfilechooser-extra">section on
+      creating extra widgets</link> for more information.
+    </para>
+  </section>
+
+  <section id="gtkfilechooser-new-features">
+    <title>New features</title>
+
+    <para>
+      New features in #GtkFileChooser include the following:
+    </para>
+
+    <itemizedlist>
+      <listitem>
+       <para>
+         Ability to select URIs rather than just local files.  You
+         must use a #GtkFileSystem implementation that supports this,
+         for example GtkFileSystemGnomeVFS.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+         Present a list of application-specific shortcut folders.
+         For example, a paint program may want to add a shortcut for
+         its <filename>/usr/share/paint_program/Clipart</filename>
+         folder.
+       </para>
+      </listitem>
+
+      <listitem>
+       <para>
+         Define custom filters so that not all the files in a folder
+         are listed.  For example, you could filter out backup files,
+         or show only image files.
+       </para>
+      </listitem>
+    </itemizedlist>
+
+    <para>
+      To see how to use these features, please consult the
+      #GtkFileChooser reference documentation.
+    </para>
+  </section>
+</chapter>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("gtk-docs.sgml" "book" "part" "chapter")
+End:
+-->
index b4a45cd9c05e542db0dc2661c8a854a87ef7bef6..3cce81c8141835f2f248da09fbde8201890675a1 100644 (file)
@@ -15,11 +15,198 @@ File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog.
       programming interface.
     </para>
 
+    <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>
+
+
 <!-- ##### 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 ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GtkFileChooser:filter ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GtkFileChooser:folder-mode ##### -->
+<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>
+
 <!-- ##### ENUM GtkFileChooserAction ##### -->
     <para>
       Describes whether a #GtkFileChooser is being used to open
@@ -98,6 +285,8 @@ File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog.
 </para>
 
 @chooser: 
+@local_only: 
+<!-- # Unused Parameters # -->
 @files_only: 
 
 
@@ -320,8 +509,10 @@ File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog.
 
 </para>
 
-@file_chooser: 
+@chooser: 
 @Returns: 
+<!-- # Unused Parameters # -->
+@file_chooser: 
 
 
 <!-- ##### FUNCTION gtk_file_chooser_get_preview_uri ##### -->
@@ -329,8 +520,10 @@ File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog.
 
 </para>
 
-@file_chooser: 
+@chooser: 
 @Returns: 
+<!-- # Unused Parameters # -->
+@file_chooser: 
 
 
 <!-- ##### FUNCTION gtk_file_chooser_set_extra_widget ##### -->
@@ -433,9 +626,11 @@ File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog.
 </para>
 
 @chooser: 
-@folder
+@uri
 @error: 
 @Returns: 
+<!-- # Unused Parameters # -->
+@folder: 
 
 
 <!-- ##### FUNCTION gtk_file_chooser_remove_shortcut_folder_uri ##### -->
@@ -444,9 +639,11 @@ File chooser interface used by #GtkFileChooserWidget and #GtkFileChooserDialog.
 </para>
 
 @chooser: 
-@folder
+@uri
 @error: 
 @Returns: 
+<!-- # Unused Parameters # -->
+@folder: 
 
 
 <!-- ##### FUNCTION gtk_file_chooser_list_shortcut_folder_uris ##### -->
@@ -467,31 +664,3 @@ End:
 -->
 
 
-<!-- ##### 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.
-
index 1c82b9cb990d108df6daf749f4db5318674bb290..778037e0482a13b64bddf2b37acf6ec659b7ceda 100644 (file)
@@ -20,7 +20,7 @@ A file chooser dialog, suitable for "File/Open" or "File/Save" commands.
       #GtkFileChooser.
     </para>
 
-    <example>
+    <example id="gtkfilechooser-typical-usage">
       <title>Typical usage</title>
 
       <para>