| [10] | 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 |  | 
|---|
| [23] | 29 | <h2>Release Candidate 6 (2005-11-18) [<kbd>3.3.1-rc06</kbd>]</h2> | 
|---|
| [10] | 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> | 
|---|
| [8] | 842 | </html> | 
|---|