[Fxruby-commits] CVS: FXRuby/doc build.html,1.23.2.2,1.23.2.3 build.xml,1.5.2.2,1.5.2.3 changes.html
Status: Inactive
Brought to you by:
lyle
From: Lyle J. <ly...@us...> - 2002-06-17 17:49:34
|
Update of /cvsroot/fxruby/FXRuby/doc In directory usw-pr-cvs1:/tmp/cvs-serv4506 Modified Files: Tag: release10 build.html build.xml changes.html changes.xml library.html library.xml scintilla.html scintilla.xml Log Message: Updated changes list and other docs. Index: build.html =================================================================== RCS file: /cvsroot/fxruby/FXRuby/doc/build.html,v retrieving revision 1.23.2.2 retrieving revision 1.23.2.3 diff -C2 -d -r1.23.2.2 -r1.23.2.3 *** build.html 10 May 2002 22:23:13 -0000 1.23.2.2 --- build.html 17 Jun 2002 17:49:29 -0000 1.23.2.3 *************** *** 5,18 **** pre-compiled FXRuby binaries. Linux RPMs are also available for download. Otherwise, you will need to compile the shared library for FXRuby from the ! source code.</p><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e62"></a>The Basics</h2></div></div><p>These instructions assume that you've already downloaded, compiled and installed FOX. Next, you'll need to download the FXRuby source code tarball and unpack it by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>tar xzf FXRuby-1.0.3.tar.gz</b></pre></td></tr></table><p>This will create a new directory called <tt>FXRuby-1.0.3</tt>. Change to the top-level directory and configure the build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb config</b></pre></td></tr></table><p>By default, the <tt>install.rb</tt> script will look for the FOX include files and library in the standard <tt>/usr/local/include/fox</tt> and <tt>/usr/local/lib</tt> directories, respectively. You can override these locations by passing a few additional arguments to <tt>install.rb</tt> during this step, e.g.</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb config -- \ ! --with-fox-include=/home/lyle/fox-1.0.3/include \ ! --with-fox-lib=/home/lyle/fox-1.0.3/src/.libs</b></pre></td></tr></table><p>Once the build has been configured, you can start the build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb setup</b></pre></td></tr></table><p>It will take quite awhile to build FXRuby, even on a fast machine, so this might be a good time to take a coffee break. If you run into problems during the compilation, please check the <a href="build.html#tragedies" title="Things That Can Go Wrong">list of things that can go wrong</a> for workarounds for those problems.</p><p>Once it's finished compiling, install FXRuby by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb install</b></pre></td></tr></table><p>As a quick sanity check, to make sure that all is well, you should probably fire up <tt>irb</tt> and try to import FXRuby:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>irb</b> irb(main):001:0> <b><tt>require 'fox'</tt></b> true irb(main):002:0></pre></td></tr></table><p>If the import failed (usually with a message along the lines of "Cannot load library"), check the <a href="build.html#tragedies" title="Things That Can Go Wrong">list of things that can go wrong</a> for known problems. If that still doesn't solve your problem, drop me an e-mail or ask around on the Ruby newsgroup or mailing list; it's quite likely that someone else has run into this problem too. Once you do have a working FXRuby installation, you're ready to check out the example programs.</p></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e133"></a>Building with Visual C++</h2></div></div><p>This section describes how to compile FXRuby using Microsoft Visual C++, for use with a Ruby that was also compiled using Visual C++.</p><p>This discussion assumes that you've built Ruby using the instructions and build files distributed with the standard Ruby source code. To review, you should have started by unpacking the source code tarball, changing into the top-level source code directory (e.g. <tt>C:\ruby-1.6.7</tt>) and then typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\ruby-1.6.7><b>win32\configure</b> type 'nmake' to make ruby for mswin32. ! C:\ruby-1.6.7><b>nmake</b></pre></td></tr></table><p>After the compilation finished, you installed Ruby somewhere by typing, e.g.,</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\ruby-1.6.7><b>nmake DESTDIR=C:\ruby install</b></pre></td></tr></table><p>Similarly, I'm assuming that you built the FOX library using the Developer Studio project files distributed with the standard FOX source code distribution. Although it's possible to build FXRuby against either the static library build of FOX (<tt>fox.lib</tt>) or the DLL build (<tt>foxdll.dll</tt>), these instructions currently cover only the static library build. Before you get started building FXRuby itself, you'll need to rename the static FOX library from its default filename (<tt>fox.lib</tt>) to <tt>foxst.lib</tt>. The reason for this rename is a charming little quirk in Microsoft's LINK utility and the fact that the eventual output name for the FXRuby DLL is also <tt>fox.so</tt>; for now, just take my word for it. So if your FOX source code distribution and build are found in the <tt>C:\fox-1.0.3</tt> directory, you'd need to rename the file:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\fox-1.0.3\lib><b>rename fox.lib foxst.lib</b></pre></td></tr></table><p>Now you can configure the FXRuby build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.3><b>ruby install.rb config --make-prog=nmake -- \ ! --with-fox-include=C:\fox-1.0.3\include \ ! --with-fox-lib=C:\fox-1.0.3\lib</b></pre></td></tr></table><p>Once the build has been configured, you can start the build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.3> <b>ruby install.rb setup</b></pre></td></tr></table><p>It will take quite awhile to build FXRuby, even on a fast machine, so this might be a good time to take a coffee break. Because Visual C++ is such a strict compiler (usually a good thing), you will probably run into a few problems with non-ANSI declarations in the Ruby header files. If you do run into problems during the compilation, just check the next section for a list of things that could go wrong, and workarounds for those problems. None of them are showstoppers and none require you to restart the compile from scratch (just type <b>ruby install.rb setup</b> to pick up where you left off).</p><p>Once it's finished compiling, install FXRuby by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.3> <b>ruby install.rb install</b></pre></td></tr></table><p>As a quick sanity check, to make sure that all is well, you should probably fire up <tt>irb</tt> and try to import FXRuby:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.3> <b>irb</b> irb(main):001:0> <b><tt>require 'fox'</tt></b> true --- 5,18 ---- pre-compiled FXRuby binaries. Linux RPMs are also available for download. Otherwise, you will need to compile the shared library for FXRuby from the ! source code.</p><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e62"></a>The Basics</h2></div></div><p>These instructions assume that you've already downloaded, compiled and installed FOX. Next, you'll need to download the FXRuby source code tarball and unpack it by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>tar xzf FXRuby-1.0.11.tar.gz</b></pre></td></tr></table><p>This will create a new directory called <tt>FXRuby-1.0.11</tt>. Change to the top-level directory and configure the build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb config</b></pre></td></tr></table><p>By default, the <tt>install.rb</tt> script will look for the FOX include files and library in the standard <tt>/usr/local/include/fox</tt> and <tt>/usr/local/lib</tt> directories, respectively. You can override these locations by passing a few additional arguments to <tt>install.rb</tt> during this step, e.g.</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb config -- \ ! --with-fox-include=/home/lyle/fox-1.0.11/include \ ! --with-fox-lib=/home/lyle/fox-1.0.11/src/.libs</b></pre></td></tr></table><p>Once the build has been configured, you can start the build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb setup</b></pre></td></tr></table><p>It will take quite awhile to build FXRuby, even on a fast machine, so this might be a good time to take a coffee break. If you run into problems during the compilation, please check the <a href="build.html#tragedies" title="Things That Can Go Wrong">list of things that can go wrong</a> for workarounds for those problems.</p><p>Once it's finished compiling, install FXRuby by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>ruby install.rb install</b></pre></td></tr></table><p>As a quick sanity check, to make sure that all is well, you should probably fire up <tt>irb</tt> and try to import FXRuby:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">$ <b>irb</b> irb(main):001:0> <b><tt>require 'fox'</tt></b> true irb(main):002:0></pre></td></tr></table><p>If the import failed (usually with a message along the lines of "Cannot load library"), check the <a href="build.html#tragedies" title="Things That Can Go Wrong">list of things that can go wrong</a> for known problems. If that still doesn't solve your problem, drop me an e-mail or ask around on the Ruby newsgroup or mailing list; it's quite likely that someone else has run into this problem too. Once you do have a working FXRuby installation, you're ready to check out the example programs.</p></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e133"></a>Building with Visual C++</h2></div></div><p>This section describes how to compile FXRuby using Microsoft Visual C++, for use with a Ruby that was also compiled using Visual C++.</p><p>This discussion assumes that you've built Ruby using the instructions and build files distributed with the standard Ruby source code. To review, you should have started by unpacking the source code tarball, changing into the top-level source code directory (e.g. <tt>C:\ruby-1.6.7</tt>) and then typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\ruby-1.6.7><b>win32\configure</b> type 'nmake' to make ruby for mswin32. ! C:\ruby-1.6.7><b>nmake</b></pre></td></tr></table><p>After the compilation finished, you installed Ruby somewhere by typing, e.g.,</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\ruby-1.6.7><b>nmake DESTDIR=C:\ruby install</b></pre></td></tr></table><p>Similarly, I'm assuming that you built the FOX library using the Developer Studio project files distributed with the standard FOX source code distribution. Although it's possible to build FXRuby against either the static library build of FOX (<tt>fox.lib</tt>) or the DLL build (<tt>foxdll.dll</tt>), these instructions currently cover only the static library build. Before you get started building FXRuby itself, you'll need to rename the static FOX library from its default filename (<tt>fox.lib</tt>) to <tt>foxst.lib</tt>. The reason for this rename is a charming little quirk in Microsoft's LINK utility and the fact that the eventual output name for the FXRuby DLL is also <tt>fox.so</tt>; for now, just take my word for it. So if your FOX source code distribution and build are found in the <tt>C:\fox-1.0.11</tt> directory, you'd need to rename the file:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\fox-1.0.11\lib><b>rename fox.lib foxst.lib</b></pre></td></tr></table><p>Now you can configure the FXRuby build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.11><b>ruby install.rb config --make-prog=nmake -- \ ! --with-fox-include=C:\fox-1.0.11\include \ ! --with-fox-lib=C:\fox-1.0.11\lib</b></pre></td></tr></table><p>Once the build has been configured, you can start the build by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.11> <b>ruby install.rb setup</b></pre></td></tr></table><p>It will take quite awhile to build FXRuby, even on a fast machine, so this might be a good time to take a coffee break. Because Visual C++ is such a strict compiler (usually a good thing), you will probably run into a few problems with non-ANSI declarations in the Ruby header files. If you do run into problems during the compilation, just check the next section for a list of things that could go wrong, and workarounds for those problems. None of them are showstoppers and none require you to restart the compile from scratch (just type <b>ruby install.rb setup</b> to pick up where you left off).</p><p>Once it's finished compiling, install FXRuby by typing:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.11> <b>ruby install.rb install</b></pre></td></tr></table><p>As a quick sanity check, to make sure that all is well, you should probably fire up <tt>irb</tt> and try to import FXRuby:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="screen">C:\FXRuby-1.0.11> <b>irb</b> irb(main):001:0> <b><tt>require 'fox'</tt></b> true Index: build.xml =================================================================== RCS file: /cvsroot/fxruby/FXRuby/doc/build.xml,v retrieving revision 1.5.2.2 retrieving revision 1.5.2.3 diff -C2 -d -r1.5.2.2 -r1.5.2.3 *** build.xml 10 May 2002 22:23:13 -0000 1.5.2.2 --- build.xml 17 Jun 2002 17:49:29 -0000 1.5.2.3 *************** *** 9,19 **** <title>The Basics</title> <para>These instructions assume that you've already downloaded, compiled and installed FOX. Next, you'll need to download the FXRuby source code tarball and unpack it by typing:</para> ! <screen>$ <command>tar xzf FXRuby-1.0.3.tar.gz</command></screen> ! <para>This will create a new directory called <filename class="directory">FXRuby-1.0.3</filename>. Change to the top-level directory and configure the build by typing:</para> <screen>$ <command>ruby install.rb config</command></screen> <para>By default, the <filename>install.rb</filename> script will look for the FOX include files and library in the standard <filename class="directory">/usr/local/include/fox</filename> and <filename class="directory">/usr/local/lib</filename> directories, respectively. You can override these locations by passing a few additional arguments to <filename>install.rb</filename> during this step, e.g.</para> <screen>$ <command>ruby install.rb config -- \ ! --with-fox-include=/home/lyle/fox-1.0.3/include \ ! --with-fox-lib=/home/lyle/fox-1.0.3/src/.libs</command></screen> <para>Once the build has been configured, you can start the build by typing:</para> <screen>$ <command>ruby install.rb setup</command></screen> --- 9,19 ---- <title>The Basics</title> <para>These instructions assume that you've already downloaded, compiled and installed FOX. Next, you'll need to download the FXRuby source code tarball and unpack it by typing:</para> ! <screen>$ <command>tar xzf FXRuby-1.0.11.tar.gz</command></screen> ! <para>This will create a new directory called <filename class="directory">FXRuby-1.0.11</filename>. Change to the top-level directory and configure the build by typing:</para> <screen>$ <command>ruby install.rb config</command></screen> <para>By default, the <filename>install.rb</filename> script will look for the FOX include files and library in the standard <filename class="directory">/usr/local/include/fox</filename> and <filename class="directory">/usr/local/lib</filename> directories, respectively. You can override these locations by passing a few additional arguments to <filename>install.rb</filename> during this step, e.g.</para> <screen>$ <command>ruby install.rb config -- \ ! --with-fox-include=/home/lyle/fox-1.0.11/include \ ! --with-fox-lib=/home/lyle/fox-1.0.11/src/.libs</command></screen> <para>Once the build has been configured, you can start the build by typing:</para> <screen>$ <command>ruby install.rb setup</command></screen> *************** *** 37,53 **** <para>After the compilation finished, you installed Ruby somewhere by typing, e.g.,</para> <screen>C:\ruby-1.6.7><command>nmake DESTDIR=C:\ruby install</command></screen> ! <para>Similarly, I'm assuming that you built the FOX library using the Developer Studio project files distributed with the standard FOX source code distribution. Although it's possible to build FXRuby against either the static library build of FOX (<filename>fox.lib</filename>) or the DLL build (<filename>foxdll.dll</filename>), these instructions currently cover only the static library build. Before you get started building FXRuby itself, you'll need to rename the static FOX library from its default filename (<filename>fox.lib</filename>) to <filename>foxst.lib</filename>. The reason for this rename is a charming little quirk in Microsoft's LINK utility and the fact that the eventual output name for the FXRuby DLL is also <filename>fox.so</filename>; for now, just take my word for it. So if your FOX source code distribution and build are found in the <filename class="directory">C:\fox-1.0.3</filename> directory, you'd need to rename the file:</para> ! <screen>C:\fox-1.0.3\lib><command>rename fox.lib foxst.lib</command></screen> <para>Now you can configure the FXRuby build by typing:</para> ! <screen>C:\FXRuby-1.0.3><command>ruby install.rb config --make-prog=nmake -- \ ! --with-fox-include=C:\fox-1.0.3\include \ ! --with-fox-lib=C:\fox-1.0.3\lib</command></screen> <para>Once the build has been configured, you can start the build by typing:</para> ! <screen>C:\FXRuby-1.0.3> <command>ruby install.rb setup</command></screen> <para>It will take quite awhile to build FXRuby, even on a fast machine, so this might be a good time to take a coffee break. Because Visual C++ is such a strict compiler (usually a good thing), you will probably run into a few problems with non-ANSI declarations in the Ruby header files. If you do run into problems during the compilation, just check the next section for a list of things that could go wrong, and workarounds for those problems. None of them are showstoppers and none require you to restart the compile from scratch (just type <command>ruby install.rb setup</command> to pick up where you left off).</para> <para>Once it's finished compiling, install FXRuby by typing:</para> ! <screen>C:\FXRuby-1.0.3> <command>ruby install.rb install</command></screen> <para>As a quick sanity check, to make sure that all is well, you should probably fire up <filename>irb</filename> and try to import FXRuby:</para> ! <screen>C:\FXRuby-1.0.3> <command>irb</command> irb(main):001:0> <userinput>require 'fox'</userinput> true --- 37,53 ---- <para>After the compilation finished, you installed Ruby somewhere by typing, e.g.,</para> <screen>C:\ruby-1.6.7><command>nmake DESTDIR=C:\ruby install</command></screen> ! <para>Similarly, I'm assuming that you built the FOX library using the Developer Studio project files distributed with the standard FOX source code distribution. Although it's possible to build FXRuby against either the static library build of FOX (<filename>fox.lib</filename>) or the DLL build (<filename>foxdll.dll</filename>), these instructions currently cover only the static library build. Before you get started building FXRuby itself, you'll need to rename the static FOX library from its default filename (<filename>fox.lib</filename>) to <filename>foxst.lib</filename>. The reason for this rename is a charming little quirk in Microsoft's LINK utility and the fact that the eventual output name for the FXRuby DLL is also <filename>fox.so</filename>; for now, just take my word for it. So if your FOX source code distribution and build are found in the <filename class="directory">C:\fox-1.0.11</filename> directory, you'd need to rename the file:</para> ! <screen>C:\fox-1.0.11\lib><command>rename fox.lib foxst.lib</command></screen> <para>Now you can configure the FXRuby build by typing:</para> ! <screen>C:\FXRuby-1.0.11><command>ruby install.rb config --make-prog=nmake -- \ ! --with-fox-include=C:\fox-1.0.11\include \ ! --with-fox-lib=C:\fox-1.0.11\lib</command></screen> <para>Once the build has been configured, you can start the build by typing:</para> ! <screen>C:\FXRuby-1.0.11> <command>ruby install.rb setup</command></screen> <para>It will take quite awhile to build FXRuby, even on a fast machine, so this might be a good time to take a coffee break. Because Visual C++ is such a strict compiler (usually a good thing), you will probably run into a few problems with non-ANSI declarations in the Ruby header files. If you do run into problems during the compilation, just check the next section for a list of things that could go wrong, and workarounds for those problems. None of them are showstoppers and none require you to restart the compile from scratch (just type <command>ruby install.rb setup</command> to pick up where you left off).</para> <para>Once it's finished compiling, install FXRuby by typing:</para> ! <screen>C:\FXRuby-1.0.11> <command>ruby install.rb install</command></screen> <para>As a quick sanity check, to make sure that all is well, you should probably fire up <filename>irb</filename> and try to import FXRuby:</para> ! <screen>C:\FXRuby-1.0.11> <command>irb</command> irb(main):001:0> <userinput>require 'fox'</userinput> true Index: changes.html =================================================================== RCS file: /cvsroot/fxruby/FXRuby/doc/changes.html,v retrieving revision 1.42.2.5 retrieving revision 1.42.2.6 diff -C2 -d -r1.42.2.5 -r1.42.2.6 *** changes.html 30 May 2002 14:21:13 -0000 1.42.2.5 --- changes.html 17 Jun 2002 17:49:29 -0000 1.42.2.6 *************** *** 1,5 **** <html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> ! <title>Chapter 11. Change History</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="previous" href="todo.html" title="Chapter 10. To-do list"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Change History</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="todo.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="changes"></a>Chapter 11. Change History</h2></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2031"></a>Changes Since Version 1.0.3</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Corrected the code for <tt>FXTreeList#clearItems</tt> so that after the C++ objects (the tree items) are destroyed, any Ruby instances holding references to those C++ objects are notified of their demise. This one was inadvertently overlooked when other, similar, fixes were made in the previous release. Thanks to Gilles Filippini for catching this.</p></li><li style="list-style-type: disc"><p>The API for Ruby's <tt>rb_rescue2()</tt> function changed in Ruby 1.6.7, but I missed this since I had only compiled against the Ruby 1.6.6 and Ruby 1.7 header files. The API change led to a compile error for FXRuby.cpp; this has been fixed. Thanks to Bil Kleb for catching this one.</p></li><li style="list-style-type: disc"><p>The <tt>FXApp#enableThreads</tt> and <tt>FXApp#disableThreads</tt> instance methods have been replaced by a single instance method, --- 1,24 ---- <html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> ! <title>Chapter 11. Change History</title><meta name="generator" content="DocBook XSL Stylesheets V1.50.0"><link rel="home" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="up" href="book.html" title="Developing Graphical User Interfaces with FXRuby"><link rel="previous" href="todo.html" title="Chapter 10. To-do list"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Change History</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="todo.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> </td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="changes"></a>Chapter 11. Change History</h2></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2031"></a>Changes Since Version 1.0.10</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Removed the SWIG typemaps for <tt>FXTableRange</tt> ! and <tt>FXTablePos</tt> output values which would ! previously have tried to look up existing Ruby references to ! the same C++ pointers and return those. This practice (which works ! fine in most cases) was leading to an obscure bug (see ! <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=560128&group_id=20243&atid=120243" target="_top">SourceForge Bug ! #560128</a>). See the <tt>ChangeLog</tt> comments for more ! details about the problem. Thanks to Joel VanderWerf for reporting ! this problem.</p></li><li style="list-style-type: disc"><p>Made the constructors for <tt>FXDrawable</tt>, ! <tt>FXShell</tt> and <tt>FXTopWindow</tt> ! public so that these classes can be subclassed (see ! <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=568765&group_id=20243&atid=120243" target="_top">SourceForge Bug #568765</a>). ! Thanks to Laurent Julliard for reporting this problem. ! </p></li><li style="list-style-type: disc"><p>Fixed a bug in the <tt>inputs.rb</tt> example program ! that caused it to loop indefinitely even after the read pipe was ! empty. This would cause the text buffer to get filled with garbage ! for some cases.</p></li><li style="list-style-type: disc"><p>Updated the FXScintilla-related documentation and build scripts ! to reflect the new build and installation process for FXScintilla ! version 1.46. Thanks to Laurent Julliard for providing me with ! most of this information.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2074"></a>Changes Since Version 1.0.3</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Corrected the code for <tt>FXTreeList#clearItems</tt> so that after the C++ objects (the tree items) are destroyed, any Ruby instances holding references to those C++ objects are notified of their demise. This one was inadvertently overlooked when other, similar, fixes were made in the previous release. Thanks to Gilles Filippini for catching this.</p></li><li style="list-style-type: disc"><p>The API for Ruby's <tt>rb_rescue2()</tt> function changed in Ruby 1.6.7, but I missed this since I had only compiled against the Ruby 1.6.6 and Ruby 1.7 header files. The API change led to a compile error for FXRuby.cpp; this has been fixed. Thanks to Bil Kleb for catching this one.</p></li><li style="list-style-type: disc"><p>The <tt>FXApp#enableThreads</tt> and <tt>FXApp#disableThreads</tt> instance methods have been replaced by a single instance method, *************** *** 14,16 **** now be called in either of these equivalent forms:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="programlisting">glviewer.backgroundColor = FXHVec.new(0.5, 0.5, 0.5, 1.0)</pre></td></tr></table> or ! <table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="programlisting">glviewer.backgroundColor = [0.5, 0.5, 0.5, 1.0]</pre></td></tr></table></li><li style="list-style-type: disc"><p>Updated the test case for <tt>FXMaterial</tt>, added a new test case for <tt>FXFileStream</tt>.</p></li><li style="list-style-type: disc"><p>Added aliases <tt>posVisible?</tt> (for <tt>FXTextField#isPosVisible</tt>), <tt>posSelected?</tt> (for <tt>FXTextField#isPosSelected</tt>), <tt>itemCurrent?</tt> (for <tt>FXComboBox#isItemCurrent</tt>), <tt>hasAccel?</tt> (for <tt>FXAccelTable#hasAccel</tt>), <tt>error=</tt> (for <tt>FXStream#setError</tt>), <tt>position=</tt> (for <tt>FXStream#setPosition</tt>) and <tt>position</tt> (for <tt>FXStream#getPosition</tt>).</p></li><li style="list-style-type: disc"><p>The <tt>FXStream</tt>, <tt>FXFileStream</tt> and <tt>FXMemoryStream</tt> classes were not implemented properly, in the sense that if you subclassed one of these classes and then attempted to override one of their virtual functions, that override might not get called (see <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=535955&group_id=20243&atid=120243" target="_top">SourceForge Bug #535955</a>). This has been fixed.</p></li><li style="list-style-type: disc"><p>Did some more work on completing the <tt>FXDC</tt> interface, including adding a test case for the same. Also added a new example <tt>dctest.rb</tt> that demonstrates many of the <tt>FXDC</tt> interface.</p></li><li style="list-style-type: disc"><p>All GIF image files have now been replaced with PNG equivalents. For more information on why this is a good idea, see <a href="http://burnallgifs.org" target="_top">this site</a>.</p></li><li style="list-style-type: disc"><p>Starting with this release, Red Hat Linux 7.2 RPMs are now provided in addition to the Windows installer.</p></li><li style="list-style-type: disc"><p>The previous implementation of <tt>FXImage#data</tt> returned a copy of the underlying image pixel data instead of a pointer to the actual data (see <a href="http://sourceforge.net/tracker/index.php?func=detail&aid=550996&group_id=20243&atid=120243" target="_top">SourceForge Bug #550996</a>). This has been fixed. <tt>FXImage#data</tt> now returns an instance of <tt>FXMemoryBuffer</tt> which is an array or string-like class that acts as a very thin layer over the pointer to the pixel data. The <tt>initialize</tt> methods for images and icons were also updated so that they will now accept either strings (as before) or <tt>FXMemoryBuffer</tt> instances as inputs for the image data.</p></li><li style="list-style-type: disc"><p>Modified the <tt>range</tt> and <tt>range=</tt> methods for <tt>FXDial</tt>, <tt>FXSlider</tt> and <tt>FXSpinner</tt> so that they work with Ruby <tt>Range</tt> objects instead of pairs of integers for the low and high values.</p></li><li style="list-style-type: disc"><p>Lots of other little fixes here and there...</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2235"></a>Changes Since Version 0.99.189</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Upgraded to the latest version of Minero Aoki's <tt>install.rb</tt> script.</p></li><li style="list-style-type: disc"><p>Switched from using DocBook/SGML to DocBook/XML for the FXRuby documentation. This is mainly a maintenance issue; it's just much less complicated to "publish" documents using DocBook/XML as compared to DocBook/SGML. You should see few (if any) differences in the resulting HTML pages, but let me know if you notice anything squirrely.</p></li><li style="list-style-type: disc"><p>Improved support for customized sorting of list items for the <tt>FXComboBox</tt>, <tt>FXIconList</tt>, <tt>FXList</tt>, <tt>FXListBox</tt>, <tt>FXTreeList</tt> and <tt>FXTreeListBox</tt> classes. The model is different from that used in the C++ FOX library, where you set a global sorting function for each list instance. For FXRuby, you instead just override the list item's <tt><=></tt> method to compare one list item to another. Thanks to Martin Stannard for prompting me to resolve this problem.</p></li><li style="list-style-type: disc"><p>Added instructions about how to modify your <tt>/etc/ld.so.conf</tt> file (on Linux) to include the <tt>libFOX.so</tt> installation directory. Thanks to Giuseppe Cacopardo for providing this information.</p></li><li style="list-style-type: disc"><p>Updated the test cases (again) for use with Nathaniel Talbott's <a href="http://testunit.talbott.ws" target="_top">TestUnit</a>, which is apparently the successor to Lapidary.</p></li><li style="list-style-type: disc"><p>Added support for the <tt>FXCURCursor</tt>, <tt>FXRGBIcon</tt>, <tt>FXRGBImage</tt> classes.</p></li><li style="list-style-type: disc"><p>Fixed a longstanding bug related to the ownership (for garbage collection purposes) of <tt>FXGLGroup</tt> and <tt>FXGLShape</tt> instances. This is the bug that was causing the <tt>glviewer.rb</tt> example program to crash on exit.</p></li><li style="list-style-type: disc"><p>Fixed a different (but also longstanding) bug related to FXRuby's hanging on to "stale" Ruby object references after those Ruby objects had already been garbage-collected. This bug manifested itself in a number of ways, but the most common symptom would be for an object (like an <tt>FXEvent</tt> instance) to suddenly lose its mind and believe it was some other object. Oh, and your program would usually crash at that point. I think this problem is now fixed.</p></li><li style="list-style-type: disc"><p>Added some safeguards for "destructive" functions like <tt>FXList#clearItems</tt>, which can destroy the C++ objects backing-up Ruby objects in FXRuby, so that any outstanding Ruby references to those destroyed C++ objects are left in a safe state when accessed by Ruby's garbage collector.</p></li><li style="list-style-type: disc"><p>Performed a major overhaul on the <tt>shutter.rb</tt> example program, which still demonstrates the <tt>FXShutter</tt> widget but otherwise doesn't resemble its previous incarnation at all.</p></li><li style="list-style-type: disc"><p>Added a new example program (<tt>raabrowser.rb</tt>) that allows you to browse the Ruby Application Archive via its SOAP interface. Requires the <a href="http://www.jin.gr.jp/~nahi/Ruby/SOAP4R" target="_top">SOAP4R</a> extension.</p></li><li style="list-style-type: disc"><p>Added a new example program (<tt>babelfish.rb</tt>) that allows you to use the Babelfish translator web service via its SOAP interface. Requires the <a href="http://www.jin.gr.jp/~nahi/Ruby/SOAP4R" target="_top">SOAP4R</a> extension.</p></li><li style="list-style-type: disc"><p>Added a new page to the documentation to briefly describe each of the example programs (including screenshots).</p></li><li style="list-style-type: disc"><p>The CVS repository for FXRuby is now hosted at the SourceForge site. For those who would like access to the latest version of FXRuby (in-between official releases) this is now an option. For more details, see the instructions at the <a href="http://sourceforge.net/cvs/?group_id=20243" target="_top">SourceForge project CVS page</a>.</p></li><li style="list-style-type: disc"><p>Updated the interfaces for compatibility with <a href="http://www.fox-toolkit.org/ftp/fox-1.0.3.tar.gz" target="_top">fox-1.0.3</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2365"></a>Changes Since Version 0.99.188</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Fixed a big bug related to the <tt>FXApp#addSignal</tt> and <tt>FXApp#removeSignal</tt> functions, which should accept a string signal name as an argument. The list of recognized signal names was not constructed properly and as a result most any call to these methods with a string signal name would fail. This has been corrected, and the methods now throw exceptions like those thrown from <tt>Process::kill</tt> when the signa l name is unrecognized or the argument type is wrong.</p></li><li style="list-style-type: disc"><p>The <tt>imageviewer.rb</tt> example program now supports loading TARGA, ICO and TIFF image files.</p></li><li style="list-style-type: disc"><p>The configuration process on Windows should now detect the presence of <tt>libtiff.lib</tt> properly.</p></li><li style="list-style-type: disc"><p>Updated the interfaces for compatibility with <a href="http://www.fox-toolkit.org/ftp/fox-0.99.189.tar.gz" target="_top">fox-0.99.189</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2399"></a>Changes Since Version 0.99.181</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Removed the <tt>-fno-strict-prototype</tt> and <tt>-fpermissive</tt> flags from the <tt>CFLAGS</tt> for Linux builds, since these two flags are no longer supported for more recent versions of gcc. Thanks to Thomas Lundqvist for reporting this.</p></li><li style="list-style-type: disc"><p>Some of the source files included in the previous release had DOS-style line endings and this caused gcc to choke while compiling them; this has been fixed. Thanks to Thomas Lundqvist for reporting this.</p></li><li style="list-style-type: disc"><p>Updated the FXRuby test cases (such as they are) to use Nathaniel Talbott's <a href="http://lapidary.sourceforge.net" target="_top">Lapidary</a> unit testing framework.</p></li><li style="list-style-type: disc"><p>Migrated yet more code from the C++ extension to pure Ruby versions. Most of the code for the <tt>FXPoint</tt>, <tt>FXRectangle</tt> and <tt>FXSize</tt> classes is now implemented in Ruby.</p></li><li style="list-style-type: disc"><p>Fixed a bug in the <tt>browser.rb</tt> example. I had meant for the methods and constants lists to be sorted but had failed to use the in-place <tt>sort!</tt> method. Thanks to Robert Gustavsson for reporting this.</p></li><li style="list-style-type: disc"><p>Completed a lot of the initial work for integrating the FXScintilla widget into FXRuby. This is not usable yet, but I'm working with Rich Kilmer and others to try to make this happen.</p></li><li style="list-style-type: disc"><p>Updated the build instructions to provide more information about building the Visual C++ version of FXRuby (i.e. for use with the Visual C++ build of Ruby) on Windows. Thanks to a final tip from Martin Stannard we now have a working build for this compiler.</p></li><li style="list-style-type: disc"><p>For fun, added a new example program that downloads today's Dilbert cartoon from the <a href="http://www.dilbertzone.com" target="_top">DilbertZone</a> web site and displays it in an <tt>FXImageViewer</tt> widget. Requires the <tt>html-parser</tt> module, listed in the <a href="http://www.ruby-lang.org/en/raa.html" target="_top">Ruby Application Archive</a>.</p></li><li style="list-style-type: disc"><p>Updated the interfaces for compatibility with <a href="http://www.fox-toolkit.org/ftp/fox-0.99.188.tar.gz" target="_top">fox-0.99.188</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2472"></a>Changes Since Version 0.99.180</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Added <tt>slices</tt>, <tt>stacks</tt> and <tt>loops</tt> accessors for the <tt>FXGLCone</tt> and <tt>FXGLCylinder</tt> classes, to provide finer control over the rendering fidelity for these shapes (this was already done for <tt>FXGLSphere</tt> in the previous release).</p></li><li style="list-style-type: disc"><p>Updated the interfaces for compatibility with <a href="ftp://ftp.fox-toolkit.org/pub/fox-0.99.181.tar.gz" target="_top">fox-0.99.181</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2503"></a>Changes Since Version 0.99.174</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Moved the class definitions for <tt>FXGLPoint</tt>, <tt>FXGLLine</tt>, <tt>FXGLCube</tt>, <tt>FXGLCylinder</tt>, <tt>FXGLSphere</tt> and <tt>FXGLCone</tt> to a new library module <tt>fox/glshapes.rb</tt>. The interfaces are the same as the C++ versions of these classes, this is just a "pure Ruby" implementation of the classes instead of wrappers around the C++ classes. See <tt>examples/glviewer.rb</tt> for an example of their use.</p></li><li style="list-style-type: disc"><p>Fixed a bug related to object ownership for GL objects added to a <tt>FXGLGroup</tt>.</p></li><li style="list-style-type: disc"><p>Added support for overriding the virtual <tt>layout</tt> method in classes derived from <tt>FXWindow</tt>. This will allow developers to, for example, develop new kinds of layout managers.</p></li><li style="list-style-type: disc"><p>Replaced the previous WISE-based installer for the Windows version with an Inno Setup-based installer and reorganized things to better reflect the organization used in the standard Ruby installer.</p></li><li style="list-style-type: disc"><p>Updated the setup and build script to the latest version of Minero Aoki's scripts (version 3.0.2). The main change for FXRuby end-users is that the name of the build script is now <tt>install.rb</tt> instead of <tt>setup.rb</tt>.</p></li><li style="list-style-type: disc"><p>Added the <tt>colors.rb</tt> library file, for predefined color names in the <tt>FXColor</tt> namespace. The use of this module allows you to use symbolic names like <tt>FXColor::Red</tt> instead of an RGB constant like FXRGB(255, 0, 0). Many thanks to Jeff Heard for this suggestion and the contributed file.</p></li><li style="list-style-type: disc"><p>The <tt>FXRegion</tt> was accidentally being renamed to <tt>FX_Region</tt> (a little behind-the-scenes magic I'm doing in FXRuby) and as a result you couldn't use this class. Thanks to Steven Grady for catching this bug.</p></li><li style="list-style-type: disc"><p>The <tt>FXFileStream</tt> class now supports a Ruby-style <tt>open</tt> singleton method that provides transactional control for closing the file stream when it's done. See the <tt>image.rb</tt> and <tt>imageviewer.rb</tt> examples for how this works.</p></li><li style="list-style-type: disc"><p>After some discussions at RubyConf and follow-up discussions on the comp.lang.ruby newsgroup, the procedure for attaching events handlers to FXRuby widgets has been greatly simplified. Most of the example programs have been updated to reflect these changes, and a new documentation section has been added to describe how it works. For some of the background, please see <a href="http://www.rubygarden.org/ruby?FXRubyComments" target="_top">this page</a> on the RubyGarden Wiki.</p></li><li style="list-style-type: disc"><p>Added support for the <tt>each_row</tt> and <tt>each_column</tt> iterators for the <tt>FXTable</tt> class. These iterators yield an array of references to <tt>FXTableItem</tt> instances, one per row or column, respectively. Note that the <tt>each</tt> method is just an alias for <tt>each_row</tt>.</p></li><li style="list-style-type: disc"><p>Removed the interfaces for <tt>fxrandom</tt>, <tt>fxmalloc</tt>, <tt>fxcalloc</tt>, <tt>fxresize</tt>, <tt>fxmemdump</tt>, and <tt>fxfree</tt>. These utility functions are not relevant for FXRuby.</p></li><li style="list-style-type: disc"><p>Corrected interfaces for <tt>fxhsv_to_rgb</tt> and <tt>fxrgb_to_hsv</tt> so that they return three-element arrays of the converted color components.</p></li><li style="list-style-type: disc"><p>Corrected interfaces for <tt>FXWindow#acquireSelection</tt>, <tt>FXWindow#acquireClipboard</tt> and <tt>FXWindow#beginDrag</tt> to take an array of drag types.</p></li><li style="list-style-type: disc"><p>Corrected interfaces for <tt>fxsaveBMP</tt>, <tt>fxsaveGIF</tt>, <tt>fxsaveICO</tt>, <tt>fxsavePCX</tt>, <tt>fxsavePNG</tt>, <tt>fxsaveTIF</tt> and <tt>fxsaveXPM</tt> so that they expect a Ruby string (containing the image pixel data) as their second argument.</p></li><li style="list-style-type: disc" ><p>Updated the interfaces for compatibility with <a href="ftp://ftp.fox-toolkit.org/pub/fox-0.99.180.tar.gz" target="_top">fox-0.99.180</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2696"></a>Changes Since Version 0.99.173</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Moved all of the method name aliases out of the C interface code and into a new library file (<tt>fox/aliases.rb</tt>). This file is loaded automatically so you don't need to change your code. Similarly, moved all of the iterator methods out of the C code and into a library file (<tt>fox/iterators.rb</tt>). The main purpose of these changes is to reduce the size of the C++ code (especially <tt>core_wrap.cpp</tt>) where possible. Obviously, compared to recompiling the C++ source code, it's also much more efficient to quickly patch the Ruby files and re-run when there are problems.</p></li><li style="list-style-type: disc"><p>A few errors made it into the <tt>undolist.rb</tt> library module and the <tt>textedit.rb</tt> example last time; I think these have been fixed.</p></li><li style="list-style-type: disc"><p>I meant to add support for the new <tt>FXPCXIcon</tt> and <tt>FXPCXImage</tt> classes with the last release, but somehow I overlooked those. They are now supported, along with the other new classes introduced by FOX version 0.99.174: <tt>FXTIFIcon</tt>, <tt>FXTIFImage</tt> and <tt>FXProgressDialog</tt>.</p></li><li style="list-style-type: disc"><p>Fixed a bug in the GC-related code for "marking" C++ objects. I had not accounted for the possibility that the pointer passed to my mark functions could be a <tt>NULL</tt> pointer, and as a result the code would seg fault during garbage collection, under some circumstances. Many thanks to Ralf Canis for catching this bug.</p></li><li style="list-style-type: disc"><p>Updated the source code and <tt>extconf.rb</tt> files so that FXRuby configures and builds correctly for the "mswin32" builds. Thanks very much to Lorien Dunn for prompting me to get this stuff up-to-date!</p></li><li style="list-style-type: disc"><p>Fixed things so that the <tt>FXApp#addInput</tt> and <tt>FXApp#removeInput</tt> instance methods work properly for generating input messages. The first argument to both of these methods should be an <tt>IO</tt> object of some kind (specifically, an object that implements a <tt>fileno</tt> method). For more information about how this works, see the "Timers, Chores, Signals and Input Messages" section of the FOX documentation. Also see the new <tt>inputs.rb</tt> program in the <tt>examples</tt> directory for an example of how this works. Thanks to Ralf Canis for reminding me that I left this broken!</p></li><li style="list-style-type: disc"><p>Completed the basic code changes required for <tt>FXObject#handle</tt> to properly convert its message data into something that the C++ objects recognize (see the first item in the FXRuby To-Do List for more information). A lot of message types and identifiers are now handled correctly, especially those that are common to all <tt>FXWindow</tt>s. Most of the more widget-specific messages are not handled yet, and this is going to take awhile to complete; it's just a tedious process.</p></li><li style="list-style-type: disc"><p>Updated the interfaces for compatibility with <a href="ftp://ftp.cfdrc.com/pub/FOX/fox-0.99.174.tar.gz" target="_top">fox-0.99.174</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e2787"></a>Changes Since Version 0.99.172</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Changed the build and installation process to use Minero Aoki's <tt>setup.rb</tt> tools. Looking ahead I can see that FXRuby will probably consist of a core C++ extension module and a collection of Ruby library scripts, and so now was the right time to make that transition.</p><p>If you have previously installed FXRuby (and written programs with the same) there are a few changes that may affect you. First, <tt>setup.rb</tt> will install the shared library (<tt>fox.so</tt>) in your <tt>site_ruby</tt> directory instead of the "core" libraries directory, where it was previously installed. So you should be sure to remove the old version of <tt>fox.so</tt> before installing and using this one.</p><p>The other change to be aware of is that there is now a <tt>fox</tt> directory containing FXRuby library scripts, and the <tt>responder.rb</tt> module is the first entry for this directory. You can import this file into your Ruby scripts with the line:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="programlisting">require 'fox/responder'</pre></td></tr></table><p>and it's no longer necessary to drag copies of that file around.</p></li><li style="list-style-type: disc"><p>Aliased the <tt>getText</tt> instance method to <tt>to_s</tt> for a number of classes. This change should make things a little more convenient when inspecting the contents of widgets whose primary purpose is text entry or display. Thanks to Barry Shultz for this suggestion.</p></li><li style="list-style-type: disc"><p>Added the <tt>FXWindow#removeChild</tt> method for removing child widgets from a container window. This method doesn't exist for the C++ <tt>FXWindow</tt> class because it isn't needed; in C++ programs you simply delete the C++ object and it automatically gets removed from its parent. Note that after you call <tt>FXWindow#removeChild</tt> any outstanding references to the recently deceased child widget are invalid and should be set to <tt>nil</tt> or otherwise disposed of. Thanks to Ted Meng for noticing this omission.</p></li><li style="list-style-type: disc"><p>Modified some of the OpenGL method calls in <tt>gltest.rb</tt> for compatibility with Ruby/OpenGL 0.32. You should now be able to use Ruby/OpenGL with FXRuby unmodified.</p></li><li style="list-style-type: disc"><p>Added <tt>each()</tt> instance methods for <tt>FXComboBox</tt>, <tt>FXGLGroup</tt>, <tt>FXHeader</tt>, <tt>FXIconList</tt>, <tt>FXList</tt>, <tt>FXListBox</tt>, <tt>FXTreeItem</tt>, <tt>FXTreeList</tt> and <tt>FXTreeListBox</tt> in support of iterating over their sub-items. Also mixed the <tt>Enumerable</tt> module into all of these classes.</p></li><li style="list-style-type: disc"><p>Corrected the implementations of <tt>getData()</tt> and <tt>setData()</tt> for a variety of classes. You should now be able to attach arbitrary (application-defined) data to any FOX object that supports these APIs.</p></li><li style="list-style-type: disc"><p>As a debugging tool, you can now optionally catch exceptions raised in message handlers. To turn on this feature, call the <tt>setIgnoreExceptions(true)</tt> module method. When this is enabled, any exceptions raised in message handler functions will cause a standard stack trace to be dumped to the standard output, but then your application will, for better or worse, proceed normally. Thanks to Ted Meng for this suggestion.</p></li><li style="list-style-type: disc"><p>Extended the interfaces for <tt>FXApp#addSignal</tt> and <tt>FXApp#removeSignal</tt> to accept either a string or integer as their first argument. If it's a string (e.g. "SIGINT" or just "INT") the code will determine the corresponding signal number for you (similar to the <tt>Process.kill</tt> module method). For examples of how to use this, see the <tt>datatarget.rb</tt> or <tt>imageviewer.rb</tt> example programs.</p></li><li style="list-style-type: disc"><p>Corrected the implementations of <tt>fxparsefontdesc()</tt> and <tt>fxunparsefontdesc()</tt> module methods.</p></li><li style="list-style-type: disc"><p>Added a pure Ruby implementation of the standard <tt>FXCommand</tt> and <tt>FXUndoList</tt> classes from the standard FOX library.</p></li><li style="list-style-type: disc"><p>Added the <tt>splitter.rb</tt> example, to demonstrate the <tt>FXSplitter</tt> class and its options.</p></li><li style="list-style-type: disc"><p>Completed the initial version of <tt >browser.rb</tt>, which is just a simple tool to inspect the methods and constants exposed by different FOX classes. Thanks to Albert Wagner for pointing out some bugs in this one and providing me with the motivation to complete it. I don't know how useful it is, but it seems to be a required utility for every GUI toolkit for Ruby ;) If you'd like to suggest further improvements, please feel free!</p></li><li style="list-style-type: disc"><p>Corrected the constructors for <tt>FXXPMIcon</tt> and <tt>FXXPMImage</tt> so that they accept a list of strings as their second argument. The list of strings should be an XPM format image file. You can also pass <tt>nil</tt> to construct an initially-empty icon or image.</p></li><li style="list-style-type: disc"><p>Corrected the message data sent by <tt>FXList</tt> to its message target for the <tt>SEL_SELECTED</tt>, <tt>SEL_DESELECTED</tt>, <tt>SEL_INSERTED</tt>, <tt>SEL_DELETED</tt>, and <tt>SEL_REPLACED</tt> messages. For each of these messages, the data should be an integer indicating the affected list item's index.</p></li><li style="list-style-type: disc"><p>Added typemaps to convert Ruby message data back into C++ void pointers when calling the base class versions of message handlers. Please see the to-do list for a brief discussion of the issues that this fix addressed, and what remains to be done.</p></li><li style="list-style-type: disc"><p>Fixed a subtle GC bug related to object ownership. I'll use the <tt>FXList</tt> and <tt>FXListItem</tt> classes to describe the problem, but it's also relevant for several other FOX classes.</p><p>There are two ways to add a new list item to an <tt>FXList</tt> instance. One of those ways involves creating a new <tt>FXListItem</tt> instance explicitly (i.e. using <tt>FXListItem.new</tt>) and then passing it into an <tt>FXList</tt> instance method like <tt>FXList#appendItem</tt>. Before you add the item to the list, the item is "self-owned"; in other words, if Ruby's garbage collector decides to kill off that <tt>FXListItem</tt> instance, it is appropriate to also destroy the underlying C++ object. After the list item has been added to an <tt>FXList</tt>, however, the <tt>FXList</tt> owns that list item and is responsible for destroying it.</p><p>This bug became an issue when you added <tt>FXListItem</tt> instances to a list, because the code didn't properly recognize the fact that "ownership" of the list item had been transferred from the <tt>FXListItem</tt> instance to the <tt>FXList</tt>. More to the point, Ruby's garbage collector assumed that it was still OK to destroy the <tt>FXListItem</tt> instances that it knew about, and so objects could get deleted twice. This would usually result in a core dump.</p><p>Many thanks to Albert Wagner for submitting an example program that demonstrated this problem.</p></li><li style="list-style-type: disc"><p>Updated the interfaces for compatibility with <a href="ftp://ftp.fox-toolkit.org/pub/fox-0.99.173.tar.gz" target="_top">fox-0.99.173</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e3051"></a>Changes Since Version 0.99.167</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Completed the coding for "safe" coexistence with Ruby's garbage collector; it should no longer be necessary to call <tt>GC.disable</tt> at the top of your FXRuby programs. Although all of the example programs now work correctly without disabling the garbage collector, this doesn't mean that there aren't still some bugs lurking. If your FXRuby program(s) crash mysteriously, try adding <tt>GC.disable</tt> to the top to see if it fixes things. If this does make a difference, <span class="emphasis"><em>please</em></span> send me the program (or another that reproduces the problem) so I can track down what's going wrong.</p></li><li style="list-style-type: disc"><p>Added aliases for all classes' accessor functions so that the related properties can be accessed more directly; for example, <tt>FXLabel#getText</tt> is aliased to <tt>FXLabel#text</tt> and <tt>FXLabel#setText</tt> is aliased to <tt>FXLabel#text=</tt>. Although the different forms are functionally equivalent, the new form is often easier to read. For example, consider this snippet of code that modifies a label's text:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="programlisting">aLabel.setText(aLabel.getText() + " (modified)")</pre></td></tr></table><p>and this version of the same, now using the propery accessor functions:</p><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="programlisting">aLabel.text += " (modified)"</pre></td></tr></table><p>None of the standard FOX class APIs have been removed, so you shouldn't need to modify any already-working code.</p></li><li style="list-style-type: disc"><p>Corrected the message data sent from the <tt>FXText</tt> widget to its message target for the <tt>SEL_SELECTED</tt>, <tt>SEL_DESELECTED</tt>, <tt>SEL_INSERTED</tt>, <tt>SEL_DELETED</tt> and <tt>SEL_REPLACED</tt> message types. For the first four messages, the associated message data sent to the target will be an array of two integers indicating the starting position in the text buffer and text length for the affected text. For the <tt>SEL_REPLACED</tt> message type, the message data will be an array of three integers, indicating the starting position in the text buffer, the length of the old (replaced) text, and the length of the new text.</p></li><li style="list-style-type: disc"><p>Updated the interfaces for compatibility with <a href="ftp://ftp.fox-toolkit.org/pub/fox-0.99.172.tar.gz" target="_top">fox-0.99.172</a>.</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="d0e3120"></a>Changes Since Version 0.99.166-1</h2></div></div><div class="itemizedlist"><ul type="bullet"><li style="list-style-type: disc"><p>Corrected the interfaces for <tt>FXInputDialog.getString</tt>, <tt>FXInputDialog.getReal</tt> and <tt>FXInputDialog.getInteger</tt> to either return the requested type or <tt>nil</tt> if the user cancels the dialog.</p></li><li style="list-style-type: disc"><p>Added code at the top of all the examples to disable Ruby's garbage collector, until the issues with GC are resolved.</p></li><li style="list-style-type: disc"><p>Corrected implementations for the overloaded versions of <tt>FXWindow#update</tt>. This method can be invoke with no arguments (in which case it updates the entire window) or with four arguments indicating the x, y, w and h of the client area to be updated.</p></li><li style="list-style-type: disc"><p>Modified how the return values fro... [truncated message content] |