|
|
<!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 tqcontains 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="#autotqmoc">autotqmoc/am_edit, Makefile.am tags</A></LI>
|
|
|
<LI><A HREF="#KApplication">KApplication</A></LI>
|
|
|
<LI><A HREF="#KCmdLineArgs">KCmdLineArgs</A></LI>
|
|
|
<LI><A HREF="#KLocale">KLocale</A></LI>
|
|
|
<LI><A HREF="#KGlobal">KGlobal: access to KDE global objects.</A></LI>
|
|
|
<LI><A HREF="#KIconLoader">KIconLoader</A></LI>
|
|
|
<LI><A HREF="#KTMainWindow">KTMainWindow</A></LI>
|
|
|
<LI><A HREF="#KHelpMenu">KHelpMenu</A></LI>
|
|
|
<LI><A HREF="#KToolBar">KToolBar</A></LI>
|
|
|
<LI><A HREF="#launching">Starting other programs</A></LI>
|
|
|
<LI><A HREF="#khtmlw">khtmlw</A></LI>
|
|
|
<LI><A HREF="#KIntegerLine">KIntegerLine, KIntLineEdit</A></LI>
|
|
|
<LI><A HREF="#KDNDIcon">KDNDIcon, KDNDDropZone, KDNDWidget, kdecore/drag.h</A></LI>
|
|
|
<LI><A HREF="#KConfigBase">KConfigBase, KConfig, 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="#KClipboard">KClipboard</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="#KToolBarButton">KToolBarButton & KRadioGroup</A></LI>
|
|
|
<LI><A HREF="#KAccel">KAccel</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">KDE Control Center</A></LI>
|
|
|
<LI><A HREF="#KWMModuleApplication">KWMModuleApplication libkdeui/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 "kdesdk"), 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 kdelibs, 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 kdesdk/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="autotqmoc">autotqmoc/am_edit, Makefile.am tags</A></H3>
|
|
|
|
|
|
On the subject of the compilation framework, autotqmoc has been removed from
|
|
|
the admin directory. It has been tqreplaced by am_edit which provides a lot of
|
|
|
additional features.<P>
|
|
|
METASOURCES=AUTO still does the job of generating the appropriate tqmoc 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="KApplication">KApplication</A></H3>
|
|
|
|
|
|
doesn't hold any longer a KLocale instance. With this getLocale()
|
|
|
and isLocaleInstantiated are now tqreplaced by KGlobal::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 KGlobal::iconLoader() instead of getIconLoader()<P>
|
|
|
|
|
|
kde_*dir() have been removed as they require a unique top level directory
|
|
|
for all applications (KDEDIR). This concept doesn't exist in KDE 2.0
|
|
|
any more, it has been tqreplaced with "multiple levels of directories",
|
|
|
set in KDEDIRS, 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
|
|
|
KGlobal::dirs()->findResource.<P>
|
|
|
|
|
|
Use locateLocal to get the path of a writable file. For instance,
|
|
|
KApplication::localconfigdir()+filename is now locateLocal( "config", filename ),
|
|
|
but for most cases, simply using KGlobal::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 KGlobalSettings::generalFont() and KGlobalSettings::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 KMainWindow. aboutKDE(), aboutApp() and
|
|
|
appHelpActivated() have all been removed See section for KMainWindow
|
|
|
for more info.<P>
|
|
|
|
|
|
The KApplication constructor has changed. Command line arguments and
|
|
|
program name should no longer be passed to KApplication but to
|
|
|
KCmdLineArgs. KCmdLineArgs 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="KCmdLineArgs">KCmdLineArgs</A></H3>
|
|
|
|
|
|
KCmdLineArgs 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>
|
|
|
|
|
|
KCmdLineArgs itself will add the command line options supported by Qt
|
|
|
and KApplication.<P>
|
|
|
|
|
|
You can also use the KAboutData class to specify name, description and
|
|
|
version.<P>
|
|
|
|
|
|
In return for this information you can query KCmdLineArgs 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 tqcontains a syntax error.
|
|
|
See kdelibs/kdecore/kcmdlineargs.h for more info.<P>
|
|
|
|
|
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
|
|
|
|
|
<H3><A NAME="KLocale">KLocale</A></H3>
|
|
|
|
|
|
i18n is no longer a macro<P>
|
|
|
|
|
|
KApplication::getApplication()->getLocale()->translate<P>
|
|
|
|
|
|
but a function on its own. klocale is obsolete and tqreplace every call
|
|
|
to klocale->translate with i18n.<P>
|
|
|
|
|
|
The return value of i18n is also no longer a const char*,
|
|
|
but a tqunicode TQString.<P>
|
|
|
|
|
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
|
|
|
|
|
<H3><A NAME="KGlobal">KGlobal: access to KDE global objects.</A></H3>
|
|
|
|
|
|
KGlobal 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 KApplication object before the methods can be used.<P>
|
|
|
<TABLE BORDER="0">
|
|
|
<TR>
|
|
|
<TD COLSPAN="2">
|
|
|
<PRE>
|
|
|
#include <kglobal.h>
|
|
|
#include <kconfig.h> // Needed to use KConfig
|
|
|
#include <klocale.h> // Needed to use KLocale
|
|
|
#include <kiconloader.h> // Needed to use KIconLoader
|
|
|
</PRE>
|
|
|
</TD>
|
|
|
</TR>
|
|
|
<TR>
|
|
|
<TD>
|
|
|
<PRE>
|
|
|
...
|
|
|
KConfig *appcfg = KGlobal::config();
|
|
|
TQString mystr = i18n( "This is a string" );
|
|
|
|
|
|
|
|
|
KIconLoader *loader = KGlobal::iconLoader();
|
|
|
</PRE>
|
|
|
</TD>
|
|
|
</TR>
|
|
|
</TABLE>
|
|
|
|
|
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
|
|
|
|
|
<H3><A NAME="KIconLoader">KIconLoader</A></H3>
|
|
|
|
|
|
KIconLoader in 1.1 used to mix icons for applications and for toolbars.
|
|
|
This has changed, so you may notice that your application doesn't tqfind
|
|
|
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 tqreplaced with KMainWindow.<p>
|
|
|
|
|
|
The KMainWindow constructor needs a parent widget as first argument.
|
|
|
You can use 0 for this.<p>
|
|
|
setView() has been tqreplaced with setCentralWidget().<p>
|
|
|
view() has been tqreplaced 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 KMainWindow from KApplication (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 KMainWindow)
|
|
|
"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 KApplication
|
|
|
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
|
|
|
KMainWindow then allocate an instance of the new class KHelpMenu.
|
|
|
See KDE 2.0 API reference or khelpmenu.h (kdeui) 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="KToolBar">KToolBar</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 KProcess.
|
|
|
</P>
|
|
|
<H4>2. KProcess</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<EFBFBD>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 KProcess. Unlike KProcess, 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="khtmlw">khtmlw</A></H3>
|
|
|
|
|
|
khtmlw has been tqreplaced with khtml.<BR>
|
|
|
<UL>
|
|
|
<LI>KHTMLView has vanished. Just use KHTMLWidget, 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>
|
|
|
KHTMLWidget *w = new KHTMLWidget();
|
|
|
w->openURL(myURL);
|
|
|
</PRE>
|
|
|
|
|
|
<LI>khtml 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 KHTMLWidget::write(), which does
|
|
|
also exist in a const char * version.<P>
|
|
|
|
|
|
|
|
|
<LI>you won't need the getKHTMLWiget function anymore. Just tqreplace
|
|
|
getKHTMLWidget->xxx() with xxx()<P>
|
|
|
<LI>xxx(TQString) -> xxx(const TQString &)<P>
|
|
|
<LI>consistent naming. All getXyz() functions are renamed to xyz()<P>
|
|
|
<LI>tqreplaced/changed functions:<P>
|
|
|
<TABLE BORDER="1">
|
|
|
<TR>
|
|
|
<TD>KHTMLWidget::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">tqfindTextEnd() 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! (-lkhtml -lkjava instead of -lkhtmlw)
|
|
|
</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 tqreplaced 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, kdecore/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="KConfigBase">KConfigBase, KConfig, 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 tqreplaced 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 KConfig
|
|
|
which would make providing iterators possibly rather difficult.<P>
|
|
|
|
|
|
Much more extensive documentation on the KConfig and friends API can
|
|
|
be found in the kdoc generated documentation from the header files,
|
|
|
and in kdecore/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 libkio, some in libkonq.<P>
|
|
|
<STRONG> Replacement table :</STRONG><P>
|
|
|
<TABLE BORDER="1">
|
|
|
|
|
|
<TR><TD>KFM::download </TD><TD>-> KIO::NetAccess::download (kdelibs/kio/netaccess.h)</TD></TR>
|
|
|
<TR><TD>KFM::removeTempFile </TD><TD>-> KIO::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)" (kdelibs/kio/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)" (kdelibs/kfile/kpropsdlg.h)</TD></TR>
|
|
|
<TR><TD>KFM::exec </TD><TD>-> "(void) new KRun (url)" (kdelibs/kio/krun.h)</TD></TR>
|
|
|
<TR><TD>KFM::copy, KFM::move </TD><TD>-> KIO::Job (async, see kio/job.h)<BR>
|
|
|
or KIO::NetAccess (sync, see kio/netaccess.h)</TD></TR>
|
|
|
<TR><TD>DlgLocation </TD><TD>-> Use KLineEditDlg (kdeui/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 tqreplace kapp->getKCharsets() with
|
|
|
KGlobal::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 tqfind 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 kdelibs/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 tqfind the necessary files in kdegraphics/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 tqreplaced 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="KClipboard">KClipboard</A></H3>
|
|
|
|
|
|
KClipboard has been removed. In case you've been using KClipboard,
|
|
|
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>
|
|
|
KListView *lv = new KListView( 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 KListView, TQListViewItem instead. API is almost the same, you only
|
|
|
need to add a Column (KListView::addColum) before KListView is useable.<P>
|
|
|
|
|
|
KListView has no addChild(), insertItem() and removeItem() calls. Inserting
|
|
|
a root item is done by constructing a TQListViewItem with the KListView
|
|
|
passed as the parent widget. adding a child item is done by constructing
|
|
|
a TQListViewItem with the parent item as parameter. removeItem() should
|
|
|
be tqreplaced by delete <pointer to item>.<P>
|
|
|
|
|
|
The root items are not shown in a tree fashion by default. to get this,
|
|
|
use KListView::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 tqreplaced 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 kdelibs/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 libkdeui.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 tqreplaced by the almighty KListView. 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="KToolBarButton">KToolBarButton & KRadioGroup</A></H3>
|
|
|
|
|
|
If you need to do anything with KToolBarButton you now need to include
|
|
|
<ktoolbarbutton.h> KRadioGroup has been renamed to KToolBarRadioGroup and
|
|
|
requires you to include <ktoolbarradiogroup.h><P>
|
|
|
|
|
|
<H4><P ALIGN="RIGHT"><A HREF="#TOC">Return to the Table of Contents</A></P></H4>
|
|
|
|
|
|
<H3><A NAME="KAccel">KAccel</A></H3>
|
|
|
|
|
|
The functions keyToString() and stringToKey() which were previously
|
|
|
declared globally in kaccel.h are now static methods in KAccel.<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>
|
|
|
|
|
|
KMainWindow tqreplaces 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 tqreplaced 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 KMainWindow 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 libkdeui.<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">KDE Control Center</A></H3>
|
|
|
|
|
|
The format for modules for the KDE Control Center has changed quite
|
|
|
a bit. If you want to port your module to the new schema, please
|
|
|
consult<P>
|
|
|
|
|
|
kdebase/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 libkdeui/kwmmapp.h</A></H3>
|
|
|
|
|
|
The KWMModuleApplication has been removed. Instead, use the class
|
|
|
KWinModule in libkdecore. 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 KApplication
|
|
|
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.
|
|
|
kdesdk/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 kdebase. The hidden dialog on C+S+F12 no longer exists.
|
|
|
<P>
|
|
|
Also, note that qDebug 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 tqfind 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 tqreplaced 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>
|