Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > f092ccd6b07b990b4541a9e0fa29e6c4 > files > 232

libfox1.0-devel-1.0.34-4mdk.ppc.rpm

<html>
<head>
<LINK REL="stylesheet" HREF="styles.css" TYPE="text/css">
<title>FOX-Toolkit</title>
<!-- HTML Copyright 2001 Paul Laufer -->
</head>

<body bgcolor=#ffffff link=#990033 vlink=#4a73ad alink=#ed004f text=#000000>

<!--header-->
<table align=center border=0 cellpadding=0 cellspacing=0 width=100% >
  <tr><td bgcolor=silver colspan=5 align=right height=50><img src=art/oul_grey.gif align=left valign=top width=8 height=8><img src=art/foxlogo.png valign=bottom alt="FOX Toolkit" height=50 width=500 border=0 ></td>
  	<td bgcolor=#557faa valign=top align=right><img src=art/our.gif width=8 height=8></td>
  </tr>
<!-- end header -->
  <tr>
    <td bgcolor=#557faa colspan=2 valign=top align=left>&nbsp;</td>
    <td bgcolor=#557faa colspan=3><font color=#ffffff size=+1><center>
<!-- Page Title -->
Documentation: Foreword
<!-- End Page Title -->
    </center></font></td>
    <td bgcolor=#557faa valign=top align=right>&nbsp;</td>
  </tr>
  <tr>
    <td bgcolor=#557faa colspan=2>&nbsp;</td>
    <td bgcolor=#ffffff valign=top align=left><img src=art/iul.gif width=8 height=8></td>
    <td bgcolor=#ffffff>&nbsp;</td>
    <td bgcolor=#ffffff valign=top align=right><img src=art/iur.gif width=8 height=8></td>
    <td bgcolor=#557faa width=15>&nbsp;</td>
  </tr>
  <tr>
    <td width=8 bgcolor=#557faa>&nbsp;</td>
    <td valign=top bgcolor=#557faa link=#ffffff width=150>

<!-- start navbar content -->

	<a href=fox.html><font color=#ffffff>Home</font></a><br>
	<a href=news.html><font color=#ffffff>News</font></a><br>
	<a href=download.html><font color=#ffffff>Download</font></a><br>
	<a href=goals.html><font color=#ffffff>Goals & Approach</font></a><br>
	<a href=doc.html><font color=#ffffff>Documentation</font></a><br>
	<a href=faq.html><font color=#ffffff>FAQ</font></a><br>
	<a href=rex.html><font color=#ffffff>FXRex</font></a><br>
	<a href=screenshots.html><font color=#ffffff>Screenshots</font></a><br>
	<br>
	<a href=adie.html><font color=#ffffff>Adie</font></a><br>
	<a href=pathfinder.html><font color=#ffffff>PathFinder</font></a><br>
	<a href=calc.html><font color=#ffffff>FOX Calculator</font></a><br>
	<br>
	<a href=projects.html><font color=#ffffff>Projects</font></a><br>
	<br>
	<a href='http://fxpy.sourceforge.net'><font color=#ffffff>FXPy</font></a><br>
	<a href='http://fxruby.sourceforge.net'><font color=#ffffff>FXRuby</font></a><br>
	<a href='http://eiffelfox.sourceforge.net'><font color=#ffffff>EiffelFox</font></a><br>
        <a href='http://eevolved.com/foxhole/'><font color=#ffffff>The FOX Hole</font></a><br>
        <a href='http://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=view;name=FOX+FAQ'><font color=#ffffff>Japanese Docs</font></a><br>
	<br>
	<center>
	<a href="http://www.eff.org/br"><img SRC="art/freespeach.gif" border=0></a>
	<p>
	<a href="http://www.slashdot.org"><img SRC="art/slingerzbutton1.gif" border=0></a>
	</center>



<!-- end navbar content -->

    </td>
    <td bgcolor=#ffffff>&nbsp;</td>
    <td valign=top>

<!-- start main window content -->
<center><img src='art/foxstart.png'>
<BR><B>Documentation: Foreword</B>
</center>
<p><P>FOX stands for Free Objects for X.&nbsp; It is a C++ based class library
for building Graphical User Interfaces.&nbsp; Initially, it was developed
for <A HREF="http://www.redhat.com">LINUX</A>, but the scope of this project
has in the course of time become somewhat more ambitious.&nbsp; Current
aims are to make FOX completely platform independent, and thus programs
written against the FOX library will be only a compile away from running
on a variety of platforms.
<P>The idea of designing and implementing something like FOX started in
spring '97.&nbsp; In the course of using several different systems, ranging
from OSF Motif, NeXTstep,&nbsp; MS Windows,&nbsp; and Intergraph's System
5, the author has developed some conception of what the ideal GUI toolkit
was supposed to look like.&nbsp; After a couple of false starts, and some
experimentation with various ideas under different platforms, FOX was born.
<BR>Because it draws from so many sources, most experienced GUI programmers
will probably recognize a few of the underlying concepts; but only FOX
brings all these together in one integrated system.
<P>Some of the ideas and concepts underlying the FOX system are listed
below:
<BR>&nbsp;
<UL>
<LI>
<B>Ease of Development.&nbsp; </B>Developing Graphical User Interfaces
is a fairly complicated process.&nbsp; FOX reduces the burden on the developer
significantly:</LI>
</UL>

<UL>
<UL>
<LI>
<B>Orthogonality.</B>&nbsp; A few powerfull concepts that can be recombined
in many intuitive ways is preferable to a hodge-podge of ad-hoc solutions.&nbsp;&nbsp;
In a well designed orthogonal toolkit, the developer will be able to transfer
knowledge gained from one scenario to another.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Consistency</B>.&nbsp; Consistent naming of member functions,&nbsp;
consistent ordering of arguments and default parameters, as well as consistent
behaviour of each Widget makes the system much more easy to learn.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Conciseness</B>.&nbsp; <I>Every line of code <B>not</B> written is a
<B>correct</B>
one</I>.&nbsp; So minimizing the number of lines of code to accomplish
the job is a Good Thing.&nbsp; FOX helps with this by being able to create
and initialize most Widgets with a single line of code.&nbsp; The C++ capability
for default parameters to arguments is heavily used, and a lot of glue
code to cement Widgets to each other is eliminated completely by the ability
of FOX Widgets to send messages to each other.</LI>
</UL>
</UL>

<UL>
<LI>
<B>C++ Based.&nbsp;</B> Since FOX is completely written in C++ from the
ground up, developers can easily <I>augment the basic toolkit with their
own Widgets.</I>&nbsp; Since FOX is not a wrapper around some legacy toolkit,
these third-party Widgets are full citizens in the FOX system.&nbsp; Many
GUI toolkits have been written before the advent of C++.&nbsp; Some toolkits
have subsequently been repackaged into C++ wrapper libraries, to give the
C++ programmer the feel of working with a C++ based toolkit.&nbsp; However,
this approach denies users some of the benefits of C++, such as derivation
and overloading to induce new behaviour, as the basic functionality is
not really implemented in C++.</LI>
</UL>

<UL>
<LI>
<B>Modern GUI Features.&nbsp;</B> FOX provides a rich set of Widgets, and
moreover, this set is easily extensible by application programmers.&nbsp;
In the core system, several basic facilities are supported which are part
and parcel of current GUI development:</LI>
</UL>

<UL>
<UL>
<LI>
<B>Icons and Images.&nbsp;</B> FOX provides easy to use facilities for
creating icons and images.&nbsp; Resources such as Icons and Images can
be compiled into the application, and may be instantiated as needed.&nbsp;
FOX supports both GIF and BMP image formats.</LI>

<BR>&nbsp;
<LI>
A <B>Registry</B>, or persistent settings database whereby applications&nbsp;
can save certain parameters such as recent file list, customizations, and
so on.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Tool Tips.&nbsp;</B> Controls in FOX support Tool Tips or Balloon Help.&nbsp;
When the user hovers the cursor over a button or other control, a small
yellow window appears near the cursor with further information detailing
the button operation.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Status Line Help</B>.&nbsp; Besides Tool Tips, FOX also supports additional
help on the status line for each Control.&nbsp; The Status Line typically
displays more extensive help information about the Control the cursor is
over than a Tool Tip.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Tab Books.</B>&nbsp; Ever more sophisticated applications need considerable
more screen real-estate.&nbsp; With Tab Books, several panels of GUI Widgets
may be placed on top of each other and flipped over, similar to browsing
through file folders.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Tree Lists.&nbsp; </B>Many applications need to present hierarchically
organized information to a user.&nbsp; The FOX Tree List provides a concise
view of a hierarchy, allowing users to open and close sublists with the
click of a mouse.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Multiple Document Interface (MDI) Widgets.&nbsp; </B>FOX supports both
Single Document Interface applications as well as Multiple Document Interface
applications, by providing convenient Widget sets for this purpose.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>3D <A HREF="http://www.opengl.org/">OpenGL</A> Widgets.&nbsp;</B> FOX
supports simple, as well as advanced 3D Widgets which make it easy for
developers to get started writing 3D enabled applications.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Drag and Drop.</B>&nbsp; FOX supports Drag and Drop using <A HREF="http://www.newplanetsoftware.com/xdnd/">XDND.</A>&nbsp;
Using <B><I>drag &amp; drop</I></B>, a user can move data objects from
one Widget to another, even between applications running on different machines.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Selection.&nbsp;</B> FOX supports the transfer of data between Widgets
(possibly in different applications) through the X Selection mechanism.</LI>

<LI>
<B>Clipboard Support</B>. Ability to transfer arbitrary data structures
between programs via <B><I>cut &amp; paste</I></B>, even between programs
running on different machines.</LI>
</UL>
</UL>

<UL>
<UL>
<LI>
<B>Timers, Idle Processing.&nbsp;</B> FOX supports both scheduled timers,
i.e. pseudo-events that will cause some action to happen in the future,
as well as Idle Processing, or background actions that execute while no
activity is performed by the user.<BR>
<BR></LI>

<LI>
<B>WYSIWYG</B> Rendering. FOX's <B>device context</B> classes provide abstract
rendering facilities which allow a single rendering code to produce output
to an [user extensible] variety of output devices.<BR>
<BR></LI>

<LI>
<B>Facilities</B> to watch network <B>sockets</B>, <B>pipes</B>, and other
i/o channels.</LI>
</UL>
</UL>

<UL>
<LI>
<B>GUI Updating.&nbsp; </B>FOX makes it easy to keep the graphical user
interface consistent with your application data structures using a unique
facility called GUI Updating.&nbsp; In essence, the FOX Controls such as
Buttons, Sliders, and so on will continuously interrogate the application&nbsp;
and change their state; for example, from enabled to disabled, checked
to unchecked, pressed or unpressed, etc.</LI>
</UL>

<UL>
<LI>
<B>Target/Message Based.&nbsp;</B> FOX is a target/message based system,
in that all GUI events or actions are ultimately translated into messages
sent between objects.&nbsp; As FOX Widgets are also objects, glue-code
which would normally have to be written by the developer can often be eliminated
by simply making one FOX Widget directly the target of another.&nbsp; In
some cases, these messages may even be bi-directional.</LI>
</UL>

<UL>
<LI>
<B>Platform Independence.&nbsp; </B>Applications using FOX are not dependent
directly on X-Windows.&nbsp; As all platform-dependencies are completely
hidden from view by the FOX System (applications don't even include X-Windows
header files!!), such applications will be easily ported to other platforms,
simply by recompiling.</LI>
</UL>

<P><BR>



<!-- end main window content -->

    </td>
    <td bgcolor=#ffffff>&nbsp;</td>
    <td bgcolor=#557faa width=15>&nbsp;</td>
  </tr>
  <tr>
    <td colspan=2 bgcolor="#557faa" align=center>&nbsp;
     </td>
    <td bgcolor=#ffffff valign=bottom align=left><img src=art/ill.gif width=8 height=8></td>
    <td bgcolor=#ffffff>&nbsp;</td>
    <td bgcolor=#ffffff valign=bottom align=right><img src=art/ilr.gif width=8 height=8></td>
    <td bgcolor=#557faa width=15>&nbsp;</td>
  </tr>
  <tr>
    <td valign=bottom align=left bgcolor=#557faa><img src=art/oll.gif width=8 height=8></td>
    <td colspan=4 bgcolor=#557faa>&nbsp;</td>
    <td valign=bottom align=right bgcolor=#557faa><img src=art/olr.gif width=8 height=8></td>
  </tr>
</table>

<address>Copyright 1997-2002 <a href=mailto:jeroen@fox-toolkit.org>Jeroen van der Zijp</a></address>
<!-- Created: Mon Apr 10 11:20:32 CEST 2000 -->
<!-- hhmts start -->

<!-- hhmts end -->
</body>
</html>