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

Last change on this file since 59 was 26, checked in by dmik, 20 years ago
  • Documentation files are marked as text/html.
  • Corrected dmik's e-mail address.
  • Property svn:mime-type set to text/html
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 (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/&lt;tag&gt;</kbd>.</p>
23
24 <p>For a more detailed list of changes please refer to the SVN repository.
25 Older changes (for version 3.3.1 Release Candidate 5 and earlier) can be
26 found in the file <a href="./ChangeLog.CVS">os2-doc\ChangeLog.CVS</a>.
27 </p>
28
29 <h2>Release Candidate 6 (2005-11-18) [<kbd>3.3.1-rc06</kbd>]</h2>
30
31 <hr />
32
33 <p>The project has been moved to the SVN repository on netlabs (<a
34 href="http://svn.netlabs.org">svn.netlabs.org</a>). The direct path to the
35 main development branch is <a
36 href="http://svn.netlabs.org/repos/qt3/trunk">http://svn.netlabs.org/repos/qt3/trunk</a>.</p>
37
38 <p>The file <kbd>src/tools/qconfig.cpp</kbd> (containing default
39 installation paths) is now automatically generated by the
40 <kbd>configure.cmd</kbd> script when configuring the Qt library.</p>
41
42 <h2>Release Candidate 5 (2005-11-12) [<kbd>rc05</kbd>]</h2>
43
44 <hr />
45
46 <p><b>Important Note</b>. The Qt DLL built by this release is binary
47 incompatible with the previous release. All applications must be relinked
48 against the new version of the library.</p>
49
50 <h3>kernel</h3>
51
52 <p><code>QCursor</code> is fully implemented, including creating custom
53 pointer shapes from bitmaps.</p>
54
55 <p><code>QT_NO_PROPERTIES</code> macro is not defined any more, so
56 <code>QObject</code>'s properties functionality is now available.</p>
57
58 <p>Implemented OS/2 PM Clipboard support (<code>QMime</code> and
59 <code>QClipboard</code> classes); <code>QT_NO_CLIPBOARD</code> macro is no
60 more defined by default.</p>
61
62 <p>Implemented <code>QPixmap::xForm()</code>;
63 <code>QT_NO_PIXMAP_TRANSFORMATION</code> is no more defined by
64 default.</p>
65
66 <p>Implemented font transformations according to <code>QPainter</code>
67 view and world matrices (this still has some issues because both native
68 TTF and FreeType2 font rendering engines are bogus when applying complex
69 world transformations such as rotation).</p>
70
71 <p>Added the <code>QMovie</code> class; <code>QT_NO_MOVIE</code> is no
72 more defined by default.</p>
73
74 <p>Enabled translation (internationalization) services, including
75 <code>QTranslator</code> and <code>QTranslatorMessage</code> classes, plus
76 <kbd>lupdate.exe</kbd> and <kbd>lrelease.exe</kbd> command line tools.
77 <code>QT_NO_TRANSLATION</code> is no more defined.</p>
78
79 <h3>dialogs</h3>
80
81 <p>OS/2 and eComStation are now mentioned in the
82 <code>QMessageBox::aboutQt()</code> dialog.</p>
83
84 <h3>workspace</h3>
85
86 <p>Added the <kbd>workspace</kbd> module (<code>QWorkspace</code> class).
87 The limitation of the current implementation is that child windows don't
88 have sysmenu/min/max/close buttons and cannot be
89 closed/maximized/minimized using the titlebar.</p>
90
91 <h3>other changes</h3>
92
93 <p>New examples: <kbd>action</kbd>, <kbd>application</kbd>,
94 <kbd>cursor</kbd>, <kbd>drawlines</kbd>, <kbd>i18n</kbd>, <kbd>mdi</kbd>,
95 <kbd>network/archivesearch</kbd>, <kbd>network/ftpclient</kbd>,
96 <kbd>network/infoprotocol</kbd>, <kbd>network/remotecontrol</kbd>,
97 <kbd>picture</kbd>, <kbd>qfd</kbd>, <kbd>qmag</kbd>, <kbd>qtl</kbd>,
98 <kbd>qwerty</kbd>, <kbd>rot13</kbd>, <kbd>showimg</kbd>,
99 <kbd>textedit</kbd>, <kbd>tictac</kbd>, <kbd>toplevel</kbd> and
100 <kbd>xform</kbd>.</p>
101
102 <p>Various fixes (<code>QTextEdit</code> in <code>LogText</code> mode,
103 <code>QPopupMenu</code> with multiple columns, using pixel sizes to select
104 fonts), see <kbd>os2-doc\ChangeLog</kbd> for more info.</p>
105
106 <p>Added two new qmake project variables to the <kbd>GNUMake</kbd>
107 backend: <code>DEF_FILE_TEMPLATE</code> and <code>DEF_FILE_MAP</code> (see
108 <a href="gnumake.html">here</a> for more info).
109 <kbd>mkspecs/os2-g++/qmake.conf</kbd> recognizes these variables and (with
110 the help of the supplied <kbd>emxexpw.cmd</kbd> script) uses them as
111 follows:</p>
112
113 <ul>
114 <li>If <code>DEF_FILE_TEMPLATE</code> is defined, it is expected to
115 point to an existing <kbd>.def</kbd> file template used when creating a
116 <kbd>.def</kbd> file for the DLL. In this template, all occurences of
117 the <code>${name}</code> macro are replaced with the name of the DLL and
118 the first occurence of the <code>${exports}</code> macro is replaced
119 with the list of exported symbols. If <code>DEF_FILE_TEMPLATE</code> is
120 not defined, the default template is used (<code>INITINSTANCE</code>
121 <code>TERMINSTANCE</code>, <code>DATA</code> <code>MULTIPLE</code>
122 <code>NONSHARED</code>).</li>
123
124 <li>If <code>DEF_FILE_MAP</code> is defined, it must point to an
125 existing file (it may be empty for the first time). Specifying a map
126 file tells the <kbd>.def</kbd> file generator to export all public
127 symbols by ordinals only (to reduce the DLL size and speed up access to
128 exported symbols). This map file is used to store ordinals assigned to
129 exported symbols (to guarantee these assignments are persistent from
130 build to build, which in turn helps to support binary DLL
131 compatibility). For more details about the format of the map file,
132 please refer to the <kbd>envexpw.cmd</kbd> script. If
133 <code>DEF_FILE_MAP</code> is not defined, all symbols are exported by
134 name.</li>
135 </ul>
136
137 <p>The Qt library, when built as a DLL, makes usage of the above
138 <code>DEF_FILE_*</code> variables. This makes it possible to maintain
139 binary compatibility between newer and older releases whenever it is
140 technically possible (i.e. no new data members in Qt classes etc.).</p>
141
142 <p>The <kbd>configure.cmd</kbd> script has been rewritten from scratch. It
143 is now fully interactive and is capable of searching for suitable versions
144 of the compiler, linker and the make tool in the locations specified by
145 the user.</p>
146
147 <h2>Release Candidate 4 (2004-10-02) [<kbd>rc04</kbd>]</h2>
148
149 <hr />
150
151 <p>This release contains few fixes (<kbd>\os2-doc\ChangeLog</kbd> for full
152 list) as well as the following new functionality.</p>
153
154 <h3>kernel</h3>
155
156 <p>Added zlib, jpeg, png, mng support (controlled via
157 <kbd>\configure.cmd</kbd>), async I/O classes (defined in
158 <kbd>asyncio.h</kbd>).</p>
159
160 <p>Added basic MIME support (<code>QMimeSource</code> class), no PM DDE
161 &lt;-&gt; 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 &amp; 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 &amp;)</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&amp;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>&lt;space&gt;</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&amp;drop
679 and styles (<code>QStyle</code>) yet, event handling is still limited
680 (only <code>QPaintEvent</code>, <code>QResizeEvent</code> and
681 <code>QMoveEvent</code> plus some others).</li>
682
683 <li><code>QEventLoop</code>: no <code>QSocketNotifier</code>
684 functionality, no simple timers for plugins (that do not require the
685 message queue)</li>
686
687 <li><code>QPaintDevice</code>: no alpha blending, no printer
688 (<code>QPrinter</code>) support</li>
689
690 <li><code>QPaintDeviceMetrics</code></li>
691
692 <li><code>QColor</code> (fully, including the palette support)</li>
693
694 <li><code>QPixmap</code>: alpha pixmaps, no pixmap transformations
695 (xForm())</li>
696
697 <li><code>QBitmap</code></li>
698
699 <li><code>QImage</code></li>
700
701 <li><code>QRegion</code> (no y coordinate flipping yet, regions from
702 ellipses and polygons are created as bounding rectangle regions, no
703 regions from bitmaps, ready for limited usage only)</li>
704
705 <li><code>QPainter</code>: everything related to fonts, text drawing and
706 rich text classes is currently disabled</li>
707
708 <li><code>QBrush</code>, <code>QPen</code></li>
709
710 <li><code>QWidget</code>: everything related to fonts and cursors is
711 currently disabled; no mask support (<code>setMask()</code>); no icon
712 support (<code>setIcon()</code>); only few events at the moment
713 (<code>paintEvent()</code>, <code>resizeEvent()</code>,
714 <code>moveEvent()</code>)</li>
715
716 <li><code>QDesktopWidget</code></li>
717
718 <li><code>QLayout</code> and stuff</li>
719
720 <li><code>QTimer</code></li>
721
722 <li><code>QPalette</code></li>
723
724 <li><code>QVariant</code> (<code>QFont</code>, <code>QIconSet</code> and
725 <code>QKeySequense</code> are not yet handled)</li>
726 </ul>
727
728 <p>There is no support for MNG, PNG and JPEG formats at the moment, it
729 will be compiled in later.</p>
730
731 <p>There is no zlib integration yet, will also be done later.</p>
732
733 <h3>other changes</h3>
734
735 <p>Compilation tools are updated (Innotek GCC and GNU Make). The process
736 of building Qt is changed (in particular, it is now built as the static
737 library). This is described <a
738 href="general.html#compilation">here</a>.</p>
739
740 <p>The <kbd>aclock</kbd> example from the Qt-Win32 distribution now
741 compiles and runs well (except that there is no full mouse support and no
742 transparent mode). Instructions are at the same place as above.</p>
743
744 <h2>Alpha 1 (2004-04-09) [<kbd>a01</kbd>]</h2>
745
746 <hr />
747
748 <p>The aim of this first step is to organize and test the compilation
749 environment to make sure it is suitable for further development. Also it
750 gives us many of non-visual widely used Qt classes from the
751 <kbd>tools</kbd> module compiled for OS/2 as well as the OS/2 version of
752 the <kbd>qmake</kbd> utility which uses these classes.</p>
753
754 <p>Currently the following most important public Qt classes are available
755 (this list is not complete): <code>QLibrary</code>,
756 <code>QSettings</code>, <code>QDir</code>, <code>QFile</code>,
757 <code>QFileInfo</code>, <code>QLocale</code> <code>QDate</code>,
758 <code>QTime</code>, <code>QDateTime</code>, <code>QString</code>,
759 <code>QChar</code>, <code>QCString</code> plus various container and
760 iterator classes.</p>
761
762 <h4>QSettings</h4>
763
764 <p><code>QSettings</code> class is implemented using the Open32 registry
765 API available in recent OS/2 versions (REGISTRY.DLL). This registry is
766 very similar to the Windows one so this class should behave nearly the
767 same as on Windows.</p>
768
769 <h4>QFileInfo</h4>
770
771 <p>The <code>QFileInfo</code> class is implemented in the following
772 way:</p>
773
774 <ul>
775 <li><code>isSymLink()</code> always returns <code>FALSE</code></li>
776
777 <li><code>readLink()</code> always returns
778 <code>QString::null</code></li>
779
780 <li><code>owner()</code> = <code>group()</code> =
781 <code>QString:null</code></li>
782
783 <li><code>ownerID()</code> = <code>groupID()</code> =
784 <code>-2</code></li>
785
786 <li><code>permission()</code> always returns <code>TRUE</code> except
787 the situation when the <code>permissionSpec</code> argument is
788 <code>Write*</code> and the file is read-only</li>
789 </ul>
790
791 <h4>QString</h4>
792
793 <p>Since everything is currently compiled with the
794 <code>QT_NO_TEXTCODEC</code> flag set <code>QString</code> will return
795 question (<kbd>?</kbd>) marks for all unicode symbos with codes greater
796 than <code>0x00FF</code>. However, non-Unicode string data taken from the
797 OS (for example in file operations) will be simply converted to unicode by
798 expanding every non-unicode byte to a unicode word, meaning that the
799 conversion from Unicode back to single byte (for example, during the
800 output to the console) will preserve nationals. This is the standard
801 behavior of Qt and it is not critical for most console mode applications
802 as long as <code>QString</code>s are not presistently stored in the
803 unicode form and the system local character set is not changed.</p>
804
805 <h4>qmake</h4>
806
807 <p>The current OS/2 version of qmake uses the MINGW makefile generator
808 mode. Resulting makefiles produced by <kbd>qmake</kbd> from Qt project
809 files seem to be processed well by GNU Make, however the following known
810 limitations currently apply:</p>
811
812 <ul>
813 <li>object files are always created with the <kbd>.o</kbd> extension
814 (although they are actually OMF files).</li>
815
816 <li>dll files cannot be correctly linked without manual correction of
817 the makefile because MINGW generator always adds the hard-encoded option
818 <kbd>-Wl,--out-implib,libXXX.a</kbd> to a call to the linker to tell it
819 to generate the import library, but this option is not compatible with
820 Innotek GCC.</li>
821
822 <li>MINGW generator assigns a dot to OBJECTS_DIR and MOC_DIR when they
823 are not specified which causes GNU Make to produce warning
824 messages.</li>
825 </ul>
826
827 <p>These limitations will be eliminated in the future, probably by
828 implementing a separate makefile generator class.</p>
829
830 <p>qmake for OS/2 understands the new command line option <kbd>-os2</kbd>
831 that tells it to use OS/2 semantics when generating makefiles, and the new
832 scope specifier <kbd>os2</kbd> in Qt project files to isolate
833 OS/2-specific project parts.</p>
834
835 <p>The qmake specification for OS/2 and GCC is named <kbd>os2-g++</kbd>
836 and after setting the <kbd>QMAKESPEC</kbd> variable accordingly it is
837 available for use.</p>
838
839 <p>Please also refer <a href="general.html#compilation">here</a> to get
840 info about how to compile and run qmake.</p>
841 </body>
842</html>
Note: See TracBrowser for help on using the repository browser.