<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
  <!ENTITY % gtkdocentities SYSTEM "xml/gtkdocentities.ent">
  %gtkdocentities;
]>
<book id="index">
  <bookinfo>
    <title>&package_name; Reference Manual</title>
    <releaseinfo>
      <para>This document is the API reference for for &package_name; &package_version;.</para>
      <para>
        Dazzle is a library to help you write beautiful and efficient Gtk applications.
        It includes a collection of dazzling Gtk widgets, data structures, search engines,
	a shortcut engine, panels, desktop integration, and those missing pieces from
	common libraries that help you write cleaner and safer code.
      </para>
      <para>
        The latest version of this API reference is also available
        <ulink role="online-location" url="https://developer.gnome.org/libdazzle/">online</ulink>.
      </para>
      <para>
        If you find any issues in this API reference, please report it
        using <ulink type="http" url="&package_bugreport;">the online
        bug reporting tool</ulink> at bugzilla.gnome.org.
      </para>
    </releaseinfo>

    <copyright>
      <year>2014-2017</year>
      <holder>Christian Hergert</holder>
    </copyright>

    <legalnotice>
      <para>
        Permission is granted to copy, distribute and/or modify this
        document under the terms of the <citetitle>GNU Free
          Documentation License</citetitle>, Version 1.1 or any later
        version published by the Free Software Foundation with no
        Invariant Sections, no Front-Cover Texts, and no Back-Cover
        Texts. You may obtain a copy of the <citetitle>GNU Free
          Documentation License</citetitle> from the Free Software
        Foundation by visiting <ulink type="http"
          url="http://www.fsf.org">their Web site</ulink> or by writing
        to:

        <address>
          The Free Software Foundation, Inc.,
          <street>59 Temple Place</street> - Suite 330,
          <city>Boston</city>, <state>MA</state> <postcode>02111-1307</postcode>,
          <country>USA</country>
        </address>
      </para>
    </legalnotice>
  </bookinfo>

  <part id="dazzle-animation">
    <title>Animations</title>
    <partintro>
      <para>
        Dazzle provides utilities for animations of GtkWidgets and GObjects.
        They can optionally be synchronized to a frame clock to ensure that you
        update settings at an optimal time in the draw cycle.
      </para>
    </partintro>
    <xi:include href="xml/dzl-animation.xml"/>
    <xi:include href="xml/dzl-frame-source.xml"/>
    <xi:include href="xml/dzl-box-theatric.xml"/>
  </part>

  <part id="dazzle-groups">
    <title>Signals and Bindings</title>
    <partintro>
      <para>
        Managing groups of signals and properties can be challanging to get
        right. It takes lots of code and detail to ensure you track object
        lifetimes correctly.
      </para>
      <para>
        To simplify this, Dazzle provides helper objects to attach to bind
        multiple properties or connect to multiple signals. You can attach
        and detach them as a set.
      </para>
    </partintro>
    <xi:include href="xml/dzl-binding-group.xml"/>
    <xi:include href="xml/dzl-signal-group.xml"/>
  </part>

  <part id="dazzle-application">
    <title>Applications</title>
    <partintro>
      <para>
        To simplify application creation, we provided a base application to
        automatically integrate features from libdazzle. Such features include
        theme management, keyboard shortcut controllers, icon loading, and menu
        merging.
      </para>
      <para>
        To take advantage of these features, simply subclass the applicaion object.
      </para>
    </partintro>
    <xi:include href="xml/dzl-application.xml"/>
    <xi:include href="xml/dzl-menu-manager.xml"/>
    <xi:include href="xml/dzl-theme-manager.xml"/>
    <xi:include href="xml/dzl-css-provider.xml"/>
  </part>

  <part id="dazzle-prefs">
    <title>Application Preferences</title>
    <xi:include href="xml/dzl-preferences.xml"/>
    <xi:include href="xml/dzl-preferences-bin.xml"/>
    <xi:include href="xml/dzl-preferences-entry.xml"/>
    <xi:include href="xml/dzl-preferences-file-chooser-button.xml"/>
    <xi:include href="xml/dzl-preferences-flow-box.xml"/>
    <xi:include href="xml/dzl-preferences-font-button.xml"/>
    <xi:include href="xml/dzl-preferences-group.xml"/>
    <xi:include href="xml/dzl-preferences-page.xml"/>
    <xi:include href="xml/dzl-preferences-spin-button.xml"/>
    <xi:include href="xml/dzl-preferences-switch.xml"/>
    <xi:include href="xml/dzl-preferences-view.xml"/>
  </part>

  <part id="dazzle-shortcuts">
    <title>Shortcuts</title>
    <xi:include href="xml/dzl-shortcut-accel-dialog.xml"/>
    <xi:include href="xml/dzl-shortcut-chord.xml"/>
    <xi:include href="xml/dzl-shortcut-closure-chain.xml"/>
    <xi:include href="xml/dzl-shortcut-context.xml"/>
    <xi:include href="xml/dzl-shortcut-controller.xml"/>
    <xi:include href="xml/dzl-shortcut-label.xml"/>
    <xi:include href="xml/dzl-shortcut-manager.xml"/>
    <xi:include href="xml/dzl-shortcut-model.xml"/>
    <xi:include href="xml/dzl-shortcuts-group.xml"/>
    <xi:include href="xml/dzl-shortcuts-section.xml"/>
    <xi:include href="xml/dzl-shortcuts-shortcut.xml"/>
    <xi:include href="xml/dzl-shortcuts-window.xml"/>
    <xi:include href="xml/dzl-shortcut-theme-editor.xml"/>
    <xi:include href="xml/dzl-shortcut-theme.xml"/>
  </part>

  <part id="dazzle-panels">
    <title>Window Panels</title>
    <partintro>
      <para>
        Many content creation applications need some sort of panel system. Dazzle
        provides flexible panel widgets and docks for this purpose.
      </para>
    </partintro>
    <xi:include href="xml/dzl-dock-manager.xml"/>
    <xi:include href="xml/dzl-dock.xml"/>
    <xi:include href="xml/dzl-dock-bin.xml"/>
    <xi:include href="xml/dzl-dock-overlay.xml"/>
    <xi:include href="xml/dzl-dock-stack.xml"/>
    <xi:include href="xml/dzl-dock-bin-edge.xml"/>
    <xi:include href="xml/dzl-dock-item.xml"/>
    <xi:include href="xml/dzl-dock-overlay-edge.xml"/>
    <xi:include href="xml/dzl-dock-paned.xml"/>
    <xi:include href="xml/dzl-dock-revealer.xml"/>
    <xi:include href="xml/dzl-dock-transient-grab.xml"/>
    <xi:include href="xml/dzl-dock-types.xml"/>
    <xi:include href="xml/dzl-dock-widget.xml"/>
    <xi:include href="xml/dzl-dock-window.xml"/>
  </part>

  <part id="dazzle-search">
    <title>Searching</title>
    <chapter>
      <title>In-Memory Fuzzy Indexes</title>
      <xi:include href="xml/dzl-fuzzy-mutable-index.xml"/>
    </chapter>
    <chapter>
      <title>Disk-based Fuzzy Indexes</title>
      <xi:include href="xml/dzl-fuzzy-index-builder.xml"/>
      <xi:include href="xml/dzl-fuzzy-index.xml"/>
      <xi:include href="xml/dzl-fuzzy-index-cursor.xml"/>
      <xi:include href="xml/dzl-fuzzy-index-match.xml"/>
    </chapter>
    <xi:include href="xml/dzl-trie.xml"/>
    <xi:include href="xml/dzl-pattern-spec.xml"/>
    <xi:include href="xml/dzl-levenshtein.xml"/>
  </part>

  <part id="dazzle-suggestions">
    <title>Browser-like auto-completion</title>
    <partintro>
      <para>
        Auto-completion in browsers are fairly ubiquitous these days. Having a
        widget that looks and feels like them can be useful for applications to
        feel famliar to users. The suggestion entry of Dazzle can do this.
        You'll need to bring your own search algorithm though.
      </para>
    </partintro>
    <xi:include href="xml/dzl-suggestion.xml"/>
    <xi:include href="xml/dzl-suggestion-entry.xml"/>
    <xi:include href="xml/dzl-suggestion-entry-buffer.xml"/>
    <xi:include href="xml/dzl-suggestion-popover.xml"/>
    <xi:include href="xml/dzl-suggestion-row.xml"/>
  </part>

  <part id="dazzle-tree">
    <title>Lazy Tree Building</title>
    <partintro>
      <para>
        Building and populating tree views lazily can be a difficult process.
        The tree builder and associated classes in Dazzle makes this fast,
        efficient, and easy to perform lazy content creation.
      </para>
    </partintro>
    <xi:include href="xml/dzl-tree.xml"/>
    <xi:include href="xml/dzl-tree-builder.xml"/>
    <xi:include href="xml/dzl-tree-node.xml"/>
    <xi:include href="xml/dzl-tree-types.xml"/>
  </part>

  <part id="dazzle-listbox">
    <title>Recycling List Boxes</title>
    <partintro>
      <para>
        One difficulty with GtkListBox is the performance related to creating
        and destroying rows. To help lower this overhead, Dazzle provides a
        listbox subclass that re-uses existing rows.
      </para>
    </partintro>
    <xi:include href="xml/dzl-list-box-row.xml"/>
    <xi:include href="xml/dzl-list-box.xml"/>
  </part>

  <part id="dazzle-pathbar">
    <title>Path Bars</title>
    <xi:include href="xml/dzl-path-bar.xml"/>
    <xi:include href="xml/dzl-path-element.xml"/>
    <xi:include href="xml/dzl-path.xml"/>
  </part>

  <part id="dazzle-graphing">
    <title>Realtime Graphs</title>
    <xi:include href="xml/dzl-graph-view.xml"/>
    <xi:include href="xml/dzl-graph-renderer.xml"/>
    <xi:include href="xml/dzl-graph-line-renderer.xml"/>
    <xi:include href="xml/dzl-graph-model.xml"/>
    <xi:include href="xml/dzl-graph-column.xml"/>
    <xi:include href="xml/dzl-cpu-graph.xml"/>
    <xi:include href="xml/dzl-cpu-model.xml"/>
  </part>

  <part id="dazzle-counters">
    <title>Performance Counters</title>
    <xi:include href="xml/dzl-counter.xml"/>
  </part>

  <part id="dazzle-widgets">
    <title>Additional Widgets</title>
    <xi:include href="xml/dzl-bin.xml"/>
    <xi:include href="xml/dzl-bolding-label.xml"/>
    <xi:include href="xml/dzl-box.xml"/>
    <xi:include href="xml/dzl-centering-bin.xml"/>
    <xi:include href="xml/dzl-column-layout.xml"/>
    <xi:include href="xml/dzl-elastic-bin.xml"/>
    <xi:include href="xml/dzl-empty-state.xml"/>
    <xi:include href="xml/dzl-entry-box.xml"/>
    <xi:include href="xml/dzl-file-chooser-entry.xml"/>
    <xi:include href="xml/dzl-multi-paned.xml"/>
    <xi:include href="xml/dzl-pill-box.xml"/>
    <xi:include href="xml/dzl-priority-box.xml"/>
    <xi:include href="xml/dzl-progress-button.xml"/>
    <xi:include href="xml/dzl-progress-icon.xml"/>
    <xi:include href="xml/dzl-progress-menu-button.xml"/>
    <xi:include href="xml/dzl-radio-box.xml"/>
    <xi:include href="xml/dzl-scrolled-window.xml"/>
    <xi:include href="xml/dzl-search-bar.xml"/>
    <xi:include href="xml/dzl-simple-label.xml"/>
    <xi:include href="xml/dzl-simple-popover.xml"/>
    <xi:include href="xml/dzl-slider.xml"/>
    <xi:include href="xml/dzl-stack-list.xml"/>
    <xi:include href="xml/dzl-tab-strip.xml"/>
    <xi:include href="xml/dzl-tab.xml"/>
    <xi:include href="xml/dzl-three-grid.xml"/>
  </part>

  <part id="dazzle-data-structures">
    <title>Data Structures</title>
    <xi:include href="xml/dzl-int-pair.xml"/>
    <xi:include href="xml/dzl-heap.xml"/>
    <xi:include href="xml/dzl-ring.xml"/>
  </part>

  <part id="dazzle-actions">
    <title>Action Integration</title>
    <xi:include href="xml/dzl-child-property-action.xml"/>
    <xi:include href="xml/dzl-properties-group.xml"/>
    <xi:include href="xml/dzl-widget-action-group.xml"/>
    <xi:include href="xml/dzl-settings-flag-action.xml"/>
  </part>

  <part id="dazzle-caching">
    <title>Asynchronous Caching</title>
    <xi:include href="xml/dzl-task-cache.xml"/>
  </part>

  <part id="dazzle-directories">
    <title>Directory Management</title>
    <xi:include href="xml/dzl-directory-model.xml"/>
    <xi:include href="xml/dzl-directory-reaper.xml"/>
  </part>

  <part id="dazzle-states">
    <title>State Machines</title>
    <xi:include href="xml/dzl-state-machine.xml"/>
  </part>

  <part id="dazzle-other">
    <title>Utility API</title>
    <xi:include href="xml/dzl-cairo.xml"/>
    <xi:include href="xml/dzl-date-time.xml"/>
    <xi:include href="xml/dzl-dnd.xml"/>
    <xi:include href="xml/dzl-file-manager.xml"/>
    <xi:include href="xml/dzl-gdk.xml"/>
    <xi:include href="xml/dzl-gtk.xml"/>
    <xi:include href="xml/dzl-pango.xml"/>
    <xi:include href="xml/dzl-rgba.xml"/>
    <xi:include href="xml/dzl-variant.xml"/>
    <xi:include href="xml/dzl-settings-sandwich.xml"/>
    <xi:include href="xml/dzl-version.xml"/>
  </part>

  <chapter id="object-tree">
    <title>Object Hierarchy</title>
    <xi:include href="xml/tree_index.sgml"/>
  </chapter>

  <index id="api-index-full">
    <title>API Index</title>
    <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
  </index>

  <index id="deprecated-api-index" role="deprecated">
    <title>Index of deprecated API</title>
    <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
  </index>

  <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>
