X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=objects.tex;h=b9de1475cc0920da336ed23aff8375e616a0b76d;hb=6121e0e6f3aea3e43bf6d432fdd474566fd08a16;hp=e751eabf27fe4c7de892c0d58b01201177e623a0;hpb=6e84dc8312f2fdb5b8b7467a0279afd5b2df107f;p=ion3-doc.git diff --git a/objects.tex b/objects.tex index e751eab..b9de147 100644 --- a/objects.tex +++ b/objects.tex @@ -5,7 +5,7 @@ While Ion does not not have a truly object-oriented design \footnote{the author doesn't like such artificial designs}, things that appear on the computer screen are, however, quite -naturally expressed as such ''objects''. Therefore Ion implements +naturally expressed as such ``objects''. Therefore Ion implements a rather primitive OO system for these screen objects and some other things. @@ -21,7 +21,7 @@ basic relations. For simplicity we consider only the essential-for-basic-configuration Ioncore, \file{mod\_tiling} and \file{mod\_query} classes. -See Appendix \ref{app:fullhierarchy} for the full class hierachy visible +See Appendix \ref{app:fullhierarchy} for the full class hierarchy visible to Lua side. \subsection{Class hierarchy} @@ -44,10 +44,10 @@ implement. |-->WRegion | |-->WClientWin | |-->WWindow - | | |-->WRootWin | | |-->WMPlex - | | | |-->WScreen | | | |-->WFrame + | | | |-->WScreen + | | | |-->WRootWin | | |-->WInput (mod_query) | | |-->WEdln (mod_query) | | |-->WMessage (mod_query) @@ -73,7 +73,7 @@ The core classes: screen. Each object of type \type{WRegion} has a size and position relative to the parent \type{WRegion}. While a big part of Ion operates on these instead of more specialised classes, \type{WRegion} - is a ''virtual'' base class in that there are no objects of ''pure'' + is a ``virtual'' base class in that there are no objects of ``pure'' type \type{WRegion}; all concrete regions are objects of some class that inherits \type{WRegion}. @@ -85,28 +85,26 @@ The core classes: internal objects having an X window associated to them (\type{WClientWins} also have X windows associated to them). + \item[\type{WMPlex}] is a base class for all regions that ``multiplex'' + other regions. This means that of the regions managed by the multiplexer, + only one can be displayed at a time. + + \item[\type{WScreen}]\indextype{WScreen} is an instance of \type{WMPlex} + for screens. + \item[\type{WRootWin}]\indextype{WRootWin} is the class for root windows\index{root window} of X screens\index{screen!X}. - Note that an ''X screen'' or root window is not necessarily a - single physical screen\index{screen!physical} as a root window - may be split over multiple screens when multi-head extensions - such as Xinerama\index{Xinerama} are used. (Actually there - can be only one \type{WRootWin} when Xinerama is used.) - - \item[\type{WMPlex}] is a base class for all regions that''multiplex'' - other regions. This means that of the regions managed by the multiplexer, - only one can be displayed at a time. Classes that inhereit \type{WMPlex} - include screens and frames. + It is an instance of \type{WScreen}. + Note that an ``X screen'' or root window is not necessarily a + single physical screen\index{screen!physical} as a root window + may be split over multiple screens when ugly hacks such as + Xinerama\index{Xinerama} are used. (Actually there can be only + one root window when Xinerama is used.) - \item[\type{WScreen}]\indextype{WScreen} is the class for objects - corresponding to physical screens. Screens may share a root - window when Xinerama multihead extensions are used as explained - above. - \item[\type{WFrame}]\indextype{WFrame} is the class for frames. - While most Ion's objects have no graphical presentation, frames basically - add to \type{WMPlex}es the decorations around client windows - (borders, tabs). + While most Ion's objects have no graphical presentation, frames + basically add to \type{WMPlex}es the decorations around client + windows (borders, tabs). \item[\type{WGroup}]\indextype{WGroup} is the base class for groups. Particular types of groups are workspaces @@ -131,16 +129,16 @@ Classes implemented by the \file{mod\_query} module: \begin{description} \item[\type{WInput}]\indextype{WInput} is a virtual base class for the two classes below. - \item[\type{WEdln}]\indextype{WEdln} is the class for the ''queries'', + \item[\type{WEdln}]\indextype{WEdln} 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 + screens. Queries are the functional equivalent of ``mini buffers'' in many text editors. \item[\type{WMessage}]\indextype{WMessage} 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. \end{description} -There are also some other ''proxy'' classes that do not refer +There are also some other ``proxy'' classes that do not refer to objects on the screen. The only important one of these for basic configuration is \type{WMoveresMode} that is used for binding callbacks in the move and resize mode. @@ -204,10 +202,12 @@ but all have a parent--a screen if not anything else. | |--> WClientWin |-->WGroupWSs for workspaces | |-->WTiling - | | |-->possibly a WEdln, WMessage or WMenu | | |-->WFrames - | | |-->WGroupCWs (with contents as above) + | | | |-->WGroupCWs (with contents as above) + | | |-->possibly a WStatusBar or WDock | |-->WFrames for floating content + | |-->possibly a WEdln, WMessage or WMenu + | |-->possibly a WStatusBar or WDock (if no tiling) |-->WFrames for sticky stuff, such as the scratchpad \end{verbatim} \caption{Most common manager--managed relations}