diff options
-rw-r--r-- | KDE2PORTING.html | 925 |
1 files changed, 0 insertions, 925 deletions
diff --git a/KDE2PORTING.html b/KDE2PORTING.html deleted file mode 100644 index 181a5bccb..000000000 --- a/KDE2PORTING.html +++ /dev/null @@ -1,925 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 2//EN//2.0"> -<HTML> -<HEAD> - <TITLE>Guide to Porting Applications to KDE 2.0</TITLE> -</HEAD> -<BODY> - -<H2>Porting Applications to KDE 2.0</H2> -<H3>Last Modified on November 28, 2000</H3> -This document contains the changes you have to apply to programs written for -KDE1.1 when you want to port them to KDE2.0.<P> - -As a start you should have a look at doc/porting.doc in the Qt package, -or <a href="http://doc.trolltech.com/porting.html">this page online</a>.<P> - -<H3><A NAME="TOC">Table of Contents</A></H3> - -<UL> -<LI><A HREF="#gettingstarted">Getting Started</A></LI> -<LI><A HREF="#general">Global changes</A></LI> -<LI><A HREF="#automoc">automoc/am_edit, Makefile.am tags</A></LI> -<LI><A HREF="#TDEApplication">TDEApplication</A></LI> -<LI><A HREF="#TDECmdLineArgs">TDECmdLineArgs</A></LI> -<LI><A HREF="#TDELocale">TDELocale</A></LI> -<LI><A HREF="#TDEGlobal">TDEGlobal: access to KDE global objects.</A></LI> -<LI><A HREF="#TDEIconLoader">TDEIconLoader</A></LI> -<LI><A HREF="#KTMainWindow">KTMainWindow</A></LI> -<LI><A HREF="#KHelpMenu">KHelpMenu</A></LI> -<LI><A HREF="#TDEToolBar">TDEToolBar</A></LI> -<LI><A HREF="#launching">Starting other programs</A></LI> -<LI><A HREF="#tdehtmlw">tdehtmlw</A></LI> -<LI><A HREF="#KIntegerLine">KIntegerLine, KIntLineEdit</A></LI> -<LI><A HREF="#KDNDIcon">KDNDIcon, KDNDDropZone, KDNDWidget, tdecore/drag.h</A></LI> -<LI><A HREF="#TDEConfigBase">TDEConfigBase, TDEConfig, KSimpleConfig</A></LI> -<LI><A HREF="#libkfm">libkfm</A></LI> -<LI><A HREF="#KDialog">KDialog</A></LI> -<LI><A HREF="#kcharsets">kcharsets</A></LI> -<LI><A HREF="#KWizard">KWizard, KNoteBook</A></LI> -<LI><A HREF="#KSpinBox">KSpinBox, KNumericSpinBox</A></LI> -<LI><A HREF="#TDEClipboard">TDEClipboard</A></LI> -<LI><A HREF="#KPanner">KPanner, KNewPanner</A></LI> -<LI><A HREF="#KTreeList">KTreeList, KTreeListItem</A></LI> -<LI><A HREF="#KMsgBox">KMsgBox</A></LI> -<LI><A HREF="#KCombo">KCombo</A></LI> -<LI><A HREF="#KQuickHelp">KQuickHelp</A></LI> -<LI><A HREF="#KPixmapgradientFill">KPixmap::gradientFill</A></LI> -<LI><A HREF="#KTabListBox">KTabListBox</A></LI> -<LI><A HREF="#TDEToolBarButton">TDEToolBarButton & TDERadioGroup</A></LI> -<LI><A HREF="#TDEAccel">TDEAccel</A></LI> -<LI><A HREF="#kstring">kstring.h / KString</A></LI> -<LI><A HREF="#ktopwidget">ktopwidget.h / KTopWidget</A></LI> -<LI><A HREF="#kbutton">kbutton.h / KButton</A></LI> -<LI><A HREF="#kbuttonbox">kbuttonbox.h / KButtonBox</A></LI> -<LI><A HREF="#kcolorgroup">kcolorgroup.h / KColorGroup</A></LI> -<LI><A HREF="#kled">kled.h, kledlamp.h / KLed, KLedLamp</A></LI> -<LI><A HREF="#KDockWidget">KDockWidget</A></LI> -<LI><A HREF="#KPixmap">KPixmap, KPixmapEffect</A></LI> -<LI><A HREF="#KControlCenter">Trinity Control Center</A></LI> -<LI><A HREF="#KWMModuleApplication">KWMModuleApplication libtdeui/kwmmapp.h</A></LI> -<LI><A HREF="#KDebug">KDebug</A></LI> -<LI><A HREF="#KFileDialog">KFileDialog - General Stuff</A></LI> -<LI><A HREF="#KFileDialogPreview">KFileDialog - Preview Mode</A></LI> -<LI><A HREF="#ImageEffects">Image Effects</A></LI> -<LI><A HREF="#KAudio">KAudio (kaudio.h)</A></LI> -<LI><A HREF="#KImageIO">KImageIO (kimgio.h)</A></LI> -</UL> - -<H3><A NAME="gettingstarted">Getting started</A></H3> - - The first step to get your KDE application to compile under KDE 2.0, - is to detect KDE 2.0 and Qt 2.x at configure time. The easiest way to - get a working autoconf/automake framework, is to either use - <a href="http://www.kdevelop.org">KDevelop</a> or - <a href="http://home.earthlink.net/~granroth/kapptemplate/index.html">kapptemplate</a> - (available in CVS under the module "tdesdk"), to generate a new - application template. Replace the generated source files by yours - and adapt Makefile.am accordingly. - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="general">Global changes</A></H3> - - We did our best to clean up the header files of tdelibs, so they do - not include unnecessary bloat for your application. As a consequence, you - may notice that some header files are missing from your source files as - they have been included before by kapp.h for example. There is a script - in tdesdk/scripts called "fixheaders" that takes care of most of these - cases. Just call "make -k 2>&1 | perl .../fixheaders" and it will try - to look after the error messages and add includes as it recognize the - errors.<P> - - Also, if your code does not compile and complains about missing member - functions, you should check for methods that started with get...(). - These methods have been renamed to xy*() for consistency.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="automoc">automoc/am_edit, Makefile.am tags</A></H3> - - On the subject of the compilation framework, automoc has been removed from - the admin directory. It has been replaced by am_edit which provides a lot of - additional features.<P> - METASOURCES=AUTO still does the job of generating the appropriate moc files, - but in addition, you should use KDE_ICON for the icons representing the application - (and naming those icons conforming to lo16-app-<appname>.png), and install - the application-specific icons under $(kde_datadir)/<appname>/pics. - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEApplication">TDEApplication</A></H3> - - doesn't hold any longer a TDELocale instance. With this getLocale() - and isLocaleInstantiated are now replaced by TDEGlobal::locale()<P> - - it also doesn't hold a KiconLoader instance. As this also getIconLoader() - has been removed. Replace kapp->getIconLoader()->loadIcon() with - BarIcon() or use TDEGlobal::iconLoader() instead of getIconLoader()<P> - - kde_*dir() have been removed as they require a unique top level directory - for all applications (TDEDIR). This concept doesn't exist in KDE 2.0 - any more, it has been replaced with "multiple levels of directories", - set in TDEDIRS, so that it's possible to have global settings and - group settings, applied before user settings.<P> - - Replace code that uses kde_*dir() + filename with calls to - locate(filetype, filename) where filetype is what * used to be - in kde_*dir(). locate is defined as function in kstddirs.h to call - TDEGlobal::dirs()->findResource.<P> - - Use locateLocal to get the path of a writable file. For instance, - TDEApplication::localconfigdir()+filename is now locateLocal( "config", filename ), - but for most cases, simply using TDEGlobal::config() is enough, if you're happy - with saving the application's configuration into appnamerc, or - KSimpleConfig cfg("anothercfgfile") to create a config file with another name.<P> - - generalFont() and fixedFont() are deprecated and will be removed soon. - Please use TDEGlobalSettings::generalFont() and TDEGlobalSettings::fixedFont() instead.<P> - - appName() is deprecated. Please use TQApplication::name() or instanceName - instead.<P> - - The methods tempSaveName() and checkRecoverFile() return QString - now. The returned values must _not_ be free()d.<P> - - helpMenu() has been moved to TDEMainWindow. aboutKDE(), aboutApp() and - appHelpActivated() have all been removed See section for TDEMainWindow - for more info.<P> - - The TDEApplication constructor has changed. Command line arguments and - program name should no longer be passed to TDEApplication but to - TDECmdLineArgs. TDECmdLineArgs performs command line parsing and a command - line help. See below for more info.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDECmdLineArgs">TDECmdLineArgs</A></H3> - - TDECmdLineArgs is a new class that handles command line parsing and - command line help. It is now required that your application - specifies at least:<P> - <UL> - <LI>Its name. - <LI>A short description what it does. (e.g. 1 line) - <LI>A version. - <LI>All command line options that it supports. - </UL> - - TDECmdLineArgs itself will add the command line options supported by Qt - and TDEApplication.<P> - - You can also use the TDEAboutData class to specify name, description and - version.<P> - - In return for this information you can query TDECmdLineArgs whether an - certain option was specified on the command line and your application - now automatically supports --help and --version. It aborts with a - useful error message when the command line contains a syntax error. - See tdelibs/tdecore/tdecmdlineargs.h for more info.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDELocale">TDELocale</A></H3> - - i18n is no longer a macro<P> - - TDEApplication::getApplication()->getLocale()->translate<P> - - but a function on its own. klocale is obsolete and replace every call - to klocale->translate with i18n.<P> - - The return value of i18n is also no longer a const char*, - but a unicode TQString.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEGlobal">TDEGlobal: access to KDE global objects.</A></H3> - -TDEGlobal allows centralized access to KDE global objects without including -extraneous headers. object creation is deferred if possible.<P> - -All methods are static and headers for returned types are not included. You -must have created a TDEApplication object before the methods can be used.<P> -<TABLE BORDER="0"> -<TR> - <TD COLSPAN="2"> - <PRE> - #include <tdeglobal.h> - #include <tdeconfig.h> // Needed to use TDEConfig - #include <tdelocale.h> // Needed to use TDELocale - #include <kiconloader.h> // Needed to use TDEIconLoader - </PRE> - </TD> -</TR> -<TR> - <TD> - <PRE> - ... - TDEConfig *appcfg = TDEGlobal::config(); - TQString mystr = i18n( "This is a string" ); - - - TDEIconLoader *loader = TDEGlobal::iconLoader(); - </PRE> - </TD> -</TR> -</TABLE> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEIconLoader">TDEIconLoader</A></H3> - -TDEIconLoader in 1.1 used to mix icons for applications and for toolbars. -This has changed, so you may notice that your application doesn't find -the right icons. loadIcon (used by BarIcon) returns only toolbar icons.<P> -If you need icons for applications, use loadApplicationIcon.<P> -loadMiniIcon and loadApplicationMiniIcon have been removed, instead -loadApplicationIcon now takes a "size" argument where you can specify the -size of the icon (small, medium, large).<P> -The other big change you may notice, is that ICON and Icon have been -removed as they caused big confusion for not loading application icons -(see above). For this we added BarIcon which does the same as ICON before. -The third change in this row is that loadIcon doesn't need the extension -anymore, but looks for standard extensions (png, xpm) itself. If you hard- -coded .xpm, loadIcon will issue a warning at runtime, but will still work -in stripping off the .xpm part<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KTMainWindow">KTMainWindow</A></H3> - -KTMainWindow has been replaced with TDEMainWindow.<p> - -The TDEMainWindow constructor needs a parent widget as first argument. -You can use 0 for this.<p> -setView() has been replaced with setCentralWidget().<p> -view() has been replaced with centralWidget().<p> -addToolBar() has been removed, it is not needed any more.<p> -setMenu(...) has been removed, it is not needed any more.<p> -setStatusBar(...) has been removed, it is not needed any more.<p> -updateRects() has been removed, it is not needed any more.<p> -enableStatusBar(...) has been removed, use statusBar()->show() and/or -statusBar()->hide() instead.<p> -enableToolBar(...) has been removed, use toolBar()->show() and/or -toolBar()->hide() instead. <p> - -view_* public variables do no longer exist. There is really no reason -for an app to use this information. If you do need it anyway, use -mainViewGeometry() instead.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KHelpMenu">KHelpMenu</A></H3> - -helpMenu() has been moved to TDEMainWindow from TDEApplication (kapp).<P> - -Both the "About KDE" and the "About <Application>" dialog boxes -are now modeless. "About KDE" is a completely new widget.<P> - -If you used in the toplevel window (that is derived from TDEMainWindow) -"kapp->helpMenu( bool, TQString )" to get the help menu -you must now change this to "helpMenu( TQString )". The TQString defaults -to TQString::null so it is sufficient to write helpMenu().<P> - -The old aboutKDE(), aboutApp() and appHelpActivated() of TDEApplication -have all been removed. If you need direct access to these or need -access to a help menu in a class that is not derived from -TDEMainWindow then allocate an instance of the new class KHelpMenu. -See KDE 2.0 API reference or khelpmenu.h (tdeui) for additional info.<P> -Espen Sand <<A HREF="mailto:espen@kde.org">espen@kde.org</A>><P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEToolBar">TDEToolBar</A></H3> - -enable(...) is depreciated, use show()/hide() instead.<p> -enableFloating(...) has been removed, use enableMoving() instead.<p> -setMaxHeight() is depreciated, use setMaximumHeight() instead.<p> -maxHeight() is depreciated, use maximumHeight() instead.<p> -setMaxWidth() is depreciated, use setMaximumWidth() instead.<p> -maxWidth() is depreciated, use maximumWidth() instead.<p> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="launching">Starting other programs</A></H3> - -In KDE 2.0 there are several ways to start other programs from within -your application. Here is a short summary of your options with reasons why -you should or should not use them. -<H4>1. fork + exec</H4> -<P> -You never want to use this unless you have a very good reason why it is -impossible to use TDEProcess. -</P> -<H4>2. TDEProcess</H4> -<P> -You want to use this if you need to start a new process which needs to be a -child of your process, e.g. because you want to catch stdout/stderr or need -to send it data via stdin. You should never use this to start other KDE -applications unless your application is called kgdb :-) If you need to -send/receive text like data to/from the process, you are probably better -off with KProcIO -</P> - -<H4>3. KProcIO</H4> -<P> -Like TDEProcess. Unlike TDEProcess, this class actually makes it easy to -send data to and receive data from the process. - -</P> -<H4>4. startServiceByDesktopPath</H4> -<P> -Preferred way to launch desktop (KDE/Gnome/X) applications or KDE services. -The application/service must have a .desktop file. It will make use of -KDEinit for increased startup performance and lower memory usage. These -benefits only apply to applications available as KDEinit loadable module (KLM) -</P> -<H4>5. KRun</H4> -<P> -Generic way to open documents/applications/shell commands. Uses -startServiceBy.... where applicable. Offers the additional -benefit of startup-notification.<BR> -KRun can start any application, from the binary or the desktop file, -it will determine the mimetype of a file before running the -preferred handler for it, and it can also start shell commands. -This makes KRun the recommended way to run another program in KDE 2. -</P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="tdehtmlw">tdehtmlw</A></H3> - -tdehtmlw has been replaced with tdehtml.<BR> -<UL> - <LI>TDEHTMLView has vanished. Just use TDEHTMLWidget, which does scrollbar - managing for free. - - <LI>A lot of the API has changed. If you just want to open a file/URL, - you just need to do:<P> - <PRE> - TDEHTMLWidget *w = new TDEHTMLWidget(); - w->openURL(myURL); - </PRE> - - <LI>tdehtml uses QString's instead of char *'s now. This means, that most - of the api has changed. In all functions:<P> - <PRE> - const char * -> QString - TQStrList -> QStringList - </PRE> - The only exception for the moment is TDEHTMLWidget::write(), which does - also exist in a const char * version.<P> - - -<LI>you won't need the getTDEHTMLWiget function anymore. Just replace - getTDEHTMLWidget->xxx() with xxx()<P> -<LI>xxx(TQString) -> xxx(const TQString &)<P> -<LI>consistent naming. All getXyz() functions are renamed to xyz()<P> -<LI>replaced/changed functions:<P> -<TABLE BORDER="1"> -<TR> -<TD>TDEHTMLWidget::setDefaultFontBase()</TD> -<TD>-> setFontSizes()</TD> -</TR> -<TR> -<TD>x/yOffset()</TD> -<TD>-> contentsX/Y()</TD> -</TR> -<TR> -<TD>getSelectedText(TQString &)</TD> -<TD>-> TQString selectedText()</TD> -</TR> -<TR> -<TD COLSPAN="2" ROWSPAN="0">findTextEnd() has vanished. just remove the call from your code</TD> -</TR> -<TR> -<TD>gotoXY(x, y)</TD> -<TD>-> setContentsPos(x, y)</TD> -</TR> -<TR> -<TD>docWidth()</TD> -<TD>-> contentsWidth()</TD> -</TR> -<TR> -<TD>docHeight()</TD> -<TD>-> contentsHeight()</TD> -</TR> -</TABLE><P> - -<LI>Don't forget to change the link-flags! (-ltdehtml -lkjava instead of -ltdehtmlw) -</UL> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KIntegerLine">KIntegerLine, KIntLineEdit</A></H3> - - KIntegerLine and KIntLineEdit have been replaced by KIntNumInput. - The new header file is called knuminput.h.<P> - - The new KIntNumInput can have an optional slider attached, ensures - that the entered value is in a given range (use MAX_INT or similar - if you don't care about the range) and can maintain a descriptive - label and also a unit for the edited value.<P> - - The API is almost the same and it simplifies existing code a bit, - so give it a try. If you need more functionality, please contact - me, Dirk A. Mueller <<A HREF="mailto:mueller@kde.org">mueller@kde.org</A>>.<P> - - The additional class KDoubleNumInput gives you the same look & feel, - but allows you to edit floating point numbers.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KDNDIcon">KDNDIcon, KDNDDropZone, KDNDWidget, tdecore/drag.h</A></H3> - -KDE Drag and Drop is Dead. Long live Qt Xdnd.<P> - -Xdnd is better anyway, because it has been adopted by all the other -major GUI toolkits still under active development (this precludes -Motif, but maybe we can convince the lesstif guys!). Some changes -are necessary to convert your old KDND-based stuff to Qt DND.<P> -<UL> -<LI>Remove drag.h from all of your sources / header files.<P> -<LI>Remove KDNDDropZone object creations. Instead of creating an - object of this type and then connecting it to some arbitrary slot - to handle drops, call "setAcceptDrops(true)" in your widget - constructor and then override the protected methods dragEnterEvent, - dragMoveEvent, dragLeaveEvent, and dropEvent.<P> -<LI>You should be aware that to handle drops, you will either have to - inherit a widget and then override the methods mentioned above, - or install an event handler for the widget in that widget's parent, - and then handle TQEvent::DragMove or TQEvent::Drop inside there (if - you want to avoid inheritance).<P> -<LI>You can emulate the old DndURL drop-type behavior with the Qt - Drag Object type QUriList.<P> -<LI>You can start a drag from inside your widget's mouseMoveEvent - method if you wish.<P> -<LI>Qt includes a Drag and Drop tutorial. We suggest you read that - now if you are confused.<P> -<LI>TQMultiLineEdit has already a DnD interface that accepts text/* - If you want to add support for other mimetypes, you need to - re-implement all DnD-methods (also dragMoveEvent()) and pass - QTextDrag's to the parent methods.<P> -<LI>TQTextDrag also accepts text/uri-list, which means that you - always need to check for TQUriDrag first if you want to get - both working.<P> -<LI>The mimetype for Uri's is now text/uri-list. If you've used - the proprietary Qt 1.x url/url, you need to adjust that. -</UL> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEConfigBase">TDEConfigBase, TDEConfig, KSimpleConfig</A></H3> - - These classes have been largely re-implemented. The external API - remains mostly the same, with the single notable change that - the groupIterator and entryIterator methods have been removed and - instead replaced by groupList (which returns a TQStringList of groups) - and entryMap(const TQString &group) (which returns a TQMap of entries - in the specified group). This is due to internal changes in TDEConfig - which would make providing iterators possibly rather difficult.<P> - - Much more extensive documentation on the TDEConfig and friends API can - be found in the kdoc generated documentation from the header files, - and in tdecore/KCONFIG_DESIGN.<P> - - To use the new iterator, you will probably want to do something like - this:<P> - <PRE> - - TQMap<TQString, TQString> tmpMap = config-<entryMap(myGroup); - TQMap<TQString, TQString>::Iterator aIt(tmpMap.begin()); - - for (; aIt != tmpMap.end(); ++aIt) { - // body here. Access iterator key as aIt.key(), - // data as *aIt. - } - </PRE> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="libkfm">libkfm has disappeared</A></H3> - - Lots of other functionalities have been taken out of kfm, some being - now in libtdeio, some in libkonq.<P> - <STRONG> Replacement table :</STRONG><P> -<TABLE BORDER="1"> - -<TR><TD>KFM::download </TD><TD>-> TDEIO::NetAccess::download (tdelibs/tdeio/netaccess.h)</TD></TR> -<TR><TD>KFM::removeTempFile </TD><TD>-> TDEIO::NetAccess::removeTempFile</TD></TR> -<TR><TD COLSPAN="2" ROWSPAN="0">refreshDesktop, sortDesktop, selectRootIcons : removed; kdesktop handles it</TD></TR> -<TR><TD>KFM::configure </TD><TD>-> see konqueror DCOP interface</TD></TR> -<TR><TD>KFM::openURL </TD><TD>-> "(void) new KRun (url)" (tdelibs/tdeio/krun.h)</TD></TR> -<TR><TD>KFM::refreshDirectory </TD><TD>-> not needed anymore since konqy/kdesktop use KDirWatch</TD></TR> -<TR><TD>KFM::openProperties </TD><TD>-> "(void) new KPropertiesDialog (url)" (tdelibs/tdefile/kpropsdlg.h)</TD></TR> -<TR><TD>KFM::exec </TD><TD>-> "(void) new KRun (url)" (tdelibs/tdeio/krun.h)</TD></TR> -<TR><TD>KFM::copy, KFM::move </TD><TD>-> TDEIO::Job (async, see tdeio/job.h)<BR> - or TDEIO::NetAccess (sync, see tdeio/netaccess.h)</TD></TR> -<TR><TD>DlgLocation </TD><TD>-> Use KLineEditDlg (tdeui/klineeditdlg.h) instead</TD></TR> -</TABLE> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KDialog">KDialog</A></H3> - -KDialog is no longer defined in kwizard.h. Include kdialog.h instead.<P> -Note that the best way to write new dialogs is to use KDialogBase (see kdialogbase.h)<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - - -<H3><A NAME="kcharsets">kcharsets</A></H3> - -The kcharsets class has been completely rewritten, and most of it has -vanished, since support for it moved to Qt.<P> - -Most applications will only need to replace kapp->getKCharsets() with -TDEGlobal::charsets().<P> - -For conversion of various input formats to QStrings, please have a -look at TQTextCodec and classes derived from it.<P> - -Character entities are now converted from and to QChars. The name has -changed from convertTag to fromEntity and toEntity.<P> - -To get a font, which can display a certain charset (if such a font -exists), you can use the KCharsets::setQFont methods. Input is a font and -a charset. Kcharsets tries to find an output font, which matches the -input font most closely, but can display the given charset.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KWizard">KWizard, KNoteBook</A></H3> - -KWizard is based on TQWizard now. The API has changed. Consult Qt's -documentation and tdelibs/kdetest/kwizardtest.cpp for an example use.<P> -KNoteBook (deeply entwined with the former KWizard) has been removed until -someone is willing to port it to work with the new wizard. If you want to -use it you'll find the necessary files in tdegraphics/tdeiconedit.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KSpinBox">KSpinBox, KNumericSpinBox</A></H3> - -These classes have been replaced by TQSpinBox. API is almost the same -HINTS:<P> -<UL> - <LI>valueincreased()/valuedecreased -> valueChanged() -<LI>getValue() -> value() -</UL> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEClipboard">TDEClipboard</A></H3> - -TDEClipboard has been removed. In case you've been using TDEClipboard, -QClipboard is the way to go now, as it has all the functionality the K -version had, and more.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KPanner">KPanner, KNewPanner</A></H3> - -KPanner and KNewPanner have been removed. TQSplitter does everything -KPanner did and more. The api is similar, but not compatible. -Basically to set it up so that you have a vertical splitter between a -listbox, a listview and multi line editor, you would do something like -this:<P> -<TABLE><TR><TD> - TQSplitter *split = new TQSplitter( parent );<BR> - TQListBox *lb = new TQListBox( split );<BR> - TDEListView *lv = new TDEListView( split );<BR> - TQMultiLineEdit *ed = new TQMultiLineEdit( split ); -</TD></TR></TABLE> - -As you can see you are not limited to two children. Additionally, you -do not have to call activate when you are done, and opaque resizing is -possible if you call setOpaqueResize(true).<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KTreeList">KTreeList, KTreeListItem</A></H3> - -Use TDEListView, TQListViewItem instead. API is almost the same, you only -need to add a Column (TDEListView::addColum) before TDEListView is useable.<P> - -TDEListView has no addChild(), insertItem() and removeItem() calls. Inserting -a root item is done by constructing a TQListViewItem with the TDEListView -passed as the parent widget. adding a child item is done by constructing -a TQListViewItem with the parent item as parameter. removeItem() should -be replaced by delete <pointer to item>.<P> - -The root items are not shown in a tree fashion by default. to get this, -use TDEListView::setDecorativeRoot(true).<P> - -Expanding and collapsing can by done by using TQListViewItem::setOpen(bool).<P> - - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KMsgBox">KMsgBox</A></H3> - -KMsgBox has been superseded by TQMessageBox. Which has been superseded -by KMessageBox.<P> -<UL> -<LI>KMsgBox had return codes starting with 1 for the first button, 2 for - the second, and so on. KMessageBox defines an enum which you should - use instead. -<LI>Please note that you shouldn't add the name of your application - to the caption argument. It is already added automatically. -</UL> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KCombo">KCombo</A></H3> - -KCombo has been removed. Use KComboBox instead, it is completely -compatible with the old KCombo API. The method that you may have problems -with is the old KCombo::setText. This has been renamed to -KComboBox::setEditText.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KQuickHelp">KQuickHelp</A></H3> - -KQuickHelp, the "super-tooltip" widget, has been replaced by TQWhatsThis. -It provides a compatible API and almost the same look and feel, in addition -to some new functionality.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KPixmapgradientFill">KPixmap::gradientFill</A></H3> - -Instead of old KPixmap::gradientFill, use:<P> - -KPixmapEffect::gradient(KPixmap&, TQColor, TQColor, enum KPixmapEffect::GradientType, int)<P> - - Hence:<P> - -pix.gradientFill(ca, cb, direction, ncols)<P> - -becomes, for direction == true :<P> - -KPixmapEffect::gradient(pix, ca, cb, KPixmapEffect::VerticalGradient, ncols)<P> - -There are now:<P> -<TABLE><TR><TD align=top> -KPixmapEffect::<BR></TD> -<TD> [Vertical,<BR> - Horizontal,<BR> - Diagonal,<BR> - CrossDiagonal,<BR> - Rectangle,<BR> - Pyramid,<BR> - PipeCross,<BR> - Elliptic]</TD></TR></TABLE> - -Gradients. See tdelibs/kdetest/kgradienttest & kunbalancedgradienttest for -information on how they actually look.<P> - -Look further in this document for other info about pixmap effect code -reorganization (essentially, all effects are now in libtdeui.so: gradient(), -unbalancedGradient(), hash(), desaturate(), pattern(), fade(), blend() etc.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KTabListBox">KTabListBox</A></H3> - -This widget has been replaced by the almighty TDEListView. Everything said -about KTreeList could be repeated here. The good thing is, that you now -can combine TreeView's and normal Tablists without problems.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEToolBarButton">TDEToolBarButton & TDERadioGroup</A></H3> - -If you need to do anything with TDEToolBarButton you now need to include -<tdetoolbarbutton.h> TDERadioGroup has been renamed to TDEToolBarRadioGroup and -requires you to include <tdetoolbarradiogroup.h><P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="TDEAccel">TDEAccel</A></H3> - -The functions keyToString() and stringToKey() which were previously -declared globally in tdeaccel.h are now static methods in TDEAccel.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="kstring">kstring.h / KString</A></H3> - -The KString class is obsolete and is not defined in -kstring.h anymore. The header file only existed for compatibility reasons. -The file has been removed completely, use TQString instead. (<A HREF="mailto:mirko@kde.org">mirko@kde.org</A>)<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="ktopwidget">ktopwidget.h / KTopWidget</A></H3> - -TDEMainWindow replaces this class completely. ktopwidget.h does not -exist in KDE 2. (<A HREF="mailto:mirko@kde.org">mirko@kde.org</A>)<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="kbutton">kbutton.h / KButton</A></H3> - -Since Qt 2.0, the class TQToolButton provides the functionality of -buttons that raise when the mouse is moved over them, so there is no -reason to have a class providing the same feature in KDE libs. All -occurrences of KButton in the KDE CVS have been replaced by QToolButtons, -but for applications not in the CVS it has to be done by the respective -developer. (<A HREF="mailto:mirko@kde.org">mirko@kde.org</A>)<P> - -<H3><A NAME="kbuttonbox">kbuttonbox.h / KButtonBox</A></H3> - -KButtonBox::Orientation has been removed in favor of Qt::Orientation. - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="kcolorgroup">kcolorgroup.h / KColorGroup</A></H3> - -KColorGroup was not used in sources in the KDE CVS, and its -functionality is provided by Qt. It has been removed. (<A HREF="mailto:mirko@kde.org">mirko@kde.org</A>)<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="kled">kled.h, kledlamp.h / KLed, KLedLamp</A></H3> - -There where two different classes for showing an LED lamp. Both are -merged to the KLed class, but THE USER INTERFACE IS DIFFERENT, as both -where more or less broken.<P> -Please adjust your code accordingly.<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KDockWidget">KDockWidget</A></H3> - -KDockWidget inherits form TDEMainWindow instead of KTMainWindow now. -See <A HREF="KTMainWindow">KTMainWindow</A> for more details. - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KPixmap">KPixmap, KPixmapEffect</A></H3> - -KPixmap::gradientFill, KPixmap::patternFill, KPixmap::tile and -KPixmap::mapFill have been moved to KPixmapEffect, which is now part -of libtdeui.<P> - -KPixmap::tile() has been renamed to KPixmapEffects::createTile().<P> - -Dirk A. Mueller <<A HREF="mailto:mueller@kde.org">mueller@kde.org</A>><P> - - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KControlCenter">Trinity Control Center</A></H3> - -The format for modules for the Trinity Control Center has changed quite -a bit. If you want to port your module to the new schema, please -consult<P> - -tdebase/kcontrol/README<P> - -which explains what needs to be done.<P> - -Matthias Hoelzer-Kluepfel <<A HREF="mailto:hoelzer@kde.org">hoelzer@kde.org</A>><P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - - -<H3><A NAME="KWMModuleApplication">KWMModuleApplication libtdeui/kwmmapp.h</A></H3> - -The KWMModuleApplication has been removed. Instead, use the class -KWinModule in libtdecore. The API is a bit cleaner but very similar, -so you will feel comfortable immediately. One of the advantages of -KWinModule is that it doesn't require a special TDEApplication -subclass. This lead to many problems and misunderstandings in the -past. KWinModule is now just an object that emits fancy signals (and -provides some useful lists, like the list of all managed windows). -(<A HREF="mailto:ettrich@kde.org">ettrich@kde.org</A>)<P> - - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KDebug">kDebug</A></H3> - -Use kdDebug, kdWarning, kdError, kdFatal to log debug output, warnings and -errors in a very flexible way. kdebug has been improved, and the API simplified. -tdesdk/scripts/kDebug2kdDebug.sh provides a script for automating the conversion. -Note that enabling/disabling debug output can now be done with tdedebugdialog, -which can be found in tdebase. The hidden dialog on C+S+F12 no longer exists. -<P> -Also, note that tqDebug and fprintf aren't disabled by -DNDEBUG, whereas kdDebug is. -One more reason to use kdDebug ! -(<A HREF="mailto:faure@kde.org">faure@kde.org</A>)<P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KFileDialog">KFileDialog - General Stuff</A></H3> - -The new (rewritten) KFileDialog (KFD) is a lot more like the new QFileDialog -but still looks quite different. Normally you may want to use the static -methods provided for convenience (getOpenFileName and getSaveFileName). -If you need special features you can configure the dialog extensively. Just -create an object and use the different methods. <P> -Werner Trobin <<A HREF="mailto:wtrobin@carinthia.com">wtrobin@carinthia.com</A>><P> - - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KFileDialogPreview">KFileDialog - Preview Mode</A></H3> -There is also a new preview mode which is quite different to the one we had in -the KDE 1.x KFD. There are no preview modules you have to register but there -is a single method you can use to set a preview widget. This widget has to -inherit TQWidget and you have to implement a slot (showPreview(const KURL &)) -in this class. This slot is called each time the selected file/dir changes. -In this slot you have to react appropriate (i.e. show the preview :). The -easiest way this can be done is to derive your class from TQWidgetStack and -add a Object (derived from TQWidget) for each file type. In the showPreview -method you just raise the matching widget. If you can't find an appropriate -widget just hide() the widget stack.<P> -If you need some "inspiration" on how that could be done, please have a look -at koffice/lib/kofficecore/koFilterManager.cc (PreviewStack).<P> -Werner Trobin <<A HREF="mailto:wtrobin@carinthia.com">wtrobin@carinthia.com</A>><P> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="ImageEffects">Image effects</A></H3> - -The kFSDither class is now gone. Its functionality was moved to -KImageEffect::dither(). Whereas before, you would done:<P> -<TABLE> - <TR> - <TD> - <PRE> - kFSDither dither(palette, ncols); - image = dither.dither(image); - </PRE> - </TD> - </TR> -</TABLE> -<P> -Now do:<BR> -<TABLE> - <TR> - <TD> - <PRE> - KImageEffect::dither(image, palette, ncols); - </PRE> - </TD> - </TR> -</TABLE> -<P> - -Kurt Granroth <<A HREF="mailto:granroth@kde.org">granroth@kde.org</A>> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KAudio">KAudio (kaudio.h)</A></H3> -The KAudio class no longer exists. Here are your options for porting. -<p> -<ul> -<li>notifications like "you have got new mail" -<p> -The way to go for this one is to use the KNotify API, which will allow -users to reconfigure how your application should sound. On the other hand, -they will also be able to disable specific sounds, rather let the events -log to a file, and so on. You can provide an rc file with the default -configuration. (Include "knotifyclient.h" and use the KNotifyClient class). -<p> -<li>very simple cases -<p> -On the other hand, if you just want a really small solution, there is the -KAudioPlayer class (declared kaudioplayer.h), which has a static member -function for playing, like -<p> -<pre> - KAudioPlayer::play("/var/samples/foo.wav"); -</pre> -<p> -<li>multimedia apps -<p> -If you are writing "real multimedia apps", you may also have a look at the -even more advanced sound/multimedia support, that using the aRts/MCOP -libraries directly can offer you. -</ul> -Stefan Westerfeld <A HREF="mailto:stefan@space.twc.de">stefan@space.twc.de</A> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -<H3><A NAME="KImageIO">KImageIO (kimgio.h)</A></H3> -<p> -KImageIO has moved from 'kimgio.h' to 'kimageio.h'. LIB_KIMGIO does no longer -exists, you need to link against LIB_TDESYCOCA instead. -</p> -<p> -kimgioRegister() has been replaced by KImageIO::registerFormats(). -</p> - -<p> -Waldo Bastian <A HREF="mailto:bastian@kde.org">bastian@kde.org</A> - -<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4> - -</BODY> -</HTML> |