[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 |
|
---|
| 29 | <h2>Release Candidate 6 (2005-11-xx) [<kbd>3.1.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>
|
---|
[8] | 842 | </html>
|
---|