source: trunk/os2-doc/changes.html@ 8

Last change on this file since 8 was 8, checked in by dmik, 20 years ago

Transferred Qt for OS/2 version 3.3.1-rc5 sources from the CVS

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