|
- <!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">TDE 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.tdevelop.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/kiconedit.<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">TDE Control Center</A></H3>
-
- The format for modules for the TDE 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 kdebugdialog,
- 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_KSYCOCA 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>
|