<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>doc-src/objgraph.png</filename>
    </added>
    <added>
      <filename>resources/README</filename>
    </added>
    <added>
      <filename>resources/objgraph.dot</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -35,7 +35,7 @@ ns.qtgrok = countershape.grok.grok(&quot;../libqtile&quot;)
 
 pages = [
     Page(&quot;index.html&quot;, &quot;Introduction&quot;),
-    Page(&quot;objects.html&quot;, &quot;Object Hierarchy&quot;),
+    Page(&quot;objects.html&quot;, &quot;Object Graph&quot;),
     Directory(&quot;objects&quot;),
     Page(&quot;configuration.html&quot;, &quot;Configuration&quot;),
     Directory(&quot;configuration&quot;),</diff>
      <filename>doc-src/index.py</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 
-Qtile's public API consists of a hierarchy of nodes, each with a set of
-associated commands. The same API serves a number of different purposes:
+Qtile's public API consists of a graph of nodes, each with a set of associated
+commands. The same API serves a number of different purposes:
 
     - Commands can be bound to keys in the Qtile configuration file. 
     - Commands can be called manually through __qsh__, the Qtile shell.
@@ -10,43 +10,26 @@ Please explore the API using __qsh__ - command lists and detailed documentation
 can be accessed from its built-in help command, and are not documented here.
 
 
-Object Hierarchy
-================
+Object Graph
+============
 
-    Qtile's object hierarchy consists of seven node types: __layout__,
-    __window__, __group__, __bar__, __widget__, __screen__, and a special root
-    node that lies at the top of the tree. Each node has a set of associated
-    commands, a set of children, and a set of keys.  This is what the hierarchy
-    looks like at a high level:
+    Qtile's object graph consists of seven node types: __layout__, __window__,
+    __group__, __bar__, __widget__, __screen__, and a special __root__ node.
+    Individual nodes are addressed by a path specification that starts at the
+    root node, and follows the edges of the graph. Each node has a set of
+    associated commands, a set of children, and a set of keys.  This is what
+    the graph looks like:
 
-&lt;pre&gt;
-root
-    bar
-        screen
-    group
-        layout
-        screen
-        window
-    layout
-        group
-        screen
-        window
-    screen
-        bar
-        layout
-        window
-    widget
-        bar
-        group
-        screen
-    window
-        group
-        screen
-        layout
-&lt;/pre&gt;
+&lt;center&gt;
+&lt;img src=&quot;objgraph.png&quot;&gt;
+&lt;/center&gt;
+    
+    Each arrow can be read as &quot;holds a reference to&quot;. So, we would say that a
+    __widget__ object _holds a reference to_ objects of type __bar__,
+    __screen__ and __group__, exposed as attributes with the same names.
 
     Lets start with a simple example. The following script runs the __status__
-    command on the root node of the command tree (which, in this case, is the
+    command on the root node of the command graph (which, in this case, is the
     Client object):
 
 &lt;!--(block | pySyntax)--&gt;
@@ -55,16 +38,16 @@ c = Client()
 print c.status()
 &lt;!--(end)--&gt;
 
-    Children are exposed as attributes on each node, so we can access the
-    &quot;info&quot; command on the group child node like so:
+    From the graph, we can see that the root node holds a reference to
+    __group__ nodes. We can access the &quot;info&quot; command on the current group like
+    so:
 
 &lt;!--(block | pySyntax)--&gt;
 c.group.info()
 &lt;!--(end)--&gt;
 
-    In the example above, __c.group__ specifies the _current_ group. To access
-    a specific group, regardless of whether or not it is current, we use the
-    Python containment syntax:
+    To access a specific group, regardless of whether or not it is current, we
+    use the Python containment syntax:
 
 &lt;!--(block | pySyntax)--&gt;
 c.group[&quot;b&quot;].info()
@@ -74,7 +57,7 @@ c.group[&quot;b&quot;].info()
     accessed by simply leaving the key specifier out. The key specifier is
     mandatory for __widget__ and __bar__ nodes. 
 
-    We can now drill down deeper in the hierarchy. To access the screen
+    We can now drill down deeper in the graph. To access the screen
     currently displaying group &quot;b&quot;, we can do this:
 
 &lt;!--(block | pySyntax)--&gt;
@@ -89,7 +72,7 @@ c.group[&quot;b&quot;].screen.info()
 libqtile.command.CommandError: No object screen in path 'group['b'].screen'
 &lt;/pre&gt;
 
-    The hierarchy is not a tree, since it can contain cycles. This path
+    The graph is not a tree, since it can contain cycles. This path
     (redundantly) specifies the group belonging to the screen that belongs to
     group &quot;b&quot;:
 </diff>
      <filename>doc-src/objects.html</filename>
    </modified>
    <modified>
      <diff>@@ -7,10 +7,10 @@ be configured to, for example, obey VI keybindings with an appropriate .inputrc
 file. See the GNU Readline documentation for more information.
 
 
-Navigating the Object Hierarchy
-===============================
+Navigating the Object Graph
+===========================
 
-The shell presents a filesystem-like interface to the object hierarchy - the
+The shell presents a filesystem-like interface to the object graph - the
 builtin &quot;cd&quot; and &quot;ls&quot; commmands act like their familiar shell counterparts:
 
 &lt;pre&gt;</diff>
      <filename>doc-src/qsh.html</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>6a20326fda0925a300a3233536c9161c2b179a50</id>
    </parent>
  </parents>
  <author>
    <name>Aldo Cortesi</name>
    <email>aldo@nullcube.com</email>
  </author>
  <url>http://github.com/cortesi/qtile/commit/2d68649fe763c1192bbed684ee6f55b3f5bf9883</url>
  <id>2d68649fe763c1192bbed684ee6f55b3f5bf9883</id>
  <committed-date>2008-11-14T20:57:12-08:00</committed-date>
  <authored-date>2008-11-14T20:57:12-08:00</authored-date>
  <message>Add a graphical depiction of the object graph to the docs.

Also, stop calling the graph a hierarchy or a tree. We'll now consistently
refer to it as an &quot;object graph&quot;.</message>
  <tree>416c0a9e8fc494837fff59fb3fec7a45dc3b3c09</tree>
  <committer>
    <name>Aldo Cortesi</name>
    <email>aldo@nullcube.com</email>
  </committer>
</commit>
