| 1 | <?xml version="1.0" encoding="UTF-8"?>
 | 
|---|
| 2 | <?xml-stylesheet type="text/css"
 | 
|---|
| 3 | href="file:qtos2-xxe.css"
 | 
|---|
| 4 | ?>
 | 
|---|
| 5 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 | 
|---|
| 6 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | 
|---|
| 7 | <html>
 | 
|---|
| 8 |   <head>
 | 
|---|
| 9 |     <link href="qtos2-www.css" rel="stylesheet" type="text/css" />
 | 
|---|
| 10 | 
 | 
|---|
| 11 |     <title>Qt Toolkit Version 3 for OS/2</title>
 | 
|---|
| 12 |   </head>
 | 
|---|
| 13 | 
 | 
|---|
| 14 |   <body id="changes">
 | 
|---|
| 15 |     <h1><a name="top">Change History</a></h1>
 | 
|---|
| 16 | 
 | 
|---|
| 17 |     <p>This section contains a list of all major changes from release to
 | 
|---|
| 18 |     release starting from the most recent. The text in the square brackets
 | 
|---|
| 19 |     after the release date shows the repository tag corresponding to this
 | 
|---|
| 20 |     release (startng from version 3.3.1 Release Candidate 6). A tagged release
 | 
|---|
| 21 |     can be checked out from the SVN repository using a path like
 | 
|---|
| 22 |     <kbd>http://svn.netlabs.org/repos/qt3/tags/<tag></kbd>.</p>
 | 
|---|
| 23 | 
 | 
|---|
| 24 |     <p>For a more detailed list of changes please refer to the SVN repository.
 | 
|---|
| 25 |     Older changes (for version 3.3.1 Release Candidate 5 and earlier) can be
 | 
|---|
| 26 |     found in the file <a href="./ChangeLog.CVS">os2-doc\ChangeLog.CVS</a>.
 | 
|---|
| 27 |     </p>
 | 
|---|
| 28 | 
 | 
|---|
| 29 |     <h2>Release Candidate 6 (2005-11-18) [<kbd>3.3.1-rc06</kbd>]</h2>
 | 
|---|
| 30 | 
 | 
|---|
| 31 |     <hr />
 | 
|---|
| 32 | 
 | 
|---|
| 33 |     <p>The project has been moved to the SVN repository on netlabs (<a
 | 
|---|
| 34 |     href="http://svn.netlabs.org">svn.netlabs.org</a>). The direct path to the
 | 
|---|
| 35 |     main development branch is <a
 | 
|---|
| 36 |     href="http://svn.netlabs.org/repos/qt3/trunk">http://svn.netlabs.org/repos/qt3/trunk</a>.</p>
 | 
|---|
| 37 | 
 | 
|---|
| 38 |     <p>The file <kbd>src/tools/qconfig.cpp</kbd> (containing default
 | 
|---|
| 39 |     installation paths) is now automatically generated by the
 | 
|---|
| 40 |     <kbd>configure.cmd</kbd> script when configuring the Qt library.</p>
 | 
|---|
| 41 | 
 | 
|---|
| 42 |     <h2>Release Candidate 5 (2005-11-12) [<kbd>rc05</kbd>]</h2>
 | 
|---|
| 43 | 
 | 
|---|
| 44 |     <hr />
 | 
|---|
| 45 | 
 | 
|---|
| 46 |     <p><b>Important Note</b>. The Qt DLL built by this release is binary
 | 
|---|
| 47 |     incompatible with the previous release. All applications must be relinked
 | 
|---|
| 48 |     against the new version of the library.</p>
 | 
|---|
| 49 | 
 | 
|---|
| 50 |     <h3>kernel</h3>
 | 
|---|
| 51 | 
 | 
|---|
| 52 |     <p><code>QCursor</code> is fully implemented, including creating custom
 | 
|---|
| 53 |     pointer shapes from bitmaps.</p>
 | 
|---|
| 54 | 
 | 
|---|
| 55 |     <p><code>QT_NO_PROPERTIES</code> macro is not defined any more, so
 | 
|---|
| 56 |     <code>QObject</code>'s properties functionality is now available.</p>
 | 
|---|
| 57 | 
 | 
|---|
| 58 |     <p>Implemented OS/2 PM Clipboard support (<code>QMime</code> and
 | 
|---|
| 59 |     <code>QClipboard</code> classes); <code>QT_NO_CLIPBOARD</code> macro is no
 | 
|---|
| 60 |     more defined by default.</p>
 | 
|---|
| 61 | 
 | 
|---|
| 62 |     <p>Implemented <code>QPixmap::xForm()</code>;
 | 
|---|
| 63 |     <code>QT_NO_PIXMAP_TRANSFORMATION</code> is no more defined by
 | 
|---|
| 64 |     default.</p>
 | 
|---|
| 65 | 
 | 
|---|
| 66 |     <p>Implemented font transformations according to <code>QPainter</code>
 | 
|---|
| 67 |     view and world matrices (this still has some issues because both native
 | 
|---|
| 68 |     TTF and FreeType2 font rendering engines are bogus when applying complex
 | 
|---|
| 69 |     world transformations such as rotation).</p>
 | 
|---|
| 70 | 
 | 
|---|
| 71 |     <p>Added the <code>QMovie</code> class; <code>QT_NO_MOVIE</code> is no
 | 
|---|
| 72 |     more defined by default.</p>
 | 
|---|
| 73 | 
 | 
|---|
| 74 |     <p>Enabled translation (internationalization) services, including
 | 
|---|
| 75 |     <code>QTranslator</code> and <code>QTranslatorMessage</code> classes, plus
 | 
|---|
| 76 |     <kbd>lupdate.exe</kbd> and <kbd>lrelease.exe</kbd> command line tools.
 | 
|---|
| 77 |     <code>QT_NO_TRANSLATION</code> is no more defined.</p>
 | 
|---|
| 78 | 
 | 
|---|
| 79 |     <h3>dialogs</h3>
 | 
|---|
| 80 | 
 | 
|---|
| 81 |     <p>OS/2 and eComStation are now mentioned in the
 | 
|---|
| 82 |     <code>QMessageBox::aboutQt()</code> dialog.</p>
 | 
|---|
| 83 | 
 | 
|---|
| 84 |     <h3>workspace</h3>
 | 
|---|
| 85 | 
 | 
|---|
| 86 |     <p>Added the <kbd>workspace</kbd> module (<code>QWorkspace</code> class).
 | 
|---|
| 87 |     The limitation of the current implementation is that child windows don't
 | 
|---|
| 88 |     have sysmenu/min/max/close buttons and cannot be
 | 
|---|
| 89 |     closed/maximized/minimized using the titlebar.</p>
 | 
|---|
| 90 | 
 | 
|---|
| 91 |     <h3>other changes</h3>
 | 
|---|
| 92 | 
 | 
|---|
| 93 |     <p>New examples: <kbd>action</kbd>, <kbd>application</kbd>,
 | 
|---|
| 94 |     <kbd>cursor</kbd>, <kbd>drawlines</kbd>, <kbd>i18n</kbd>, <kbd>mdi</kbd>,
 | 
|---|
| 95 |     <kbd>network/archivesearch</kbd>, <kbd>network/ftpclient</kbd>,
 | 
|---|
| 96 |     <kbd>network/infoprotocol</kbd>, <kbd>network/remotecontrol</kbd>,
 | 
|---|
| 97 |     <kbd>picture</kbd>, <kbd>qfd</kbd>, <kbd>qmag</kbd>, <kbd>qtl</kbd>,
 | 
|---|
| 98 |     <kbd>qwerty</kbd>, <kbd>rot13</kbd>, <kbd>showimg</kbd>,
 | 
|---|
| 99 |     <kbd>textedit</kbd>, <kbd>tictac</kbd>, <kbd>toplevel</kbd> and
 | 
|---|
| 100 |     <kbd>xform</kbd>.</p>
 | 
|---|
| 101 | 
 | 
|---|
| 102 |     <p>Various fixes (<code>QTextEdit</code> in <code>LogText</code> mode,
 | 
|---|
| 103 |     <code>QPopupMenu</code> with multiple columns, using pixel sizes to select
 | 
|---|
| 104 |     fonts), see <kbd>os2-doc\ChangeLog</kbd> for more info.</p>
 | 
|---|
| 105 | 
 | 
|---|
| 106 |     <p>Added two new qmake project variables to the <kbd>GNUMake</kbd>
 | 
|---|
| 107 |     backend: <code>DEF_FILE_TEMPLATE</code> and <code>DEF_FILE_MAP</code> (see
 | 
|---|
| 108 |     <a href="gnumake.html">here</a> for more info).
 | 
|---|
| 109 |     <kbd>mkspecs/os2-g++/qmake.conf</kbd> recognizes these variables and (with
 | 
|---|
| 110 |     the help of the supplied <kbd>emxexpw.cmd</kbd> script) uses them as
 | 
|---|
| 111 |     follows:</p>
 | 
|---|
| 112 | 
 | 
|---|
| 113 |     <ul>
 | 
|---|
| 114 |       <li>If <code>DEF_FILE_TEMPLATE</code> is defined, it is expected to
 | 
|---|
| 115 |       point to an existing <kbd>.def</kbd> file template used when creating a
 | 
|---|
| 116 |       <kbd>.def</kbd> file for the DLL. In this template, all occurences of
 | 
|---|
| 117 |       the <code>${name}</code> macro are replaced with the name of the DLL and
 | 
|---|
| 118 |       the first occurence of the <code>${exports}</code> macro is replaced
 | 
|---|
| 119 |       with the list of exported symbols. If <code>DEF_FILE_TEMPLATE</code> is
 | 
|---|
| 120 |       not defined, the default template is used (<code>INITINSTANCE</code>
 | 
|---|
| 121 |       <code>TERMINSTANCE</code>, <code>DATA</code> <code>MULTIPLE</code>
 | 
|---|
| 122 |       <code>NONSHARED</code>).</li>
 | 
|---|
| 123 | 
 | 
|---|
| 124 |       <li>If <code>DEF_FILE_MAP</code> is defined, it must point to an
 | 
|---|
| 125 |       existing file (it may be empty for the first time). Specifying a map
 | 
|---|
| 126 |       file tells the <kbd>.def</kbd> file generator to export all public
 | 
|---|
| 127 |       symbols by ordinals only (to reduce the DLL size and speed up access to
 | 
|---|
| 128 |       exported symbols). This map file is used to store ordinals assigned to
 | 
|---|
| 129 |       exported symbols (to guarantee these assignments are persistent from
 | 
|---|
| 130 |       build to build, which in turn helps to support binary DLL
 | 
|---|
| 131 |       compatibility). For more details about the format of the map file,
 | 
|---|
| 132 |       please refer to the <kbd>envexpw.cmd</kbd> script. If
 | 
|---|
| 133 |       <code>DEF_FILE_MAP</code> is not defined, all symbols are exported by
 | 
|---|
| 134 |       name.</li>
 | 
|---|
| 135 |     </ul>
 | 
|---|
| 136 | 
 | 
|---|
| 137 |     <p>The Qt library, when built as a DLL, makes usage of the above
 | 
|---|
| 138 |     <code>DEF_FILE_*</code> variables. This makes it possible to maintain
 | 
|---|
| 139 |     binary compatibility between newer and older releases whenever it is
 | 
|---|
| 140 |     technically possible (i.e. no new data members in Qt classes etc.).</p>
 | 
|---|
| 141 | 
 | 
|---|
| 142 |     <p>The <kbd>configure.cmd</kbd> script has been rewritten from scratch. It
 | 
|---|
| 143 |     is now fully interactive and is capable of searching for suitable versions
 | 
|---|
| 144 |     of the compiler, linker and the make tool in the locations specified by
 | 
|---|
| 145 |     the user.</p>
 | 
|---|
| 146 | 
 | 
|---|
| 147 |     <h2>Release Candidate 4 (2004-10-02) [<kbd>rc04</kbd>]</h2>
 | 
|---|
| 148 | 
 | 
|---|
| 149 |     <hr />
 | 
|---|
| 150 | 
 | 
|---|
| 151 |     <p>This release contains few fixes (<kbd>\os2-doc\ChangeLog</kbd> for full
 | 
|---|
| 152 |     list) as well as the following new functionality.</p>
 | 
|---|
| 153 | 
 | 
|---|
| 154 |     <h3>kernel</h3>
 | 
|---|
| 155 | 
 | 
|---|
| 156 |     <p>Added zlib, jpeg, png, mng support (controlled via
 | 
|---|
| 157 |     <kbd>\configure.cmd</kbd>), async I/O classes (defined in
 | 
|---|
| 158 |     <kbd>asyncio.h</kbd>).</p>
 | 
|---|
| 159 | 
 | 
|---|
| 160 |     <p>Added basic MIME support (<code>QMimeSource</code> class), no PM DDE
 | 
|---|
| 161 |     <-> open MIME conversion yet (<code>QMimeSource</code> is just
 | 
|---|
| 162 |     necessary for some other classes). Added basic DND support
 | 
|---|
| 163 |     (<code>QDragObject</code>, <code>QImageDrag</code>,
 | 
|---|
| 164 |     <code>QTextDrag</code>, <code>QStoredDrag</code>, <code>QUriDrag</code>),
 | 
|---|
| 165 |     but no real drag & drop yet (<code>QT_NO_DRAGANDDROP</code> is still
 | 
|---|
| 166 |     defined, but some classes need <code>QDragObject</code> and others to make
 | 
|---|
| 167 |     the correct usage of <code>QMimeSource</code>).</p>
 | 
|---|
| 168 | 
 | 
|---|
| 169 |     <p><code>QRegion</code> now supports creating regions from
 | 
|---|
| 170 |     <code>QBitmap</code>s (<code>QRegion(const QBitmap &)</code>
 | 
|---|
| 171 |     constructor).</p>
 | 
|---|
| 172 | 
 | 
|---|
| 173 |     <h3>widgets</h3>
 | 
|---|
| 174 | 
 | 
|---|
| 175 |     <p>New classes: <code>QWidgetPlugin</code> (necessary for some other new
 | 
|---|
| 176 |     classes), <code>QTextBrowser</code>; <code>QDateTimeEditor</code>,
 | 
|---|
| 177 |     <code>QDial</code>, <code>QSplashScreen</code>,
 | 
|---|
| 178 |     <code>QWhatsThis</code>.</p>
 | 
|---|
| 179 | 
 | 
|---|
| 180 |     <p>Implemented animation effects support, (see
 | 
|---|
| 181 |     <code>QApplicaition::setEffectEnabled()</code>,
 | 
|---|
| 182 |     <code>isEffectEnabled()</code> methods), this means that the
 | 
|---|
| 183 |     <kbd>widgets</kbd> module is now completely implemented.</p>
 | 
|---|
| 184 | 
 | 
|---|
| 185 |     <h3>network</h3>
 | 
|---|
| 186 | 
 | 
|---|
| 187 |     <p>Implemented network module (classes <code>QDns</code>,
 | 
|---|
| 188 |     <code>QFtp</code>, <code>QHostAddress</code>, <code>QHttp</code>,
 | 
|---|
| 189 |     <code>QServerSocket</code>, <code>QSocket</code>,
 | 
|---|
| 190 |     <code>QSocketDevice</code>, <code>QSocketNotifier</code>) with the
 | 
|---|
| 191 |     following limitations: no IPv6 support (<code>QT_NO_IPV6</code> is
 | 
|---|
| 192 |     defined), no synchronous lookups (i.e. defining
 | 
|---|
| 193 |     <code>Q_DNS_SYNCHRONOUS</code> in <kbd>qdns.h</kbd> is useless),
 | 
|---|
| 194 |     <code>QSocketDevice::blocking()</code> always returns <code>TRUE</code>
 | 
|---|
| 195 |     (it seems that there's no way to determine the current blocking state of
 | 
|---|
| 196 |     an arbitrary socket).</p>
 | 
|---|
| 197 | 
 | 
|---|
| 198 |     <p>Note: the socket notification (<code>QSocketNotifier</code>)
 | 
|---|
| 199 |     functionality is not available when Qt is compiled without threading
 | 
|---|
| 200 |     support (this also means that <code>QDns</code> class will not function
 | 
|---|
| 201 |     properly, as well as many other network applications that rely on the
 | 
|---|
| 202 |     socket notification mechanism provided by Qt); in a single-threaded
 | 
|---|
| 203 |     version of Qt such methods as
 | 
|---|
| 204 |     <code>QEventLoop::registerSocketNotifier()</code> simply do nothing, and
 | 
|---|
| 205 |     notification signals are never emitted.</p>
 | 
|---|
| 206 | 
 | 
|---|
| 207 |     <h3>other changes</h3>
 | 
|---|
| 208 | 
 | 
|---|
| 209 |     <p>The <kbd>configure.cmd</kbd> script has been moved from the
 | 
|---|
| 210 |     <kbd>\bin</kbd> subdirectory to the root directory of the project.</p>
 | 
|---|
| 211 | 
 | 
|---|
| 212 |     <p>Added new examples: <kbd>scrollview</kbd>, <kbd>helpviewer</kbd>;
 | 
|---|
| 213 |     <kbd>network\clientserver</kbd>, <kbd>network\httpd</kbd>,
 | 
|---|
| 214 |     <kbd>network\mail</kbd>, <kbd>network\networkprotocol</kbd>; all xml
 | 
|---|
| 215 |     examples (the <kbd>xml</kbd> subdirectory). Note that the
 | 
|---|
| 216 |     <kbd>helpviewer</kbd> example shows nothing after invocation (because Qt
 | 
|---|
| 217 |     docs are not contained in the repository), point it to the existing html
 | 
|---|
| 218 |     file to see the results.</p>
 | 
|---|
| 219 | 
 | 
|---|
| 220 |     <h4>GNUMake backend for qmake</h4>
 | 
|---|
| 221 | 
 | 
|---|
| 222 |     <p>A new makefile generator (backend) for qmake has been created,
 | 
|---|
| 223 |     <kbd>GNUMAKE</kbd>. It is now used in Qt/OS2 along with the GCC compiler
 | 
|---|
| 224 |     and the GNU Make utility to generate makefiles from <kbd>qmake</kbd>'s
 | 
|---|
| 225 |     project files (instead of a bit buggy MINGWMAKE backend). See <a
 | 
|---|
| 226 |     href="gnumake.html">here</a> for more information about the GNUMAKE
 | 
|---|
| 227 |     backend.</p>
 | 
|---|
| 228 | 
 | 
|---|
| 229 |     <h4>new linker</h4>
 | 
|---|
| 230 | 
 | 
|---|
| 231 |     <p>The linker used along with the GCC compiler has been changed. The
 | 
|---|
| 232 |     previously used IBM ILINK 5.0 has some very unpleasant bugs that do not
 | 
|---|
| 233 |     allow to build the DLL version (see below) of the Qt library. It is now
 | 
|---|
| 234 |     necessary to use the linker from the distribution of IBM Visual Age C/C++
 | 
|---|
| 235 |     version 3.08. The copies of your <kbd>gcc322.cmd</kbd> and
 | 
|---|
| 236 |     <kbd>qt.cmd</kbd> scripts should be updated with the new ones from the
 | 
|---|
| 237 |     <kbd>\os2-misc</kbd> subdirectory (don't forget to correct path variables
 | 
|---|
| 238 |     inside the scripts). Read also <a href="general.html#compilation">here
 | 
|---|
| 239 |     </a>about the steps necessary to compile the Qt Library.</p>
 | 
|---|
| 240 | 
 | 
|---|
| 241 |     <p>Note that ILINK 3.08 creates executables and DLLs that are slightly
 | 
|---|
| 242 |     bigger in size comparing to ones produced by ILINK 5.0. The freeware tool
 | 
|---|
| 243 |     <a
 | 
|---|
| 244 |     href="http://hobbes.nmsu.edu/cgi-bin/h-search?key=lxlite&pushbutton=Search">lxlite</a>
 | 
|---|
| 245 |     can be used to reduce the size of executables and DLLs, if desired.</p>
 | 
|---|
| 246 | 
 | 
|---|
| 247 |     <h4>DLL version of Qt</h4>
 | 
|---|
| 248 | 
 | 
|---|
| 249 |     <p>The Qt library can now be compiled as the DLL. The <code>DLL</code>
 | 
|---|
| 250 |     variable has been added to the <kbd>\configure.cmd</kbd> script to control
 | 
|---|
| 251 |     the type of the Qt library to compile. Set it to <kbd>1</kbd> to compile
 | 
|---|
| 252 |     Qt as the the DLL and to <kbd>0</kbd> to compile it as the static library.
 | 
|---|
| 253 |     After building the Qt DLL using <kbd>configure.cmd</kbd>, all Qt programs
 | 
|---|
| 254 |     built using qmake wil be linked against this DLL. By default,
 | 
|---|
| 255 |     <kbd>configure.cmd</kbd> compiles Qt as the release DLL with all available
 | 
|---|
| 256 |     features turned on (excluding the <kbd>gif</kbd> support, due to its
 | 
|---|
| 257 |     license limitations).</p>
 | 
|---|
| 258 | 
 | 
|---|
| 259 |     <h4>uic tool</h4>
 | 
|---|
| 260 | 
 | 
|---|
| 261 |     <p>The user interface compiler (<kbd>uic</kbd>) utility has been added to
 | 
|---|
| 262 |     the project. As for now, It is primarily necessary to process the
 | 
|---|
| 263 |     <code>IMAGES</code> qmake's project variable used to embed a collection of
 | 
|---|
| 264 |     images to the executable, but can be also used to compile the user
 | 
|---|
| 265 |     interface (<kbd>.ui</kbd>) files as well. However, there's still no
 | 
|---|
| 266 |     QDesigner for OS/2, so <kbd>.ui</kbd> files can be created and edited only
 | 
|---|
| 267 |     manually (with one limitation -- widget properties for setting the cursor
 | 
|---|
| 268 |     shape are not supported by the current version of <kbd>uic</kbd> due to
 | 
|---|
| 269 |     the currently incomplete <code>QCursor</code> class implementation).</p>
 | 
|---|
| 270 | 
 | 
|---|
| 271 |     <h2>Release Candidate 3 (2004-06-23) [<kbd>rc03</kbd>]</h2>
 | 
|---|
| 272 | 
 | 
|---|
| 273 |     <hr />
 | 
|---|
| 274 | 
 | 
|---|
| 275 |     <p>This release contains some fixes (see <kbd>\os2-doc\ChangeLog</kbd>) as
 | 
|---|
| 276 |     well as the following new functionality.</p>
 | 
|---|
| 277 | 
 | 
|---|
| 278 |     <h3>kernel</h3>
 | 
|---|
| 279 | 
 | 
|---|
| 280 |     <p>Qt applications now use the PM Scheme Palette font settings to setup
 | 
|---|
| 281 |     default fonts for widgets. This can be disabled by calling
 | 
|---|
| 282 |     <code>QApplication::setDesktopSettingsAware(FALSE)</code>.</p>
 | 
|---|
| 283 | 
 | 
|---|
| 284 |     <h3>widgets</h3>
 | 
|---|
| 285 | 
 | 
|---|
| 286 |     <p>The <code>QWidget::reparent()</code> method has been implemented.
 | 
|---|
| 287 |     Things like tear-off menus (see the <kbd>menu</kbd> example) and toolbars
 | 
|---|
| 288 |     (the <kbd>action\toggleaction</kbd> example) seem to work well.</p>
 | 
|---|
| 289 | 
 | 
|---|
| 290 |     <h3>other changes</h3>
 | 
|---|
| 291 | 
 | 
|---|
| 292 |     <p>New examples: <kbd>menu</kbd>, <kbd>rangecontrols</kbd>,
 | 
|---|
| 293 |     <kbd>listbox</kbd>, <kbd>tabdialog</kbd>, <kbd>wizard</kbd>,
 | 
|---|
| 294 |     <kbd>life</kbd>, <kbd>hello</kbd>, <kbd>gridview</kbd>,
 | 
|---|
| 295 |     <kbd>forever</kbd>, <kbd>fonts</kbd>, <kbd>addressbook</kbd>,
 | 
|---|
| 296 |     <kbd>splitter</kbd>, <kbd>layout</kbd>, <kbd>customlayout</kbd>,
 | 
|---|
| 297 |     <kbd>themes</kbd>, <kbd>scribble</kbd>, <kbd>action\toggleaction</kbd>,
 | 
|---|
| 298 |     <kbd>thread\prodcons</kbd>, <kbd>thread\semaphores</kbd>. Note that the
 | 
|---|
| 299 |     <kbd>themes</kbd> example using the Norwegian Wood theme doesn't handle
 | 
|---|
| 300 |     the button roundness because non-rectangular widgets are not currently
 | 
|---|
| 301 |     supported by Qt/OS2.</p>
 | 
|---|
| 302 | 
 | 
|---|
| 303 |     <p>The <code>RELEASE</code> variable has been added to the
 | 
|---|
| 304 |     <kbd>bin\configure.cmd</kbd> script to control the type of the Qt library
 | 
|---|
| 305 |     to be compiled. Set it to <kbd>1</kbd> to compile the release version and
 | 
|---|
| 306 |     to <kbd>0</kbd> to compile the debug version.</p>
 | 
|---|
| 307 | 
 | 
|---|
| 308 |     <h2>Release Candidate 2 (2004-06-16) [<kbd>rc02</kbd>]</h2>
 | 
|---|
| 309 | 
 | 
|---|
| 310 |     <hr />
 | 
|---|
| 311 | 
 | 
|---|
| 312 |     <p>This release is mostly a bugfix. See <kbd>\os2-doc\ChangeLog</kbd> for
 | 
|---|
| 313 |     the detailed info about all fixes applied. Also, the following
 | 
|---|
| 314 |     functionality has been added.</p>
 | 
|---|
| 315 | 
 | 
|---|
| 316 |     <h3>kernel</h3>
 | 
|---|
| 317 | 
 | 
|---|
| 318 |     <p>Qt applications now use the PM Scheme Palette color settings to setup
 | 
|---|
| 319 |     the default palette for widgets. This can be disabled by calling
 | 
|---|
| 320 |     <code>QApplication::setDesktopSettingsAware(FALSE)</code>.</p>
 | 
|---|
| 321 | 
 | 
|---|
| 322 |     <p>Mouse wheel handling (<code>QEvent::Wheel</code>) now works, the wheel
 | 
|---|
| 323 |     can be used in all widgets that support it. System settings for the mouse
 | 
|---|
| 324 |     wheel (standard or AMouse) are currently ignored, because Qt handles
 | 
|---|
| 325 |     things such as the number of lines to scroll per whell rotation on its
 | 
|---|
| 326 |     own, and doesn't offer a setting to tell it to be aware of system
 | 
|---|
| 327 |     settings.</p>
 | 
|---|
| 328 | 
 | 
|---|
| 329 |     <p>The optimization setting for pixmaps with masks is now meaningful:
 | 
|---|
| 330 |     <code>NoOptim</code>/<code>MemoryOptim</code> optimizes for memory,
 | 
|---|
| 331 |     <code>NormalOptim</code>/<code>BestOptim</code> -- for speed. Memory
 | 
|---|
| 332 |     optimization causes QPixmap not to store a special precomposed image for
 | 
|---|
| 333 |     every pixmap but recreate it every time the pixmap is drawn.</p>
 | 
|---|
| 334 | 
 | 
|---|
| 335 |     <p>Rich text support for widgets has been enabled and seems to work well.
 | 
|---|
| 336 |     This includes <code>QStyleSheet</code> and <code>QSimpleRichText</code>
 | 
|---|
| 337 |     classes. Widgets that support it (for example, QMessageBox) now display
 | 
|---|
| 338 |     rich text strings correctly.</p>
 | 
|---|
| 339 | 
 | 
|---|
| 340 |     <h3>widgets</h3>
 | 
|---|
| 341 | 
 | 
|---|
| 342 |     <p>New widgets: <code>QGridView</code>, <code>QSpinBox</code>,
 | 
|---|
| 343 |     <code>QSyntaxHighlighter</code>, <code>QTextEdit</code>,
 | 
|---|
| 344 |     <code>QTextView</code>.</p>
 | 
|---|
| 345 | 
 | 
|---|
| 346 |     <h3>dialogs</h3>
 | 
|---|
| 347 | 
 | 
|---|
| 348 |     <p>Two new dialogs: <code>QColorDialog</code> and
 | 
|---|
| 349 |     <code>QFontDialog</code>.</p>
 | 
|---|
| 350 | 
 | 
|---|
| 351 |     <h3>other changes</h3>
 | 
|---|
| 352 | 
 | 
|---|
| 353 |     <p>New examples: <kbd>lineedits</kbd>, <kbd>listboxcombo</kbd>,
 | 
|---|
| 354 |     <kbd>listviews</kbd>, <kbd>progressbar</kbd>.</p>
 | 
|---|
| 355 | 
 | 
|---|
| 356 |     <h2>Release Candidate 1 (2004-06-04) [<kbd>rc01</kbd>]</h2>
 | 
|---|
| 357 | 
 | 
|---|
| 358 |     <hr />
 | 
|---|
| 359 | 
 | 
|---|
| 360 |     <p>This release candidate brings Qt/OS2 functioality to a level where it
 | 
|---|
| 361 |     can be used to create simipe "general-purpose" applications: many commonly
 | 
|---|
| 362 |     used widgets are done. Some (mostly cosmetic) shortcomings are still
 | 
|---|
| 363 |     present (for example, images do not support transparency yet) -- this will
 | 
|---|
| 364 |     be fixed in next releases.</p>
 | 
|---|
| 365 | 
 | 
|---|
| 366 |     <h3>kernel</h3>
 | 
|---|
| 367 | 
 | 
|---|
| 368 |     <p>The modal widget functionality has been implemented (including
 | 
|---|
| 369 |     <code>Qt::WShowModal</code> widget flag).
 | 
|---|
| 370 |     <code>QEvent::WindowBlocked</code> and <code>WindowUnblocked</code> are
 | 
|---|
| 371 |     now sent to widgets when they are blocked/unblocked by modal widgets.
 | 
|---|
| 372 |     Unlike on Qt/Win32, these events are sent to all top-level widgets, not
 | 
|---|
| 373 |     only to the direct parent of the modal widget being shown/hidden.</p>
 | 
|---|
| 374 | 
 | 
|---|
| 375 |     <p>The popup widget functionality has been done
 | 
|---|
| 376 |     (<code>Qt::WType_Popup</code> widget flag). It has no significant
 | 
|---|
| 377 |     differences comparing to Qt/Win32; in particular, popup widgets do not
 | 
|---|
| 378 |     grab mouse move events addressed to widgets from other applications,
 | 
|---|
| 379 |     except when a mouse button is pressed down while moving (as this can be
 | 
|---|
| 380 |     seen in the <kbd>popup</kbd> example). It should be noted here, that
 | 
|---|
| 381 |     <code>QWidget::grabMouse()</code> in OS/2 does grab such events, which
 | 
|---|
| 382 |     differs from Qt/Win32 where this function has the same effect as in
 | 
|---|
| 383 |     popups.</p>
 | 
|---|
| 384 | 
 | 
|---|
| 385 |     <p>New classes: <code>QLocalFs</code>, <code>QUrl</code>,
 | 
|---|
| 386 |     <code>QUrlOperator</code>, <code>QUrlInfo</code>,
 | 
|---|
| 387 |     <code>QNetworkProtocol</code>. These classes do not bring the network
 | 
|---|
| 388 |     support to Qt/OS2 -- they are network helper classes that also required by
 | 
|---|
| 389 |     some common widgets, such as <code>QFileDialog</code>.</p>
 | 
|---|
| 390 | 
 | 
|---|
| 391 |     <h3>dialogs</h3>
 | 
|---|
| 392 | 
 | 
|---|
| 393 |     <p>The dialogs module has been started: <code>QDialog</code>,
 | 
|---|
| 394 |     <code>QMessageBox</code>, <code>QProgressDialog</code> and
 | 
|---|
| 395 |     <code>QFileDialog</code> are now present. <code>QFileDialog</code> is a
 | 
|---|
| 396 |     pure Qt widget, native OS/2 PM file dialogs are not yet supported.</p>
 | 
|---|
| 397 | 
 | 
|---|
| 398 |     <h3>widgets</h3>
 | 
|---|
| 399 | 
 | 
|---|
| 400 |     <p>New widgets:</p>
 | 
|---|
| 401 | 
 | 
|---|
| 402 |     <ul>
 | 
|---|
| 403 |       <li><code>QPopupMenu</code> and <code>QMenuBar</code> (including
 | 
|---|
| 404 |       <code>QMenuData</code>);</li>
 | 
|---|
| 405 | 
 | 
|---|
| 406 |       <li><code>QLineEdit</code>, <code>QValidator</code>;</li>
 | 
|---|
| 407 | 
 | 
|---|
| 408 |       <li><code>QProgressBar</code>, <code>QStatusBar</code>;</li>
 | 
|---|
| 409 | 
 | 
|---|
| 410 |       <li><code>QMainWindow</code>;</li>
 | 
|---|
| 411 | 
 | 
|---|
| 412 |       <li><code>QComboBox</code>;</li>
 | 
|---|
| 413 | 
 | 
|---|
| 414 |       <li><code>QDockArea</code>, <code>QDockWindow</code>;</li>
 | 
|---|
| 415 | 
 | 
|---|
| 416 |       <li><code>QListBox</code>, <code>QListView</code>,
 | 
|---|
| 417 |       <code>QHeader</code>;</li>
 | 
|---|
| 418 | 
 | 
|---|
| 419 |       <li><code>QScrollBar</code>, <code>QScrollView</code>;</li>
 | 
|---|
| 420 | 
 | 
|---|
| 421 |       <li><code>QSplitter</code>;</li>
 | 
|---|
| 422 | 
 | 
|---|
| 423 |       <li><code>QTitleBar</code>;</li>
 | 
|---|
| 424 | 
 | 
|---|
| 425 |       <li><code>QToolBar</code>; <code>QToolButton</code>;</li>
 | 
|---|
| 426 | 
 | 
|---|
| 427 |       <li><code>QToolTip</code>;</li>
 | 
|---|
| 428 | 
 | 
|---|
| 429 |       <li><code>QWidgetStack</code>.</li>
 | 
|---|
| 430 |     </ul>
 | 
|---|
| 431 | 
 | 
|---|
| 432 |     <p>New methods:</p>
 | 
|---|
| 433 | 
 | 
|---|
| 434 |     <ul>
 | 
|---|
| 435 |       <li><code>QApplication::cursorFlashTime()</code> and
 | 
|---|
| 436 |       <code>setCursorFlashTime()</code>;</li>
 | 
|---|
| 437 | 
 | 
|---|
| 438 |       <li><code>QApplication::doubleClickInterval()</code> and
 | 
|---|
| 439 |       <code>setDoubleClickInterval()</code>;</li>
 | 
|---|
| 440 | 
 | 
|---|
| 441 |       <li><code>QWidget::scroll()</code>.</li>
 | 
|---|
| 442 |     </ul>
 | 
|---|
| 443 | 
 | 
|---|
| 444 |     <h3>other changes</h3>
 | 
|---|
| 445 | 
 | 
|---|
| 446 |     <p>New examples: <kbd>popup</kbd>, <kbd>progress</kbd>,
 | 
|---|
| 447 |     <kbd>buttongroups</kbd>, <kbd>checklists</kbd>, <kbd>tooltip</kbd>.</p>
 | 
|---|
| 448 | 
 | 
|---|
| 449 |     <h2>Beta 2 (2004-05-27) [<kbd>b02</kbd>]</h2>
 | 
|---|
| 450 | 
 | 
|---|
| 451 |     <hr />
 | 
|---|
| 452 | 
 | 
|---|
| 453 |     <h3>kernel</h3>
 | 
|---|
| 454 | 
 | 
|---|
| 455 |     <p>Mouse and keyboard event handling has been implemented. The following
 | 
|---|
| 456 |     new types of events are now handled by Qt/OS2 and delivered to
 | 
|---|
| 457 |     widgets:</p>
 | 
|---|
| 458 | 
 | 
|---|
| 459 |     <ul>
 | 
|---|
| 460 |       <li>mouse events (<code>QEvent::MouseButtonPress</code>,
 | 
|---|
| 461 |       <code>MouseButtonRelease</code>, <code>MouseButtonDblClick</code>,
 | 
|---|
| 462 |       <code>MouseMove</code>);</li>
 | 
|---|
| 463 | 
 | 
|---|
| 464 |       <li>mouse enter/leave events (<code>QEvent::Enter</code>,
 | 
|---|
| 465 |       <code>Leave</code>);</li>
 | 
|---|
| 466 | 
 | 
|---|
| 467 |       <li>show/hide/close events (<code>QEvent::Show</code>,
 | 
|---|
| 468 |       <code>Hide</code>, <code>Close</code>);</li>
 | 
|---|
| 469 | 
 | 
|---|
| 470 |       <li>focus events (<code>QEvent::FocusIn</code>,
 | 
|---|
| 471 |       <code>FocusOut</code>);</li>
 | 
|---|
| 472 | 
 | 
|---|
| 473 |       <li>window activation change events
 | 
|---|
| 474 |       (<code>QEvent::WindowActivate</code>,
 | 
|---|
| 475 |       <code>WindowDeactivate</code>);</li>
 | 
|---|
| 476 | 
 | 
|---|
| 477 |       <li>context menu event (<code>QEvent::ContextMenu</code>);</li>
 | 
|---|
| 478 | 
 | 
|---|
| 479 |       <li>keyboard events (<code>QEvent::keyPress</code>,
 | 
|---|
| 480 |       <code>keyRelease</code>).</li>
 | 
|---|
| 481 |     </ul>
 | 
|---|
| 482 | 
 | 
|---|
| 483 |     <p>Also, the following has been added:</p>
 | 
|---|
| 484 | 
 | 
|---|
| 485 |     <ul>
 | 
|---|
| 486 |       <li><code>QApplication</code>:
 | 
|---|
| 487 |       <code>setGlobalMouseTracking()</code>.</li>
 | 
|---|
| 488 | 
 | 
|---|
| 489 |       <li><code>QWidget</code>:<ul>
 | 
|---|
| 490 |           <li><code>mapToGlobal()</code>, <code>mapFromGlobal()</code>.</li>
 | 
|---|
| 491 | 
 | 
|---|
| 492 |           <li><code>setMinimumSize()</code> and <code>setMaximumSize()</code>
 | 
|---|
| 493 |           now make sense (although system recommended minimum top-level window
 | 
|---|
| 494 |           size is still obeyed, for compatibility with Qt/Win32).</li>
 | 
|---|
| 495 |         </ul></li>
 | 
|---|
| 496 | 
 | 
|---|
| 497 |       <li><code>QPainter</code>: <code>drawRoundRect()</code>,
 | 
|---|
| 498 |       <code>drawCubicBezier()</code>. All <code>QPainter</code> methods are
 | 
|---|
| 499 |       now implemented.</li>
 | 
|---|
| 500 | 
 | 
|---|
| 501 |       <li><code>QAccel</code> and <code>QKeySequence</code> classes.</li>
 | 
|---|
| 502 |     </ul>
 | 
|---|
| 503 | 
 | 
|---|
| 504 |     <h4>Keyboard handling</h4>
 | 
|---|
| 505 | 
 | 
|---|
| 506 |     <p>DBCS keyboard input is not tested, and most likely will not work
 | 
|---|
| 507 |     correctly in Qt/OS2.</p>
 | 
|---|
| 508 | 
 | 
|---|
| 509 |     <h4>System menu</h4>
 | 
|---|
| 510 | 
 | 
|---|
| 511 |     <p>The system menu of the top-level widget (if it is present) can be
 | 
|---|
| 512 |     activated by pressing the <kbd>ALT</kbd>+<kbd><space></kbd> keyboard
 | 
|---|
| 513 |     combination. Pressing single <kbd>ALT</kbd> doesn't show it, this is done
 | 
|---|
| 514 |     for compatibility with other Qt versions. Also, frame size/position
 | 
|---|
| 515 |     accelerators (<kbd>ALT</kbd>+<kbd>F7</kbd> etc.) have been disabled for
 | 
|---|
| 516 |     the same reason. They are still present in the menu item text, but it will
 | 
|---|
| 517 |     be fixed in the next release.</p>
 | 
|---|
| 518 | 
 | 
|---|
| 519 |     <h3>widgets</h3>
 | 
|---|
| 520 | 
 | 
|---|
| 521 |     <p>The <kbd>widgets</kbd> module implementation has been started. The
 | 
|---|
| 522 |     following classes are currently available and seem to function well:
 | 
|---|
| 523 |     <code>QButton</code>, <code>QButtonGroup</code>, <code>QLabel</code>,
 | 
|---|
| 524 |     <code>QFrame</code>, <code>QPushButton</code>, <code>QCheckButton</code>,
 | 
|---|
| 525 |     <code>QRadioButton</code>, <code>QLCDNumber</code>, QRangeControl,
 | 
|---|
| 526 |     <code>QSlider</code>.</p>
 | 
|---|
| 527 | 
 | 
|---|
| 528 |     <p>Also, layout management has been completely compiled in and partially
 | 
|---|
| 529 |     tested, including classes: <code>QBoxLayout</code>,
 | 
|---|
| 530 |     <code>QButtonGroup</code>, <code>QGLayoutIterator</code>,
 | 
|---|
| 531 |     <code>QGrid</code>, <code>QGridLayout</code>, <code>QGroupBox</code>,
 | 
|---|
| 532 |     <code>QHBox</code>, <code>QHBoxLayout</code>, <code>QHButtonGroup</code>,
 | 
|---|
| 533 |     <code>QHGroupBox</code>, <code>QLayout</code>, <code>QLayoutItem</code>,
 | 
|---|
| 534 |     <code>QLayoutIterator</code>, <code>QSizePolicy</code>,
 | 
|---|
| 535 |     <code>QSpacerItem</code>, <code>QVBox</code>, <code>QVBoxLayout</code>,
 | 
|---|
| 536 |     <code>QVButtonGroup</code>, <code>QVGroupBox</code>,
 | 
|---|
| 537 |     <code>QWidgetItem</code>.</p>
 | 
|---|
| 538 | 
 | 
|---|
| 539 |     <h3>other changes</h3>
 | 
|---|
| 540 | 
 | 
|---|
| 541 |     <p>The Qt/OS2 distribution now contains the Qt tutorial and examples from
 | 
|---|
| 542 |     the original Qt 3.3.1 distribution that can be compiled without any
 | 
|---|
| 543 |     modifications and run well under OS/2. This doesn't mean though that they
 | 
|---|
| 544 |     are fully functional (comparing to other platforms) -- some functionality
 | 
|---|
| 545 |     (such as the non-rectangular window in the aclock example) is still
 | 
|---|
| 546 |     missing in Qt/OS2, but these examples can at least properly handle such
 | 
|---|
| 547 |     situations (usually doing nothing or keeping some kind of "default"
 | 
|---|
| 548 |     behavior when the missing functionality is requested).</p>
 | 
|---|
| 549 | 
 | 
|---|
| 550 |     <p>The Qt tutorial can be completely compiled on OS/2 and works fine, as
 | 
|---|
| 551 |     well as <kbd>aclock</kbd> and <kbd>dclock</kbd> examples. The compilation
 | 
|---|
| 552 |     of tutorial applications and examples is done automatically by the
 | 
|---|
| 553 |     <kbd>configure.cmd</kbd> script.</p>
 | 
|---|
| 554 | 
 | 
|---|
| 555 |     <h2>Beta 1 (2004-05-18) [<kbd>b01</kbd>]</h2>
 | 
|---|
| 556 | 
 | 
|---|
| 557 |     <hr />
 | 
|---|
| 558 | 
 | 
|---|
| 559 |     <h3>kernel</h3>
 | 
|---|
| 560 | 
 | 
|---|
| 561 |     <p>Big work is done to implement the font support (<code>QFont</code>,
 | 
|---|
| 562 |     <code>QFontInfo</code>, <code>QFontMetrics</code>,
 | 
|---|
| 563 |     <code>QFontDatabase</code> classes). This in particular means that all
 | 
|---|
| 564 |     kernel module visualization functionality (primitives, images, fonts) is
 | 
|---|
| 565 |     now done. The current font implementation has the following
 | 
|---|
| 566 |     limitations:</p>
 | 
|---|
| 567 | 
 | 
|---|
| 568 |     <ul>
 | 
|---|
| 569 |       <li>DBCS fonts will most likely not work correctly (a serious work is
 | 
|---|
| 570 |       required to support such scripts as arabic, herbew, japanese), so true
 | 
|---|
| 571 |       unicode is not fully supported. Also this means that it's not possible
 | 
|---|
| 572 |       to draw glyphs from different scripts at the same time, only glyphs from
 | 
|---|
| 573 |       the current character set (usually system default) are available to
 | 
|---|
| 574 |       draw, <code>QFont::Script</code> values are totally ignored.</li>
 | 
|---|
| 575 | 
 | 
|---|
| 576 |       <li>Foundries in family names are ignored (the same behavior is on
 | 
|---|
| 577 |       Qt/Win32).</li>
 | 
|---|
| 578 | 
 | 
|---|
| 579 |       <li>Printer output is not yet supported (this also relates to all other
 | 
|---|
| 580 |       kernel parts).</li>
 | 
|---|
| 581 | 
 | 
|---|
| 582 |       <li><code>QFontMetrics</code>: <code>minRightBearing()</code> and
 | 
|---|
| 583 |       <code>minLeftBearing()</code> return zero at the present.</li>
 | 
|---|
| 584 | 
 | 
|---|
| 585 |       <li>Text drawing and font measuring operations are not subject of any
 | 
|---|
| 586 |       coordinate space transformations except the simple translation
 | 
|---|
| 587 |       transformation.</li>
 | 
|---|
| 588 | 
 | 
|---|
| 589 |       <li>No font style simulation (bold and italic) is done, only true styles
 | 
|---|
| 590 |       of the fonts installed in the system are available.</li>
 | 
|---|
| 591 | 
 | 
|---|
| 592 |       <li><code>QFontDatabase</code>: due to a bug in
 | 
|---|
| 593 |       <code>GpiQueryFontAction()</code> API the Qt font database is not
 | 
|---|
| 594 |       sensible to font changes (installing/removing fonts from the system)
 | 
|---|
| 595 |       during the application lifetime. This means that the application should
 | 
|---|
| 596 |       be restarted in order to pick up such changes.</li>
 | 
|---|
| 597 |     </ul>
 | 
|---|
| 598 | 
 | 
|---|
| 599 |     <p>Also, the following has been added:</p>
 | 
|---|
| 600 | 
 | 
|---|
| 601 |     <ul>
 | 
|---|
| 602 |       <li><code>QPainter</code>: <code>drawText()</code> (+ font getter/setter
 | 
|---|
| 603 |       methods), <code>drawEllipse()</code>, <code>drawArc()</code>,
 | 
|---|
| 604 |       <code>drawPie()</code>, <code>drawChord()</code>,
 | 
|---|
| 605 |       <code>drawPolyLine()</code>, <code>drawLineSegments()</code>,
 | 
|---|
| 606 |       <code>drawWinFocusRect()</code>.</li>
 | 
|---|
| 607 | 
 | 
|---|
| 608 |       <li><code>QWidget</code>: <code>drawText()</code> (+ font getter/setter
 | 
|---|
| 609 |       methods).</li>
 | 
|---|
| 610 | 
 | 
|---|
| 611 |       <li><code>QIconSet</code> and <code>QPicture</code> are now
 | 
|---|
| 612 |       available.</li>
 | 
|---|
| 613 |     </ul>
 | 
|---|
| 614 | 
 | 
|---|
| 615 |     <h3>styles</h3>
 | 
|---|
| 616 | 
 | 
|---|
| 617 |     <p>The styles module (<code>QStyle</code>, <code>QStyleFactory</code>
 | 
|---|
| 618 |     etc.) has been enabled for compilation. Currently, OS/2 version of Qt uses
 | 
|---|
| 619 |     the "Windows" (<code>QWindowsStyle</code>) style for widgets by default
 | 
|---|
| 620 |     (though, this cannot be seen in this beta -- no widgets that use styles
 | 
|---|
| 621 |     are completely ready at this moment).</p>
 | 
|---|
| 622 | 
 | 
|---|
| 623 |     <h3>other changes</h3>
 | 
|---|
| 624 | 
 | 
|---|
| 625 |     <ul>
 | 
|---|
| 626 |       <li>The CVS repository changelog has been added to the distribution (it
 | 
|---|
| 627 |       can be found in the <kbd>\os2-doc</kbd> directory). This changelog
 | 
|---|
| 628 |       contains more detailed project change history.</li>
 | 
|---|
| 629 | 
 | 
|---|
| 630 |       <li>The link to GNU Make (<a href="general.html#compilation">here</a>)
 | 
|---|
| 631 |       is now updated to refer to the latest version (it was outdated in
 | 
|---|
| 632 |       <kbd>a02</kbd>).</li>
 | 
|---|
| 633 |     </ul>
 | 
|---|
| 634 | 
 | 
|---|
| 635 |     <h2>Alpha 2 (2004-05-07) [<kbd>a02</kbd>]</h2>
 | 
|---|
| 636 | 
 | 
|---|
| 637 |     <hr />
 | 
|---|
| 638 | 
 | 
|---|
| 639 |     <p>This alpha is intended to test the basic GUI functionality: widget
 | 
|---|
| 640 |     creation, starting the main event loop, painting widgets and drawing on
 | 
|---|
| 641 |     pixmaps (graphic primitives, colors, images).</p>
 | 
|---|
| 642 | 
 | 
|---|
| 643 |     <h3>tools</h3>
 | 
|---|
| 644 | 
 | 
|---|
| 645 |     <p>The <kbd>tools</kbd> module is completely done (some of recent classes
 | 
|---|
| 646 |     are <code>QMutex</code>, <code>QSemaphore</code>,
 | 
|---|
| 647 |     <code>QWaitCondition</code>, <code>QThread</code>,
 | 
|---|
| 648 |     <code>QThreadStorage</code>).</p>
 | 
|---|
| 649 | 
 | 
|---|
| 650 |     <h4>QThread::wait (time)</h4>
 | 
|---|
| 651 | 
 | 
|---|
| 652 |     <p>Since OS/2 doesn't support specifying a maximum time to wait for a
 | 
|---|
| 653 |     thread to end other than infininty we use a loop containing of wait
 | 
|---|
| 654 |     intervals until the thread has ended or the maximum time specified by the
 | 
|---|
| 655 |     caller has expired, which brings the granularity of 1 second (the length
 | 
|---|
| 656 |     of the wait interval) to this process.</p>
 | 
|---|
| 657 | 
 | 
|---|
| 658 |     <h3>codecs</h3>
 | 
|---|
| 659 | 
 | 
|---|
| 660 |     <p>The <kbd>codecs</kbd> module (<code>QTextCodec</code> class) seems to
 | 
|---|
| 661 |     be done (excluding <code>QHerbewCodec</code>, that depends on
 | 
|---|
| 662 |     <code>QTextEngine</code>)</p>
 | 
|---|
| 663 | 
 | 
|---|
| 664 |     <h3>moc</h3>
 | 
|---|
| 665 | 
 | 
|---|
| 666 |     <p>The meta object compiler (<kbd>moc</kbd>) added to the project,
 | 
|---|
| 667 |     compiled and seems to work well.</p>
 | 
|---|
| 668 | 
 | 
|---|
| 669 |     <h3>kernel</h3>
 | 
|---|
| 670 | 
 | 
|---|
| 671 |     <p>The <kbd>kernel</kbd> module is done on about 75 percent. Here are the
 | 
|---|
| 672 |     most imortant classes that have been implemented (with a very brief
 | 
|---|
| 673 |     description of implemented and disabled features -- the most of this will
 | 
|---|
| 674 |     be changed later):</p>
 | 
|---|
| 675 | 
 | 
|---|
| 676 |     <ul>
 | 
|---|
| 677 |       <li><code>QApplication</code>: no handling of fonts (<code>QFont</code>
 | 
|---|
| 678 |       and stuff), sessions, clipboard (<code>QClipboard</code>), drag&drop
 | 
|---|
| 679 |       and styles (<code>QStyle</code>) yet, event handling is still limited
 | 
|---|
| 680 |       (only <code>QPaintEvent</code>, <code>QResizeEvent</code> and
 | 
|---|
| 681 |       <code>QMoveEvent</code> plus some others).</li>
 | 
|---|
| 682 | 
 | 
|---|
| 683 |       <li><code>QEventLoop</code>: no <code>QSocketNotifier</code>
 | 
|---|
| 684 |       functionality, no simple timers for plugins (that do not require the
 | 
|---|
| 685 |       message queue)</li>
 | 
|---|
| 686 | 
 | 
|---|
| 687 |       <li><code>QPaintDevice</code>: no alpha blending, no printer
 | 
|---|
| 688 |       (<code>QPrinter</code>) support</li>
 | 
|---|
| 689 | 
 | 
|---|
| 690 |       <li><code>QPaintDeviceMetrics</code></li>
 | 
|---|
| 691 | 
 | 
|---|
| 692 |       <li><code>QColor</code> (fully, including the palette support)</li>
 | 
|---|
| 693 | 
 | 
|---|
| 694 |       <li><code>QPixmap</code>: alpha pixmaps, no pixmap transformations
 | 
|---|
| 695 |       (xForm())</li>
 | 
|---|
| 696 | 
 | 
|---|
| 697 |       <li><code>QBitmap</code></li>
 | 
|---|
| 698 | 
 | 
|---|
| 699 |       <li><code>QImage</code></li>
 | 
|---|
| 700 | 
 | 
|---|
| 701 |       <li><code>QRegion</code> (no y coordinate flipping yet, regions from
 | 
|---|
| 702 |       ellipses and polygons are created as bounding rectangle regions, no
 | 
|---|
| 703 |       regions from bitmaps, ready for limited usage only)</li>
 | 
|---|
| 704 | 
 | 
|---|
| 705 |       <li><code>QPainter</code>: everything related to fonts, text drawing and
 | 
|---|
| 706 |       rich text classes is currently disabled</li>
 | 
|---|
| 707 | 
 | 
|---|
| 708 |       <li><code>QBrush</code>, <code>QPen</code></li>
 | 
|---|
| 709 | 
 | 
|---|
| 710 |       <li><code>QWidget</code>: everything related to fonts and cursors is
 | 
|---|
| 711 |       currently disabled; no mask support (<code>setMask()</code>); no icon
 | 
|---|
| 712 |       support (<code>setIcon()</code>); only few events at the moment
 | 
|---|
| 713 |       (<code>paintEvent()</code>, <code>resizeEvent()</code>,
 | 
|---|
| 714 |       <code>moveEvent()</code>)</li>
 | 
|---|
| 715 | 
 | 
|---|
| 716 |       <li><code>QDesktopWidget</code></li>
 | 
|---|
| 717 | 
 | 
|---|
| 718 |       <li><code>QLayout</code> and stuff</li>
 | 
|---|
| 719 | 
 | 
|---|
| 720 |       <li><code>QTimer</code></li>
 | 
|---|
| 721 | 
 | 
|---|
| 722 |       <li><code>QPalette</code></li>
 | 
|---|
| 723 | 
 | 
|---|
| 724 |       <li><code>QVariant</code> (<code>QFont</code>, <code>QIconSet</code> and
 | 
|---|
| 725 |       <code>QKeySequense</code> are not yet handled)</li>
 | 
|---|
| 726 |     </ul>
 | 
|---|
| 727 | 
 | 
|---|
| 728 |     <p>There is no support for MNG, PNG and JPEG formats at the moment, it
 | 
|---|
| 729 |     will be compiled in later.</p>
 | 
|---|
| 730 | 
 | 
|---|
| 731 |     <p>There is no zlib integration yet, will also be done later.</p>
 | 
|---|
| 732 | 
 | 
|---|
| 733 |     <h3>other changes</h3>
 | 
|---|
| 734 | 
 | 
|---|
| 735 |     <p>Compilation tools are updated (Innotek GCC and GNU Make). The process
 | 
|---|
| 736 |     of building Qt is changed (in particular, it is now built as the static
 | 
|---|
| 737 |     library). This is described <a
 | 
|---|
| 738 |     href="general.html#compilation">here</a>.</p>
 | 
|---|
| 739 | 
 | 
|---|
| 740 |     <p>The <kbd>aclock</kbd> example from the Qt-Win32 distribution now
 | 
|---|
| 741 |     compiles and runs well (except that there is no full mouse support and no
 | 
|---|
| 742 |     transparent mode). Instructions are at the same place as above.</p>
 | 
|---|
| 743 | 
 | 
|---|
| 744 |     <h2>Alpha 1 (2004-04-09) [<kbd>a01</kbd>]</h2>
 | 
|---|
| 745 | 
 | 
|---|
| 746 |     <hr />
 | 
|---|
| 747 | 
 | 
|---|
| 748 |     <p>The aim of this first step is to organize and test the compilation
 | 
|---|
| 749 |     environment to make sure it is suitable for further development. Also it
 | 
|---|
| 750 |     gives us many of non-visual widely used Qt classes from the
 | 
|---|
| 751 |     <kbd>tools</kbd> module compiled for OS/2 as well as the OS/2 version of
 | 
|---|
| 752 |     the <kbd>qmake</kbd> utility which uses these classes.</p>
 | 
|---|
| 753 | 
 | 
|---|
| 754 |     <p>Currently the following most important public Qt classes are available
 | 
|---|
| 755 |     (this list is not complete): <code>QLibrary</code>,
 | 
|---|
| 756 |     <code>QSettings</code>, <code>QDir</code>, <code>QFile</code>,
 | 
|---|
| 757 |     <code>QFileInfo</code>, <code>QLocale</code> <code>QDate</code>,
 | 
|---|
| 758 |     <code>QTime</code>, <code>QDateTime</code>, <code>QString</code>,
 | 
|---|
| 759 |     <code>QChar</code>, <code>QCString</code> plus various container and
 | 
|---|
| 760 |     iterator classes.</p>
 | 
|---|
| 761 | 
 | 
|---|
| 762 |     <h4>QSettings</h4>
 | 
|---|
| 763 | 
 | 
|---|
| 764 |     <p><code>QSettings</code> class is implemented using the Open32 registry
 | 
|---|
| 765 |     API available in recent OS/2 versions (REGISTRY.DLL). This registry is
 | 
|---|
| 766 |     very similar to the Windows one so this class should behave nearly the
 | 
|---|
| 767 |     same as on Windows.</p>
 | 
|---|
| 768 | 
 | 
|---|
| 769 |     <h4>QFileInfo</h4>
 | 
|---|
| 770 | 
 | 
|---|
| 771 |     <p>The <code>QFileInfo</code> class is implemented in the following
 | 
|---|
| 772 |     way:</p>
 | 
|---|
| 773 | 
 | 
|---|
| 774 |     <ul>
 | 
|---|
| 775 |       <li><code>isSymLink()</code> always returns <code>FALSE</code></li>
 | 
|---|
| 776 | 
 | 
|---|
| 777 |       <li><code>readLink()</code> always returns
 | 
|---|
| 778 |       <code>QString::null</code></li>
 | 
|---|
| 779 | 
 | 
|---|
| 780 |       <li><code>owner()</code> = <code>group()</code> =
 | 
|---|
| 781 |       <code>QString:null</code></li>
 | 
|---|
| 782 | 
 | 
|---|
| 783 |       <li><code>ownerID()</code> = <code>groupID()</code> =
 | 
|---|
| 784 |       <code>-2</code></li>
 | 
|---|
| 785 | 
 | 
|---|
| 786 |       <li><code>permission()</code> always returns <code>TRUE</code> except
 | 
|---|
| 787 |       the situation when the <code>permissionSpec</code> argument is
 | 
|---|
| 788 |       <code>Write*</code> and the file is read-only</li>
 | 
|---|
| 789 |     </ul>
 | 
|---|
| 790 | 
 | 
|---|
| 791 |     <h4>QString</h4>
 | 
|---|
| 792 | 
 | 
|---|
| 793 |     <p>Since everything is currently compiled with the
 | 
|---|
| 794 |     <code>QT_NO_TEXTCODEC</code> flag set <code>QString</code> will return
 | 
|---|
| 795 |     question (<kbd>?</kbd>) marks for all unicode symbos with codes greater
 | 
|---|
| 796 |     than <code>0x00FF</code>. However, non-Unicode string data taken from the
 | 
|---|
| 797 |     OS (for example in file operations) will be simply converted to unicode by
 | 
|---|
| 798 |     expanding every non-unicode byte to a unicode word, meaning that the
 | 
|---|
| 799 |     conversion from Unicode back to single byte (for example, during the
 | 
|---|
| 800 |     output to the console) will preserve nationals. This is the standard
 | 
|---|
| 801 |     behavior of Qt and it is not critical for most console mode applications
 | 
|---|
| 802 |     as long as <code>QString</code>s are not presistently stored in the
 | 
|---|
| 803 |     unicode form and the system local character set is not changed.</p>
 | 
|---|
| 804 | 
 | 
|---|
| 805 |     <h4>qmake</h4>
 | 
|---|
| 806 | 
 | 
|---|
| 807 |     <p>The current OS/2 version of qmake uses the MINGW makefile generator
 | 
|---|
| 808 |     mode. Resulting makefiles produced by <kbd>qmake</kbd> from Qt project
 | 
|---|
| 809 |     files seem to be processed well by GNU Make, however the following known
 | 
|---|
| 810 |     limitations currently apply:</p>
 | 
|---|
| 811 | 
 | 
|---|
| 812 |     <ul>
 | 
|---|
| 813 |       <li>object files are always created with the <kbd>.o</kbd> extension
 | 
|---|
| 814 |       (although they are actually OMF files).</li>
 | 
|---|
| 815 | 
 | 
|---|
| 816 |       <li>dll files cannot be correctly linked without manual correction of
 | 
|---|
| 817 |       the makefile because MINGW generator always adds the hard-encoded option
 | 
|---|
| 818 |       <kbd>-Wl,--out-implib,libXXX.a</kbd> to a call to the linker to tell it
 | 
|---|
| 819 |       to generate the import library, but this option is not compatible with
 | 
|---|
| 820 |       Innotek GCC.</li>
 | 
|---|
| 821 | 
 | 
|---|
| 822 |       <li>MINGW generator assigns a dot to OBJECTS_DIR and MOC_DIR when they
 | 
|---|
| 823 |       are not specified which causes GNU Make to produce warning
 | 
|---|
| 824 |       messages.</li>
 | 
|---|
| 825 |     </ul>
 | 
|---|
| 826 | 
 | 
|---|
| 827 |     <p>These limitations will be eliminated in the future, probably by
 | 
|---|
| 828 |     implementing a separate makefile generator class.</p>
 | 
|---|
| 829 | 
 | 
|---|
| 830 |     <p>qmake for OS/2 understands the new command line option <kbd>-os2</kbd>
 | 
|---|
| 831 |     that tells it to use OS/2 semantics when generating makefiles, and the new
 | 
|---|
| 832 |     scope specifier <kbd>os2</kbd> in Qt project files to isolate
 | 
|---|
| 833 |     OS/2-specific project parts.</p>
 | 
|---|
| 834 | 
 | 
|---|
| 835 |     <p>The qmake specification for OS/2 and GCC is named <kbd>os2-g++</kbd>
 | 
|---|
| 836 |     and after setting the <kbd>QMAKESPEC</kbd> variable accordingly it is
 | 
|---|
| 837 |     available for use.</p>
 | 
|---|
| 838 | 
 | 
|---|
| 839 |     <p>Please also refer <a href="general.html#compilation">here</a> to get
 | 
|---|
| 840 |     info about how to compile and run qmake.</p>
 | 
|---|
| 841 |   </body>
 | 
|---|
| 842 | </html>
 | 
|---|