| 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> | 
|---|