]> git.decadent.org.uk Git - ion3-doc.git/blobdiff - ionconf/node3.html
Merge commit '20080103' into HEAD
[ion3-doc.git] / ionconf / node3.html
index cfe57dd50badd1e87a34654db1e5522ffc87fa0c..8af0cedc0121992cabaee5f39bf8cdc959d653ff 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html267"
+<A NAME="tex2html266"
   HREF="node4.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html261"
+<A NAME="tex2html260"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html255"
+<A NAME="tex2html254"
   HREF="node2.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html263"
+<A NAME="tex2html262"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html265"
+<A NAME="tex2html264"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html268"
+<B> Next:</B> <A NAME="tex2html267"
   HREF="node4.html">3. Basic configuration</A>
-<B> Up:</B> <A NAME="tex2html262"
+<B> Up:</B> <A NAME="tex2html261"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html256"
+<B> Previous:</B> <A NAME="tex2html255"
   HREF="node2.html">1. Introduction</A>
- &nbsp; <B>  <A NAME="tex2html264"
+ &nbsp; <B>  <A NAME="tex2html263"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html266"
+ &nbsp; <B>  <A NAME="tex2html265"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -61,22 +61,22 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html269"
+<LI><A NAME="tex2html268"
   HREF="node3.html#SECTION00310000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules</A>
-<LI><A NAME="tex2html270"
+<LI><A NAME="tex2html269"
   HREF="node3.html#SECTION00320000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies</A>
 <UL>
-<LI><A NAME="tex2html271"
+<LI><A NAME="tex2html270"
   HREF="node3.html#SECTION00321000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html272"
+<LI><A NAME="tex2html271"
   HREF="node3.html#SECTION00322000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
 <UL>
-<LI><A NAME="tex2html273"
+<LI><A NAME="tex2html272"
   HREF="node3.html#SECTION00322100000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html274"
+<LI><A NAME="tex2html273"
   HREF="node3.html#SECTION00322200000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
 </UL>
-<LI><A NAME="tex2html275"
+<LI><A NAME="tex2html274"
   HREF="node3.html#SECTION00323000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
 </UL></UL>
 <!--End of Table of Child-Links-->
@@ -180,7 +180,7 @@ loads another set of modules.
 <P>
 While Ion does not not have a truly object-oriented design
 <A NAME="tex2html3"
-  HREF="#foot297"><SUP><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>,
+  HREF="#foot295"><SUP><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>,
 things that appear on the computer screen are, however, quite
 naturally expressed as such ``objects''. Therefore Ion implements
 a rather primitive OO system for these screen objects and some
@@ -221,7 +221,7 @@ implement.
 
 <P>
 
-<DIV ALIGN="CENTER"><A NAME="fig:classhierarchy"></A><A NAME="404"></A>
+<DIV ALIGN="CENTER"><A NAME="fig:classhierarchy"></A><A NAME="402"></A>
 <TABLE>
 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.1:</STRONG>
 Partial Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="textit">mod_query</SPAN> 
@@ -233,16 +233,16 @@ Partial Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="texti
      |    |--&gt;WWindow
      |    |    |--&gt;WMPlex
      |    |    |    |--&gt;WFrame
-     |    |    |    |--&gt;WScreen
-     |    |    |         |--&gt;WRootWin
-     |    |    |--&gt;WInput (mod_query)
+     |    |    |    `--&gt;WScreen
+     |    |    |         `--&gt;WRootWin
+     |    |    `--&gt;WInput (mod_query)
      |    |         |--&gt;WEdln (mod_query)
-     |    |         |--&gt;WMessage (mod_query)
+     |    |         `--&gt;WMessage (mod_query)
      |    |--&gt;WGroup
      |    |    |--&gt;WGroupWS
-     |    |    |--&gt;WGroupCW
-     |    |--&gt;WTiling (mod_tiling)
-     |--&gt;WSplit (mod_tiling)
+     |    |    `--&gt;WGroupCW
+     |    `--&gt;WTiling (mod_tiling)
+     `--&gt;WSplit (mod_tiling)
 </PRE></TD></TR>
 </TABLE>
 </DIV>
@@ -253,13 +253,13 @@ The core classes:
 <P>
 <DL>
 <DT><STRONG>Obj</STRONG></DT>
-<DD><A NAME="410"></A>
+<DD><A NAME="408"></A>
     Is the base of Ion's object system.
 
 <P>
 </DD>
 <DT><STRONG>WRegion</STRONG></DT>
-<DD><A NAME="411"></A>
+<DD><A NAME="409"></A>
     is the base class for everything corresponding to something on the
     screen. Each object of type WRegion has a size and  position
     relative to the parent WRegion. While a big part of Ion 
@@ -271,14 +271,14 @@ The core classes:
 <P>
 </DD>
 <DT><STRONG>WClientWin</STRONG></DT>
-<DD><A NAME="412"></A> is a class for
+<DD><A NAME="410"></A> is a class for
     client window objects, the objects that window managers are
     supposed to manage.
 
 <P>
 </DD>
 <DT><STRONG>WWindow</STRONG></DT>
-<DD><A NAME="413"></A> is the base class for all
+<DD><A NAME="411"></A> is the base class for all
     internal objects having an X window associated to them
     (WClientWins also have X windows associated to them).
 
@@ -292,25 +292,25 @@ The core classes:
 <P>
 </DD>
 <DT><STRONG>WScreen</STRONG></DT>
-<DD><A NAME="414"></A> is an instance of WMPlex
+<DD><A NAME="412"></A> is an instance of WMPlex
     for screens.
 
 <P>
 </DD>
 <DT><STRONG>WRootWin</STRONG></DT>
-<DD><A NAME="415"></A> is the class for
-    root windows<A NAME="331"></A> of X screens<A NAME="332"></A>.
+<DD><A NAME="413"></A> is the class for
+    root windows<A NAME="329"></A> of X screens<A NAME="330"></A>.
     It is an instance of WScreen.
     Note that an ``X screen'' or root window is not necessarily a
-    single physical screen<A NAME="334"></A> as a root window
+    single physical screen<A NAME="332"></A> as a root window
     may be split over multiple screens when ugly hacks such as 
-    Xinerama<A NAME="335"></A> are used. (Actually there can be only 
+    Xinerama<A NAME="333"></A> are used. (Actually there can be only 
     one root window when Xinerama is used.) 
 
 <P>
 </DD>
 <DT><STRONG>WFrame</STRONG></DT>
-<DD><A NAME="416"></A> is the class for frames.
+<DD><A NAME="414"></A> is the class for frames.
     While most Ion's objects have no graphical presentation, frames 
     basically add to WMPlexes the decorations around client 
     windows (borders, tabs).
@@ -318,11 +318,11 @@ The core classes:
 <P>
 </DD>
 <DT><STRONG>WGroup</STRONG></DT>
-<DD><A NAME="417"></A> is the base class for groups.
+<DD><A NAME="415"></A> is the base class for groups.
     Particular types of groups are workspaces 
-    (WGroupWS<A NAME="418"></A>)
+    (WGroupWS<A NAME="416"></A>)
     and groups of client windows
-    (WGroupCW<A NAME="419"></A>).
+    (WGroupCW<A NAME="417"></A>).
 </DD>
 </DL>
 
@@ -332,12 +332,12 @@ Classes implemented by the <SPAN  CLASS="textit">mod_tiling</SPAN> module:
 <P>
 <DL>
 <DT><STRONG>WTiling</STRONG></DT>
-<DD><A NAME="421"></A> is the class for tilings
+<DD><A NAME="419"></A> is the class for tilings
     of frames.
   
 </DD>
 <DT><STRONG>WSplit</STRONG></DT>
-<DD><A NAME="422"></A> (or, more specifically, classes
+<DD><A NAME="420"></A> (or, more specifically, classes
     that inherit it) encode the WTiling tree structure.
 </DD>
 </DL>
@@ -348,19 +348,19 @@ Classes implemented by the <SPAN  CLASS="textit">mod_query</SPAN> module:
 <P>
 <DL>
 <DT><STRONG>WInput</STRONG></DT>
-<DD><A NAME="424"></A> is a virtual base class for the
+<DD><A NAME="422"></A> is a virtual base class for the
     two classes below.
   
 </DD>
 <DT><STRONG>WEdln</STRONG></DT>
-<DD><A NAME="425"></A> is the class for the ``queries'',
+<DD><A NAME="423"></A> is the class for the ``queries'',
     the text inputs that usually appear at bottoms of frames and sometimes
     screens. Queries are the functional equivalent of ``mini buffers'' in
     many text editors.
   
 </DD>
 <DT><STRONG>WMessage</STRONG></DT>
-<DD><A NAME="426"></A> implements the boxes for 
+<DD><A NAME="424"></A> implements the boxes for 
     warning and other messages that Ion may wish to display to the user. 
     These also usually appear at bottoms of frames.
 </DD>
@@ -384,7 +384,7 @@ binding callbacks in the move and resize mode.
 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
 </H4>
 Each object of type WRegion has a parent and possibly a manager
-associated to it. The parent<A NAME="367"></A> for an object is always a 
+associated to it. The parent<A NAME="365"></A> for an object is always a 
 WWindow and for WRegion with an X window (WClientWin,
 WWindow) the parent WWindow is given by the same relation of
 the X windows. For other WRegions the relation is not as clear.
@@ -394,36 +394,34 @@ Figure <A HREF="#fig:parentship">2.2</A>.
 
 <P>
 
-<DIV ALIGN="CENTER"><A NAME="fig:parentship"></A><A NAME="378"></A>
+<DIV ALIGN="CENTER"><A NAME="fig:parentship"></A><A NAME="376"></A>
 <TABLE>
 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.2:</STRONG>
 Most common parent-child relations</CAPTION>
 <TR><TD><PRE>
     WRootWins
-     |--&gt;WScreens
-          |--&gt;WGroupWSs
-          |--&gt;WTilings
-          |--&gt;WClientWins in full screen mode
-          |--&gt;WFrames
-               |--&gt;WGroupCWs
-               |--&gt;WClientWins
-               |--&gt;WFrames for transients
-               |--&gt;a possible WEdln or WMessage
+     |--&gt;WGroupWSs
+     |--&gt;WTilings
+     |--&gt;WClientWins in full screen mode
+     `--&gt;WFrames
+          |--&gt;WGroupCWs
+          |--&gt;WClientWins
+          |--&gt;WFrames for transients
+          `--&gt;a possible WEdln or WMessage
 </PRE></TD></TR>
 </TABLE>
 </DIV>
 
 <P>
 WRegions have very little control over their children as a parent.
-The manager<A NAME="382"></A> WRegion has much more control over its
+The manager<A NAME="380"></A> WRegion has much more control over its
 managed WRegions. Managers, for example, handle resize requests,
 focusing and displaying of the managed regions. Indeed the manager--managed
 relationship gives a better picture of the logical ordering of objects on
 the screen. Again, there are generally few limits, but the most common
 hierarchy is given in Figure <A HREF="#fig:managership">2.3</A>. Note that sometimes
-the parent and manager are the same object and not all objects may have
-a manager (e.g. the dock in the dock module at the time of writing this)
-but all have a parent-a screen if not anything else.
+the parent and manager are the same object and not all regions may have
+a manager, but all have a parent-a screen if not anything else.
 
 <P>
 
@@ -433,26 +431,25 @@ but all have a parent-a screen if not anything else.
 
 <P>
 
-<DIV ALIGN="CENTER"><A NAME="fig:managership"></A><A NAME="390"></A>
+<DIV ALIGN="CENTER"><A NAME="fig:managership"></A><A NAME="388"></A>
 <TABLE>
 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.3:</STRONG>
 Most common manager-managed relations</CAPTION>
 <TR><TD><PRE>
     WRootWins
-     |--&gt;WScreens
-          |--&gt;WGroupCWs for full screen WClientWins
-          |    |--&gt;WClientWins
-          |    |--&gt;WFrames for transients (dialogs)
-          |         |--&gt; WClientWin
-          |--&gt;WGroupWSs for workspaces
-          |    |--&gt;WTiling
-          |    |    |--&gt;WFrames
-          |    |    |    |--&gt;WGroupCWs (with contents as above)
-          |    |    |--&gt;possibly a WStatusBar or WDock
-          |    |--&gt;WFrames for floating content
-          |    |--&gt;possibly a WEdln, WMessage or WMenu
-          |    |--&gt;possibly a WStatusBar or WDock (if no tiling)
-          |--&gt;WFrames for sticky stuff, such as the scratchpad
+     |--&gt;WGroupCWs for full screen WClientWins
+     |    |--&gt;WClientWins
+     |    `--&gt;WFrames for transients (dialogs)
+     |         `--&gt; WClientWin
+     |--&gt;WGroupWSs for workspaces
+     |    |--&gt;WTiling
+     |    |    |--&gt;WFrames
+     |    |    |    `--&gt;WGroupCWs (with contents as above)
+     |    |    `--&gt;possibly a WStatusBar or WDock
+     |    |--&gt;WFrames for floating content
+     |    |--&gt;possibly a WEdln, WMessage or WMenu
+     |    `--&gt;possibly a WStatusBar or WDock (if no tiling)
+     `--&gt;WFrames for sticky stuff, such as the scratchpad
 </PRE></TD></TR>
 </TABLE>
 </DIV>
@@ -497,7 +494,7 @@ consideration:
 <P>
 <BR><HR><H4>Footnotes</H4>
 <DL>
-<DT><A NAME="foot297">... design</A><A
+<DT><A NAME="foot295">... design</A><A
  HREF="node3.html#tex2html3"><SUP><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
 <DD>the author doesn't like such artificial designs
 
@@ -505,31 +502,31 @@ consideration:
 </DL>
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html267"
+<A NAME="tex2html266"
   HREF="node4.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html261"
+<A NAME="tex2html260"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html255"
+<A NAME="tex2html254"
   HREF="node2.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html263"
+<A NAME="tex2html262"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html265"
+<A NAME="tex2html264"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html268"
+<B> Next:</B> <A NAME="tex2html267"
   HREF="node4.html">3. Basic configuration</A>
-<B> Up:</B> <A NAME="tex2html262"
+<B> Up:</B> <A NAME="tex2html261"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html256"
+<B> Previous:</B> <A NAME="tex2html255"
   HREF="node2.html">1. Introduction</A>
- &nbsp; <B>  <A NAME="tex2html264"
+ &nbsp; <B>  <A NAME="tex2html263"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html266"
+ &nbsp; <B>  <A NAME="tex2html265"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->